var iOSjs = new function() { this.init = function() { this.enableBinding(), this.addEventListener(window, "load", this.handleWindowLoad.bind(this)), this.addEventListener(window, "orientationchange", this.handleOrientationChange.bind(this)), this.addEventListener(window, "resize", this.handleReize.bind(this)) } ; var t = null; this.setResFunction = function(e) { t = e } ; this.isiOSDevice = function() { var t = navigator.userAgent; return t.indexOf("iPhone") > -1 || t.indexOf("iPod") > -1 || t.indexOf("iPad") > -1 } , this.isiPhone = function() { return navigator.userAgent.indexOf("iPhone") > -1 } , this.isiPod = function() { return navigator.userAgent.indexOf("iPod") > -1 } , this.isiPad = function() { return navigator.userAgent.indexOf("iPad") > -1 } , this.hasRetinaDisplay = function() { return !!window.devicePixelRatio && window.devicePixelRatio > 1 } , this.isFullscreen = function() { return navigator.standalone } , this.getViewportSize = function() { var t = this.getWindowSize() , e = this.getElementSize(document.body).width / t.width; return { width: t.width * e, height: t.height * e } } , this.getNormalWindowSize = function() { var t = 0; return "number" == typeof window.innerWidth ? (t = window.innerWidth, height = window.innerHeight) : document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight) ? (t = document.documentElement.clientWidth, height = document.documentElement.clientHeight) : document.body && (document.body.clientWidth || document.body.clientHeight) && (t = document.body.clientWidth, height = document.body.clientHeight), { width: t, height: height } } , this.getWindowSize = function() { var t = 0 , e = 0; if (this.isiOSDevice()) { if (t = screen.width, e = screen.height, 0 != window.orientation) { var i = t; t = e, e = i } var n = navigator.userAgent; this.isFullscreen() && "black-translucent" == iOS_getMetaContent("apple-mobile-web-app-status-bar-style").toLowerCase() || (e -= 20), (n.indexOf("iPhone") > -1 || n.indexOf("iPod") > -1) && (this.isFullscreen() || (0 == window.orientation ? e -= 44 : e -= 32)), n.indexOf("iPad") > -1 && (this.isFullscreen() || (e -= 58)) } else { var o = this.getNormalWindowSize(); t = o.width, e = o.height } return { width: t, height: e } } , this.getCurSize = function() { return this.getNormalWindowSize() } , this.getSizeWithoutPanels = function() { var t = 0 , e = 0; t = screen.width, e = screen.height; var i = this.getNormalWindowSize(); if (0 != (i.width > i.height ? 1 : 0)) { var n = t; t = e, e = n } return { width: t, height: e } } , this.getMaxSize = function() { var t = 0 , e = 0 , i = this.getNormalWindowSize() , n = i.width > i.height ? 1 : 0; if (this.isiOSDevice()) { if (t = screen.width, e = screen.height, 0 != n) { var o = t; t = e, e = o } var d = navigator.userAgent; (d.indexOf("iPhone") > -1 || d.indexOf("iPod") > -1) && 0 == n && (e = this.getNormalWindowSize().height), d.indexOf("iPad") > -1 && (t = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, e = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight) } else t = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, e = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; return { width: t, height: e } } , this.getPageSize = function() { return this.getElementSize(document.body) } , this.getElementSize = function(t) { return t ? document.all ? { width: t.style.pixelWidth, height: t.style.pixelHeight } : { width: t.offsetWidth, height: t.offsetHeight } : { width: 0, height: 0 } } , this.getElementOffset = function(t) { for (var e = 0, i = 0; t && !isNaN(t.offsetLeft) && !isNaN(t.offsetTop); ) e += t.offsetLeft - t.scrollLeft, i += t.offsetTop - t.scrollTop, t = t.offsetParent; return { x: e, y: i } } , this.getElementPadding = function(t) { var e = t.currentStyle || window.getComputedStyle(t); return { top: parseFloat(e.paddingTop), right: parseFloat(e.paddingRight), bottom: parseFloat(e.paddingBottom), left: parseFloat(e.paddingLeft) } } , this.getElementMargin = function(t) { var e = t.currentStyle || window.getComputedStyle(t); return { top: parseFloat(e.marginTop), right: parseFloat(e.marginRight), bottom: parseFloat(e.marginBottom), left: parseFloat(e.marginLeft) } } , this.getMetaContent = function(t) { t = t.toLowerCase(); for (var e = document.getElementsByTagName("meta"), i = 0; i < e.length; i++) { var n = e[i]; if (n.name.toLowerCase() == t) return n.content } return null } , this.enableBinding = function() { Function.prototype.bind || (Function.prototype.bind = function(t) { var e = this; return function() { return e.apply(t, arguments) } } ) } , this.addEventListener = function(t, e, i) { return t.addEventListener ? (t.addEventListener(e, i, !1), !0) : !!t.attachEvent && t.attachEvent("on" + e, i) } , this.removeEventListener = function(t, e, i) { return t.removeEventListener ? (t.removeEventListener(e, i, !1), !0) : !!t.detachEvent && t.detachEvent("on" + e, i) } , this.handleWindowLoad = function(t) { this.initPage(), this.updateOrientation(), this.updateHeight() } , this.handleOrientationChange = function(t) { this.updateOrientation(), this.resize() } , this.handleReize = function(t) { this.resize(); var e = this; setTimeout(function() { e.resize() }, 500) } , this.initPage = function() { this.isFullscreen() && this.createWebappLinks(); var t = document.documentElement , e = t.className.split(" "); if (this.hasRetinaDisplay() && -1 == e.indexOf("retina") && e.push("retina"), this.isiOSDevice()) { -1 == e.indexOf("iOS") && e.push("iOS"), this.isFullscreen() && -1 == e.indexOf("fullscreen") && e.push("fullscreen"); var i = navigator.userAgent; i.indexOf("iPhone") > -1 ? t.setAttribute("device", "iPhone") : i.indexOf("iPod") > -1 ? t.setAttribute("device", "iPod") : i.indexOf("iPad") > -1 && t.setAttribute("device", "iPad"), i.indexOf("iPhone") > -1 || i.indexOf("iPod") > -1 ? t.setAttribute("deviceFamily", "iPhone_iPod") : i.indexOf("iPad") > -1 && t.setAttribute("deviceFamily", "iPad") } t.className = e.join(" ") } , this.updateOrientation = function() { var t = "portrait"; 90 == window.orientation || -90 == window.orientation ? (t = "landscape", 1) : 0, document.documentElement.setAttribute("orientation", t) } , this.resize = function() { this.updateHeight() } , this.hideAddressBar = function() {} , this.updateHeight = function() { var e = document.body; if (e) { var i = this.getViewportSize() , n = this.getElementPadding(e) , o = this.getElementMargin(e); i.height; if (n.top + n.bottom + (o.top + o.bottom), e.children.length > 0) { for (var d = e.children.length, h = e.children[0], r = this.getElementPadding(h), s = this.getElementMargin(h), a = d - 1; a >= 0; a--) { var u = e.children[a]; if ("absolute" != u.style.position && "fixed" != u.style.position && "SCRIPT" != u.tagName) break } var c = this.getElementPadding(u) , l = this.getElementMargin(u); r.top + c.bottom + (s.top + l.bottom) + 1 } null != t && t() } } , this.disableScrolling = function() { this.addEventListener(document.body, "touchmove", this.preventScrolling) } , this.enableScrolling = function() { this.removeEventListener(document.body, "touchmove", this.preventScrolling) } , this.preventScrolling = function(t) { t.preventDefault() } , this.disableZooming = function() { this.addEventListener(document.body, "touchmove", this.preventZooming) } , this.enableZooming = function() { this.removeEventListener(document.body, "touchmove", this.preventZooming) } , this.preventZooming = function(t) { 2 == t.touches.length && t.preventDefault() } , this.createWebappLinks = function() { for (var t = document.getElementsByTagName("a"), e = 0; e < t.length; e++) { var i = t[e]; "" != i.href && "" == i.target && (i.onclick = this.handleWebAppLink) } } , this.handleWebAppLink = function() { return window.location = this.getAttribute("href"), !1 } , this.autoWebapp = function() { this.addEventListener(window, "load", this.setupAutoWebapp) } , this.setupAutoWebapp = function() { this.disableScrolling(), this.disableZooming() } , this.init() } ; !function() { "use strict"; var e = function() { this.init() }; e.prototype = { init: function() { var e = this || n; return e._counter = 1e3, e._codecs = {}, e._howls = [], e._muted = !1, e._volume = 1, e._canPlayEvent = "canplaythrough", e._navigator = "undefined" != typeof window && window.navigator ? window.navigator : null, e.masterGain = null, e.noAudio = !1, e.usingWebAudio = !0, e.autoSuspend = !0, e.ctx = null, e.mobileAutoEnable = !0, e._setup(), e }, volume: function(e) { var t = this || n; if (e = parseFloat(e), t.ctx || _(), void 0 !== e && e >= 0 && e <= 1) { if (t._volume = e, t._muted) return t; t.usingWebAudio && t.masterGain.gain.setValueAtTime(e, n.ctx.currentTime); for (var o = 0; o < t._howls.length; o++) if (!t._howls[o]._webAudio) for (var r = t._howls[o]._getSoundIds(), a = 0; a < r.length; a++) { var i = t._howls[o]._soundById(r[a]); i && i._node && (i._node.volume = i._volume * e) } return t } return t._volume }, mute: function(e) { var t = this || n; t.ctx || _(), t._muted = e, t.usingWebAudio && t.masterGain.gain.setValueAtTime(e ? 0 : t._volume, n.ctx.currentTime); for (var o = 0; o < t._howls.length; o++) if (!t._howls[o]._webAudio) for (var r = t._howls[o]._getSoundIds(), a = 0; a < r.length; a++) { var i = t._howls[o]._soundById(r[a]); i && i._node && (i._node.muted = !!e || i._muted) } return t }, unload: function() { for (var e = this || n, t = e._howls.length - 1; t >= 0; t--) e._howls[t].unload(); return e.usingWebAudio && e.ctx && void 0 !== e.ctx.close && (e.ctx.close(), e.ctx = null, _()), e }, codecs: function(e) { return (this || n)._codecs[e.replace(/^x-/, "")] }, _setup: function() { var e = this || n; if (e.state = e.ctx && e.ctx.state || "running", e._autoSuspend(), !e.usingWebAudio) if ("undefined" != typeof Audio) try { void 0 === (new Audio).oncanplaythrough && (e._canPlayEvent = "canplay") } catch (n) { e.noAudio = !0 } else e.noAudio = !0; try { (new Audio).muted && (e.noAudio = !0) } catch (e) {} return e.noAudio || e._setupCodecs(), e }, _setupCodecs: function() { var e = this || n , t = null; try { t = "undefined" != typeof Audio ? new Audio : null } catch (n) { return e } if (!t || "function" != typeof t.canPlayType) return e; var o = t.canPlayType("audio/mpeg;").replace(/^no$/, "") , r = e._navigator && e._navigator.userAgent.match(/OPR\/([0-6].)/g) , a = r && parseInt(r[0].split("/")[1], 10) < 33; return e._codecs = { mp3: !(a || !o && !t.canPlayType("audio/mp3;").replace(/^no$/, "")), mpeg: !!o, opus: !!t.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/, ""), ogg: !!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""), oga: !!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""), wav: !!t.canPlayType('audio/wav; codecs="1"').replace(/^no$/, ""), aac: !!t.canPlayType("audio/aac;").replace(/^no$/, ""), caf: !!t.canPlayType("audio/x-caf;").replace(/^no$/, ""), m4a: !!(t.canPlayType("audio/x-m4a;") || t.canPlayType("audio/m4a;") || t.canPlayType("audio/aac;")).replace(/^no$/, ""), mp4: !!(t.canPlayType("audio/x-mp4;") || t.canPlayType("audio/mp4;") || t.canPlayType("audio/aac;")).replace(/^no$/, ""), weba: !!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/, ""), webm: !!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/, ""), dolby: !!t.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/, ""), flac: !!(t.canPlayType("audio/x-flac;") || t.canPlayType("audio/flac;")).replace(/^no$/, "") }, e }, _enableMobileAudio: function() { var e = this || n , t = /iPhone|iPad|iPod|Android|BlackBerry|BB10|Silk|Mobi/i.test(e._navigator && e._navigator.userAgent) , o = !!("ontouchend"in window || e._navigator && e._navigator.maxTouchPoints > 0 || e._navigator && e._navigator.msMaxTouchPoints > 0); if (!e._mobileEnabled && e.ctx && (t || o)) { e._mobileEnabled = !1, e._mobileUnloaded || 44100 === e.ctx.sampleRate || (e._mobileUnloaded = !0, e.unload()), e._scratchBuffer = e.ctx.createBuffer(1, 1, 22050); var r = function() { n._autoResume(); var t = e.ctx.createBufferSource(); t.buffer = e._scratchBuffer, t.connect(e.ctx.destination), void 0 === t.start ? t.noteOn(0) : t.start(0), "function" == typeof e.ctx.resume && e.ctx.resume(), t.onended = function() { t.disconnect(0), e._mobileEnabled = !0, e.mobileAutoEnable = !1, document.removeEventListener("touchstart", r, !0), document.removeEventListener("touchend", r, !0) } }; return document.addEventListener("touchstart", r, !0), document.addEventListener("touchend", r, !0), e } }, _autoSuspend: function() { var e = this; if (e.autoSuspend && e.ctx && void 0 !== e.ctx.suspend && n.usingWebAudio) { for (var t = 0; t < e._howls.length; t++) if (e._howls[t]._webAudio) for (var o = 0; o < e._howls[t]._sounds.length; o++) if (!e._howls[t]._sounds[o]._paused) return e; return e._suspendTimer && clearTimeout(e._suspendTimer), e._suspendTimer = setTimeout(function() { e.autoSuspend && (e._suspendTimer = null, e.state = "suspending", e.ctx.suspend().then(function() { e.state = "suspended", e._resumeAfterSuspend && (delete e._resumeAfterSuspend, e._autoResume()) })) }, 3e4), e } }, _autoResume: function() { var e = this; if (e.ctx && void 0 !== e.ctx.resume && n.usingWebAudio) return "running" === e.state && e._suspendTimer ? (clearTimeout(e._suspendTimer), e._suspendTimer = null) : "suspended" === e.state ? (e.ctx.resume().then(function() { e.state = "running"; for (var n = 0; n < e._howls.length; n++) e._howls[n]._emit("resume") }), e._suspendTimer && (clearTimeout(e._suspendTimer), e._suspendTimer = null)) : "suspending" === e.state && (e._resumeAfterSuspend = !0), e } }; var n = new e , t = function(e) { e.src && 0 !== e.src.length ? this.init(e) : console.error("An array of source files must be passed with any new Howl.") }; t.prototype = { init: function(e) { var t = this; return n.ctx || _(), t._autoplay = e.autoplay || !1, t._format = "string" != typeof e.format ? e.format : [e.format], t._html5 = e.html5 || !1, t._muted = e.mute || !1, t._loop = e.loop || !1, t._pool = e.pool || 5, t._preload = "boolean" != typeof e.preload || e.preload, t._rate = e.rate || 1, t._sprite = e.sprite || {}, t._src = "string" != typeof e.src ? e.src : [e.src], t._volume = void 0 !== e.volume ? e.volume : 1, t._xhrWithCredentials = e.xhrWithCredentials || !1, t._duration = 0, t._state = "unloaded", t._sounds = [], t._endTimers = {}, t._queue = [], t._playLock = !1, t._onend = e.onend ? [{ fn: e.onend }] : [], t._onfade = e.onfade ? [{ fn: e.onfade }] : [], t._onload = e.onload ? [{ fn: e.onload }] : [], t._onloaderror = e.onloaderror ? [{ fn: e.onloaderror }] : [], t._onplayerror = e.onplayerror ? [{ fn: e.onplayerror }] : [], t._onpause = e.onpause ? [{ fn: e.onpause }] : [], t._onplay = e.onplay ? [{ fn: e.onplay }] : [], t._onstop = e.onstop ? [{ fn: e.onstop }] : [], t._onmute = e.onmute ? [{ fn: e.onmute }] : [], t._onvolume = e.onvolume ? [{ fn: e.onvolume }] : [], t._onrate = e.onrate ? [{ fn: e.onrate }] : [], t._onseek = e.onseek ? [{ fn: e.onseek }] : [], t._onresume = [], t._webAudio = n.usingWebAudio && !t._html5, void 0 !== n.ctx && n.ctx && n.mobileAutoEnable && n._enableMobileAudio(), n._howls.push(t), t._autoplay && t._queue.push({ event: "play", action: function() { t.play() } }), t._preload && t.load(), t }, load: function() { var e = this , t = null; if (!n.noAudio) { "string" == typeof e._src && (e._src = [e._src]); for (var r = 0; r < e._src.length; r++) { var i, u; if (e._format && e._format[r]) i = e._format[r]; else { if ("string" != typeof (u = e._src[r])) { e._emit("loaderror", null, "Non-string found in selected audio sources - ignoring."); continue } (i = /^data:audio\/([^;,]+);/i.exec(u)) || (i = /\.([^.]+)$/.exec(u.split("?", 1)[0])), i && (i = i[1].toLowerCase()) } if (i || console.warn('No file extension was found. Consider using the "format" property or specify an extension.'), i && n.codecs(i)) { t = e._src[r]; break } } return t ? (e._src = t, e._state = "loading", "https:" === window.location.protocol && "http:" === t.slice(0, 5) && (e._html5 = !0, e._webAudio = !1), new o(e), e._webAudio && a(e), e) : void e._emit("loaderror", null, "No codec support for selected audio sources.") } e._emit("loaderror", null, "No audio support.") }, play: function(e, t) { var o = this , r = null; if ("number" == typeof e) r = e, e = null; else { if ("string" == typeof e && "loaded" === o._state && !o._sprite[e]) return null; if (void 0 === e) { e = "__default"; for (var a = 0, i = 0; i < o._sounds.length; i++) o._sounds[i]._paused && !o._sounds[i]._ended && (a++, r = o._sounds[i]._id); 1 === a ? e = null : r = null } } var u = r ? o._soundById(r) : o._inactiveSound(); if (!u) return null; if (r && !e && (e = u._sprite || "__default"), "loaded" !== o._state) { u._sprite = e, u._ended = !1; var d = u._id; return o._queue.push({ event: "play", action: function() { o.play(d) } }), d } if (r && !u._paused) return t || o._loadQueue("play"), u._id; o._webAudio && n._autoResume(); var _ = Math.max(0, u._seek > 0 ? u._seek : o._sprite[e][0] / 1e3) , s = Math.max(0, (o._sprite[e][0] + o._sprite[e][1]) / 1e3 - _) , l = 1e3 * s / Math.abs(u._rate); u._paused = !1, u._ended = !1, u._sprite = e, u._seek = _, u._start = o._sprite[e][0] / 1e3, u._stop = (o._sprite[e][0] + o._sprite[e][1]) / 1e3, u._loop = !(!u._loop && !o._sprite[e][2]); var c = u._node; if (o._webAudio) { var p = function() { o._refreshBuffer(u); var e = u._muted || o._muted ? 0 : u._volume; c.gain.setValueAtTime(e, n.ctx.currentTime), u._playStart = n.ctx.currentTime, void 0 === c.bufferSource.start ? u._loop ? c.bufferSource.noteGrainOn(0, _, 86400) : c.bufferSource.noteGrainOn(0, _, s) : u._loop ? c.bufferSource.start(0, _, 86400) : c.bufferSource.start(0, _, s), l !== 1 / 0 && (o._endTimers[u._id] = setTimeout(o._ended.bind(o, u), l)), t || setTimeout(function() { o._emit("play", u._id) }, 0) }; "running" === n.state ? p() : (o.once("resume", p), o._clearTimer(u._id)) } else { var f = function() { c.currentTime = _, c.muted = u._muted || o._muted || n._muted || c.muted, c.volume = u._volume * n.volume(), c.playbackRate = u._rate; try { var r = c.play(); if ("undefined" != typeof Promise && r instanceof Promise) { o._playLock = !0; var a = function() { o._playLock = !1, t || o._emit("play", u._id) }; r.then(a, a) } else t || o._emit("play", u._id); if (c.paused) return void o._emit("playerror", u._id, "Playback was unable to start. This is most commonly an issue on mobile devices where playback was not within a user interaction."); "__default" !== e ? o._endTimers[u._id] = setTimeout(o._ended.bind(o, u), l) : (o._endTimers[u._id] = function() { o._ended(u), c.removeEventListener("ended", o._endTimers[u._id], !1) } , c.addEventListener("ended", o._endTimers[u._id], !1)) } catch (e) { o._emit("playerror", u._id, e) } } , m = window && window.ejecta || !c.readyState && n._navigator.isCocoonJS; if (c.readyState >= 3 || m) f(); else { var v = function() { f(), c.removeEventListener(n._canPlayEvent, v, !1) }; c.addEventListener(n._canPlayEvent, v, !1), o._clearTimer(u._id) } } return u._id }, pause: function(e) { var n = this; if ("loaded" !== n._state || n._playLock) return n._queue.push({ event: "pause", action: function() { n.pause(e) } }), n; for (var t = n._getSoundIds(e), o = 0; o < t.length; o++) { n._clearTimer(t[o]); var r = n._soundById(t[o]); if (r && !r._paused && (r._seek = n.seek(t[o]), r._rateSeek = 0, r._paused = !0, n._stopFade(t[o]), r._node)) if (n._webAudio) { if (!r._node.bufferSource) continue; void 0 === r._node.bufferSource.stop ? r._node.bufferSource.noteOff(0) : r._node.bufferSource.stop(0), n._cleanBuffer(r._node) } else isNaN(r._node.duration) && r._node.duration !== 1 / 0 || r._node.pause(); arguments[1] || n._emit("pause", r ? r._id : null) } return n }, stop: function(e, n) { var t = this; if ("loaded" !== t._state) return t._queue.push({ event: "stop", action: function() { t.stop(e) } }), t; for (var o = t._getSoundIds(e), r = 0; r < o.length; r++) { t._clearTimer(o[r]); var a = t._soundById(o[r]); a && (a._seek = a._start || 0, a._rateSeek = 0, a._paused = !0, a._ended = !0, t._stopFade(o[r]), a._node && (t._webAudio ? a._node.bufferSource && (void 0 === a._node.bufferSource.stop ? a._node.bufferSource.noteOff(0) : a._node.bufferSource.stop(0), t._cleanBuffer(a._node)) : isNaN(a._node.duration) && a._node.duration !== 1 / 0 || (a._node.currentTime = a._start || 0, a._node.pause())), n || t._emit("stop", a._id)) } return t }, mute: function(e, t) { var o = this; if ("loaded" !== o._state) return o._queue.push({ event: "mute", action: function() { o.mute(e, t) } }), o; if (void 0 === t) { if ("boolean" != typeof e) return o._muted; o._muted = e } for (var r = o._getSoundIds(t), a = 0; a < r.length; a++) { var i = o._soundById(r[a]); i && (i._muted = e, i._interval && o._stopFade(i._id), o._webAudio && i._node ? i._node.gain.setValueAtTime(e ? 0 : i._volume, n.ctx.currentTime) : i._node && (i._node.muted = !!n._muted || e), o._emit("mute", i._id)) } return o }, volume: function() { var e, t, o, r = this, a = arguments; if (0 === a.length) return r._volume; if (1 === a.length || 2 === a.length && void 0 === a[1] ? r._getSoundIds().indexOf(a[0]) >= 0 ? t = parseInt(a[0], 10) : e = parseFloat(a[0]) : a.length >= 2 && (e = parseFloat(a[0]), t = parseInt(a[1], 10)), !(void 0 !== e && e >= 0 && e <= 1)) return (o = t ? r._soundById(t) : r._sounds[0]) ? o._volume : 0; if ("loaded" !== r._state) return r._queue.push({ event: "volume", action: function() { r.volume.apply(r, a) } }), r; void 0 === t && (r._volume = e), t = r._getSoundIds(t); for (var i = 0; i < t.length; i++) (o = r._soundById(t[i])) && (o._volume = e, a[2] || r._stopFade(t[i]), r._webAudio && o._node && !o._muted ? o._node.gain.setValueAtTime(e, n.ctx.currentTime) : o._node && !o._muted && (o._node.volume = e * n.volume()), r._emit("volume", o._id)); return r }, fade: function(e, t, o, r) { var a = this; if ("loaded" !== a._state) return a._queue.push({ event: "fade", action: function() { a.fade(e, t, o, r) } }), a; a.volume(e, r); for (var i = a._getSoundIds(r), u = 0; u < i.length; u++) { var d = a._soundById(i[u]); if (d) { if (r || a._stopFade(i[u]), a._webAudio && !d._muted) { var _ = n.ctx.currentTime , s = _ + o / 1e3; d._volume = e, d._node.gain.setValueAtTime(e, _), d._node.gain.linearRampToValueAtTime(t, s) } a._startFadeInterval(d, e, t, o, i[u], void 0 === r) } } return a }, _startFadeInterval: function(e, n, t, o, r, a) { var i = this , u = n , d = t - n , _ = Math.abs(d / .01) , s = Math.max(4, _ > 0 ? o / _ : o) , l = Date.now(); e._fadeTo = t, e._interval = setInterval(function() { var r = (Date.now() - l) / o; l = Date.now(), u += d * r, u = Math.max(0, u), u = Math.min(1, u), u = Math.round(100 * u) / 100, i._webAudio ? e._volume = u : i.volume(u, e._id, !0), a && (i._volume = u), (t < n && u <= t || t > n && u >= t) && (clearInterval(e._interval), e._interval = null, e._fadeTo = null, i.volume(t, e._id), i._emit("fade", e._id)) }, s) }, _stopFade: function(e) { var t = this , o = t._soundById(e); return o && o._interval && (t._webAudio && o._node.gain.cancelScheduledValues(n.ctx.currentTime), clearInterval(o._interval), o._interval = null, t.volume(o._fadeTo, e), o._fadeTo = null, t._emit("fade", e)), t }, loop: function() { var e, n, t, o = this, r = arguments; if (0 === r.length) return o._loop; if (1 === r.length) { if ("boolean" != typeof r[0]) return !!(t = o._soundById(parseInt(r[0], 10))) && t._loop; e = r[0], o._loop = e } else 2 === r.length && (e = r[0], n = parseInt(r[1], 10)); for (var a = o._getSoundIds(n), i = 0; i < a.length; i++) (t = o._soundById(a[i])) && (t._loop = e, o._webAudio && t._node && t._node.bufferSource && (t._node.bufferSource.loop = e, e && (t._node.bufferSource.loopStart = t._start || 0, t._node.bufferSource.loopEnd = t._stop))); return o }, rate: function() { var e, t, o, r = this, a = arguments; if (0 === a.length) t = r._sounds[0]._id; else if (1 === a.length) { r._getSoundIds().indexOf(a[0]) >= 0 ? t = parseInt(a[0], 10) : e = parseFloat(a[0]) } else 2 === a.length && (e = parseFloat(a[0]), t = parseInt(a[1], 10)); if ("number" != typeof e) return (o = r._soundById(t)) ? o._rate : r._rate; if ("loaded" !== r._state) return r._queue.push({ event: "rate", action: function() { r.rate.apply(r, a) } }), r; void 0 === t && (r._rate = e), t = r._getSoundIds(t); for (var i = 0; i < t.length; i++) if (o = r._soundById(t[i])) { o._rateSeek = r.seek(t[i]), o._playStart = r._webAudio ? n.ctx.currentTime : o._playStart, o._rate = e, r._webAudio && o._node && o._node.bufferSource ? o._node.bufferSource.playbackRate.setValueAtTime(e, n.ctx.currentTime) : o._node && (o._node.playbackRate = e); var u = r.seek(t[i]) , d = 1e3 * ((r._sprite[o._sprite][0] + r._sprite[o._sprite][1]) / 1e3 - u) / Math.abs(o._rate); !r._endTimers[t[i]] && o._paused || (r._clearTimer(t[i]), r._endTimers[t[i]] = setTimeout(r._ended.bind(r, o), d)), r._emit("rate", o._id) } return r }, seek: function() { var e, t, o = this, r = arguments; if (0 === r.length) t = o._sounds[0]._id; else if (1 === r.length) { o._getSoundIds().indexOf(r[0]) >= 0 ? t = parseInt(r[0], 10) : o._sounds.length && (t = o._sounds[0]._id, e = parseFloat(r[0])) } else 2 === r.length && (e = parseFloat(r[0]), t = parseInt(r[1], 10)); if (void 0 === t) return o; if ("loaded" !== o._state) return o._queue.push({ event: "seek", action: function() { o.seek.apply(o, r) } }), o; var a = o._soundById(t); if (a) { if (!("number" == typeof e && e >= 0)) { if (o._webAudio) { var i = o.playing(t) ? n.ctx.currentTime - a._playStart : 0 , u = a._rateSeek ? a._rateSeek - a._seek : 0; return a._seek + (u + i * Math.abs(a._rate)) } return a._node.currentTime } var d = o.playing(t); if (d && o.pause(t, !0), a._seek = e, a._ended = !1, o._clearTimer(t), d && o.play(t, !0), !o._webAudio && a._node && (a._node.currentTime = e), d && !o._webAudio) { var _ = function() { o._playLock ? setTimeout(_, 0) : o._emit("seek", t) }; setTimeout(_, 0) } else o._emit("seek", t) } return o }, playing: function(e) { var n = this; if ("number" == typeof e) { var t = n._soundById(e); return !!t && !t._paused } for (var o = 0; o < n._sounds.length; o++) if (!n._sounds[o]._paused) return !0; return !1 }, duration: function(e) { var n = this , t = n._duration , o = n._soundById(e); return o && (t = n._sprite[o._sprite][1] / 1e3), t }, state: function() { return this._state }, unload: function() { for (var e = this, t = e._sounds, o = 0; o < t.length; o++) { t[o]._paused || e.stop(t[o]._id), e._webAudio || (/MSIE |Trident\//.test(n._navigator && n._navigator.userAgent) || (t[o]._node.src = "data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"), t[o]._node.removeEventListener("error", t[o]._errorFn, !1), t[o]._node.removeEventListener(n._canPlayEvent, t[o]._loadFn, !1)), delete t[o]._node, e._clearTimer(t[o]._id); var a = n._howls.indexOf(e); a >= 0 && n._howls.splice(a, 1) } var i = !0; for (o = 0; o < n._howls.length; o++) if (n._howls[o]._src === e._src) { i = !1; break } return r && i && delete r[e._src], n.noAudio = !1, e._state = "unloaded", e._sounds = [], e = null, null }, on: function(e, n, t, o) { var r = this["_on" + e]; return "function" == typeof n && r.push(o ? { id: t, fn: n, once: o } : { id: t, fn: n }), this }, off: function(e, n, t) { var o = this , r = o["_on" + e] , a = 0; if ("number" == typeof n && (t = n, n = null), n || t) for (a = 0; a < r.length; a++) { var i = t === r[a].id; if (n === r[a].fn && i || !n && i) { r.splice(a, 1); break } } else if (e) o["_on" + e] = []; else { var u = Object.keys(o); for (a = 0; a < u.length; a++) 0 === u[a].indexOf("_on") && Array.isArray(o[u[a]]) && (o[u[a]] = []) } return o }, once: function(e, n, t) { return this.on(e, n, t, 1), this }, _emit: function(e, n, t) { for (var o = this, r = o["_on" + e], a = r.length - 1; a >= 0; a--) r[a].id && r[a].id !== n && "load" !== e || (setTimeout(function(e) { e.call(this, n, t) } .bind(o, r[a].fn), 0), r[a].once && o.off(e, r[a].fn, r[a].id)); return o._loadQueue(e), o }, _loadQueue: function(e) { var n = this; if (n._queue.length > 0) { var t = n._queue[0]; t.event === e && (n._queue.shift(), n._loadQueue()), e || t.action() } return n }, _ended: function(e) { var t = this , o = e._sprite; if (!t._webAudio && e._node && !e._node.paused && !e._node.ended && e._node.currentTime < e._stop) return setTimeout(t._ended.bind(t, e), 100), t; var r = !(!e._loop && !t._sprite[o][2]); if (t._emit("end", e._id), !t._webAudio && r && t.stop(e._id, !0).play(e._id), t._webAudio && r) { t._emit("play", e._id), e._seek = e._start || 0, e._rateSeek = 0, e._playStart = n.ctx.currentTime; var a = 1e3 * (e._stop - e._start) / Math.abs(e._rate); t._endTimers[e._id] = setTimeout(t._ended.bind(t, e), a) } return t._webAudio && !r && (e._paused = !0, e._ended = !0, e._seek = e._start || 0, e._rateSeek = 0, t._clearTimer(e._id), t._cleanBuffer(e._node), n._autoSuspend()), t._webAudio || r || t.stop(e._id), t }, _clearTimer: function(e) { var n = this; if (n._endTimers[e]) { if ("function" != typeof n._endTimers[e]) clearTimeout(n._endTimers[e]); else { var t = n._soundById(e); t && t._node && t._node.removeEventListener("ended", n._endTimers[e], !1) } delete n._endTimers[e] } return n }, _soundById: function(e) { for (var n = this, t = 0; t < n._sounds.length; t++) if (e === n._sounds[t]._id) return n._sounds[t]; return null }, _inactiveSound: function() { var e = this; e._drain(); for (var n = 0; n < e._sounds.length; n++) if (e._sounds[n]._ended) return e._sounds[n].reset(); return new o(e) }, _drain: function() { var e = this , n = e._pool , t = 0 , o = 0; if (!(e._sounds.length < n)) { for (o = 0; o < e._sounds.length; o++) e._sounds[o]._ended && t++; for (o = e._sounds.length - 1; o >= 0; o--) { if (t <= n) return; e._sounds[o]._ended && (e._webAudio && e._sounds[o]._node && e._sounds[o]._node.disconnect(0), e._sounds.splice(o, 1), t--) } } }, _getSoundIds: function(e) { if (void 0 === e) { for (var n = [], t = 0; t < this._sounds.length; t++) n.push(this._sounds[t]._id); return n } return [e] }, _refreshBuffer: function(e) { return e._node.bufferSource = n.ctx.createBufferSource(), e._node.bufferSource.buffer = r[this._src], e._panner ? e._node.bufferSource.connect(e._panner) : e._node.bufferSource.connect(e._node), e._node.bufferSource.loop = e._loop, e._loop && (e._node.bufferSource.loopStart = e._start || 0, e._node.bufferSource.loopEnd = e._stop), e._node.bufferSource.playbackRate.setValueAtTime(e._rate, n.ctx.currentTime), this }, _cleanBuffer: function(e) { if (n._scratchBuffer) { e.bufferSource.onended = null, e.bufferSource.disconnect(0); try { e.bufferSource.buffer = n._scratchBuffer } catch (e) {} } return e.bufferSource = null, this } }; var o = function(e) { this._parent = e, this.init() }; o.prototype = { init: function() { var e = this , t = e._parent; return e._muted = t._muted, e._loop = t._loop, e._volume = t._volume, e._rate = t._rate, e._seek = 0, e._paused = !0, e._ended = !0, e._sprite = "__default", e._id = ++n._counter, t._sounds.push(e), e.create(), e }, create: function() { var e = this , t = e._parent , o = n._muted || e._muted || e._parent._muted ? 0 : e._volume; return t._webAudio ? (e._node = void 0 === n.ctx.createGain ? n.ctx.createGainNode() : n.ctx.createGain(), e._node.gain.setValueAtTime(o, n.ctx.currentTime), e._node.paused = !0, e._node.connect(n.masterGain)) : (e._node = new Audio, e._errorFn = e._errorListener.bind(e), e._node.addEventListener("error", e._errorFn, !1), e._loadFn = e._loadListener.bind(e), e._node.addEventListener(n._canPlayEvent, e._loadFn, !1), e._node.src = t._src, e._node.preload = "auto", e._node.volume = o * n.volume(), e._node.load()), e }, reset: function() { var e = this , t = e._parent; return e._muted = t._muted, e._loop = t._loop, e._volume = t._volume, e._rate = t._rate, e._seek = 0, e._rateSeek = 0, e._paused = !0, e._ended = !0, e._sprite = "__default", e._id = ++n._counter, e }, _errorListener: function() { var e = this; e._parent._emit("loaderror", e._id, e._node.error ? e._node.error.code : 0), e._node.removeEventListener("error", e._errorFn, !1) }, _loadListener: function() { var e = this , t = e._parent; t._duration = Math.ceil(10 * e._node.duration) / 10, 0 === Object.keys(t._sprite).length && (t._sprite = { __default: [0, 1e3 * t._duration] }), "loaded" !== t._state && (t._state = "loaded", t._emit("load"), t._loadQueue()), e._node.removeEventListener(n._canPlayEvent, e._loadFn, !1) } }; var r = {} , a = function(e) { var n = e._src; if (r[n]) return e._duration = r[n].duration, void d(e); if (/^data:[^;]+;base64,/.test(n)) { for (var t = atob(n.split(",")[1]), o = new Uint8Array(t.length), a = 0; a < t.length; ++a) o[a] = t.charCodeAt(a); u(o.buffer, e) } else { var _ = new XMLHttpRequest; _.open("GET", n, !0), _.withCredentials = e._xhrWithCredentials, _.responseType = "arraybuffer", _.onload = function() { var n = (_.status + "")[0]; "0" === n || "2" === n || "3" === n ? u(_.response, e) : e._emit("loaderror", null, "Failed loading audio file with status: " + _.status + ".") } , _.onerror = function() { e._webAudio && (e._html5 = !0, e._webAudio = !1, e._sounds = [], delete r[n], e.load()) } , i(_) } } , i = function(e) { try { e.send() } catch (n) { e.onerror() } } , u = function(e, t) { n.ctx.decodeAudioData(e, function(e) { e && t._sounds.length > 0 && (r[t._src] = e, d(t, e)) }, function() { t._emit("loaderror", null, "Decoding audio data failed.") }) } , d = function(e, n) { n && !e._duration && (e._duration = n.duration), 0 === Object.keys(e._sprite).length && (e._sprite = { __default: [0, 1e3 * e._duration] }), "loaded" !== e._state && (e._state = "loaded", e._emit("load"), e._loadQueue()) } , _ = function() { try { "undefined" != typeof AudioContext ? n.ctx = new AudioContext : "undefined" != typeof webkitAudioContext ? n.ctx = new webkitAudioContext : n.usingWebAudio = !1 } catch (e) { n.usingWebAudio = !1 } var e = /iP(hone|od|ad)/.test(n._navigator && n._navigator.platform) , t = n._navigator && n._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/) , o = t ? parseInt(t[1], 10) : null; if (e && o && o < 9) { var r = /safari/.test(n._navigator && n._navigator.userAgent.toLowerCase()); (n._navigator && n._navigator.standalone && !r || n._navigator && !n._navigator.standalone && !r) && (n.usingWebAudio = !1) } n.usingWebAudio && (n.masterGain = void 0 === n.ctx.createGain ? n.ctx.createGainNode() : n.ctx.createGain(), n.masterGain.gain.setValueAtTime(n._muted ? 0 : 1, n.ctx.currentTime), n.masterGain.connect(n.ctx.destination)), n._setup() }; "function" == typeof define && define.amd && define([], function() { return { Howler: n, Howl: t } }), "undefined" != typeof exports && (exports.Howler = n, exports.Howl = t), "undefined" != typeof window ? (window.HowlerGlobal = e, window.Howler = n, window.Howl = t, window.Sound = o) : "undefined" != typeof global && (global.HowlerGlobal = e, global.Howler = n, global.Howl = t, global.Sound = o) }(), function() { "use strict"; HowlerGlobal.prototype._pos = [0, 0, 0], HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0], HowlerGlobal.prototype.stereo = function(e) { var n = this; if (!n.ctx || !n.ctx.listener) return n; for (var t = n._howls.length - 1; t >= 0; t--) n._howls[t].stereo(e); return n } , HowlerGlobal.prototype.pos = function(e, n, t) { var o = this; return o.ctx && o.ctx.listener ? (n = "number" != typeof n ? o._pos[1] : n, t = "number" != typeof t ? o._pos[2] : t, "number" != typeof e ? o._pos : (o._pos = [e, n, t], o.ctx.listener.setPosition(o._pos[0], o._pos[1], o._pos[2]), o)) : o } , HowlerGlobal.prototype.orientation = function(e, n, t, o, r, a) { var i = this; if (!i.ctx || !i.ctx.listener) return i; var u = i._orientation; return n = "number" != typeof n ? u[1] : n, t = "number" != typeof t ? u[2] : t, o = "number" != typeof o ? u[3] : o, r = "number" != typeof r ? u[4] : r, a = "number" != typeof a ? u[5] : a, "number" != typeof e ? u : (i._orientation = [e, n, t, o, r, a], i.ctx.listener.setOrientation(e, n, t, o, r, a), i) } , Howl.prototype.init = function(e) { return function(n) { var t = this; return t._orientation = n.orientation || [1, 0, 0], t._stereo = n.stereo || null, t._pos = n.pos || null, t._pannerAttr = { coneInnerAngle: void 0 !== n.coneInnerAngle ? n.coneInnerAngle : 360, coneOuterAngle: void 0 !== n.coneOuterAngle ? n.coneOuterAngle : 360, coneOuterGain: void 0 !== n.coneOuterGain ? n.coneOuterGain : 0, distanceModel: void 0 !== n.distanceModel ? n.distanceModel : "inverse", maxDistance: void 0 !== n.maxDistance ? n.maxDistance : 1e4, panningModel: void 0 !== n.panningModel ? n.panningModel : "HRTF", refDistance: void 0 !== n.refDistance ? n.refDistance : 1, rolloffFactor: void 0 !== n.rolloffFactor ? n.rolloffFactor : 1 }, t._onstereo = n.onstereo ? [{ fn: n.onstereo }] : [], t._onpos = n.onpos ? [{ fn: n.onpos }] : [], t._onorientation = n.onorientation ? [{ fn: n.onorientation }] : [], e.call(this, n) } }(Howl.prototype.init), Howl.prototype.stereo = function(n, t) { var o = this; if (!o._webAudio) return o; if ("loaded" !== o._state) return o._queue.push({ event: "stereo", action: function() { o.stereo(n, t) } }), o; var r = void 0 === Howler.ctx.createStereoPanner ? "spatial" : "stereo"; if (void 0 === t) { if ("number" != typeof n) return o._stereo; o._stereo = n, o._pos = [n, 0, 0] } for (var a = o._getSoundIds(t), i = 0; i < a.length; i++) { var u = o._soundById(a[i]); if (u) { if ("number" != typeof n) return u._stereo; u._stereo = n, u._pos = [n, 0, 0], u._node && (u._pannerAttr.panningModel = "equalpower", u._panner && u._panner.pan || e(u, r), "spatial" === r ? u._panner.setPosition(n, 0, 0) : u._panner.pan.setValueAtTime(n, Howler.ctx.currentTime)), o._emit("stereo", u._id) } } return o } , Howl.prototype.pos = function(n, t, o, r) { var a = this; if (!a._webAudio) return a; if ("loaded" !== a._state) return a._queue.push({ event: "pos", action: function() { a.pos(n, t, o, r) } }), a; if (t = "number" != typeof t ? 0 : t, o = "number" != typeof o ? -.5 : o, void 0 === r) { if ("number" != typeof n) return a._pos; a._pos = [n, t, o] } for (var i = a._getSoundIds(r), u = 0; u < i.length; u++) { var d = a._soundById(i[u]); if (d) { if ("number" != typeof n) return d._pos; d._pos = [n, t, o], d._node && (d._panner && !d._panner.pan || e(d, "spatial"), d._panner.setPosition(n, t, o)), a._emit("pos", d._id) } } return a } , Howl.prototype.orientation = function(n, t, o, r) { var a = this; if (!a._webAudio) return a; if ("loaded" !== a._state) return a._queue.push({ event: "orientation", action: function() { a.orientation(n, t, o, r) } }), a; if (t = "number" != typeof t ? a._orientation[1] : t, o = "number" != typeof o ? a._orientation[2] : o, void 0 === r) { if ("number" != typeof n) return a._orientation; a._orientation = [n, t, o] } for (var i = a._getSoundIds(r), u = 0; u < i.length; u++) { var d = a._soundById(i[u]); if (d) { if ("number" != typeof n) return d._orientation; d._orientation = [n, t, o], d._node && (d._panner || (d._pos || (d._pos = a._pos || [0, 0, -.5]), e(d, "spatial")), d._panner.setOrientation(n, t, o)), a._emit("orientation", d._id) } } return a } , Howl.prototype.pannerAttr = function() { var n, t, o, r = this, a = arguments; if (!r._webAudio) return r; if (0 === a.length) return r._pannerAttr; if (1 === a.length) { if ("object" != typeof a[0]) return (o = r._soundById(parseInt(a[0], 10))) ? o._pannerAttr : r._pannerAttr; n = a[0], void 0 === t && (n.pannerAttr || (n.pannerAttr = { coneInnerAngle: n.coneInnerAngle, coneOuterAngle: n.coneOuterAngle, coneOuterGain: n.coneOuterGain, distanceModel: n.distanceModel, maxDistance: n.maxDistance, refDistance: n.refDistance, rolloffFactor: n.rolloffFactor, panningModel: n.panningModel }), r._pannerAttr = { coneInnerAngle: void 0 !== n.pannerAttr.coneInnerAngle ? n.pannerAttr.coneInnerAngle : r._coneInnerAngle, coneOuterAngle: void 0 !== n.pannerAttr.coneOuterAngle ? n.pannerAttr.coneOuterAngle : r._coneOuterAngle, coneOuterGain: void 0 !== n.pannerAttr.coneOuterGain ? n.pannerAttr.coneOuterGain : r._coneOuterGain, distanceModel: void 0 !== n.pannerAttr.distanceModel ? n.pannerAttr.distanceModel : r._distanceModel, maxDistance: void 0 !== n.pannerAttr.maxDistance ? n.pannerAttr.maxDistance : r._maxDistance, refDistance: void 0 !== n.pannerAttr.refDistance ? n.pannerAttr.refDistance : r._refDistance, rolloffFactor: void 0 !== n.pannerAttr.rolloffFactor ? n.pannerAttr.rolloffFactor : r._rolloffFactor, panningModel: void 0 !== n.pannerAttr.panningModel ? n.pannerAttr.panningModel : r._panningModel }) } else 2 === a.length && (n = a[0], t = parseInt(a[1], 10)); for (var i = r._getSoundIds(t), u = 0; u < i.length; u++) if (o = r._soundById(i[u])) { var d = o._pannerAttr; d = { coneInnerAngle: void 0 !== n.coneInnerAngle ? n.coneInnerAngle : d.coneInnerAngle, coneOuterAngle: void 0 !== n.coneOuterAngle ? n.coneOuterAngle : d.coneOuterAngle, coneOuterGain: void 0 !== n.coneOuterGain ? n.coneOuterGain : d.coneOuterGain, distanceModel: void 0 !== n.distanceModel ? n.distanceModel : d.distanceModel, maxDistance: void 0 !== n.maxDistance ? n.maxDistance : d.maxDistance, refDistance: void 0 !== n.refDistance ? n.refDistance : d.refDistance, rolloffFactor: void 0 !== n.rolloffFactor ? n.rolloffFactor : d.rolloffFactor, panningModel: void 0 !== n.panningModel ? n.panningModel : d.panningModel }; var _ = o._panner; _ ? (_.coneInnerAngle = d.coneInnerAngle, _.coneOuterAngle = d.coneOuterAngle, _.coneOuterGain = d.coneOuterGain, _.distanceModel = d.distanceModel, _.maxDistance = d.maxDistance, _.refDistance = d.refDistance, _.rolloffFactor = d.rolloffFactor, _.panningModel = d.panningModel) : (o._pos || (o._pos = r._pos || [0, 0, -.5]), e(o, "spatial")) } return r } , Sound.prototype.init = function(e) { return function() { var n = this , t = n._parent; n._orientation = t._orientation, n._stereo = t._stereo, n._pos = t._pos, n._pannerAttr = t._pannerAttr, e.call(this), n._stereo ? t.stereo(n._stereo) : n._pos && t.pos(n._pos[0], n._pos[1], n._pos[2], n._id) } }(Sound.prototype.init), Sound.prototype.reset = function(e) { return function() { var n = this , t = n._parent; return n._orientation = t._orientation, n._pos = t._pos, n._pannerAttr = t._pannerAttr, e.call(this) } }(Sound.prototype.reset); var e = function(e, n) { "spatial" === (n = n || "spatial") ? (e._panner = Howler.ctx.createPanner(), e._panner.coneInnerAngle = e._pannerAttr.coneInnerAngle, e._panner.coneOuterAngle = e._pannerAttr.coneOuterAngle, e._panner.coneOuterGain = e._pannerAttr.coneOuterGain, e._panner.distanceModel = e._pannerAttr.distanceModel, e._panner.maxDistance = e._pannerAttr.maxDistance, e._panner.refDistance = e._pannerAttr.refDistance, e._panner.rolloffFactor = e._pannerAttr.rolloffFactor, e._panner.panningModel = e._pannerAttr.panningModel, e._panner.setPosition(e._pos[0], e._pos[1], e._pos[2]), e._panner.setOrientation(e._orientation[0], e._orientation[1], e._orientation[2])) : (e._panner = Howler.ctx.createStereoPanner(), e._panner.pan.setValueAtTime(e._stereo, Howler.ctx.currentTime)), e._panner.connect(e._node), e._paused || e._parent.pause(e._id, !0).play(e._id, !0) } }(); !function(t) { if ("object" == typeof exports && "undefined" != typeof module) module.exports = t(); else if ("function" == typeof define && define.amd) define([], t); else { ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this).pako = t() } }(function() { return function t(e, a, i) { function n(s, o) { if (!a[s]) { if (!e[s]) { var l = "function" == typeof require && require; if (!o && l) return l(s, !0); if (r) return r(s, !0); var h = new Error("Cannot find module '" + s + "'"); throw h.code = "MODULE_NOT_FOUND", h } var d = a[s] = { exports: {} }; e[s][0].call(d.exports, function(t) { var a = e[s][1][t]; return n(a || t) }, d, d.exports, t, e, a, i) } return a[s].exports } for (var r = "function" == typeof require && require, s = 0; s < i.length; s++) n(i[s]); return n }({ 1: [function(t, e, a) { "use strict"; function i(t) { if (!(this instanceof i)) return new i(t); this.options = s.assign({ level: _, method: c, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: u, to: "" }, t || {}); var e = this.options; e.raw && e.windowBits > 0 ? e.windowBits = -e.windowBits : e.gzip && e.windowBits > 0 && e.windowBits < 16 && (e.windowBits += 16), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new h, this.strm.avail_out = 0; var a = r.deflateInit2(this.strm, e.level, e.method, e.windowBits, e.memLevel, e.strategy); if (a !== f) throw new Error(l[a]); if (e.header && r.deflateSetHeader(this.strm, e.header), e.dictionary) { var n; if (n = "string" == typeof e.dictionary ? o.string2buf(e.dictionary) : "[object ArrayBuffer]" === d.call(e.dictionary) ? new Uint8Array(e.dictionary) : e.dictionary, (a = r.deflateSetDictionary(this.strm, n)) !== f) throw new Error(l[a]); this._dict_set = !0 } } function n(t, e) { var a = new i(e); if (a.push(t, !0), a.err) throw a.msg; return a.result } var r = t("./zlib/deflate") , s = t("./utils/common") , o = t("./utils/strings") , l = t("./zlib/messages") , h = t("./zlib/zstream") , d = Object.prototype.toString , f = 0 , _ = -1 , u = 0 , c = 8; i.prototype.push = function(t, e) { var a, i, n = this.strm, l = this.options.chunkSize; if (this.ended) return !1; i = e === ~~e ? e : !0 === e ? 4 : 0, "string" == typeof t ? n.input = o.string2buf(t) : "[object ArrayBuffer]" === d.call(t) ? n.input = new Uint8Array(t) : n.input = t, n.next_in = 0, n.avail_in = n.input.length; do { if (0 === n.avail_out && (n.output = new s.Buf8(l), n.next_out = 0, n.avail_out = l), 1 !== (a = r.deflate(n, i)) && a !== f) return this.onEnd(a), this.ended = !0, !1; 0 !== n.avail_out && (0 !== n.avail_in || 4 !== i && 2 !== i) || ("string" === this.options.to ? this.onData(o.buf2binstring(s.shrinkBuf(n.output, n.next_out))) : this.onData(s.shrinkBuf(n.output, n.next_out))) } while ((n.avail_in > 0 || 0 === n.avail_out) && 1 !== a);return 4 === i ? (a = r.deflateEnd(this.strm), this.onEnd(a), this.ended = !0, a === f) : 2 !== i || (this.onEnd(f), n.avail_out = 0, !0) } , i.prototype.onData = function(t) { this.chunks.push(t) } , i.prototype.onEnd = function(t) { t === f && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = s.flattenChunks(this.chunks)), this.chunks = [], this.err = t, this.msg = this.strm.msg } , a.Deflate = i, a.deflate = n, a.deflateRaw = function(t, e) { return (e = e || {}).raw = !0, n(t, e) } , a.gzip = function(t, e) { return (e = e || {}).gzip = !0, n(t, e) } } , { "./utils/common": 3, "./utils/strings": 4, "./zlib/deflate": 8, "./zlib/messages": 13, "./zlib/zstream": 15 }], 2: [function(t, e, a) { "use strict"; function i(t) { if (!(this instanceof i)) return new i(t); this.options = s.assign({ chunkSize: 16384, windowBits: 0, to: "" }, t || {}); var e = this.options; e.raw && e.windowBits >= 0 && e.windowBits < 16 && (e.windowBits = -e.windowBits, 0 === e.windowBits && (e.windowBits = -15)), !(e.windowBits >= 0 && e.windowBits < 16) || t && t.windowBits || (e.windowBits += 32), e.windowBits > 15 && e.windowBits < 48 && 0 == (15 & e.windowBits) && (e.windowBits |= 15), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new d, this.strm.avail_out = 0; var a = r.inflateInit2(this.strm, e.windowBits); if (a !== l.Z_OK) throw new Error(h[a]); this.header = new f, r.inflateGetHeader(this.strm, this.header) } function n(t, e) { var a = new i(e); if (a.push(t, !0), a.err) throw a.msg; return a.result } var r = t("./zlib/inflate") , s = t("./utils/common") , o = t("./utils/strings") , l = t("./zlib/constants") , h = t("./zlib/messages") , d = t("./zlib/zstream") , f = t("./zlib/gzheader") , _ = Object.prototype.toString; i.prototype.push = function(t, e) { var a, i, n, h, d, f, u = this.strm, c = this.options.chunkSize, b = this.options.dictionary, g = !1; if (this.ended) return !1; i = e === ~~e ? e : !0 === e ? l.Z_FINISH : l.Z_NO_FLUSH, "string" == typeof t ? u.input = o.binstring2buf(t) : "[object ArrayBuffer]" === _.call(t) ? u.input = new Uint8Array(t) : u.input = t, u.next_in = 0, u.avail_in = u.input.length; do { if (0 === u.avail_out && (u.output = new s.Buf8(c), u.next_out = 0, u.avail_out = c), (a = r.inflate(u, l.Z_NO_FLUSH)) === l.Z_NEED_DICT && b && (f = "string" == typeof b ? o.string2buf(b) : "[object ArrayBuffer]" === _.call(b) ? new Uint8Array(b) : b, a = r.inflateSetDictionary(this.strm, f)), a === l.Z_BUF_ERROR && !0 === g && (a = l.Z_OK, g = !1), a !== l.Z_STREAM_END && a !== l.Z_OK) return this.onEnd(a), this.ended = !0, !1; u.next_out && (0 !== u.avail_out && a !== l.Z_STREAM_END && (0 !== u.avail_in || i !== l.Z_FINISH && i !== l.Z_SYNC_FLUSH) || ("string" === this.options.to ? (n = o.utf8border(u.output, u.next_out), h = u.next_out - n, d = o.buf2string(u.output, n), u.next_out = h, u.avail_out = c - h, h && s.arraySet(u.output, u.output, n, h, 0), this.onData(d)) : this.onData(s.shrinkBuf(u.output, u.next_out)))), 0 === u.avail_in && 0 === u.avail_out && (g = !0) } while ((u.avail_in > 0 || 0 === u.avail_out) && a !== l.Z_STREAM_END);return a === l.Z_STREAM_END && (i = l.Z_FINISH), i === l.Z_FINISH ? (a = r.inflateEnd(this.strm), this.onEnd(a), this.ended = !0, a === l.Z_OK) : i !== l.Z_SYNC_FLUSH || (this.onEnd(l.Z_OK), u.avail_out = 0, !0) } , i.prototype.onData = function(t) { this.chunks.push(t) } , i.prototype.onEnd = function(t) { t === l.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = s.flattenChunks(this.chunks)), this.chunks = [], this.err = t, this.msg = this.strm.msg } , a.Inflate = i, a.inflate = n, a.inflateRaw = function(t, e) { return (e = e || {}).raw = !0, n(t, e) } , a.ungzip = n } , { "./utils/common": 3, "./utils/strings": 4, "./zlib/constants": 6, "./zlib/gzheader": 9, "./zlib/inflate": 11, "./zlib/messages": 13, "./zlib/zstream": 15 }], 3: [function(t, e, a) { "use strict"; var i = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array; a.assign = function(t) { for (var e = Array.prototype.slice.call(arguments, 1); e.length; ) { var a = e.shift(); if (a) { if ("object" != typeof a) throw new TypeError(a + "must be non-object"); for (var i in a) a.hasOwnProperty(i) && (t[i] = a[i]) } } return t } , a.shrinkBuf = function(t, e) { return t.length === e ? t : t.subarray ? t.subarray(0, e) : (t.length = e, t) } ; var n = { arraySet: function(t, e, a, i, n) { if (e.subarray && t.subarray) t.set(e.subarray(a, a + i), n); else for (var r = 0; r < i; r++) t[n + r] = e[a + r] }, flattenChunks: function(t) { var e, a, i, n, r, s; for (i = 0, e = 0, a = t.length; e < a; e++) i += t[e].length; for (s = new Uint8Array(i), n = 0, e = 0, a = t.length; e < a; e++) r = t[e], s.set(r, n), n += r.length; return s } } , r = { arraySet: function(t, e, a, i, n) { for (var r = 0; r < i; r++) t[n + r] = e[a + r] }, flattenChunks: function(t) { return [].concat.apply([], t) } }; a.setTyped = function(t) { t ? (a.Buf8 = Uint8Array, a.Buf16 = Uint16Array, a.Buf32 = Int32Array, a.assign(a, n)) : (a.Buf8 = Array, a.Buf16 = Array, a.Buf32 = Array, a.assign(a, r)) } , a.setTyped(i) } , {}], 4: [function(t, e, a) { "use strict"; function i(t, e) { if (e < 65537 && (t.subarray && s || !t.subarray && r)) return String.fromCharCode.apply(null, n.shrinkBuf(t, e)); for (var a = "", i = 0; i < e; i++) a += String.fromCharCode(t[i]); return a } var n = t("./common") , r = !0 , s = !0; try { String.fromCharCode.apply(null, [0]) } catch (t) { r = !1 } try { String.fromCharCode.apply(null, new Uint8Array(1)) } catch (t) { s = !1 } for (var o = new n.Buf8(256), l = 0; l < 256; l++) o[l] = l >= 252 ? 6 : l >= 248 ? 5 : l >= 240 ? 4 : l >= 224 ? 3 : l >= 192 ? 2 : 1; o[254] = o[254] = 1, a.string2buf = function(t) { var e, a, i, r, s, o = t.length, l = 0; for (r = 0; r < o; r++) 55296 == (64512 & (a = t.charCodeAt(r))) && r + 1 < o && (56320 == (64512 & (i = t.charCodeAt(r + 1))) && (a = 65536 + (a - 55296 << 10) + (i - 56320), r++)), l += a < 128 ? 1 : a < 2048 ? 2 : a < 65536 ? 3 : 4; for (e = new n.Buf8(l), s = 0, r = 0; s < l; r++) 55296 == (64512 & (a = t.charCodeAt(r))) && r + 1 < o && (56320 == (64512 & (i = t.charCodeAt(r + 1))) && (a = 65536 + (a - 55296 << 10) + (i - 56320), r++)), a < 128 ? e[s++] = a : a < 2048 ? (e[s++] = 192 | a >>> 6, e[s++] = 128 | 63 & a) : a < 65536 ? (e[s++] = 224 | a >>> 12, e[s++] = 128 | a >>> 6 & 63, e[s++] = 128 | 63 & a) : (e[s++] = 240 | a >>> 18, e[s++] = 128 | a >>> 12 & 63, e[s++] = 128 | a >>> 6 & 63, e[s++] = 128 | 63 & a); return e } , a.buf2binstring = function(t) { return i(t, t.length) } , a.binstring2buf = function(t) { for (var e = new n.Buf8(t.length), a = 0, i = e.length; a < i; a++) e[a] = t.charCodeAt(a); return e } , a.buf2string = function(t, e) { var a, n, r, s, l = e || t.length, h = new Array(2 * l); for (n = 0, a = 0; a < l; ) if ((r = t[a++]) < 128) h[n++] = r; else if ((s = o[r]) > 4) h[n++] = 65533, a += s - 1; else { for (r &= 2 === s ? 31 : 3 === s ? 15 : 7; s > 1 && a < l; ) r = r << 6 | 63 & t[a++], s--; s > 1 ? h[n++] = 65533 : r < 65536 ? h[n++] = r : (r -= 65536, h[n++] = 55296 | r >> 10 & 1023, h[n++] = 56320 | 1023 & r) } return i(h, n) } , a.utf8border = function(t, e) { var a; for ((e = e || t.length) > t.length && (e = t.length), a = e - 1; a >= 0 && 128 == (192 & t[a]); ) a--; return a < 0 ? e : 0 === a ? e : a + o[t[a]] > e ? a : e } } , { "./common": 3 }], 5: [function(t, e, a) { "use strict"; e.exports = function(t, e, a, i) { for (var n = 65535 & t | 0, r = t >>> 16 & 65535 | 0, s = 0; 0 !== a; ) { a -= s = a > 2e3 ? 2e3 : a; do { r = r + (n = n + e[i++] | 0) | 0 } while (--s);n %= 65521, r %= 65521 } return n | r << 16 | 0 } } , {}], 6: [function(t, e, a) { "use strict"; e.exports = { Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_BUF_ERROR: -5, Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, Z_BINARY: 0, Z_TEXT: 1, Z_UNKNOWN: 2, Z_DEFLATED: 8 } } , {}], 7: [function(t, e, a) { "use strict"; var i = function() { for (var t, e = [], a = 0; a < 256; a++) { t = a; for (var i = 0; i < 8; i++) t = 1 & t ? 3988292384 ^ t >>> 1 : t >>> 1; e[a] = t } return e }(); e.exports = function(t, e, a, n) { var r = i , s = n + a; t ^= -1; for (var o = n; o < s; o++) t = t >>> 8 ^ r[255 & (t ^ e[o])]; return -1 ^ t } } , {}], 8: [function(t, e, a) { "use strict"; function i(t, e) { return t.msg = E[e], e } function n(t) { return (t << 1) - (t > 4 ? 9 : 0) } function r(t) { for (var e = t.length; --e >= 0; ) t[e] = 0 } function s(t) { var e = t.state , a = e.pending; a > t.avail_out && (a = t.avail_out), 0 !== a && (x.arraySet(t.output, e.pending_buf, e.pending_out, a, t.next_out), t.next_out += a, e.pending_out += a, t.total_out += a, t.avail_out -= a, e.pending -= a, 0 === e.pending && (e.pending_out = 0)) } function o(t, e) { z._tr_flush_block(t, t.block_start >= 0 ? t.block_start : -1, t.strstart - t.block_start, e), t.block_start = t.strstart, s(t.strm) } function l(t, e) { t.pending_buf[t.pending++] = e } function h(t, e) { t.pending_buf[t.pending++] = e >>> 8 & 255, t.pending_buf[t.pending++] = 255 & e } function d(t, e, a, i) { var n = t.avail_in; return n > i && (n = i), 0 === n ? 0 : (t.avail_in -= n, x.arraySet(e, t.input, t.next_in, n, a), 1 === t.state.wrap ? t.adler = B(t.adler, e, n, a) : 2 === t.state.wrap && (t.adler = S(t.adler, e, n, a)), t.next_in += n, t.total_in += n, n) } function f(t, e) { var a, i, n = t.max_chain_length, r = t.strstart, s = t.prev_length, o = t.nice_match, l = t.strstart > t.w_size - at ? t.strstart - (t.w_size - at) : 0, h = t.window, d = t.w_mask, f = t.prev, _ = t.strstart + et, u = h[r + s - 1], c = h[r + s]; t.prev_length >= t.good_match && (n >>= 2), o > t.lookahead && (o = t.lookahead); do { if (h[(a = e) + s] === c && h[a + s - 1] === u && h[a] === h[r] && h[++a] === h[r + 1]) { r += 2, a++; do {} while (h[++r] === h[++a] && h[++r] === h[++a] && h[++r] === h[++a] && h[++r] === h[++a] && h[++r] === h[++a] && h[++r] === h[++a] && h[++r] === h[++a] && h[++r] === h[++a] && r < _);if (i = et - (_ - r), r = _ - et, i > s) { if (t.match_start = e, s = i, i >= o) break; u = h[r + s - 1], c = h[r + s] } } } while ((e = f[e & d]) > l && 0 != --n);return s <= t.lookahead ? s : t.lookahead } function _(t) { var e, a, i, n, r, s = t.w_size; do { if (n = t.window_size - t.lookahead - t.strstart, t.strstart >= s + (s - at)) { x.arraySet(t.window, t.window, s, s, 0), t.match_start -= s, t.strstart -= s, t.block_start -= s, e = a = t.hash_size; do { i = t.head[--e], t.head[e] = i >= s ? i - s : 0 } while (--a);e = a = s; do { i = t.prev[--e], t.prev[e] = i >= s ? i - s : 0 } while (--a);n += s } if (0 === t.strm.avail_in) break; if (a = d(t.strm, t.window, t.strstart + t.lookahead, n), t.lookahead += a, t.lookahead + t.insert >= tt) for (r = t.strstart - t.insert, t.ins_h = t.window[r], t.ins_h = (t.ins_h << t.hash_shift ^ t.window[r + 1]) & t.hash_mask; t.insert && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[r + tt - 1]) & t.hash_mask, t.prev[r & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = r, r++, t.insert--, !(t.lookahead + t.insert < tt)); ) ; } while (t.lookahead < at && 0 !== t.strm.avail_in) } function u(t, e) { for (var a, i; ; ) { if (t.lookahead < at) { if (_(t), t.lookahead < at && e === A) return ft; if (0 === t.lookahead) break } if (a = 0, t.lookahead >= tt && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + tt - 1]) & t.hash_mask, a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart), 0 !== a && t.strstart - a <= t.w_size - at && (t.match_length = f(t, a)), t.match_length >= tt) if (i = z._tr_tally(t, t.strstart - t.match_start, t.match_length - tt), t.lookahead -= t.match_length, t.match_length <= t.max_lazy_match && t.lookahead >= tt) { t.match_length--; do { t.strstart++, t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + tt - 1]) & t.hash_mask, a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart } while (0 != --t.match_length);t.strstart++ } else t.strstart += t.match_length, t.match_length = 0, t.ins_h = t.window[t.strstart], t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + 1]) & t.hash_mask; else i = z._tr_tally(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++; if (i && (o(t, !1), 0 === t.strm.avail_out)) return ft } return t.insert = t.strstart < tt - 1 ? t.strstart : tt - 1, e === C ? (o(t, !0), 0 === t.strm.avail_out ? ut : ct) : t.last_lit && (o(t, !1), 0 === t.strm.avail_out) ? ft : _t } function c(t, e) { for (var a, i, n; ; ) { if (t.lookahead < at) { if (_(t), t.lookahead < at && e === A) return ft; if (0 === t.lookahead) break } if (a = 0, t.lookahead >= tt && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + tt - 1]) & t.hash_mask, a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart), t.prev_length = t.match_length, t.prev_match = t.match_start, t.match_length = tt - 1, 0 !== a && t.prev_length < t.max_lazy_match && t.strstart - a <= t.w_size - at && (t.match_length = f(t, a), t.match_length <= 5 && (t.strategy === L || t.match_length === tt && t.strstart - t.match_start > 4096) && (t.match_length = tt - 1)), t.prev_length >= tt && t.match_length <= t.prev_length) { n = t.strstart + t.lookahead - tt, i = z._tr_tally(t, t.strstart - 1 - t.prev_match, t.prev_length - tt), t.lookahead -= t.prev_length - 1, t.prev_length -= 2; do { ++t.strstart <= n && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + tt - 1]) & t.hash_mask, a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart) } while (0 != --t.prev_length);if (t.match_available = 0, t.match_length = tt - 1, t.strstart++, i && (o(t, !1), 0 === t.strm.avail_out)) return ft } else if (t.match_available) { if ((i = z._tr_tally(t, 0, t.window[t.strstart - 1])) && o(t, !1), t.strstart++, t.lookahead--, 0 === t.strm.avail_out) return ft } else t.match_available = 1, t.strstart++, t.lookahead-- } return t.match_available && (i = z._tr_tally(t, 0, t.window[t.strstart - 1]), t.match_available = 0), t.insert = t.strstart < tt - 1 ? t.strstart : tt - 1, e === C ? (o(t, !0), 0 === t.strm.avail_out ? ut : ct) : t.last_lit && (o(t, !1), 0 === t.strm.avail_out) ? ft : _t } function b(t, e) { for (var a, i, n, r, s = t.window; ; ) { if (t.lookahead <= et) { if (_(t), t.lookahead <= et && e === A) return ft; if (0 === t.lookahead) break } if (t.match_length = 0, t.lookahead >= tt && t.strstart > 0 && ((i = s[n = t.strstart - 1]) === s[++n] && i === s[++n] && i === s[++n])) { r = t.strstart + et; do {} while (i === s[++n] && i === s[++n] && i === s[++n] && i === s[++n] && i === s[++n] && i === s[++n] && i === s[++n] && i === s[++n] && n < r);t.match_length = et - (r - n), t.match_length > t.lookahead && (t.match_length = t.lookahead) } if (t.match_length >= tt ? (a = z._tr_tally(t, 1, t.match_length - tt), t.lookahead -= t.match_length, t.strstart += t.match_length, t.match_length = 0) : (a = z._tr_tally(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++), a && (o(t, !1), 0 === t.strm.avail_out)) return ft } return t.insert = 0, e === C ? (o(t, !0), 0 === t.strm.avail_out ? ut : ct) : t.last_lit && (o(t, !1), 0 === t.strm.avail_out) ? ft : _t } function g(t, e) { for (var a; ; ) { if (0 === t.lookahead && (_(t), 0 === t.lookahead)) { if (e === A) return ft; break } if (t.match_length = 0, a = z._tr_tally(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++, a && (o(t, !1), 0 === t.strm.avail_out)) return ft } return t.insert = 0, e === C ? (o(t, !0), 0 === t.strm.avail_out ? ut : ct) : t.last_lit && (o(t, !1), 0 === t.strm.avail_out) ? ft : _t } function m(t, e, a, i, n) { this.good_length = t, this.max_lazy = e, this.nice_length = a, this.max_chain = i, this.func = n } function w() { this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = Y, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new x.Buf16(2 * V), this.dyn_dtree = new x.Buf16(2 * (2 * J + 1)), this.bl_tree = new x.Buf16(2 * (2 * Q + 1)), r(this.dyn_ltree), r(this.dyn_dtree), r(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new x.Buf16($ + 1), this.heap = new x.Buf16(2 * W + 1), r(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new x.Buf16(2 * W + 1), r(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0 } function p(t) { var e; return t && t.state ? (t.total_in = t.total_out = 0, t.data_type = P, (e = t.state).pending = 0, e.pending_out = 0, e.wrap < 0 && (e.wrap = -e.wrap), e.status = e.wrap ? nt : ht, t.adler = 2 === e.wrap ? 0 : 1, e.last_flush = A, z._tr_init(e), O) : i(t, I) } function v(t) { var e = p(t); return e === O && function(t) { t.window_size = 2 * t.w_size, r(t.head), t.max_lazy_match = y[t.level].max_lazy, t.good_match = y[t.level].good_length, t.nice_match = y[t.level].nice_length, t.max_chain_length = y[t.level].max_chain, t.strstart = 0, t.block_start = 0, t.lookahead = 0, t.insert = 0, t.match_length = t.prev_length = tt - 1, t.match_available = 0, t.ins_h = 0 }(t.state), e } function k(t, e, a, n, r, s) { if (!t) return I; var o = 1; if (e === F && (e = 6), n < 0 ? (o = 0, n = -n) : n > 15 && (o = 2, n -= 16), r < 1 || r > q || a !== Y || n < 8 || n > 15 || e < 0 || e > 9 || s < 0 || s > K) return i(t, I); 8 === n && (n = 9); var l = new w; return t.state = l, l.strm = t, l.wrap = o, l.gzhead = null, l.w_bits = n, l.w_size = 1 << l.w_bits, l.w_mask = l.w_size - 1, l.hash_bits = r + 7, l.hash_size = 1 << l.hash_bits, l.hash_mask = l.hash_size - 1, l.hash_shift = ~~((l.hash_bits + tt - 1) / tt), l.window = new x.Buf8(2 * l.w_size), l.head = new x.Buf16(l.hash_size), l.prev = new x.Buf16(l.w_size), l.lit_bufsize = 1 << r + 6, l.pending_buf_size = 4 * l.lit_bufsize, l.pending_buf = new x.Buf8(l.pending_buf_size), l.d_buf = 1 * l.lit_bufsize, l.l_buf = 3 * l.lit_bufsize, l.level = e, l.strategy = s, l.method = a, v(t) } var y, x = t("../utils/common"), z = t("./trees"), B = t("./adler32"), S = t("./crc32"), E = t("./messages"), A = 0, Z = 1, R = 3, C = 4, N = 5, O = 0, D = 1, I = -2, U = -3, T = -5, F = -1, L = 1, H = 2, j = 3, K = 4, M = 0, P = 2, Y = 8, q = 9, G = 15, X = 8, W = 286, J = 30, Q = 19, V = 2 * W + 1, $ = 15, tt = 3, et = 258, at = et + tt + 1, it = 32, nt = 42, rt = 69, st = 73, ot = 91, lt = 103, ht = 113, dt = 666, ft = 1, _t = 2, ut = 3, ct = 4, bt = 3; y = [new m(0,0,0,0,function(t, e) { var a = 65535; for (a > t.pending_buf_size - 5 && (a = t.pending_buf_size - 5); ; ) { if (t.lookahead <= 1) { if (_(t), 0 === t.lookahead && e === A) return ft; if (0 === t.lookahead) break } t.strstart += t.lookahead, t.lookahead = 0; var i = t.block_start + a; if ((0 === t.strstart || t.strstart >= i) && (t.lookahead = t.strstart - i, t.strstart = i, o(t, !1), 0 === t.strm.avail_out)) return ft; if (t.strstart - t.block_start >= t.w_size - at && (o(t, !1), 0 === t.strm.avail_out)) return ft } return t.insert = 0, e === C ? (o(t, !0), 0 === t.strm.avail_out ? ut : ct) : (t.strstart > t.block_start && (o(t, !1), t.strm.avail_out), ft) } ), new m(4,4,8,4,u), new m(4,5,16,8,u), new m(4,6,32,32,u), new m(4,4,16,16,c), new m(8,16,32,32,c), new m(8,16,128,128,c), new m(8,32,128,256,c), new m(32,128,258,1024,c), new m(32,258,258,4096,c)], a.deflateInit = function(t, e) { return k(t, e, Y, G, X, M) } , a.deflateInit2 = k, a.deflateReset = v, a.deflateResetKeep = p, a.deflateSetHeader = function(t, e) { return t && t.state ? 2 !== t.state.wrap ? I : (t.state.gzhead = e, O) : I } , a.deflate = function(t, e) { var a, o, d, f; if (!t || !t.state || e > N || e < 0) return t ? i(t, I) : I; if (o = t.state, !t.output || !t.input && 0 !== t.avail_in || o.status === dt && e !== C) return i(t, 0 === t.avail_out ? T : I); if (o.strm = t, a = o.last_flush, o.last_flush = e, o.status === nt) if (2 === o.wrap) t.adler = 0, l(o, 31), l(o, 139), l(o, 8), o.gzhead ? (l(o, (o.gzhead.text ? 1 : 0) + (o.gzhead.hcrc ? 2 : 0) + (o.gzhead.extra ? 4 : 0) + (o.gzhead.name ? 8 : 0) + (o.gzhead.comment ? 16 : 0)), l(o, 255 & o.gzhead.time), l(o, o.gzhead.time >> 8 & 255), l(o, o.gzhead.time >> 16 & 255), l(o, o.gzhead.time >> 24 & 255), l(o, 9 === o.level ? 2 : o.strategy >= H || o.level < 2 ? 4 : 0), l(o, 255 & o.gzhead.os), o.gzhead.extra && o.gzhead.extra.length && (l(o, 255 & o.gzhead.extra.length), l(o, o.gzhead.extra.length >> 8 & 255)), o.gzhead.hcrc && (t.adler = S(t.adler, o.pending_buf, o.pending, 0)), o.gzindex = 0, o.status = rt) : (l(o, 0), l(o, 0), l(o, 0), l(o, 0), l(o, 0), l(o, 9 === o.level ? 2 : o.strategy >= H || o.level < 2 ? 4 : 0), l(o, bt), o.status = ht); else { var _ = Y + (o.w_bits - 8 << 4) << 8; _ |= (o.strategy >= H || o.level < 2 ? 0 : o.level < 6 ? 1 : 6 === o.level ? 2 : 3) << 6, 0 !== o.strstart && (_ |= it), _ += 31 - _ % 31, o.status = ht, h(o, _), 0 !== o.strstart && (h(o, t.adler >>> 16), h(o, 65535 & t.adler)), t.adler = 1 } if (o.status === rt) if (o.gzhead.extra) { for (d = o.pending; o.gzindex < (65535 & o.gzhead.extra.length) && (o.pending !== o.pending_buf_size || (o.gzhead.hcrc && o.pending > d && (t.adler = S(t.adler, o.pending_buf, o.pending - d, d)), s(t), d = o.pending, o.pending !== o.pending_buf_size)); ) l(o, 255 & o.gzhead.extra[o.gzindex]), o.gzindex++; o.gzhead.hcrc && o.pending > d && (t.adler = S(t.adler, o.pending_buf, o.pending - d, d)), o.gzindex === o.gzhead.extra.length && (o.gzindex = 0, o.status = st) } else o.status = st; if (o.status === st) if (o.gzhead.name) { d = o.pending; do { if (o.pending === o.pending_buf_size && (o.gzhead.hcrc && o.pending > d && (t.adler = S(t.adler, o.pending_buf, o.pending - d, d)), s(t), d = o.pending, o.pending === o.pending_buf_size)) { f = 1; break } f = o.gzindex < o.gzhead.name.length ? 255 & o.gzhead.name.charCodeAt(o.gzindex++) : 0, l(o, f) } while (0 !== f);o.gzhead.hcrc && o.pending > d && (t.adler = S(t.adler, o.pending_buf, o.pending - d, d)), 0 === f && (o.gzindex = 0, o.status = ot) } else o.status = ot; if (o.status === ot) if (o.gzhead.comment) { d = o.pending; do { if (o.pending === o.pending_buf_size && (o.gzhead.hcrc && o.pending > d && (t.adler = S(t.adler, o.pending_buf, o.pending - d, d)), s(t), d = o.pending, o.pending === o.pending_buf_size)) { f = 1; break } f = o.gzindex < o.gzhead.comment.length ? 255 & o.gzhead.comment.charCodeAt(o.gzindex++) : 0, l(o, f) } while (0 !== f);o.gzhead.hcrc && o.pending > d && (t.adler = S(t.adler, o.pending_buf, o.pending - d, d)), 0 === f && (o.status = lt) } else o.status = lt; if (o.status === lt && (o.gzhead.hcrc ? (o.pending + 2 > o.pending_buf_size && s(t), o.pending + 2 <= o.pending_buf_size && (l(o, 255 & t.adler), l(o, t.adler >> 8 & 255), t.adler = 0, o.status = ht)) : o.status = ht), 0 !== o.pending) { if (s(t), 0 === t.avail_out) return o.last_flush = -1, O } else if (0 === t.avail_in && n(e) <= n(a) && e !== C) return i(t, T); if (o.status === dt && 0 !== t.avail_in) return i(t, T); if (0 !== t.avail_in || 0 !== o.lookahead || e !== A && o.status !== dt) { var u = o.strategy === H ? g(o, e) : o.strategy === j ? b(o, e) : y[o.level].func(o, e); if (u !== ut && u !== ct || (o.status = dt), u === ft || u === ut) return 0 === t.avail_out && (o.last_flush = -1), O; if (u === _t && (e === Z ? z._tr_align(o) : e !== N && (z._tr_stored_block(o, 0, 0, !1), e === R && (r(o.head), 0 === o.lookahead && (o.strstart = 0, o.block_start = 0, o.insert = 0))), s(t), 0 === t.avail_out)) return o.last_flush = -1, O } return e !== C ? O : o.wrap <= 0 ? D : (2 === o.wrap ? (l(o, 255 & t.adler), l(o, t.adler >> 8 & 255), l(o, t.adler >> 16 & 255), l(o, t.adler >> 24 & 255), l(o, 255 & t.total_in), l(o, t.total_in >> 8 & 255), l(o, t.total_in >> 16 & 255), l(o, t.total_in >> 24 & 255)) : (h(o, t.adler >>> 16), h(o, 65535 & t.adler)), s(t), o.wrap > 0 && (o.wrap = -o.wrap), 0 !== o.pending ? O : D) } , a.deflateEnd = function(t) { var e; return t && t.state ? (e = t.state.status) !== nt && e !== rt && e !== st && e !== ot && e !== lt && e !== ht && e !== dt ? i(t, I) : (t.state = null, e === ht ? i(t, U) : O) : I } , a.deflateSetDictionary = function(t, e) { var a, i, n, s, o, l, h, d, f = e.length; if (!t || !t.state) return I; if (2 === (s = (a = t.state).wrap) || 1 === s && a.status !== nt || a.lookahead) return I; for (1 === s && (t.adler = B(t.adler, e, f, 0)), a.wrap = 0, f >= a.w_size && (0 === s && (r(a.head), a.strstart = 0, a.block_start = 0, a.insert = 0), d = new x.Buf8(a.w_size), x.arraySet(d, e, f - a.w_size, a.w_size, 0), e = d, f = a.w_size), o = t.avail_in, l = t.next_in, h = t.input, t.avail_in = f, t.next_in = 0, t.input = e, _(a); a.lookahead >= tt; ) { i = a.strstart, n = a.lookahead - (tt - 1); do { a.ins_h = (a.ins_h << a.hash_shift ^ a.window[i + tt - 1]) & a.hash_mask, a.prev[i & a.w_mask] = a.head[a.ins_h], a.head[a.ins_h] = i, i++ } while (--n);a.strstart = i, a.lookahead = tt - 1, _(a) } return a.strstart += a.lookahead, a.block_start = a.strstart, a.insert = a.lookahead, a.lookahead = 0, a.match_length = a.prev_length = tt - 1, a.match_available = 0, t.next_in = l, t.input = h, t.avail_in = o, a.wrap = s, O } , a.deflateInfo = "pako deflate (from Nodeca project)" } , { "../utils/common": 3, "./adler32": 5, "./crc32": 7, "./messages": 13, "./trees": 14 }], 9: [function(t, e, a) { "use strict"; e.exports = function() { this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = !1 } } , {}], 10: [function(t, e, a) { "use strict"; e.exports = function(t, e) { var a, i, n, r, s, o, l, h, d, f, _, u, c, b, g, m, w, p, v, k, y, x, z, B, S; a = t.state, i = t.next_in, B = t.input, n = i + (t.avail_in - 5), r = t.next_out, S = t.output, s = r - (e - t.avail_out), o = r + (t.avail_out - 257), l = a.dmax, h = a.wsize, d = a.whave, f = a.wnext, _ = a.window, u = a.hold, c = a.bits, b = a.lencode, g = a.distcode, m = (1 << a.lenbits) - 1, w = (1 << a.distbits) - 1; t: do { c < 15 && (u += B[i++] << c, c += 8, u += B[i++] << c, c += 8), p = b[u & m]; e: for (; ; ) { if (u >>>= v = p >>> 24, c -= v, 0 === (v = p >>> 16 & 255)) S[r++] = 65535 & p; else { if (!(16 & v)) { if (0 == (64 & v)) { p = b[(65535 & p) + (u & (1 << v) - 1)]; continue e } if (32 & v) { a.mode = 12; break t } t.msg = "invalid literal/length code", a.mode = 30; break t } k = 65535 & p, (v &= 15) && (c < v && (u += B[i++] << c, c += 8), k += u & (1 << v) - 1, u >>>= v, c -= v), c < 15 && (u += B[i++] << c, c += 8, u += B[i++] << c, c += 8), p = g[u & w]; a: for (; ; ) { if (u >>>= v = p >>> 24, c -= v, !(16 & (v = p >>> 16 & 255))) { if (0 == (64 & v)) { p = g[(65535 & p) + (u & (1 << v) - 1)]; continue a } t.msg = "invalid distance code", a.mode = 30; break t } if (y = 65535 & p, c < (v &= 15) && (u += B[i++] << c, (c += 8) < v && (u += B[i++] << c, c += 8)), (y += u & (1 << v) - 1) > l) { t.msg = "invalid distance too far back", a.mode = 30; break t } if (u >>>= v, c -= v, y > (v = r - s)) { if ((v = y - v) > d && a.sane) { t.msg = "invalid distance too far back", a.mode = 30; break t } if (x = 0, z = _, 0 === f) { if (x += h - v, v < k) { k -= v; do { S[r++] = _[x++] } while (--v);x = r - y, z = S } } else if (f < v) { if (x += h + f - v, (v -= f) < k) { k -= v; do { S[r++] = _[x++] } while (--v);if (x = 0, f < k) { k -= v = f; do { S[r++] = _[x++] } while (--v);x = r - y, z = S } } } else if (x += f - v, v < k) { k -= v; do { S[r++] = _[x++] } while (--v);x = r - y, z = S } for (; k > 2; ) S[r++] = z[x++], S[r++] = z[x++], S[r++] = z[x++], k -= 3; k && (S[r++] = z[x++], k > 1 && (S[r++] = z[x++])) } else { x = r - y; do { S[r++] = S[x++], S[r++] = S[x++], S[r++] = S[x++], k -= 3 } while (k > 2);k && (S[r++] = S[x++], k > 1 && (S[r++] = S[x++])) } break } } break } } while (i < n && r < o);i -= k = c >> 3, u &= (1 << (c -= k << 3)) - 1, t.next_in = i, t.next_out = r, t.avail_in = i < n ? n - i + 5 : 5 - (i - n), t.avail_out = r < o ? o - r + 257 : 257 - (r - o), a.hold = u, a.bits = c } } , {}], 11: [function(t, e, a) { "use strict"; function i(t) { return (t >>> 24 & 255) + (t >>> 8 & 65280) + ((65280 & t) << 8) + ((255 & t) << 24) } function n(t) { var e; return t && t.state ? (e = t.state, t.total_in = t.total_out = e.total = 0, t.msg = "", e.wrap && (t.adler = 1 & e.wrap), e.mode = C, e.last = 0, e.havedict = 0, e.dmax = 32768, e.head = null, e.hold = 0, e.bits = 0, e.lencode = e.lendyn = new _.Buf32(ht), e.distcode = e.distdyn = new _.Buf32(dt), e.sane = 1, e.back = -1, x) : S } function r(t) { var e; return t && t.state ? ((e = t.state).wsize = 0, e.whave = 0, e.wnext = 0, n(t)) : S } function s(t, e) { var a, i; return t && t.state ? (i = t.state, e < 0 ? (a = 0, e = -e) : (a = 1 + (e >> 4), e < 48 && (e &= 15)), e && (e < 8 || e > 15) ? S : (null !== i.window && i.wbits !== e && (i.window = null), i.wrap = a, i.wbits = e, r(t))) : S } function o(t, e) { var a, i; return t ? (i = new function() { this.mode = 0, this.last = !1, this.wrap = 0, this.havedict = !1, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new _.Buf16(320), this.work = new _.Buf16(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0 } , t.state = i, i.window = null, (a = s(t, e)) !== x && (t.state = null), a) : S } function l(t) { if (_t) { var e; for (d = new _.Buf32(512), f = new _.Buf32(32), e = 0; e < 144; ) t.lens[e++] = 8; for (; e < 256; ) t.lens[e++] = 9; for (; e < 280; ) t.lens[e++] = 7; for (; e < 288; ) t.lens[e++] = 8; for (g(w, t.lens, 0, 288, d, 0, t.work, { bits: 9 }), e = 0; e < 32; ) t.lens[e++] = 5; g(p, t.lens, 0, 32, f, 0, t.work, { bits: 5 }), _t = !1 } t.lencode = d, t.lenbits = 9, t.distcode = f, t.distbits = 5 } function h(t, e, a, i) { var n, r = t.state; return null === r.window && (r.wsize = 1 << r.wbits, r.wnext = 0, r.whave = 0, r.window = new _.Buf8(r.wsize)), i >= r.wsize ? (_.arraySet(r.window, e, a - r.wsize, r.wsize, 0), r.wnext = 0, r.whave = r.wsize) : ((n = r.wsize - r.wnext) > i && (n = i), _.arraySet(r.window, e, a - i, n, r.wnext), (i -= n) ? (_.arraySet(r.window, e, a - i, i, 0), r.wnext = i, r.whave = r.wsize) : (r.wnext += n, r.wnext === r.wsize && (r.wnext = 0), r.whave < r.wsize && (r.whave += n))), 0 } var d, f, _ = t("../utils/common"), u = t("./adler32"), c = t("./crc32"), b = t("./inffast"), g = t("./inftrees"), m = 0, w = 1, p = 2, v = 4, k = 5, y = 6, x = 0, z = 1, B = 2, S = -2, E = -3, A = -4, Z = -5, R = 8, C = 1, N = 2, O = 3, D = 4, I = 5, U = 6, T = 7, F = 8, L = 9, H = 10, j = 11, K = 12, M = 13, P = 14, Y = 15, q = 16, G = 17, X = 18, W = 19, J = 20, Q = 21, V = 22, $ = 23, tt = 24, et = 25, at = 26, it = 27, nt = 28, rt = 29, st = 30, ot = 31, lt = 32, ht = 852, dt = 592, ft = 15, _t = !0; a.inflateReset = r, a.inflateReset2 = s, a.inflateResetKeep = n, a.inflateInit = function(t) { return o(t, ft) } , a.inflateInit2 = o, a.inflate = function(t, e) { var a, n, r, s, o, d, f, ht, dt, ft, _t, ut, ct, bt, gt, mt, wt, pt, vt, kt, yt, xt, zt, Bt, St = 0, Et = new _.Buf8(4), At = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; if (!t || !t.state || !t.output || !t.input && 0 !== t.avail_in) return S; (a = t.state).mode === K && (a.mode = M), o = t.next_out, r = t.output, f = t.avail_out, s = t.next_in, n = t.input, d = t.avail_in, ht = a.hold, dt = a.bits, ft = d, _t = f, xt = x; t: for (; ; ) switch (a.mode) { case C: if (0 === a.wrap) { a.mode = M; break } for (; dt < 16; ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } if (2 & a.wrap && 35615 === ht) { a.check = 0, Et[0] = 255 & ht, Et[1] = ht >>> 8 & 255, a.check = c(a.check, Et, 2, 0), ht = 0, dt = 0, a.mode = N; break } if (a.flags = 0, a.head && (a.head.done = !1), !(1 & a.wrap) || (((255 & ht) << 8) + (ht >> 8)) % 31) { t.msg = "incorrect header check", a.mode = st; break } if ((15 & ht) !== R) { t.msg = "unknown compression method", a.mode = st; break } if (dt -= 4, yt = 8 + (15 & (ht >>>= 4)), 0 === a.wbits) a.wbits = yt; else if (yt > a.wbits) { t.msg = "invalid window size", a.mode = st; break } a.dmax = 1 << yt, t.adler = a.check = 1, a.mode = 512 & ht ? H : K, ht = 0, dt = 0; break; case N: for (; dt < 16; ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } if (a.flags = ht, (255 & a.flags) !== R) { t.msg = "unknown compression method", a.mode = st; break } if (57344 & a.flags) { t.msg = "unknown header flags set", a.mode = st; break } a.head && (a.head.text = ht >> 8 & 1), 512 & a.flags && (Et[0] = 255 & ht, Et[1] = ht >>> 8 & 255, a.check = c(a.check, Et, 2, 0)), ht = 0, dt = 0, a.mode = O; case O: for (; dt < 32; ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } a.head && (a.head.time = ht), 512 & a.flags && (Et[0] = 255 & ht, Et[1] = ht >>> 8 & 255, Et[2] = ht >>> 16 & 255, Et[3] = ht >>> 24 & 255, a.check = c(a.check, Et, 4, 0)), ht = 0, dt = 0, a.mode = D; case D: for (; dt < 16; ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } a.head && (a.head.xflags = 255 & ht, a.head.os = ht >> 8), 512 & a.flags && (Et[0] = 255 & ht, Et[1] = ht >>> 8 & 255, a.check = c(a.check, Et, 2, 0)), ht = 0, dt = 0, a.mode = I; case I: if (1024 & a.flags) { for (; dt < 16; ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } a.length = ht, a.head && (a.head.extra_len = ht), 512 & a.flags && (Et[0] = 255 & ht, Et[1] = ht >>> 8 & 255, a.check = c(a.check, Et, 2, 0)), ht = 0, dt = 0 } else a.head && (a.head.extra = null); a.mode = U; case U: if (1024 & a.flags && ((ut = a.length) > d && (ut = d), ut && (a.head && (yt = a.head.extra_len - a.length, a.head.extra || (a.head.extra = new Array(a.head.extra_len)), _.arraySet(a.head.extra, n, s, ut, yt)), 512 & a.flags && (a.check = c(a.check, n, ut, s)), d -= ut, s += ut, a.length -= ut), a.length)) break t; a.length = 0, a.mode = T; case T: if (2048 & a.flags) { if (0 === d) break t; ut = 0; do { yt = n[s + ut++], a.head && yt && a.length < 65536 && (a.head.name += String.fromCharCode(yt)) } while (yt && ut < d);if (512 & a.flags && (a.check = c(a.check, n, ut, s)), d -= ut, s += ut, yt) break t } else a.head && (a.head.name = null); a.length = 0, a.mode = F; case F: if (4096 & a.flags) { if (0 === d) break t; ut = 0; do { yt = n[s + ut++], a.head && yt && a.length < 65536 && (a.head.comment += String.fromCharCode(yt)) } while (yt && ut < d);if (512 & a.flags && (a.check = c(a.check, n, ut, s)), d -= ut, s += ut, yt) break t } else a.head && (a.head.comment = null); a.mode = L; case L: if (512 & a.flags) { for (; dt < 16; ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } if (ht !== (65535 & a.check)) { t.msg = "header crc mismatch", a.mode = st; break } ht = 0, dt = 0 } a.head && (a.head.hcrc = a.flags >> 9 & 1, a.head.done = !0), t.adler = a.check = 0, a.mode = K; break; case H: for (; dt < 32; ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } t.adler = a.check = i(ht), ht = 0, dt = 0, a.mode = j; case j: if (0 === a.havedict) return t.next_out = o, t.avail_out = f, t.next_in = s, t.avail_in = d, a.hold = ht, a.bits = dt, B; t.adler = a.check = 1, a.mode = K; case K: if (e === k || e === y) break t; case M: if (a.last) { ht >>>= 7 & dt, dt -= 7 & dt, a.mode = it; break } for (; dt < 3; ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } switch (a.last = 1 & ht, dt -= 1, 3 & (ht >>>= 1)) { case 0: a.mode = P; break; case 1: if (l(a), a.mode = J, e === y) { ht >>>= 2, dt -= 2; break t } break; case 2: a.mode = G; break; case 3: t.msg = "invalid block type", a.mode = st } ht >>>= 2, dt -= 2; break; case P: for (ht >>>= 7 & dt, dt -= 7 & dt; dt < 32; ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } if ((65535 & ht) != (ht >>> 16 ^ 65535)) { t.msg = "invalid stored block lengths", a.mode = st; break } if (a.length = 65535 & ht, ht = 0, dt = 0, a.mode = Y, e === y) break t; case Y: a.mode = q; case q: if (ut = a.length) { if (ut > d && (ut = d), ut > f && (ut = f), 0 === ut) break t; _.arraySet(r, n, s, ut, o), d -= ut, s += ut, f -= ut, o += ut, a.length -= ut; break } a.mode = K; break; case G: for (; dt < 14; ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } if (a.nlen = 257 + (31 & ht), ht >>>= 5, dt -= 5, a.ndist = 1 + (31 & ht), ht >>>= 5, dt -= 5, a.ncode = 4 + (15 & ht), ht >>>= 4, dt -= 4, a.nlen > 286 || a.ndist > 30) { t.msg = "too many length or distance symbols", a.mode = st; break } a.have = 0, a.mode = X; case X: for (; a.have < a.ncode; ) { for (; dt < 3; ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } a.lens[At[a.have++]] = 7 & ht, ht >>>= 3, dt -= 3 } for (; a.have < 19; ) a.lens[At[a.have++]] = 0; if (a.lencode = a.lendyn, a.lenbits = 7, zt = { bits: a.lenbits }, xt = g(m, a.lens, 0, 19, a.lencode, 0, a.work, zt), a.lenbits = zt.bits, xt) { t.msg = "invalid code lengths set", a.mode = st; break } a.have = 0, a.mode = W; case W: for (; a.have < a.nlen + a.ndist; ) { for (; mt = (St = a.lencode[ht & (1 << a.lenbits) - 1]) >>> 16 & 255, wt = 65535 & St, !((gt = St >>> 24) <= dt); ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } if (wt < 16) ht >>>= gt, dt -= gt, a.lens[a.have++] = wt; else { if (16 === wt) { for (Bt = gt + 2; dt < Bt; ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } if (ht >>>= gt, dt -= gt, 0 === a.have) { t.msg = "invalid bit length repeat", a.mode = st; break } yt = a.lens[a.have - 1], ut = 3 + (3 & ht), ht >>>= 2, dt -= 2 } else if (17 === wt) { for (Bt = gt + 3; dt < Bt; ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } dt -= gt, yt = 0, ut = 3 + (7 & (ht >>>= gt)), ht >>>= 3, dt -= 3 } else { for (Bt = gt + 7; dt < Bt; ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } dt -= gt, yt = 0, ut = 11 + (127 & (ht >>>= gt)), ht >>>= 7, dt -= 7 } if (a.have + ut > a.nlen + a.ndist) { t.msg = "invalid bit length repeat", a.mode = st; break } for (; ut--; ) a.lens[a.have++] = yt } } if (a.mode === st) break; if (0 === a.lens[256]) { t.msg = "invalid code -- missing end-of-block", a.mode = st; break } if (a.lenbits = 9, zt = { bits: a.lenbits }, xt = g(w, a.lens, 0, a.nlen, a.lencode, 0, a.work, zt), a.lenbits = zt.bits, xt) { t.msg = "invalid literal/lengths set", a.mode = st; break } if (a.distbits = 6, a.distcode = a.distdyn, zt = { bits: a.distbits }, xt = g(p, a.lens, a.nlen, a.ndist, a.distcode, 0, a.work, zt), a.distbits = zt.bits, xt) { t.msg = "invalid distances set", a.mode = st; break } if (a.mode = J, e === y) break t; case J: a.mode = Q; case Q: if (d >= 6 && f >= 258) { t.next_out = o, t.avail_out = f, t.next_in = s, t.avail_in = d, a.hold = ht, a.bits = dt, b(t, _t), o = t.next_out, r = t.output, f = t.avail_out, s = t.next_in, n = t.input, d = t.avail_in, ht = a.hold, dt = a.bits, a.mode === K && (a.back = -1); break } for (a.back = 0; mt = (St = a.lencode[ht & (1 << a.lenbits) - 1]) >>> 16 & 255, wt = 65535 & St, !((gt = St >>> 24) <= dt); ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } if (mt && 0 == (240 & mt)) { for (pt = gt, vt = mt, kt = wt; mt = (St = a.lencode[kt + ((ht & (1 << pt + vt) - 1) >> pt)]) >>> 16 & 255, wt = 65535 & St, !(pt + (gt = St >>> 24) <= dt); ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } ht >>>= pt, dt -= pt, a.back += pt } if (ht >>>= gt, dt -= gt, a.back += gt, a.length = wt, 0 === mt) { a.mode = at; break } if (32 & mt) { a.back = -1, a.mode = K; break } if (64 & mt) { t.msg = "invalid literal/length code", a.mode = st; break } a.extra = 15 & mt, a.mode = V; case V: if (a.extra) { for (Bt = a.extra; dt < Bt; ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } a.length += ht & (1 << a.extra) - 1, ht >>>= a.extra, dt -= a.extra, a.back += a.extra } a.was = a.length, a.mode = $; case $: for (; mt = (St = a.distcode[ht & (1 << a.distbits) - 1]) >>> 16 & 255, wt = 65535 & St, !((gt = St >>> 24) <= dt); ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } if (0 == (240 & mt)) { for (pt = gt, vt = mt, kt = wt; mt = (St = a.distcode[kt + ((ht & (1 << pt + vt) - 1) >> pt)]) >>> 16 & 255, wt = 65535 & St, !(pt + (gt = St >>> 24) <= dt); ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } ht >>>= pt, dt -= pt, a.back += pt } if (ht >>>= gt, dt -= gt, a.back += gt, 64 & mt) { t.msg = "invalid distance code", a.mode = st; break } a.offset = wt, a.extra = 15 & mt, a.mode = tt; case tt: if (a.extra) { for (Bt = a.extra; dt < Bt; ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } a.offset += ht & (1 << a.extra) - 1, ht >>>= a.extra, dt -= a.extra, a.back += a.extra } if (a.offset > a.dmax) { t.msg = "invalid distance too far back", a.mode = st; break } a.mode = et; case et: if (0 === f) break t; if (ut = _t - f, a.offset > ut) { if ((ut = a.offset - ut) > a.whave && a.sane) { t.msg = "invalid distance too far back", a.mode = st; break } ut > a.wnext ? (ut -= a.wnext, ct = a.wsize - ut) : ct = a.wnext - ut, ut > a.length && (ut = a.length), bt = a.window } else bt = r, ct = o - a.offset, ut = a.length; ut > f && (ut = f), f -= ut, a.length -= ut; do { r[o++] = bt[ct++] } while (--ut);0 === a.length && (a.mode = Q); break; case at: if (0 === f) break t; r[o++] = a.length, f--, a.mode = Q; break; case it: if (a.wrap) { for (; dt < 32; ) { if (0 === d) break t; d--, ht |= n[s++] << dt, dt += 8 } if (_t -= f, t.total_out += _t, a.total += _t, _t && (t.adler = a.check = a.flags ? c(a.check, r, _t, o - _t) : u(a.check, r, _t, o - _t)), _t = f, (a.flags ? ht : i(ht)) !== a.check) { t.msg = "incorrect data check", a.mode = st; break } ht = 0, dt = 0 } a.mode = nt; case nt: if (a.wrap && a.flags) { for (; dt < 32; ) { if (0 === d) break t; d--, ht += n[s++] << dt, dt += 8 } if (ht !== (4294967295 & a.total)) { t.msg = "incorrect length check", a.mode = st; break } ht = 0, dt = 0 } a.mode = rt; case rt: xt = z; break t; case st: xt = E; break t; case ot: return A; case lt: default: return S } return t.next_out = o, t.avail_out = f, t.next_in = s, t.avail_in = d, a.hold = ht, a.bits = dt, (a.wsize || _t !== t.avail_out && a.mode < st && (a.mode < it || e !== v)) && h(t, t.output, t.next_out, _t - t.avail_out) ? (a.mode = ot, A) : (ft -= t.avail_in, _t -= t.avail_out, t.total_in += ft, t.total_out += _t, a.total += _t, a.wrap && _t && (t.adler = a.check = a.flags ? c(a.check, r, _t, t.next_out - _t) : u(a.check, r, _t, t.next_out - _t)), t.data_type = a.bits + (a.last ? 64 : 0) + (a.mode === K ? 128 : 0) + (a.mode === J || a.mode === Y ? 256 : 0), (0 === ft && 0 === _t || e === v) && xt === x && (xt = Z), xt) } , a.inflateEnd = function(t) { if (!t || !t.state) return S; var e = t.state; return e.window && (e.window = null), t.state = null, x } , a.inflateGetHeader = function(t, e) { var a; return t && t.state ? 0 == (2 & (a = t.state).wrap) ? S : (a.head = e, e.done = !1, x) : S } , a.inflateSetDictionary = function(t, e) { var a, i = e.length; return t && t.state ? 0 !== (a = t.state).wrap && a.mode !== j ? S : a.mode === j && u(1, e, i, 0) !== a.check ? E : h(t, e, i, i) ? (a.mode = ot, A) : (a.havedict = 1, x) : S } , a.inflateInfo = "pako inflate (from Nodeca project)" } , { "../utils/common": 3, "./adler32": 5, "./crc32": 7, "./inffast": 10, "./inftrees": 12 }], 12: [function(t, e, a) { "use strict"; var i = t("../utils/common") , n = 15 , r = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0] , s = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78] , o = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0] , l = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64]; e.exports = function(t, e, a, h, d, f, _, u) { var c, b, g, m, w, p, v, k, y, x = u.bits, z = 0, B = 0, S = 0, E = 0, A = 0, Z = 0, R = 0, C = 0, N = 0, O = 0, D = null, I = 0, U = new i.Buf16(16), T = new i.Buf16(16), F = null, L = 0; for (z = 0; z <= n; z++) U[z] = 0; for (B = 0; B < h; B++) U[e[a + B]]++; for (A = x, E = n; E >= 1 && 0 === U[E]; E--) ; if (A > E && (A = E), 0 === E) return d[f++] = 20971520, d[f++] = 20971520, u.bits = 1, 0; for (S = 1; S < E && 0 === U[S]; S++) ; for (A < S && (A = S), C = 1, z = 1; z <= n; z++) if (C <<= 1, (C -= U[z]) < 0) return -1; if (C > 0 && (0 === t || 1 !== E)) return -1; for (T[1] = 0, z = 1; z < n; z++) T[z + 1] = T[z] + U[z]; for (B = 0; B < h; B++) 0 !== e[a + B] && (_[T[e[a + B]]++] = B); if (0 === t ? (D = F = _, p = 19) : 1 === t ? (D = r, I -= 257, F = s, L -= 257, p = 256) : (D = o, F = l, p = -1), O = 0, B = 0, z = S, w = f, Z = A, R = 0, g = -1, m = (N = 1 << A) - 1, 1 === t && N > 852 || 2 === t && N > 592) return 1; for (; ; ) { 0, v = z - R, _[B] < p ? (k = 0, y = _[B]) : _[B] > p ? (k = F[L + _[B]], y = D[I + _[B]]) : (k = 96, y = 0), c = 1 << z - R, S = b = 1 << Z; do { d[w + (O >> R) + (b -= c)] = v << 24 | k << 16 | y | 0 } while (0 !== b);for (c = 1 << z - 1; O & c; ) c >>= 1; if (0 !== c ? (O &= c - 1, O += c) : O = 0, B++, 0 == --U[z]) { if (z === E) break; z = e[a + _[B]] } if (z > A && (O & m) !== g) { for (0 === R && (R = A), w += S, C = 1 << (Z = z - R); Z + R < E && !((C -= U[Z + R]) <= 0); ) Z++, C <<= 1; if (N += 1 << Z, 1 === t && N > 852 || 2 === t && N > 592) return 1; d[g = O & m] = A << 24 | Z << 16 | w - f | 0 } } return 0 !== O && (d[w + O] = z - R << 24 | 64 << 16 | 0), u.bits = A, 0 } } , { "../utils/common": 3 }], 13: [function(t, e, a) { "use strict"; e.exports = { 2: "need dictionary", 1: "stream end", 0: "", "-1": "file error", "-2": "stream error", "-3": "data error", "-4": "insufficient memory", "-5": "buffer error", "-6": "incompatible version" } } , {}], 14: [function(t, e, a) { "use strict"; function i(t) { for (var e = t.length; --e >= 0; ) t[e] = 0 } function n(t, e, a, i, n) { this.static_tree = t, this.extra_bits = e, this.extra_base = a, this.elems = i, this.max_length = n, this.has_stree = t && t.length } function r(t, e) { this.dyn_tree = t, this.max_code = 0, this.stat_desc = e } function s(t) { return t < 256 ? X[t] : X[256 + (t >>> 7)] } function o(t, e) { t.pending_buf[t.pending++] = 255 & e, t.pending_buf[t.pending++] = e >>> 8 & 255 } function l(t, e, a) { t.bi_valid > U - a ? (t.bi_buf |= e << t.bi_valid & 65535, o(t, t.bi_buf), t.bi_buf = e >> U - t.bi_valid, t.bi_valid += a - U) : (t.bi_buf |= e << t.bi_valid & 65535, t.bi_valid += a) } function h(t, e, a) { l(t, a[2 * e], a[2 * e + 1]) } function d(t, e) { var a = 0; do { a |= 1 & t, t >>>= 1, a <<= 1 } while (--e > 0);return a >>> 1 } function f(t, e, a) { var i, n, r = new Array(I + 1), s = 0; for (i = 1; i <= I; i++) r[i] = s = s + a[i - 1] << 1; for (n = 0; n <= e; n++) { var o = t[2 * n + 1]; 0 !== o && (t[2 * n] = d(r[o]++, o)) } } function _(t) { var e; for (e = 0; e < C; e++) t.dyn_ltree[2 * e] = 0; for (e = 0; e < N; e++) t.dyn_dtree[2 * e] = 0; for (e = 0; e < O; e++) t.bl_tree[2 * e] = 0; t.dyn_ltree[2 * F] = 1, t.opt_len = t.static_len = 0, t.last_lit = t.matches = 0 } function u(t) { t.bi_valid > 8 ? o(t, t.bi_buf) : t.bi_valid > 0 && (t.pending_buf[t.pending++] = t.bi_buf), t.bi_buf = 0, t.bi_valid = 0 } function c(t, e, a, i) { var n = 2 * e , r = 2 * a; return t[n] < t[r] || t[n] === t[r] && i[e] <= i[a] } function b(t, e, a) { for (var i = t.heap[a], n = a << 1; n <= t.heap_len && (n < t.heap_len && c(e, t.heap[n + 1], t.heap[n], t.depth) && n++, !c(e, i, t.heap[n], t.depth)); ) t.heap[a] = t.heap[n], a = n, n <<= 1; t.heap[a] = i } function g(t, e, a) { var i, n, r, o, d = 0; if (0 !== t.last_lit) do { i = t.pending_buf[t.d_buf + 2 * d] << 8 | t.pending_buf[t.d_buf + 2 * d + 1], n = t.pending_buf[t.l_buf + d], d++, 0 === i ? h(t, n, e) : (h(t, (r = W[n]) + R + 1, e), 0 !== (o = K[r]) && l(t, n -= J[r], o), h(t, r = s(--i), a), 0 !== (o = M[r]) && l(t, i -= Q[r], o)) } while (d < t.last_lit);h(t, F, e) } function m(t, e) { var a, i, n, r = e.dyn_tree, s = e.stat_desc.static_tree, o = e.stat_desc.has_stree, l = e.stat_desc.elems, h = -1; for (t.heap_len = 0, t.heap_max = D, a = 0; a < l; a++) 0 !== r[2 * a] ? (t.heap[++t.heap_len] = h = a, t.depth[a] = 0) : r[2 * a + 1] = 0; for (; t.heap_len < 2; ) r[2 * (n = t.heap[++t.heap_len] = h < 2 ? ++h : 0)] = 1, t.depth[n] = 0, t.opt_len--, o && (t.static_len -= s[2 * n + 1]); for (e.max_code = h, a = t.heap_len >> 1; a >= 1; a--) b(t, r, a); n = l; do { a = t.heap[1], t.heap[1] = t.heap[t.heap_len--], b(t, r, 1), i = t.heap[1], t.heap[--t.heap_max] = a, t.heap[--t.heap_max] = i, r[2 * n] = r[2 * a] + r[2 * i], t.depth[n] = (t.depth[a] >= t.depth[i] ? t.depth[a] : t.depth[i]) + 1, r[2 * a + 1] = r[2 * i + 1] = n, t.heap[1] = n++, b(t, r, 1) } while (t.heap_len >= 2);t.heap[--t.heap_max] = t.heap[1], function(t, e) { var a, i, n, r, s, o, l = e.dyn_tree, h = e.max_code, d = e.stat_desc.static_tree, f = e.stat_desc.has_stree, _ = e.stat_desc.extra_bits, u = e.stat_desc.extra_base, c = e.stat_desc.max_length, b = 0; for (r = 0; r <= I; r++) t.bl_count[r] = 0; for (l[2 * t.heap[t.heap_max] + 1] = 0, a = t.heap_max + 1; a < D; a++) (r = l[2 * l[2 * (i = t.heap[a]) + 1] + 1] + 1) > c && (r = c, b++), l[2 * i + 1] = r, i > h || (t.bl_count[r]++, s = 0, i >= u && (s = _[i - u]), o = l[2 * i], t.opt_len += o * (r + s), f && (t.static_len += o * (d[2 * i + 1] + s))); if (0 !== b) { do { for (r = c - 1; 0 === t.bl_count[r]; ) r--; t.bl_count[r]--, t.bl_count[r + 1] += 2, t.bl_count[c]--, b -= 2 } while (b > 0);for (r = c; 0 !== r; r--) for (i = t.bl_count[r]; 0 !== i; ) (n = t.heap[--a]) > h || (l[2 * n + 1] !== r && (t.opt_len += (r - l[2 * n + 1]) * l[2 * n], l[2 * n + 1] = r), i--) } }(t, e), f(r, h, t.bl_count) } function w(t, e, a) { var i, n, r = -1, s = e[1], o = 0, l = 7, h = 4; for (0 === s && (l = 138, h = 3), e[2 * (a + 1) + 1] = 65535, i = 0; i <= a; i++) n = s, s = e[2 * (i + 1) + 1], ++o < l && n === s || (o < h ? t.bl_tree[2 * n] += o : 0 !== n ? (n !== r && t.bl_tree[2 * n]++, t.bl_tree[2 * L]++) : o <= 10 ? t.bl_tree[2 * H]++ : t.bl_tree[2 * j]++, o = 0, r = n, 0 === s ? (l = 138, h = 3) : n === s ? (l = 6, h = 3) : (l = 7, h = 4)) } function p(t, e, a) { var i, n, r = -1, s = e[1], o = 0, d = 7, f = 4; for (0 === s && (d = 138, f = 3), i = 0; i <= a; i++) if (n = s, s = e[2 * (i + 1) + 1], !(++o < d && n === s)) { if (o < f) do { h(t, n, t.bl_tree) } while (0 != --o); else 0 !== n ? (n !== r && (h(t, n, t.bl_tree), o--), h(t, L, t.bl_tree), l(t, o - 3, 2)) : o <= 10 ? (h(t, H, t.bl_tree), l(t, o - 3, 3)) : (h(t, j, t.bl_tree), l(t, o - 11, 7)); o = 0, r = n, 0 === s ? (d = 138, f = 3) : n === s ? (d = 6, f = 3) : (d = 7, f = 4) } } function v(t, e, a, i) { l(t, (S << 1) + (i ? 1 : 0), 3), function(t, e, a, i) { u(t), i && (o(t, a), o(t, ~a)), k.arraySet(t.pending_buf, t.window, e, a, t.pending), t.pending += a }(t, e, a, !0) } var k = t("../utils/common") , y = 4 , x = 0 , z = 1 , B = 2 , S = 0 , E = 1 , A = 2 , Z = 29 , R = 256 , C = R + 1 + Z , N = 30 , O = 19 , D = 2 * C + 1 , I = 15 , U = 16 , T = 7 , F = 256 , L = 16 , H = 17 , j = 18 , K = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0] , M = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13] , P = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7] , Y = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15] , q = new Array(2 * (C + 2)); i(q); var G = new Array(2 * N); i(G); var X = new Array(512); i(X); var W = new Array(256); i(W); var J = new Array(Z); i(J); var Q = new Array(N); i(Q); var V, $, tt, et = !1; a._tr_init = function(t) { et || (function() { var t, e, a, i, r, s = new Array(I + 1); for (a = 0, i = 0; i < Z - 1; i++) for (J[i] = a, t = 0; t < 1 << K[i]; t++) W[a++] = i; for (W[a - 1] = i, r = 0, i = 0; i < 16; i++) for (Q[i] = r, t = 0; t < 1 << M[i]; t++) X[r++] = i; for (r >>= 7; i < N; i++) for (Q[i] = r << 7, t = 0; t < 1 << M[i] - 7; t++) X[256 + r++] = i; for (e = 0; e <= I; e++) s[e] = 0; for (t = 0; t <= 143; ) q[2 * t + 1] = 8, t++, s[8]++; for (; t <= 255; ) q[2 * t + 1] = 9, t++, s[9]++; for (; t <= 279; ) q[2 * t + 1] = 7, t++, s[7]++; for (; t <= 287; ) q[2 * t + 1] = 8, t++, s[8]++; for (f(q, C + 1, s), t = 0; t < N; t++) G[2 * t + 1] = 5, G[2 * t] = d(t, 5); V = new n(q,K,R + 1,C,I), $ = new n(G,M,0,N,I), tt = new n(new Array(0),P,0,O,T) }(), et = !0), t.l_desc = new r(t.dyn_ltree,V), t.d_desc = new r(t.dyn_dtree,$), t.bl_desc = new r(t.bl_tree,tt), t.bi_buf = 0, t.bi_valid = 0, _(t) } , a._tr_stored_block = v, a._tr_flush_block = function(t, e, a, i) { var n, r, s = 0; t.level > 0 ? (t.strm.data_type === B && (t.strm.data_type = function(t) { var e, a = 4093624447; for (e = 0; e <= 31; e++, a >>>= 1) if (1 & a && 0 !== t.dyn_ltree[2 * e]) return x; if (0 !== t.dyn_ltree[18] || 0 !== t.dyn_ltree[20] || 0 !== t.dyn_ltree[26]) return z; for (e = 32; e < R; e++) if (0 !== t.dyn_ltree[2 * e]) return z; return x }(t)), m(t, t.l_desc), m(t, t.d_desc), s = function(t) { var e; for (w(t, t.dyn_ltree, t.l_desc.max_code), w(t, t.dyn_dtree, t.d_desc.max_code), m(t, t.bl_desc), e = O - 1; e >= 3 && 0 === t.bl_tree[2 * Y[e] + 1]; e--) ; return t.opt_len += 3 * (e + 1) + 5 + 5 + 4, e }(t), n = t.opt_len + 3 + 7 >>> 3, (r = t.static_len + 3 + 7 >>> 3) <= n && (n = r)) : n = r = a + 5, a + 4 <= n && -1 !== e ? v(t, e, a, i) : t.strategy === y || r === n ? (l(t, (E << 1) + (i ? 1 : 0), 3), g(t, q, G)) : (l(t, (A << 1) + (i ? 1 : 0), 3), function(t, e, a, i) { var n; for (l(t, e - 257, 5), l(t, a - 1, 5), l(t, i - 4, 4), n = 0; n < i; n++) l(t, t.bl_tree[2 * Y[n] + 1], 3); p(t, t.dyn_ltree, e - 1), p(t, t.dyn_dtree, a - 1) }(t, t.l_desc.max_code + 1, t.d_desc.max_code + 1, s + 1), g(t, t.dyn_ltree, t.dyn_dtree)), _(t), i && u(t) } , a._tr_tally = function(t, e, a) { return t.pending_buf[t.d_buf + 2 * t.last_lit] = e >>> 8 & 255, t.pending_buf[t.d_buf + 2 * t.last_lit + 1] = 255 & e, t.pending_buf[t.l_buf + t.last_lit] = 255 & a, t.last_lit++, 0 === e ? t.dyn_ltree[2 * a]++ : (t.matches++, e--, t.dyn_ltree[2 * (W[a] + R + 1)]++, t.dyn_dtree[2 * s(e)]++), t.last_lit === t.lit_bufsize - 1 } , a._tr_align = function(t) { l(t, E << 1, 3), h(t, F, q), function(t) { 16 === t.bi_valid ? (o(t, t.bi_buf), t.bi_buf = 0, t.bi_valid = 0) : t.bi_valid >= 8 && (t.pending_buf[t.pending++] = 255 & t.bi_buf, t.bi_buf >>= 8, t.bi_valid -= 8) }(t) } } , { "../utils/common": 3 }], 15: [function(t, e, a) { "use strict"; e.exports = function() { this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0 } } , {}], "/": [function(t, e, a) { "use strict"; var i = {}; (0, t("./lib/utils/common").assign)(i, t("./lib/deflate"), t("./lib/inflate"), t("./lib/zlib/constants")), e.exports = i } , { "./lib/deflate": 1, "./lib/inflate": 2, "./lib/utils/common": 3, "./lib/zlib/constants": 6 }] }, {}, [])("/") }); !function(console, $hx_exports, $global) { "use strict"; $hx_exports.openfl = $hx_exports.openfl || {}, $hx_exports.lime = $hx_exports.lime || {}, $hx_exports.Archers = $hx_exports.Archers || {}; var $hxClasses = {} , $estr = function() { return js_Boot.__string_rec(this, "") }; function $extend(e, t) { function n() {} n.prototype = e; var i = new n; for (var l in t) i[l] = t[l]; return t.toString !== Object.prototype.toString && (i.toString = t.toString), i } var AnimationHelper = function() {}; $hxClasses.AnimationHelper = AnimationHelper, AnimationHelper.__name__ = ["AnimationHelper"], AnimationHelper.shake = function(e, t, n) { var i; null == n && (n = 3), null == t && (t = .8), null != (i = js_Boot.__instanceof(e, openfl_display_DisplayObject) ? js_Boot.__cast(e, openfl_display_DisplayObject) : null) ? AnimationHelper.shakeRegularDisplayObject(i, t = .8, n = 5) : AnimationHelper.shakeDynamicObject(e, t = .8, n = 5) } , AnimationHelper.shakeRegularDisplayObject = function(e, t, n) { null == n && (n = 5), null == t && (t = .8), motion_Actuate.tween(e, t, { x: e.get_x() + n }, !1).ease(ShakeEase.get_shake()), motion_Actuate.tween(e, t, { y: e.get_y() + n }, !1).ease(ShakeEase.get_shake()) } , AnimationHelper.shakeDynamicObject = function(e, t, n) { null == n && (n = 5), null == t && (t = .8), motion_Actuate.tween(e, t, { x: e.x + n }, !1).ease(ShakeEase.get_shake()), motion_Actuate.tween(e, t, { y: e.y + n }, !1).ease(ShakeEase.get_shake()) } ; var ShakeEase = function() {}; $hxClasses.ShakeEase = ShakeEase, ShakeEase.__name__ = ["ShakeEase"], ShakeEase.__properties__ = { get_shake: "get_shake" }, ShakeEase.get_shake = function() { return new SimpleShakeEasing } ; var motion_easing_IEasing = function() {}; $hxClasses["motion.easing.IEasing"] = motion_easing_IEasing, motion_easing_IEasing.__name__ = ["motion", "easing", "IEasing"], motion_easing_IEasing.prototype = { calculate: null, __class__: motion_easing_IEasing }; var SimpleShakeEasing = function() {}; $hxClasses.SimpleShakeEasing = SimpleShakeEasing, SimpleShakeEasing.__name__ = ["SimpleShakeEasing"], SimpleShakeEasing.__interfaces__ = [motion_easing_IEasing], SimpleShakeEasing.prototype = { calculate: function(e) { if (e >= 1) return 0; var t, n = 1 - -e * (e - 2); return t = Math.random() > .5 ? 1 : -1, n / 2 + Math.random() * (n / 2) * t }, __class__: SimpleShakeEasing }; var ApplicationMain = function() {}; $hxClasses.ApplicationMain = ApplicationMain, ApplicationMain.__name__ = ["ApplicationMain"], ApplicationMain.main = function() { ApplicationMain.config = { build: "1297", company: "CaveOfWonders", file: "Archers", fps: 62, name: "Archers", orientation: "", packageName: "com.cawogames.Archers", version: "1.0.0", windows: [{ allowHighDPI: !1, antialiasing: 4, background: 9552639, borderless: !1, depthBuffer: !1, display: 0, fullscreen: !1, hardware: !0, height: 0, hidden: null, maximized: null, minimized: null, parameters: "{}", resizable: !0, stencilBuffer: !0, title: "Archers", vsync: !1, width: 0, x: null, y: null }] } } , ApplicationMain.create = function() { var e = new openfl_display_Application; e.create(ApplicationMain.config); var t = new DefaultAssetLibrary; lime_utils_Assets.registerLibrary("default", t), ApplicationMain.preloader = new openfl_display_Preloader(new Preloader), e.setPreloader(ApplicationMain.preloader), ApplicationMain.preloader.create(ApplicationMain.config), ApplicationMain.preloader.onComplete.add(ApplicationMain.start), ApplicationMain.preloader.addLibrary(t), ApplicationMain.preloader.load(); e.exec() } , ApplicationMain.embed = $hx_exports.Archers.embed = function(e, t, n, i, l) { var a = null; a = "string" == typeof e ? window.document.getElementById(js_Boot.__cast(e, String)) : null == e ? window.document.createElement("div") : e; var s = null; null != i && "" != i && (s = (i = StringTools.replace(i, "#", "")).indexOf("0x") > -1 ? Std.parseInt(i) : Std.parseInt("0x" + i)), null == t && (t = 0), null == n && (n = 0), ApplicationMain.config.windows[0].background = s, ApplicationMain.config.windows[0].element = a, ApplicationMain.config.windows[0].width = t, ApplicationMain.config.windows[0].height = n, ApplicationMain.config.assetsPrefix = l, ApplicationMain.create() } , ApplicationMain._embed = $hx_exports.lime.embed = function(e, t, n, i, l) { ApplicationMain.embed(e, t, n, i, l) } , ApplicationMain._embed2 = $hx_exports.openfl.embed = function(e, t, n, i, l) { ApplicationMain.embed(e, t, n, i, l) } , ApplicationMain.start = function() { try { Main.main() } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), openfl_Lib.current.stage.__handleError(e) } openfl_Lib.current.stage.dispatchEvent(new openfl_events_Event("resize",!1,!1)), openfl_Lib.current.stage.window.__fullscreen && openfl_Lib.current.stage.dispatchEvent(new openfl_events_FullScreenEvent("fullScreen",!1,!1,!0,!0)) } ; var openfl_events_IEventDispatcher = function() {}; $hxClasses["openfl.events.IEventDispatcher"] = openfl_events_IEventDispatcher, openfl_events_IEventDispatcher.__name__ = ["openfl", "events", "IEventDispatcher"]; var openfl_events_EventDispatcher = function(e) { null != e && (this.__targetDispatcher = e) }; $hxClasses["openfl.events.EventDispatcher"] = openfl_events_EventDispatcher, openfl_events_EventDispatcher.__name__ = ["openfl", "events", "EventDispatcher"], openfl_events_EventDispatcher.__interfaces__ = [openfl_events_IEventDispatcher], openfl_events_EventDispatcher.__sortByPriority = function(e, t) { return e.priority == t.priority ? 0 : e.priority > t.priority ? -1 : 1 } , openfl_events_EventDispatcher.prototype = { __eventMap: null, __iterators: null, __targetDispatcher: null, addEventListener: function(e, t, n, i, l) { if (null == l && (l = !1), null == i && (i = 0), null == n && (n = !1), null != t) if (null == this.__eventMap && (this.__eventMap = new haxe_ds_StringMap, this.__iterators = new haxe_ds_StringMap), this.__eventMap.exists(e)) { for (var a = this.__eventMap.get(e), s = 0, r = a.length; s < r; ) { if (a[s++].match(t, n)) return } for (var _ = this.__iterators.get(e), o = 0; o < _.length; ) { var p = _[o]; ++o, p.active && p.copy() } a.push(new openfl_events__$EventDispatcher_Listener(t,n,i)), a.sort(openfl_events_EventDispatcher.__sortByPriority) } else { var h = []; h.push(new openfl_events__$EventDispatcher_Listener(t,n,i)); var d = new openfl_events__$EventDispatcher_DispatchIterator(h); this.__eventMap.set(e, h), this.__iterators.set(e, [d]) } }, dispatchEvent: function(e) { return null != this.__targetDispatcher ? e.target = this.__targetDispatcher : e.target = this, this.__dispatchEvent(e) }, hasEventListener: function(e) { return null != this.__eventMap && this.__eventMap.exists(e) }, removeEventListener: function(e, t, n) { if (null == n && (n = !1), null != this.__eventMap && null != t) { var i = this.__eventMap.get(e); if (null != i) { for (var l = this.__iterators.get(e), a = 0, s = i.length; a < s; ) { var r = a++; if (i[r].match(t, n)) { for (var _ = 0; _ < l.length; ) { var o = l[_]; ++_, o.remove(i[r], r) } i.splice(r, 1); break } } 0 == i.length && (this.__eventMap.remove(e), this.__iterators.remove(e)), this.__eventMap.iterator().hasNext() || (this.__eventMap = null, this.__iterators = null) } } }, __dispatchEvent: function(e) { if (null == this.__eventMap || null == e) return !0; var t = e.type , n = this.__eventMap.get(t); if (null == n) return !0; null == e.target && (null != this.__targetDispatcher ? e.target = this.__targetDispatcher : e.target = this), e.currentTarget = this; var i = 1 == e.eventPhase , l = this.__iterators.get(t) , a = l[0]; for (a.active && (a = new openfl_events__$EventDispatcher_DispatchIterator(n), l.push(a)), a.reset(n); a.hasNext(); ) { var s = a.next(); if (null != s && (s.useCapture == i && (s.callback(e), e.__isCanceledNow))) break } return a != l[0] && HxOverrides.remove(l, a), !0 }, __class__: openfl_events_EventDispatcher }; var openfl_display_IBitmapDrawable = function() {}; $hxClasses["openfl.display.IBitmapDrawable"] = openfl_display_IBitmapDrawable, openfl_display_IBitmapDrawable.__name__ = ["openfl", "display", "IBitmapDrawable"], openfl_display_IBitmapDrawable.prototype = { __transform: null, __worldTransform: null, __renderCanvas: null, __renderGL: null, __updateChildren: null, __updateTransforms: null, __class__: openfl_display_IBitmapDrawable }; var openfl_display_DisplayObject = function() { openfl_events_EventDispatcher.call(this), this.__alpha = 1, this.__blendMode = 10, this.__cacheAsBitmap = !1, this.__transform = new openfl_geom_Matrix, this.__visible = !0, this.__rotation = 0, this.__rotationSine = 0, this.__rotationCosine = 1, this.__scaleX = 1, this.__scaleY = 1, this.__worldAlpha = 1, this.__worldTransform = new openfl_geom_Matrix, this.__worldColorTransform = new openfl_geom_ColorTransform, this.__renderTransform = new openfl_geom_Matrix, this.set_name("instance" + ++openfl_display_DisplayObject.__instanceCount) }; $hxClasses["openfl.display.DisplayObject"] = openfl_display_DisplayObject, openfl_display_DisplayObject.__name__ = ["openfl", "display", "DisplayObject"], openfl_display_DisplayObject.__interfaces__ = [openfl_display_IBitmapDrawable], openfl_display_DisplayObject.__super__ = openfl_events_EventDispatcher, openfl_display_DisplayObject.prototype = $extend(openfl_events_EventDispatcher.prototype, { opaqueBackground: null, parent: null, stage: null, __alpha: null, __blendMode: null, __cacheAsBitmap: null, __cairo: null, __children: null, __filters: null, __graphics: null, __isMask: null, __loaderInfo: null, __mask: null, __name: null, __objectTransform: null, __renderable: null, __renderDirty: null, __renderParent: null, __renderTransform: null, __rotation: null, __rotationCosine: null, __rotationSine: null, __scaleX: null, __scaleY: null, __scrollRect: null, __transform: null, __transformDirty: null, __visible: null, __worldAlpha: null, __worldClip: null, __worldClipChanged: null, __worldColorTransform: null, __worldTransform: null, __canvas: null, __context: null, addEventListener: function(e, t, n, i, l) { switch (null == l && (l = !1), null == i && (i = 0), null == n && (n = !1), e) { case "activate": case "deactivate": case "enterFrame": case "exitFrame": case "frameConstructed": case "render": openfl_display_DisplayObject.__broadcastEvents.exists(e) || openfl_display_DisplayObject.__broadcastEvents.set(e, []); var a = openfl_display_DisplayObject.__broadcastEvents.get(e); -1 == HxOverrides.indexOf(a, this, 0) && a.push(this) } openfl_events_EventDispatcher.prototype.addEventListener.call(this, e, t, n, i, l) }, dispatchEvent: function(e) { if (js_Boot.__instanceof(e, openfl_events_MouseEvent)) { var t = e; t.stageX = this.__getRenderTransform().__transformX(t.localX, t.localY), t.stageY = this.__getRenderTransform().__transformY(t.localX, t.localY) } else if (js_Boot.__instanceof(e, openfl_events_TouchEvent)) { var n = e; n.stageX = this.__getRenderTransform().__transformX(n.localX, n.localY), n.stageY = this.__getRenderTransform().__transformY(n.localX, n.localY) } return openfl_events_EventDispatcher.prototype.dispatchEvent.call(this, e) }, getBounds: function(e) { var t; null != e ? (t = this.__getWorldTransform().clone()).concat(e.__getWorldTransform().clone().invert()) : (t = openfl_geom_Matrix.__temp).identity(); var n = new openfl_geom_Rectangle; return this.__getBounds(n, t), n }, globalToLocal: function(e) { return e = e.clone(), this.__getRenderTransform().__transformInversePoint(e), e }, hitTestPoint: function(e, t, n) { return null == n && (n = !1), null != this.stage && this.__hitTest(e, t, n, null, !0, this) }, removeEventListener: function(e, t, n) { switch (null == n && (n = !1), openfl_events_EventDispatcher.prototype.removeEventListener.call(this, e, t, n), e) { case "activate": case "deactivate": case "enterFrame": case "exitFrame": case "frameConstructed": case "render": if (!this.hasEventListener(e) && openfl_display_DisplayObject.__broadcastEvents.exists(e)) { var i = openfl_display_DisplayObject.__broadcastEvents.get(e); HxOverrides.remove(i, this) } } }, __cleanup: function() { this.__cairo = null, this.__canvas = null, this.__context = null, null != this.__graphics && this.__graphics.__cleanup() }, __dispatch: function(e) { if (null != this.__eventMap && this.hasEventListener(e.type)) { var t = openfl_events_EventDispatcher.prototype.__dispatchEvent.call(this, e); return !!e.__isCanceled || t } return !0 }, __dispatchChildren: function(e) { return this.__dispatchEvent(e) }, __dispatchEvent: function(e) { var t = openfl_events_EventDispatcher.prototype.__dispatchEvent.call(this, e); return !!e.__isCanceled || (e.bubbles && null != this.parent && this.parent != this && (e.eventPhase = 3, null == e.target && (e.target = this), this.parent.__dispatchEvent(e)), t) }, __enterFrame: function(e) {}, __getBounds: function(e, t) { null != this.__graphics && this.__graphics.__getBounds(e, t) }, __getCursor: function() { return null }, __getInteractive: function(e) { return !1 }, __getRenderTransform: function() { return this.__getWorldTransform(), this.__renderTransform }, __getWorldTransform: function() { if (this.__transformDirty || openfl_display_DisplayObject.__worldTransformDirty > 0) { var e = [] , t = this , n = this.__transformDirty; if (null == this.parent) n && this.__update(!0, !1); else for (; t != this.stage; ) e.push(t), (t = t.parent) != this.stage && t.__transformDirty && (n = !0); if (n) for (var i = e.length; --i >= 0; ) e[i].__update(!0, !1) } return this.__worldTransform }, __hitTest: function(e, t, n, i, l, a) { if (null != this.__graphics) { if (!a.get_visible() || this.__isMask) return !1; if (null != this.get_mask() && !this.get_mask().__hitTestMask(e, t)) return !1; if (this.__graphics.__hitTest(e, t, n, this.__getRenderTransform())) return null == i || l || i.push(a), !0 } return !1 }, __hitTestMask: function(e, t) { return !(null == this.__graphics || !this.__graphics.__hitTest(e, t, !0, this.__getRenderTransform())) }, __renderCanvas: function(e) { (null == this.get_mask() || this.get_mask().get_width() > 0 && this.get_mask().get_height() > 0) && openfl__$internal_renderer_canvas_CanvasDisplayObject.render(this, e) }, __renderCanvasMask: function(e) { null != this.__graphics && openfl__$internal_renderer_canvas_CanvasGraphics.renderMask(this.__graphics, e) }, __renderGL: function(e) { openfl__$internal_renderer_opengl_GLDisplayObject.render(this, e) }, __setRenderDirty: function() { this.__renderDirty || (this.__renderDirty = !0, openfl_display_DisplayObject.__worldRenderDirty++) }, __setStageReference: function(e) { this.stage = e }, __setTransformDirty: function() { this.__transformDirty || (this.__transformDirty = !0, openfl_display_DisplayObject.__worldTransformDirty++) }, __update: function(e, t, n) { var i; (this.__renderable = this.get_visible() && 0 != this.__scaleX && 0 != this.__scaleY && !this.__isMask && (null == this.parent || !this.parent.__isMask), this.__updateTransforms(), t && this.__transformDirty && (this.__transformDirty = !1, openfl_display_DisplayObject.__worldTransformDirty--), null != n && this.__updateMask(n), e) || (this.__worldColorTransform.__equals(this.get_transform().get_colorTransform()) || (this.__worldColorTransform = this.get_transform().get_colorTransform().__clone()), null != (i = null != this.parent ? this.parent : this.__renderParent) ? (this.__worldAlpha = this.get_alpha() * i.__worldAlpha, this.__worldColorTransform.__combine(i.__worldColorTransform), null != this.get_blendMode() && 10 != this.get_blendMode() || (this.__blendMode = i.__blendMode)) : this.__worldAlpha = this.get_alpha(), t && this.__renderDirty && (this.__renderDirty = !1)) }, __updateChildren: function(e) { this.__renderable = this.get_visible() && 0 != this.__scaleX && 0 != this.__scaleY && !this.__isMask && (null == this.parent || !this.parent.__isMask), this.__worldAlpha = this.get_alpha(), this.__transformDirty && (this.__transformDirty = !1, openfl_display_DisplayObject.__worldTransformDirty--) }, __updateMask: function(e) { null != this.__graphics && (e.__commands.overrideMatrix(this.__worldTransform), e.__commands.append(this.__graphics.__commands), e.set___dirty(!0), e.__visible = !0, null == e.__bounds && (e.__bounds = new openfl_geom_Rectangle), this.__graphics.__getBounds(e.__bounds, openfl_geom_Matrix.__identity)) }, __updateTransforms: function(e) { var t, n = null != e; if (t = n ? e : this.__transform, null == this.__worldTransform && (this.__worldTransform = new openfl_geom_Matrix), null == this.__renderTransform && (this.__renderTransform = new openfl_geom_Matrix), n || null == this.parent) this.__worldTransform.copyFrom(t), this.__renderTransform.copyFrom(t); else { var i = this.parent.__worldTransform; this.__worldTransform.a = t.a * i.a + t.b * i.c, this.__worldTransform.b = t.a * i.b + t.b * i.d, this.__worldTransform.c = t.c * i.a + t.d * i.c, this.__worldTransform.d = t.c * i.b + t.d * i.d, this.__worldTransform.tx = t.tx * i.a + t.ty * i.c + i.tx, this.__worldTransform.ty = t.tx * i.b + t.ty * i.d + i.ty, i = this.parent.__renderTransform, this.__renderTransform.a = t.a * i.a + t.b * i.c, this.__renderTransform.b = t.a * i.b + t.b * i.d, this.__renderTransform.c = t.c * i.a + t.d * i.c, this.__renderTransform.d = t.c * i.b + t.d * i.d, this.__renderTransform.tx = t.tx * i.a + t.ty * i.c + i.tx, this.__renderTransform.ty = t.tx * i.b + t.ty * i.d + i.ty } null != this.__scrollRect && this.__renderTransform.__translateTransformed(-this.__scrollRect.x, -this.__scrollRect.y) }, get_alpha: function() { return this.__alpha }, set_alpha: function(e) { return e > 1 && (e = 1), e != this.__alpha && (this.__renderDirty || (this.__renderDirty = !0, openfl_display_DisplayObject.__worldRenderDirty++)), this.__alpha = e }, get_blendMode: function() { return this.__blendMode }, get_filters: function() { return null == this.__filters ? [] : this.__filters.slice() }, set_filters: function(e) { return null != e && e.length > 0 ? this.__filters = e : this.__filters = null, this.__renderDirty || (this.__renderDirty = !0, openfl_display_DisplayObject.__worldRenderDirty++), e }, get_height: function() { var e = new openfl_geom_Rectangle; return this.__getBounds(e, this.__transform), e.height }, set_height: function(e) { var t = new openfl_geom_Rectangle , n = openfl_geom_Matrix.__temp; return n.identity(), this.__getBounds(t, n), e != t.height ? this.set_scaleY(e / t.height) : this.set_scaleY(1), e }, get_loaderInfo: function() { return null != this.stage ? openfl_Lib.current.__loaderInfo : null }, get_mask: function() { return this.__mask }, set_mask: function(e) { return e != this.__mask && (this.__transformDirty || (this.__transformDirty = !0, openfl_display_DisplayObject.__worldTransformDirty++), this.__renderDirty || (this.__renderDirty = !0, openfl_display_DisplayObject.__worldRenderDirty++)), null != this.__mask && (this.__mask.__isMask = !1, this.__mask.__setTransformDirty(), this.__mask.__setRenderDirty()), null != e && (e.__isMask = !0), this.__mask = e }, get_mouseX: function() { var e, t; return e = null != this.stage ? this.stage.__mouseX : openfl_Lib.current.stage.__mouseX, t = null != this.stage ? this.stage.__mouseY : openfl_Lib.current.stage.__mouseY, this.__getRenderTransform().__transformInverseX(e, t) }, get_mouseY: function() { var e, t; return e = null != this.stage ? this.stage.__mouseX : openfl_Lib.current.stage.__mouseX, t = null != this.stage ? this.stage.__mouseY : openfl_Lib.current.stage.__mouseY, this.__getRenderTransform().__transformInverseY(e, t) }, get_name: function() { return this.__name }, set_name: function(e) { return this.__name = e }, get_rotation: function() { return this.__rotation }, set_rotation: function(e) { if (e != this.__rotation) { this.__rotation = e; var t = this.__rotation * (Math.PI / 180); this.__rotationSine = Math.sin(t), this.__rotationCosine = Math.cos(t), this.__transform.a = this.__rotationCosine * this.__scaleX, this.__transform.b = this.__rotationSine * this.__scaleX, this.__transform.c = -this.__rotationSine * this.__scaleY, this.__transform.d = this.__rotationCosine * this.__scaleY, this.__transformDirty || (this.__transformDirty = !0, openfl_display_DisplayObject.__worldTransformDirty++) } return e }, get_scaleX: function() { return this.__scaleX }, set_scaleX: function(e) { if (e != this.__scaleX) if (this.__scaleX = e, 0 == this.__transform.b) e != this.__transform.a && (this.__transformDirty || (this.__transformDirty = !0, openfl_display_DisplayObject.__worldTransformDirty++)), this.__transform.a = e; else { var t = this.__rotationCosine * e , n = this.__rotationSine * e; this.__transform.a == t && this.__transform.b == n || this.__transformDirty || (this.__transformDirty = !0, openfl_display_DisplayObject.__worldTransformDirty++), this.__transform.a = t, this.__transform.b = n } return e }, get_scaleY: function() { return this.__scaleY }, set_scaleY: function(e) { if (e != this.__scaleY) if (this.__scaleY = e, 0 == this.__transform.c) e != this.__transform.d && (this.__transformDirty || (this.__transformDirty = !0, openfl_display_DisplayObject.__worldTransformDirty++)), this.__transform.d = e; else { var t = -this.__rotationSine * e , n = this.__rotationCosine * e; this.__transform.d == n && this.__transform.c == t || this.__transformDirty || (this.__transformDirty = !0, openfl_display_DisplayObject.__worldTransformDirty++), this.__transform.c = t, this.__transform.d = n } return e }, set_scrollRect: function(e) { return e != this.__scrollRect && (this.__transformDirty || (this.__transformDirty = !0, openfl_display_DisplayObject.__worldTransformDirty++)), this.__scrollRect = e }, get_transform: function() { return null == this.__objectTransform && (this.__objectTransform = new openfl_geom_Transform(this)), this.__objectTransform }, get_visible: function() { return this.__visible }, set_visible: function(e) { return e != this.__visible && (this.__renderDirty || (this.__renderDirty = !0, openfl_display_DisplayObject.__worldRenderDirty++)), this.__visible = e }, get_width: function() { var e = new openfl_geom_Rectangle; return this.__getBounds(e, this.__transform), e.width }, set_width: function(e) { var t = new openfl_geom_Rectangle , n = openfl_geom_Matrix.__temp; return n.identity(), this.__getBounds(t, n), e != t.width ? this.set_scaleX(e / t.width) : this.set_scaleX(1), e }, get_x: function() { return this.__transform.tx }, set_x: function(e) { return e != this.__transform.tx && (this.__transformDirty || (this.__transformDirty = !0, openfl_display_DisplayObject.__worldTransformDirty++)), this.__transform.tx = e }, get_y: function() { return this.__transform.ty }, set_y: function(e) { return e != this.__transform.ty && (this.__transformDirty || (this.__transformDirty = !0, openfl_display_DisplayObject.__worldTransformDirty++)), this.__transform.ty = e }, __class__: openfl_display_DisplayObject, __properties__: { set_y: "set_y", get_y: "get_y", set_x: "set_x", get_x: "get_x", set_width: "set_width", get_width: "get_width", set_visible: "set_visible", get_visible: "get_visible", get_transform: "get_transform", set_scrollRect: "set_scrollRect", set_scaleY: "set_scaleY", get_scaleY: "get_scaleY", set_scaleX: "set_scaleX", get_scaleX: "get_scaleX", set_rotation: "set_rotation", get_rotation: "get_rotation", set_name: "set_name", get_name: "get_name", get_mouseY: "get_mouseY", get_mouseX: "get_mouseX", set_mask: "set_mask", get_mask: "get_mask", get_loaderInfo: "get_loaderInfo", set_height: "set_height", get_height: "get_height", set_filters: "set_filters", get_filters: "get_filters", get_blendMode: "get_blendMode", set_alpha: "set_alpha", get_alpha: "get_alpha" } }); var openfl_display_InteractiveObject = function() { openfl_display_DisplayObject.call(this), this.doubleClickEnabled = !1, this.mouseEnabled = !0, this.needsSoftKeyboard = !1, this.__tabEnabled = !1, this.tabIndex = -1 }; $hxClasses["openfl.display.InteractiveObject"] = openfl_display_InteractiveObject, openfl_display_InteractiveObject.__name__ = ["openfl", "display", "InteractiveObject"], openfl_display_InteractiveObject.__super__ = openfl_display_DisplayObject, openfl_display_InteractiveObject.prototype = $extend(openfl_display_DisplayObject.prototype, { doubleClickEnabled: null, mouseEnabled: null, needsSoftKeyboard: null, tabIndex: null, __tabEnabled: null, __getInteractive: function(e) { return null != e && (e.push(this), null != this.parent && this.parent.__getInteractive(e)), !0 }, __hitTest: function(e, t, n, i, l, a) { return !(!a.get_visible() || this.__isMask || l && !this.mouseEnabled) && openfl_display_DisplayObject.prototype.__hitTest.call(this, e, t, n, i, l, a) }, get_tabEnabled: function() { return this.__tabEnabled }, __class__: openfl_display_InteractiveObject, __properties__: $extend(openfl_display_DisplayObject.prototype.__properties__, { get_tabEnabled: "get_tabEnabled" }) }); var openfl_display_DisplayObjectContainer = function() { openfl_display_InteractiveObject.call(this), this.mouseChildren = !0, this.__children = [], this.__removedChildren = openfl__$Vector_Vector_$Impl_$.toObjectVector(null) }; $hxClasses["openfl.display.DisplayObjectContainer"] = openfl_display_DisplayObjectContainer, openfl_display_DisplayObjectContainer.__name__ = ["openfl", "display", "DisplayObjectContainer"], openfl_display_DisplayObjectContainer.__super__ = openfl_display_InteractiveObject, openfl_display_DisplayObjectContainer.prototype = $extend(openfl_display_InteractiveObject.prototype, { mouseChildren: null, __removedChildren: null, addChild: function(e) { return this.addChildAt(e, this.get_numChildren()) }, addChildAt: function(e, t) { if (t > this.__children.length || t < 0) throw new js__$Boot_HaxeError("Invalid index position " + t); if (e.parent == this) this.__children[t] != e && (HxOverrides.remove(this.__children, e), this.__children.splice(t, 0, e)); else { null != e.parent && e.parent.removeChild(e), this.__children.splice(t, 0, e), e.parent = this; var n = null != this.stage && null == e.stage; n && this.__setStageReference(this.stage), e.__transformDirty || (e.__transformDirty = !0, openfl_display_DisplayObject.__worldTransformDirty++), e.__renderDirty || (e.__renderDirty = !0, openfl_display_DisplayObject.__worldRenderDirty++), this.__renderDirty || (this.__renderDirty = !0, openfl_display_DisplayObject.__worldRenderDirty++); var i = new openfl_events_Event("added",!0); i.target = e, e.__dispatchEvent(i), n && e.__dispatchChildren(new openfl_events_Event("addedToStage",!1,!1)) } return e }, getChildAt: function(e) { return e >= 0 && e < this.__children.length ? this.__children[e] : null }, getChildIndex: function(e) { for (var t = 0, n = this.__children.length; t < n; ) { var i = t++; if (this.__children[i] == e) return i } return -1 }, removeChild: function(e) { return null != e && e.parent == this && (e.__transformDirty || (e.__transformDirty = !0, openfl_display_DisplayObject.__worldTransformDirty++), e.__renderDirty || (e.__renderDirty = !0, openfl_display_DisplayObject.__worldRenderDirty++), this.__renderDirty || (this.__renderDirty = !0, openfl_display_DisplayObject.__worldRenderDirty++), e.__dispatchEvent(new openfl_events_Event("removed",!0)), null != this.stage && (null != e.stage && this.stage.get_focus() == e && this.stage.set_focus(null), e.__dispatchChildren(new openfl_events_Event("removedFromStage",!1,!1)), e.__setStageReference(null)), e.parent = null, HxOverrides.remove(this.__children, e), this.__removedChildren.push(e), e.__transformDirty || (e.__transformDirty = !0, openfl_display_DisplayObject.__worldTransformDirty++)), e }, removeChildAt: function(e) { return e >= 0 && e < this.__children.length ? this.removeChild(this.__children[e]) : null }, setChildIndex: function(e, t) { t >= 0 && t <= this.__children.length && e.parent == this && (HxOverrides.remove(this.__children, e), this.__children.splice(t, 0, e)) }, swapChildren: function(e, t) { if (e.parent == this && t.parent == this) { var n = HxOverrides.indexOf(this.__children, e, 0) , i = HxOverrides.indexOf(this.__children, t, 0); this.__children[n] = t, this.__children[i] = e } }, __dispatchChildren: function(e) { var t = this.__dispatchEvent(e); if (t && null != this.__children) for (var n = 0, i = this.__children; n < i.length; ) { var l = i[n]; if (++n, e.target = l, !l.__dispatchChildren(e)) return !1 } return t }, __enterFrame: function(e) { for (var t = 0, n = this.__children; t < n.length; ) { var i = n[t]; ++t, i.__enterFrame(e) } }, __getBounds: function(e, t) { if (openfl_display_InteractiveObject.prototype.__getBounds.call(this, e, t), 0 != this.__children.length) { null != t && (this.__updateTransforms(t), this.__updateChildren(!0)); for (var n = 0, i = this.__children; n < i.length; ) { var l = i[n]; ++n, 0 != l.__scaleX && 0 != l.__scaleY && l.__getBounds(e, l.__worldTransform) } null != t && (this.__updateTransforms(), this.__updateChildren(!0)) } }, __hitTest: function(e, t, n, i, l, a) { if (!a.get_visible() || this.__isMask || l && !this.mouseEnabled && !this.mouseChildren) return !1; if (null != this.get_mask() && !this.get_mask().__hitTestMask(e, t)) return !1; if (null != this.__scrollRect) { var s = openfl_geom_Point.__temp; if (s.setTo(e, t), this.__getRenderTransform().__transformInversePoint(s), !this.__scrollRect.containsPoint(s)) return !1 } var r = this.__children.length; if (l) { if (null != i && this.mouseChildren) { if (null != i) { for (var _ = i.length, o = !1, p = !1; --r >= 0 && !(((o = this.__children[r].__getInteractive(null)) || this.mouseEnabled && !p) && this.__children[r].__hitTest(e, t, n, i, !0, this.__children[r]) && (p = !0, o)); ) ; if (p) return i.splice(_, 0, a), !0 } } else for (; --r >= 0; ) if (this.__children[r].__hitTest(e, t, n, null, !0, this.__children[r])) return null != i && i.push(a), !0 } else for (; --r >= 0; ) this.__children[r].__hitTest(e, t, n, i, !1, this.__children[r]); return !1 }, __hitTestMask: function(e, t) { for (var n = this.__children.length; --n >= 0; ) if (this.__children[n].__hitTestMask(e, t)) return !0; return !1 }, __renderCanvas: function(e) { if (!(!this.__renderable || this.__worldAlpha <= 0 || null != this.get_mask() && (this.get_mask().get_width() <= 0 || this.get_mask().get_height() <= 0))) { openfl_display_InteractiveObject.prototype.__renderCanvas.call(this, e), e.maskManager.pushObject(this); for (var t = 0, n = this.__children; t < n.length; ) { var i = n[t]; ++t, i.__renderCanvas(e) } for (var l = 0, a = this.__removedChildren; l < a.get_length(); ) { var s = a.get(l); ++l, null == s.stage && s.__cleanup() } this.__removedChildren.set_length(0), e.maskManager.popObject(this) } }, __renderCanvasMask: function(e) { null != this.__graphics && openfl__$internal_renderer_canvas_CanvasGraphics.renderMask(this.__graphics, e); var t = new openfl_geom_Rectangle; this.__getBounds(t, this.__transform), e.context.rect(0, 0, t.width, t.height) }, __renderGL: function(e) { if (this.__renderable && !(this.__worldAlpha <= 0)) { openfl_display_InteractiveObject.prototype.__renderGL.call(this, e), e.maskManager.pushObject(this), e.filterManager.pushObject(this); for (var t = 0, n = this.__children; t < n.length; ) { var i = n[t]; ++t, i.__renderGL(e) } for (var l = 0, a = this.__removedChildren; l < a.get_length(); ) { var s = a.get(l); ++l, null == s.stage && s.__cleanup() } this.__removedChildren.set_length(0), e.filterManager.popObject(this), e.maskManager.popObject(this) } }, __setStageReference: function(e) { if (openfl_display_InteractiveObject.prototype.__setStageReference.call(this, e), null != this.__children) for (var t = 0, n = this.__children; t < n.length; ) { var i = n[t]; ++t, i.__setStageReference(e) } }, __update: function(e, t, n) { if (openfl_display_InteractiveObject.prototype.__update.call(this, e, t, n), t) for (var i = 0, l = this.__children; i < l.length; ) { var a = l[i]; ++i, a.__update(e, !0, n) } }, __updateChildren: function(e) { openfl_display_InteractiveObject.prototype.__updateChildren.call(this, e); for (var t = 0, n = this.__children; t < n.length; ) { var i = n[t]; ++t, i.__update(e, !0) } }, get_numChildren: function() { return this.__children.length }, __class__: openfl_display_DisplayObjectContainer, __properties__: $extend(openfl_display_InteractiveObject.prototype.__properties__, { get_numChildren: "get_numChildren" }) }); var openfl_display_Sprite = function() { openfl_display_DisplayObjectContainer.call(this), this.buttonMode = !1, this.useHandCursor = !0 }; $hxClasses["openfl.display.Sprite"] = openfl_display_Sprite, openfl_display_Sprite.__name__ = ["openfl", "display", "Sprite"], openfl_display_Sprite.__super__ = openfl_display_DisplayObjectContainer, openfl_display_Sprite.prototype = $extend(openfl_display_DisplayObjectContainer.prototype, { buttonMode: null, dropTarget: null, hitArea: null, useHandCursor: null, __getCursor: function() { return this.buttonMode && this.useHandCursor ? lime_ui_MouseCursor.POINTER : null }, __hitTest: function(e, t, n, i, l, a) { if (null != this.hitArea) { if (!this.hitArea.mouseEnabled) { this.hitArea.mouseEnabled = !0; var s = this.hitArea.__hitTest(e, t, n, null, !0, a); return this.hitArea.mouseEnabled = !1, s && (i[i.length] = a), s } } else { if (!a.get_visible() || this.__isMask || l && !this.mouseEnabled && !this.mouseChildren) return !1; if (null != this.get_mask() && !this.get_mask().__hitTestMask(e, t)) return !1; if (null != this.__scrollRect) { var r = openfl_geom_Point.__temp; if (r.setTo(e, t), this.__getRenderTransform().__transformInversePoint(r), !this.__scrollRect.containsPoint(r)) return !1 } if (openfl_display_DisplayObjectContainer.prototype.__hitTest.call(this, e, t, n, i, l, a)) return l; if ((!l || this.mouseEnabled) && null != this.__graphics && this.__graphics.__hitTest(e, t, n, this.__getRenderTransform())) return null != i && i.push(a), !0 } return !1 }, __hitTestMask: function(e, t) { return !!openfl_display_DisplayObjectContainer.prototype.__hitTestMask.call(this, e, t) || !(null == this.__graphics || !this.__graphics.__hitTest(e, t, !0, this.__getRenderTransform())) }, get_graphics: function() { return null == this.__graphics && (this.__graphics = new openfl_display_Graphics(this)), this.__graphics }, get_tabEnabled: function() { return this.__tabEnabled || this.buttonMode }, __class__: openfl_display_Sprite, __properties__: $extend(openfl_display_DisplayObjectContainer.prototype.__properties__, { get_graphics: "get_graphics" }) }); var Main = function() { var e; this.maxDrawCalls = 0, this.curFrameDrawCalls = 0, this.wasMuted1 = !1, this.fullStop = !1, this.addOverlay = null, this.onGame_uptapAddEnd = null, this.slowedPhysic = !1, this.lastLevel = 0, this.positionIterations = 10, this.velocityIterations = 10, this._mouseY = 0, this._mouseX = 0, this.movieClips = [], this.clearedCanvas = !0, this.thisAddedToStage = !1, this.overlayMaker = null, this.isPlayingMusic = !1, this.isMouseDown = !1, this.isMobileBrowser = !1, this.inputType = "", this.minUpdateTime = 1, this.lastTime = 0, this.N = 1, this.paused = !0, this.atlases = [], this.inited = !1, openfl_display_Sprite.call(this), this.soundsSpritesStartedThisFrame = [], this.objectsToUpdate = [], this.numericFont = new NumericFont("MainFontNumeric",21), this.numericFontFps = new NumericFont("MainFontNumeric1",21), Main.current = this, this.config = new Config, this.musicSounds = [], this.isMobileBrowser = this.config.getIsMobileBrowser(), this.addEventListener("addedToStage", $bind(this, this.added)), this.gradToRad = Math.PI / 180, this.hm = new openfl_geom_Matrix, this.viewPort = new openfl_geom_Rectangle, this.viewPortAABB = new nape_geom_AABB, this.hBodyList = new nape_phys_BodyList, this.hr = new openfl_geom_Rectangle, (openfl_Assets.exists("img/MainAtlas.png") || openfl_Assets.cache.hasBitmapData("img/MainAtlas.png")) && (this.batch = new Batching(null,0,0,"img/MainAtlas.png","img/MainAtlas.xml"), this.batch.main = this, this.atlases.push(this.batch)); for (var t = null, n = 0; n < 100; ) { var i = n++; if (!openfl_Assets.exists("img/Atlas" + i + ".png") && !openfl_Assets.cache.hasBitmapData("img/Atlas" + i + ".png")) break; (e = new Batching(null,0,0,"img/Atlas" + i + ".png","img/Atlas" + i + ".xml")).main = this, this.atlases.push(e), 0 == i && (t = e) } null == this.batch && (this.batch = t); var l = haxe_zip_Uncompress.run(haxe_Resource.getBytes("img/levels.zip")) , a = l.getString(0, l.length); this.levelsData = JSON.parse(a), this.lastLevel = 0; for (var s = 0, r = this.levelsData.levels.length; s < r; ) { var _ = s++; if (-1 != (this.levelsData.levels[_].name + "").indexOf("level")) { var o = Std.parseInt(StringTools.replace(this.levelsData.levels[_].name, "level", "")); this.lastLevel < o && (this.lastLevel = o) } } window.game_uptap_onPauseRequested = $bind(this, this.pausePublisherApi), window.game_uptap_onResumeRequested = $bind(this, this.resumePublisherApi) }; $hxClasses.Main = Main, Main.__name__ = ["Main"], Main.__properties__ = { get_addsBlocked: "get_addsBlocked" }, Main.get_addsBlocked = function() { return 0 == Main._addsBlocked && (null != LocalSaves.getVar("addsBlocked") ? Main._addsBlocked = LocalSaves.getVar("addsBlocked") : Main._addsBlocked = !1), Main._addsBlocked } , Main.showAdPublisherApi = function(e) { if (null == e && (e = !1), !Main.get_addsBlocked()) { var t = window.game_uptap; null != t && t.showAd(Main.current.onGame_uptapAddEnd, e) } } , Main.main = function() { Main.created || (openfl_Lib.current.stage.align = 6, openfl_Lib.current.stage.scaleMode = 2, openfl_Lib.current.addChildAt(new Main, 0), Main.created = !0, Preloader.remove()) } , Main.clearAllBodyConstraints = function(e) { for (var t = (null == e.zpp_inner.wrap_constraints && (e.zpp_inner.wrap_constraints = zpp_$nape_util_ZPP_$ConstraintList.get(e.zpp_inner.constraints, !0)), e.zpp_inner.wrap_constraints).iterator(); t.hasNext(); ) { var n; t.zpp_critical = !1, n = t.zpp_inner.at(t.zpp_i++), Main.tmpConstrArr.push(n) } for (; Main.tmpConstrArr.length > 0; ) { var i = Main.tmpConstrArr.pop(); 0 != i.zpp_inner.active && (null != i.zpp_inner.component && (i.zpp_inner.component.woken = !1), i.zpp_inner.clearcache(), null != i.zpp_inner.space && (i.zpp_inner.wake(), i.zpp_inner.space.live_constraints.remove(i.zpp_inner)), i.zpp_inner.active = !1, i.zpp_inner.deactivate()), i.zpp_inner.active, null != (null == i.zpp_inner.compound ? null : i.zpp_inner.compound.outer) && (null != (null == i.zpp_inner.compound ? null : i.zpp_inner.compound.outer) && null != (null == i.zpp_inner.compound ? null : i.zpp_inner.compound.outer) && (null == i.zpp_inner.compound ? null : i.zpp_inner.compound.outer).zpp_inner.wrap_constraints.remove(i), null == i.zpp_inner.compound || i.zpp_inner.compound.outer), null != (null == i.zpp_inner.space ? null : i.zpp_inner.space.outer) && (null != (null == i.zpp_inner.space ? null : i.zpp_inner.space.outer) && (null != i.zpp_inner.component && (i.zpp_inner.component.woken = !1), i.zpp_inner.clearcache(), null != i.zpp_inner.space && i.zpp_inner.space.outer.zpp_inner.wrap_constraints.remove(i), i.zpp_inner.space = null), null == i.zpp_inner.space || i.zpp_inner.space.outer) } } , Main.__super__ = openfl_display_Sprite, Main.prototype = $extend(openfl_display_Sprite.prototype, { inited: null, config: null, sWidth: null, sHeight: null, objectsToUpdate: null, atlases: null, batch: null, lastBatch: null, canvas: null, paused: null, N: null, lastTime: null, minUpdateTime: null, inputType: null, isMobileBrowser: null, isMouseDown: null, sounds: null, isPlayingMusic: null, musicSounds: null, keyCodesDown: null, overlayMaker: null, soundsSpritesStartedThisFrame: null, numericFont: null, numericFontFps: null, thisAddedToStage: null, clearedCanvas: null, movieClips: null, _mouseX: null, _mouseY: null, space: null, velocityIterations: null, positionIterations: null, viewPort: null, viewPortAABB: null, hr: null, hBodyList: null, desk: null, hm: null, gradToRad: null, levelsData: null, lastLevel: null, slowedPhysic: null, resize: function(e) { this.inited ? (this.config.resizeSet(this.inited), this.config.initSize(!0), this.sWidth = this.config.sWidth, this.sHeight = this.config.sHeight, this.N = this.config.N, null != this.addOverlay && (this.addOverlay.set_x(this.addOverlay.set_y(0)), this.addOverlay.set_width(openfl_Lib.current.stage.stageWidth), this.addOverlay.set_height(openfl_Lib.current.stage.stageHeight)), null != this.canvas && (this.canvas.resize(), this.desk.onResize(), this.viewPort.width = this.sWidth, this.viewPort.height = this.sHeight, this.viewPortAABB.set_width(this.sWidth), this.viewPortAABB.set_height(this.sHeight))) : this.init() }, onGame_uptapAddEnd: null, addOverlay: null, fullStop: null, set_fullStop: function(e) { return this.fullStop = e, e }, wasMuted1: null, pausePublisherApi: function() { this.fullStop || (this.set_fullStop(!0), this.soundOfPublisherApi()) }, resumePublisherApi: function() { this.fullStop && (this.soundOnPublisherApi(), this.set_fullStop(!1), null != Desk.current && Desk.current.updateSoundBtn()) }, soundOnPublisherApi: function() { this.wasMuted1 || this.unMute() }, soundOfPublisherApi: function() { this.wasMuted1 = this.sounds.muted, this.sounds.muted || this.mute() }, added: function(e) { this.removeEventListener("addedToStage", $bind(this, this.added)), this.stage.addEventListener("resize", $bind(this, this.resize)), this.thisAddedToStage = !0, this.init(), this.stage.__transparent = !0 }, playSpriteSound: function(e, t) { null == t && (t = !1), -1 == HxOverrides.indexOf(this.soundsSpritesStartedThisFrame, e, 0) && (this.soundsSpritesStartedThisFrame.push(e), this.sounds.playSound("sprite", e, t, !1, !1, "sound")) }, stopSpriteSound: function(e, t) { null == t && (t = !1), this.sounds.stopSound("sprite", e) }, playSpriteMusicE: function(e, t, n, i) { null == i && (i = !0), null == n && (n = !0), null == t && (t = !1), n && this.stopAllMusics(i ? null : [e]), (i || -1 == HxOverrides.indexOf(this.musicSounds, e, 0)) && (this.sounds.stopSound("sprite", e), this.sounds.playSound("sprite", e, t, !1, !1, "music"), HxOverrides.remove(this.musicSounds, e)), -1 == HxOverrides.indexOf(this.musicSounds, e, 0) && this.musicSounds.push(e), this.isPlayingMusic = !0 }, stopSpriteMusic: function(e) { this.sounds.stopSound("sprite", e), this.isPlayingMusic = !1 }, stopAllMusics: function(e) { for (var t = 0; t < this.musicSounds.length; ) null == e || -1 == HxOverrides.indexOf(e, this.musicSounds[t], 0) ? (this.stopSpriteMusic(this.musicSounds[t]), HxOverrides.remove(this.musicSounds, this.musicSounds[t])) : t++ }, mute: function() { this.sounds.mute(), this.fullStop || Game_uptapAnalytics.trackEvent("EVENT_VOLUMECHANGE", { bgmVolume: 0, sfxVolume: 0 }) }, unMute: function() { this.sounds.unMute(), this.fullStop || Game_uptapAnalytics.trackEvent("EVENT_VOLUMECHANGE", { bgmVolume: 1, sfxVolume: 1 }) }, init: function() { if (!this.inited) if (this.inited = !0, this.config.checkSiteLock(), this.config.initSize()) this.inited = !1; else { this.sWidth = this.config.sWidth, this.sHeight = this.config.sHeight, this.N = this.config.N, this.sounds = this.config.initSounds(), null == this.canvas && (this.canvas = new BatchCanvas), this.addChild(this.canvas), this.canvas.set_visible(!1), this.addEventListener("enterFrame", $bind(this, this.update)), this.lastTime = openfl_Lib.getTimer(), this.keyCodesDown = [], this.stage.addEventListener("keyDown", $bind(this, this.keyDown)), this.stage.addEventListener("keyUp", $bind(this, this.keyUp)), "click" == this.inputType || "" == this.inputType ? (this.stage.addEventListener("mouseDown", $bind(this, this.mDown)), this.stage.addEventListener("mouseMove", $bind(this, this.mMove)), this.stage.addEventListener("mouseUp", $bind(this, this.mUp))) : (this.stage.addEventListener("touchBegin", $bind(this, this.mDown)), this.stage.addEventListener("touchMove", $bind(this, this.mMove)), this.stage.addEventListener("touchEnd", $bind(this, this.mUp))), this.viewPort.width = this.sWidth, this.viewPort.height = this.sHeight, this.viewPortAABB.set_width(this.sWidth), this.viewPortAABB.set_height(this.sHeight); var e = nape_geom_Vec2.get(0, 0, !0); this.space = new nape_space_Space(e,(null == zpp_$nape_util_ZPP_$Flags.Broadphase_SWEEP_AND_PRUNE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.Broadphase_SWEEP_AND_PRUNE = new nape_space_Broadphase, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.Broadphase_SWEEP_AND_PRUNE)), this.setUp(), this.setChildIndex(this.canvas, this.get_numChildren() - 1), this.newGame(), this.config.sendToTopTapToStart(), this.paused = !1 } }, setUp: function() { this.desk = new Desk }, keyDown: function(e) { for (var t = 0, n = this.keyCodesDown.length; t < n; ) { var i = t++; if (this.keyCodesDown[i] == e.keyCode) return } this.keyCodesDown.push(e.keyCode) }, keyUp: function(e) { HxOverrides.remove(this.keyCodesDown, e.keyCode) }, tapToStartClick: function(e) { this.inputType = e.type }, mDown: function(e) { this._mouseX = openfl_Lib.current.stage.__mouseX / this.get_scaleX(), this._mouseY = openfl_Lib.current.stage.__mouseY / this.get_scaleY(), this.isMouseDown = !0 }, mMove: function(e) { this._mouseX = openfl_Lib.current.stage.__mouseX / this.get_scaleX(), this._mouseY = openfl_Lib.current.stage.__mouseY / this.get_scaleY() }, mUp: function(e) { this._mouseX = openfl_Lib.current.stage.__mouseX / this.get_scaleX(), this._mouseY = openfl_Lib.current.stage.__mouseY / this.get_scaleY(), this.isMouseDown = !1 }, pauseGame: function(e) {}, newGame: function() { this.desk.startNewGame(0), this.canvas.set_visible(!1), this.paused = !1 }, isKeyDown: function(e) { for (var t = 0, n = this.keyCodesDown.length; t < n; ) { var i = t++; if (this.keyCodesDown[i] == e) return !0 } return !1 }, curFrameDrawCalls: null, maxDrawCalls: null, get_mouseX: function() { return this._mouseX }, get_mouseY: function() { return this._mouseY }, updateWorld: function(e) { var t, n = e; for (this.slowedPhysic && (n /= 7), this.space.step(n / 1e3, 3, 10), this.space.bodiesInAABB(this.viewPortAABB, !1, !0, null, this.hBodyList); this.hBodyList.get_length() > 0; ) null != (null == (t = this.hBodyList.pop()).zpp_inner_i.userData && (t.zpp_inner_i.userData = {}), t.zpp_inner_i.userData).graphic && ((null == t.zpp_inner_i.userData && (t.zpp_inner_i.userData = {}), t.zpp_inner_i.userData).graphic.x = (null == t.zpp_inner.wrap_pos && t.zpp_inner.setupPosition(), t.zpp_inner.wrap_pos).get_x(), (null == t.zpp_inner_i.userData && (t.zpp_inner_i.userData = {}), t.zpp_inner_i.userData).graphic.y = (null == t.zpp_inner.wrap_pos && t.zpp_inner.setupPosition(), t.zpp_inner.wrap_pos).get_y(), (null == t.zpp_inner_i.userData && (t.zpp_inner_i.userData = {}), t.zpp_inner_i.userData).graphic.rotation = t.zpp_inner.rot, (null == t.zpp_inner_i.userData && (t.zpp_inner_i.userData = {}), t.zpp_inner_i.userData).graphic.render()) }, update: function(e) { this._mouseX = openfl_Lib.current.stage.__mouseX / this.get_scaleX(), this._mouseY = openfl_Lib.current.stage.__mouseY / this.get_scaleY(); var t = openfl_Lib.getTimer() , n = t - this.lastTime; if (0 != n && n >= this.minUpdateTime && (this.lastTime = t, !this.fullStop)) { for (var i = 0, l = this.movieClips.length; i < l; ) { var a = i++; this.movieClips[a].update() } for (; this.soundsSpritesStartedThisFrame.length > 0; ) this.soundsSpritesStartedThisFrame.pop(); 0 == n && (n = 1); for (var s = 0, r = this.objectsToUpdate.length; s < r; ) { var _ = s++; this.objectsToUpdate[_].update(n) } this.paused && null != e || (this.desk.update(n), this.updateWorld(n), null != this.lastBatch && this.lastBatch.render(this.canvas, !this.clearedCanvas), this.lastBatch = null, this.clearedCanvas = !1, this.curFrameDrawCalls > this.maxDrawCalls && (this.maxDrawCalls = this.curFrameDrawCalls), this.curFrameDrawCalls = 0) } }, __class__: Main, __properties__: $extend(openfl_display_Sprite.prototype.__properties__, { set_fullStop: "set_fullStop" }) }); var DocumentClass = function() { openfl_Lib.current.addChild(this), Main.call(this), this.dispatchEvent(new openfl_events_Event("addedToStage",!1,!1)) }; $hxClasses.DocumentClass = DocumentClass, DocumentClass.__name__ = ["DocumentClass"], DocumentClass.__super__ = Main, DocumentClass.prototype = $extend(Main.prototype, { __class__: DocumentClass }); var BaseGameMode = function() { this.completed = !1, this.main = Main.current, this.desk = Desk.current }; $hxClasses.BaseGameMode = BaseGameMode, BaseGameMode.__name__ = ["BaseGameMode"], BaseGameMode.prototype = { main: null, desk: null, completed: null, destroy: function() { this.desk = null, this.main = null }, onResize: function() {}, onMDown: function() {}, onMUp: function() {}, update: function(e) {}, __class__: BaseGameMode }; var nape_dynamics_InteractionGroup = function(e) { null == e && (e = !1), this.zpp_inner = null, this.zpp_inner = new zpp_$nape_dynamics_ZPP_$InteractionGroup, this.zpp_inner.outer = this, this.zpp_inner.ignore != e && (this.zpp_inner.invalidate(!0), this.zpp_inner.ignore = e), this.zpp_inner.ignore }; $hxClasses["nape.dynamics.InteractionGroup"] = nape_dynamics_InteractionGroup, nape_dynamics_InteractionGroup.__name__ = ["nape", "dynamics", "InteractionGroup"], nape_dynamics_InteractionGroup.prototype = { zpp_inner: null, toString: function() { var e = "InteractionGroup"; return this.zpp_inner.ignore && (e += ":ignore"), e }, __class__: nape_dynamics_InteractionGroup }; var zpp_$nape_dynamics_ZPP_$InteractionGroup = function() { this.depth = 0, this.interactors = null, this.groups = null, this.group = null, this.ignore = !1, this.outer = null, this.depth = 0, this.groups = new zpp_$nape_util_ZNPList_$ZPP_$InteractionGroup, this.interactors = new zpp_$nape_util_ZNPList_$ZPP_$Interactor }; $hxClasses["zpp_nape.dynamics.ZPP_InteractionGroup"] = zpp_$nape_dynamics_ZPP_$InteractionGroup, zpp_$nape_dynamics_ZPP_$InteractionGroup.__name__ = ["zpp_nape", "dynamics", "ZPP_InteractionGroup"], zpp_$nape_dynamics_ZPP_$InteractionGroup.prototype = { outer: null, ignore: null, group: null, groups: null, interactors: null, depth: null, invalidate: function(e) { if (null == e && (e = !1), e || this.ignore) { for (var t = this.interactors.head; null != t; ) { var n = t.elt; null != n.ibody ? n.ibody.wake() : null != n.ishape ? n.ishape.body.wake() : n.icompound.wake(), t = t.next } for (var i = this.groups.head; null != i; ) { i.elt.invalidate(e), i = i.next } } }, __class__: zpp_$nape_dynamics_ZPP_$InteractionGroup }; var zpp_$nape_util_ZNPList_$ZPP_$InteractionGroup = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_InteractionGroup"] = zpp_$nape_util_ZNPList_$ZPP_$InteractionGroup, zpp_$nape_util_ZNPList_$ZPP_$InteractionGroup.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_InteractionGroup"], zpp_$nape_util_ZNPList_$ZPP_$InteractionGroup.prototype = { head: null, modified: null, pushmod: null, length: null, iterator_at: function(e) { for (var t = this.head; e-- > 0 && null != t; ) t = t.next; return t }, __class__: zpp_$nape_util_ZNPList_$ZPP_$InteractionGroup }; var zpp_$nape_util_ZNPList_$ZPP_$Interactor = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_Interactor"] = zpp_$nape_util_ZNPList_$ZPP_$Interactor, zpp_$nape_util_ZNPList_$ZPP_$Interactor.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_Interactor"], zpp_$nape_util_ZNPList_$ZPP_$Interactor.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$Interactor.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$Interactor : (n = zpp_$nape_util_ZNPNode_$ZPP_$Interactor.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Interactor.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$Interactor.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Interactor.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, pop_unsafe: function() { return this.inlined_pop_unsafe() }, inlined_pop_unsafe: function() { var e = this.head.elt; return this.pop(), e }, remove: function(e) { this.inlined_try_remove(e) }, inlined_try_remove: function(e) { for (var t = null, n = this.head, i = !1; null != n; ) { if (n.elt == e) { this.inlined_erase(t), i = !0; break } t = n, n = n.next } return i }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$Interactor.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Interactor.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, inlined_clear: function() { for (; null != this.head; ) this.inlined_pop(); this.pushmod = !0 }, iterator_at: function(e) { for (var t = this.head; e-- > 0 && null != t; ) t = t.next; return t }, __class__: zpp_$nape_util_ZNPList_$ZPP_$Interactor }; var Archers = function() { this.tmpArArr = [], this.sortArr = [], this.spawnTimer = null, this.initBonusContOYBot = 0, this.bonusBtnsCont = null, this.coinsTFOYBot = 0, this.pauseBtnOYBot = 0, this.isBtnClick = !1, this.cancelIsBtnClick = !1, this.curAciveBonuses = [], this.bonusTimeout = 10, this.coinsTF = null, this._coins = -1, this._bestScore = -1, this.numShootsHit = 0, this.numShoots = 0, this.headShots = 0, this.score = 0, this.isTutorActive = !1, this.player2Btns = [], this.player1Btns = [], this.genElementsLayer = new openfl_display_Sprite, this.twoPlayersTimeLeft = 0, this.twoPlayersInitTime = 30, this.p2WinsLabel = null, this.p1WinsLabel = null, this.timer2Txt = null, this.timer1Txt = null, this.headShotsTxt = null, this.scoreTxt = null, this.p2Wins = 0, this.p1Wins = 0, this.mainMaitrixInverse = new openfl_geom_Matrix, this.hp = new openfl_geom_Point, this.touchesCoords = new haxe_ds_IntMap, this.curFrameTouchesData = [], this.p2SpawnP = null, this.p1SpawnP = null, this.gameFinished = !1, this.heroesCont = new openfl_display_Sprite, this.heroesContChildIndex = 0, this.round = 0, this.spawnsData = [], this.arrows = [], this.hm23 = new nape_geom_Mat23, this.hm = new openfl_geom_Matrix, this.arrowsEvents = [], this.arrowCBType = new nape_callbacks_CbType, this.space = null, this.allHeroes = [], this.p2 = null, this.p1 = null, this.arrowData = null, BaseGameMode.call(this), Archers.current = this; var e = this.desk.getElementByName("arrow"); this.arrowData = e.mainData, e.b.set_space(null), this.desk.levels.removeChild(e), HxOverrides.remove(this.desk.levels.physicElements, e), this.pauseWindow = new ShowHideAnimator(this.desk.getElementsByFolderName("PauseScreen"),!0,!0), this.pauseBtn = this.desk.getElementByName("pauseButton"), this.pauseResumeBtn = this.desk.getElementByName("pauseResumeBtn"), this.pauseHomeBtn = this.desk.getElementByName("pauseHomeBtn"), this.pauseRestartBtn = this.desk.getElementByName("pauseRestartBtn"), this.desk.pauseClickFunction = $bind(this, this.pauseClickFunction), this.desk.levels.addChildAt(this.genElementsLayer, this.pauseBtn.parent.getChildIndex(this.pauseBtn)), this.tutorialWin = new ShowHideAnimator(this.desk.getElementsByFolderName("Tutorial"),!0,!0), this.p1SpawnP = this.desk.getElementByName("p1Spawn"), this.p2SpawnP = this.desk.getElementByName("p2Spawn"), this.p1SpawnP.parent.removeChild(this.p1SpawnP), this.p2SpawnP.parent.removeChild(this.p2SpawnP), HxOverrides.remove(this.desk.levels.physicElements, this.p1SpawnP), HxOverrides.remove(this.desk.levels.physicElements, this.p2SpawnP); for (var t = this.desk.getElementsByFolderName("FinishScreen"), n = 0; n < t.length; ) { var i = t[n]; ++n, i.set_visible(!1) } this.fsAnimator = new ShowHideAnimator(t,!0), this.restBtn = this.desk.getElementByName("restartFS"), this.homeBtn = this.desk.getElementByName("homeFS"), this.space = Main.current.space, this.pauseBtn.set_visible(!1); for (var l = 0, a = this.desk.levels.physicElements; l < a.length; ) { var s = a[l]; ++l, -1 != s.layerName.indexOf("Spawns") && s.set_visible(!1) } this.pauseBtnOYBot = Config.baseSHeight - this.pauseBtn.get_y(), Archers.isTwoPlayers ? this.init() : this.tryShowTutor() }; $hxClasses.Archers = Archers, Archers.__name__ = ["Archers"], Archers.initPrepare = function(e) { for (var t = 1; Desk.current.getElementsByFolderName("Hero" + t).length > 0; ) { if (Hero.cloneData.exists("Hero" + t)) t++; else new Hero("Hero" + t,null,null,1 == t).set_active(!1), t++ } Hero.cloneData.exists("Hero22") || new Hero("Hero22",null,null,!0).set_active(!1); for (t = 1; null != Desk.current.getElementByName("helmet" + t); ) { var n = Desk.current.getElementByName("helmet" + t); Archers.helemtsDatas[t] = n.mainData, t++ } for (var i = Desk.current.getElementsByLayerName("Timer"), l = Desk.current.getElementsByLayerName("WinsLabels"), a = Desk.current.getElementsByLayerName("SinglePlayerLabels"), s = Desk.current.getElementsByLayerName("Player1Btns"), r = Desk.current.getElementsByLayerName("Player2Btns"), _ = 0, o = i.length; _ < o; ) { var p = _++; Archers.timerTxtsDatas.push(i[p].mainData) } for (var h = 0, d = l.length; h < d; ) { var u = h++; Archers.winsLabelsDatas.push(l[u].mainData) } for (var c = 0, m = a.length; c < m; ) { var U = c++; Archers.singlePlayersLabelsDatas.push(a[U].mainData) } for (var Q = 0, N = s.length; Q < N; ) { var F = Q++; Archers.player1BtnsDatas.push(s[F].mainData) } for (var Z = 0, f = r.length; Z < f; ) { var S = Z++; Archers.player2BtnsDatas.push(r[S].mainData) } e.archersConfig && (Archers.config = e.archersConfig) } , Archers.getHelmet = function(e) { return Desk.current.levels.initElementsFromData([Archers.helemtsDatas[e]])[0] } , Archers.__super__ = BaseGameMode, Archers.prototype = $extend(BaseGameMode.prototype, { arrowData: null, p1: null, p2: null, allHeroes: null, space: null, arrowCBType: null, arrowsEvents: null, hm: null, hm23: null, arrows: null, spawnsData: null, round: null, heroesContChildIndex: null, heroesCont: null, fsAnimator: null, restBtn: null, homeBtn: null, gameFinished: null, p1SpawnP: null, p2SpawnP: null, curFrameTouchesData: null, touchesCoords: null, hp: null, mainMaitrixInverse: null, p1Wins: null, p2Wins: null, scoreTxt: null, headShotsTxt: null, timer1Txt: null, timer2Txt: null, p1WinsLabel: null, p2WinsLabel: null, twoPlayersInitTime: null, twoPlayersTimeLeft: null, pauseBtn: null, pauseWindow: null, pauseResumeBtn: null, pauseHomeBtn: null, pauseRestartBtn: null, genElementsLayer: null, tutorialWin: null, player1Btns: null, player2Btns: null, isTutorActive: null, score: null, headShots: null, numShoots: null, numShootsHit: null, _bestScore: null, get_bestScore: function() { return -1 == this._bestScore && (null == LocalSaves.getVar("archersBestScore") ? this._bestScore = 0 : this._bestScore = LocalSaves.getVar("archersBestScore")), this._bestScore }, set_bestScore: function(e) { return this._bestScore = e, LocalSaves.setVar("archersBestScore", this._bestScore), this._bestScore }, _coins: null, get_coins: function() { return -1 == this._coins && (null == LocalSaves.getVar("archersCoins") ? this._coins = 0 : this._coins = LocalSaves.getVar("archersCoins")), this._coins }, set_coins: function(e) { return this._coins = e, LocalSaves.setVar("archersCoins", this._coins), this._coins }, coinsTF: null, bonusTimeout: null, curAciveBonuses: null, cancelIsBtnClick: null, isBtnClick: null, pauseBtnOYBot: null, coinsTFOYBot: null, bonusBtnsCont: null, initBonusContOYBot: null, tryShowTutor: function() { if (!Archers.isTwoPlayers && Archers.showTutorial) { this.tutorialWin.animateShow(); var e = this.desk.getElementByNameInFolder("tutorMC", "Tutorial"); null != e && (e.isLoop = !0, e.play()), this.isTutorActive = !0, Archers.showTutorial = !1 } else this.init() }, init: function() { if (this.isTutorActive = !1, this.pauseBtn.set_visible(!0), this.gameFinished = !1, this.prepareSpawns(), this.p1 = Hero.getHeroClone("Hero1", this.heroesCont), this.p1.set_x(this.p1SpawnP.get_x()), this.p1.set_y(this.p1SpawnP.get_y()), this.p1.animateWaveApear(), this.allHeroes.push(this.p1), Archers.isTwoPlayers) this.p2 = Hero.getHeroClone("Hero22", this.heroesCont), this.allHeroes.push(this.p2), this.p2.set_x(this.p2SpawnP.get_x()), this.p2.set_y(this.p2SpawnP.get_y()), this.p2.animateWaveApear(), this.twoPlayersTimeLeft = 1e3 * this.twoPlayersInitTime; else { this.desk.levels.initElementsFromData(Archers.player1BtnsDatas, this.genElementsLayer); for (var e = 1; ; ) { var t = this.desk.getElementByNameInLayer("bonus" + e + "Btn", "Player1Btns"); if (null == t) break; this.player1Btns[e - 1] = t, t.gotoAndStop(0), e++ } this.bonusBtnsCont = new openfl_display_Sprite; for (var n = 0, i = this.player1Btns.length; n < i; ) { var l = n++ , a = this.player1Btns[l]; null != a && (a.parent.addChildAt(this.bonusBtnsCont, a.parent.getChildIndex(a)), this.bonusBtnsCont.addChild(a)) } var s = this.bonusBtnsCont.getBounds(this.bonusBtnsCont.parent); this.initBonusContOYBot = Config.baseSHeight - s.get_bottom() } if (this.desk.levels.addChildAt(this.heroesCont, this.heroesContChildIndex), Archers.isTwoPlayers) { for (var r = this.desk.levels.initElementsFromData(Archers.timerTxtsDatas), _ = this.desk.levels.initElementsFromData(Archers.winsLabelsDatas), o = 0; o < r.length; ) { var p = r[o]; ++o, "timer1_edit" == p.get_name() ? (this.timer1Txt = new LevelsTextField([p]), this.genElementsLayer.addChild(this.timer1Txt)) : "timer2_edit" == p.get_name() ? (this.timer2Txt = new LevelsTextField([p]), this.genElementsLayer.addChild(this.timer2Txt)) : this.genElementsLayer.addChild(p) } for (var h = 0; h < _.length; ) { var d = _[h]; ++h, "wins1_edit" == d.get_name() ? (this.p1WinsLabel = new LevelsTextField([d]), this.genElementsLayer.addChild(this.p1WinsLabel)) : "wins2_edit" == d.get_name() ? (this.p2WinsLabel = new LevelsTextField([d]), this.genElementsLayer.addChild(this.p2WinsLabel)) : this.genElementsLayer.addChild(d) } this.timer1Txt.set_text("03"), this.timer2Txt.set_text("00"), this.p1WinsLabel.set_text("0"), this.p2WinsLabel.set_text("0") } else { for (var u = this.desk.levels.initElementsFromData(Archers.singlePlayersLabelsDatas), c = [], m = 0; m < u.length; ) { var U = u[m]; ++m, "score_edit" == U.get_name() ? (this.scoreTxt = new LevelsTextField([U]), this.genElementsLayer.addChild(this.scoreTxt)) : "headShots_edit_right" == U.get_name() || "headShotIcon" == U.get_name() ? "headShots_edit_right" == U.get_name() ? c.unshift(U) : c.push(U) : this.genElementsLayer.addChild(U) } this.headShotsTxt = new LevelsTextField(c), this.genElementsLayer.addChild(this.headShotsTxt), null != this.scoreTxt && this.scoreTxt.set_text(this.headShotsTxt.set_text("0")) } this.newRound(); var Q = this.desk.getElementsByLayerName("CoinsLayer"); if (this.coinsTF = new LevelsTextField(Q), this.coinsTF.set_text(this.get_coins() + ""), Archers.isTwoPlayers && this.coinsTF.set_visible(!1), null != this.coinsTF && (this.coinsTFOYBot = Config.baseSHeight - this.coinsTF.get_y()), openfl_ui_Multitouch.get_supportsTouchEvents()) openfl_Lib.current.stage.addEventListener("touchBegin", $bind(this, this.onTouchBegin)), openfl_Lib.current.stage.addEventListener("touchMove", $bind(this, this.onTouchMove)), openfl_Lib.current.stage.addEventListener("touchEnd", $bind(this, this.onTouchEnd)); else { openfl_Lib.current.stage.addEventListener("mouseDown", $bind(this, this.mDown)), openfl_Lib.current.stage.addEventListener("mouseMove", $bind(this, this.mMove)); var N = new openfl_geom_Point; this.touchesCoords.h[0] = N, openfl_Lib.current.stage.addEventListener("mouseUp", $bind(this, this.mUp)) } this.updateBtns(), this.onResize(), Game_uptapAnalytics.trackEvent(Game_uptapAnalytics.EVENT_LEVELSTART, { levelName: this.getCurLevelName() }), Game_uptapAnalytics.trackScreen("SCREEN_LEVEL") }, getCurLevelName: function() { return "" }, pauseClickFunction: function() { null != this.pauseResumeBtn && this.pauseResumeBtn.get_visible() && this.pauseResumeBtn.get_alpha() > .5 && this.desk.hitsMouse(this.pauseResumeBtn) ? (this.desk.animateBtnClick(this.pauseResumeBtn, $bind(this, this.resumePauseClick)), this.isBtnClick = !0) : null != this.pauseHomeBtn && this.pauseHomeBtn.get_visible() && this.pauseHomeBtn.get_alpha() > .5 && this.desk.hitsMouse(this.pauseHomeBtn) ? (this.desk.animateBtnClick(this.pauseHomeBtn, $bind(this, this.homePauseClick)), Game_uptapAnalytics.trackEvent(Game_uptapAnalytics.EVENT_LEVELFAIL, { levelName: this.getCurLevelName(), reason: "quit" })) : null != this.pauseRestartBtn && this.pauseRestartBtn.get_visible() && this.pauseRestartBtn.get_alpha() > .5 && this.desk.hitsMouse(this.pauseRestartBtn) && (this.desk.animateBtnClick(this.pauseRestartBtn, $bind(this, this.restartPauseClick)), Game_uptapAnalytics.trackEvent(Game_uptapAnalytics.EVENT_LEVELRESTART, { levelName: this.getCurLevelName() })) }, resumePauseClick: function() { Game_uptapAnalytics.trackScreen("SCREEN_LEVEL"), this.pauseWindow.animateHide($bind(this, this.onPuseWindowHide)) }, onPuseWindowHide: function() { this.cancelIsBtnClick = !0, motion_Actuate.resumeAll(), this.desk.paused = !1 }, homePauseClick: function() { this.pauseWindow.animateHide($bind($_ = this.desk, $_.startNewGame), [0]) }, restartPauseClick: function() { this.pauseWindow.animateHide($bind($_ = this.desk, $_.startNewGame), [this.desk.curLevel]) }, showPause: function() { //window.game_uptap_analytics.trackScreen("SCREEN_PAUSE"), this.desk.showPauseWindow(), this.pauseWindow.animateShow() }, onTouchMove: function(e) { this.hp.x = e.stageX, this.hp.y = e.stageY, this.hp = this.mainMaitrixInverse.transformPoint(this.hp), this.touchesCoords.h[e.touchPointID].x = this.hp.x, this.touchesCoords.h[e.touchPointID].y = this.hp.y }, onTouchBegin: function(e) { this.hp.x = e.stageX, this.hp.y = e.stageY, this.hp = this.mainMaitrixInverse.transformPoint(this.hp), this.curFrameTouchesData.push({ x: this.hp.x, y: this.hp.y, id: e.touchPointID, isTouchDown: !0 }); var t = new openfl_geom_Point(this.hp.x,this.hp.y); this.touchesCoords.h[e.touchPointID] = t }, onTouchEnd: function(e) { this.hp.x = e.stageX, this.hp.y = e.stageY, this.hp = this.mainMaitrixInverse.transformPoint(this.hp), this.curFrameTouchesData.push({ x: this.hp.x, y: this.hp.y, id: e.touchPointID, isTouchDown: !1 }), this.touchesCoords.remove(e.touchPointID) }, mDown: function(e) { this.curFrameTouchesData.push({ x: openfl_Lib.current.stage.get_mouseX(), y: openfl_Lib.current.stage.get_mouseY(), id: 0, isTouchDown: !0 }); var t = new openfl_geom_Point(openfl_Lib.current.stage.get_mouseX(),openfl_Lib.current.stage.get_mouseY()); this.touchesCoords.h[0] = t }, mMove: function(e) { this.touchesCoords.h.hasOwnProperty(0) && (this.touchesCoords.h[0].x = openfl_Lib.current.stage.get_mouseX(), this.touchesCoords.h[0].y = openfl_Lib.current.stage.get_mouseY()) }, mUp: function(e) { this.curFrameTouchesData.push({ x: openfl_Lib.current.stage.get_mouseX(), y: openfl_Lib.current.stage.get_mouseY(), id: 0, isTouchDown: !1 }), this.touchesCoords.remove(0) }, spawnTimer: null, onTwoPlayersDead: function(e) { this.spawnTimer = motion_Actuate.timer(1).onComplete($bind(this, this.spawnPlayer), [e]), 22 == e ? this.p1Wins++ : this.p2Wins++, this.p1WinsLabel.set_text(this.p1Wins + ""), this.p2WinsLabel.set_text(this.p2Wins + "") }, spawnPlayer: function(e) { 1 == e ? (HxOverrides.remove(this.allHeroes, this.p1), this.p1 = Hero.getHeroClone("Hero1", this.heroesCont), this.p1.set_x(this.p1SpawnP.get_x() + 50 * Math.random()), this.p1.set_y(this.p1SpawnP.get_y() - 230 * Math.random()), this.p1.animateWaveApear(), this.allHeroes.push(this.p1)) : (HxOverrides.remove(this.allHeroes, this.p2), this.p2 = Hero.getHeroClone("Hero22", this.heroesCont), this.p2.set_x(this.p2SpawnP.get_x() - 50 * Math.random()), this.p2.set_y(this.p2SpawnP.get_y() - 230 * Math.random()), this.p2.animateWaveApear(), this.allHeroes.push(this.p2)) }, showFS: function() { //Game_uptapAnalytics.trackScreen(Game_uptapAnalytics.SCREEN_LEVELRESULT), this.fsAnimator.animateShow($bind(this, this.onFSShow)), this.homeBtn.set_visible(!1), this.restBtn.set_visible(!1); for (var e = 0, t = this.allHeroes; e < t.length; ) { var n = t[e]; ++e, n.onGameOver() } this.gameFinished = !0, this.pauseBtn.set_visible(!1); for (var i = this.desk.getElementsByLayerName("SinglePlayerLabels"), l = 0; l < i.length; ) { var a = i[l]; ++l, a.set_visible(!1) } i = this.desk.getElementsByLayerName("Timer"); for (var s = 0; s < i.length; ) { var r = i[s]; ++s, r.set_visible(!1) } if (null != this.player1Btns) for (var _ = 0, o = this.player1Btns; _ < o.length; ) { var p = o[_]; ++_, p.set_visible(!1) } if (null != this.player2Btns) for (var h = 0, d = this.player2Btns; h < d.length; ) { var u = d[h]; ++h, u.set_visible(!1) } if (null != this.headShotsTxt && this.headShotsTxt.set_visible(!1), null != this.scoreTxt && this.scoreTxt.set_visible(!1), Archers.isTwoPlayers) { for (var c = this.desk.getElementsByLayerNameInFolder("Labels", "FinishScreen"), m = 0; m < c.length; ) { var U = c[m]; ++m, U.set_visible(!1) } var Q = this.desk.getElementByNameInFolder("drawWinLabel", "FinishScreen") , N = this.desk.getElementByNameInFolder("p1WinLabel", "FinishScreen") , F = this.desk.getElementByNameInFolder("p2WinLabel", "FinishScreen"); this.p1Wins == this.p2Wins ? (Q.set_visible(!0), N.set_visible(!1), F.set_visible(!1), Q.playLabel("anim")) : this.p1Wins > this.p2Wins ? (Q.set_visible(!1), N.set_visible(!0), F.set_visible(!1), N.playLabel("anim")) : (Q.set_visible(!1), N.set_visible(!1), F.set_visible(!0), F.playLabel("anim")), this.desk.levelsTextFields[1].set_visible(!1), this.desk.levelsTextFields[2].set_visible(!1), this.desk.levelsTextFields[3].set_visible(!1), this.desk.levelsTextFields[4].set_visible(!1), this.desk.levelsTextFields[5].set_visible(!1) } else { for (var Z = this.desk.getElementsByLayerNameInFolder("2Players", "FinishScreen"), f = 0; f < Z.length; ) { var S = Z[f]; ++f, S.set_visible(!1) } this.desk.levelsTextFields[1].set_text(this.score + ""), this.desk.levelsTextFields[2].set_text(this.get_bestScore() + ""), this.desk.levelsTextFields[3].set_text(this.headShots + ""), this.desk.levelsTextFields[4].set_text(this.numShoots + ""), this.desk.levelsTextFields[5].set_text((0 == this.numShoots ? 0 : Math.round(this.numShootsHit / this.numShoots * 100)) + "%") } }, activateFSBtns: function() { this.homeBtn.set_visible(!0), this.restBtn.set_visible(!0) }, onFSShow: function() { console.log("游戏完成"); window['uptap'].ShowScreenVideo("游戏完成",function(){}); var e = this; setTimeout(function() { e.activateFSBtns() // Promise.all([window.game_uptap_analytics.trackEvent("EVENT_LEVELFAIL", { // levelName: e.getCurLevelName(), // reason: "dead" // }), window.game_uptap_analytics.trackEvent("EVENT_TOTALSCORE", { // totalScore: e.score // })]).then(function() { // e.activateFSBtns() // }, function() { // e.activateFSBtns() // }) }, 1500) }, prepareSpawns: function() { for (var e = 1e6, t = [], n = 0, i = this.desk.levels.physicElements; n < i.length; ) { var l = i[n]; ++n, -1 != l.layerName.indexOf("Spawns") && t.push(l) } for (var a = 0; a < t.length; ) { var s = t[a]; ++a, null != s.parent && (s.parent.getChildIndex(s) < e && (e = s.parent.getChildIndex(s)), s.parent.removeChild(s)), HxOverrides.remove(this.desk.levels.physicElements, s); var r = Std.parseInt(StringTools.replace(s.layerName, "Spawns", "")); null == this.spawnsData[r] && (this.spawnsData[r] = []); for (var _ = s.get_name().split("$"), o = 0, p = 0, h = 0, d = 0, u = 2, c = 0; c < _.length; ) { var m = _[c]; ++c, -1 != m.indexOf("dx") ? p = Std.parseFloat(m.split("_")[1]) : -1 != m.indexOf("dy") ? h = Std.parseFloat(m.split("_")[1]) : -1 != m.indexOf("d") ? o = Std.parseFloat(m.split("_")[1]) / 1e3 : -1 != m.indexOf("hf") ? d = Std.parseInt(m.split("_")[1]) - 1 : -1 != m.indexOf("ht") && (u = Std.parseInt(m.split("_")[1])) } var U = { x: s.get_x(), y: s.get_y(), dx: p, dy: h, delay: o, heroType: u, headFrame: d }; this.spawnsData[r].push(U) } this.heroesContChildIndex = e }, addScore: function(e) { this.score++, e && this.headShots++, this.get_bestScore() < this.score && this.set_bestScore(this.score), null != this.scoreTxt && (this.scoreTxt.set_text(this.score + ""), this.headShotsTxt.set_text(this.headShots + "")); this.set_coins(this.get_coins() + (e ? Archers.config.coinsHeadshot : Archers.config.coinsPerKill)), this.coinsTF.set_text(this.get_coins() + ""), this.updateBtns() }, updateBtns: function() { for (var e = 0, t = this.player1Btns.length; e < t; ) { var n = e++; this.player1Btns[n].set_alpha(this.isBonusActive(n) || this.get_coins() < Archers.config.bonusesPrices[n] ? .5 : 1) } }, isBonusActive: function(e) { for (var t = 0, n = this.curAciveBonuses; t < n.length; ) { var i = n[t]; if (++t, i.idx == e) return !0 } return !1 }, getNewArrowMC: function(e, t) { null == t && (t = !1); var n = this.desk.levels.initElementsFromData([e.mainData])[0]; n.b.set_isBullet(!0), n.b.get_cbTypes().add(this.arrowCBType); var i = new nape_callbacks_PreListener((null == zpp_$nape_util_ZPP_$Flags.InteractionType_ANY && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.InteractionType_ANY = new nape_callbacks_InteractionType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.InteractionType_ANY),this.arrowCBType,zpp_$nape_callbacks_ZPP_$CbType.ANY_BODY,$bind(this, this.onArrowHit)); this.space.zpp_inner.wrap_listeners.add(i), this.arrows.push(n), n.b.get_userData().mc = n, n.b.get_userData().listener = i, n.b.set_group(Archers.arrowsInterGroup); for (var l = n.b.zpp_inner.wrap_shapes.iterator(); l.hasNext(); ) { l.zpp_critical = !1, l.zpp_inner.at(l.zpp_i++) } return this.heroesCont.addChildAt(n, 0), t && this.numShoots++, n }, onArrowHit: function(e) { if (e.zpp_inner.pre_arbiter.wrapper().isSensorArbiter()) { var t, n; if (null != e.zpp_inner.int1.outer_i.get_castBody().get_userData().isArch && e.zpp_inner.int1.outer_i.get_castBody().get_userData().isArch || null != e.zpp_inner.int2.outer_i.get_castBody().get_userData().isArch && e.zpp_inner.int2.outer_i.get_castBody().get_userData().isArch) t = e.zpp_inner.int1.outer_i.get_castBody().get_cbTypes().has(this.arrowCBType) ? e.zpp_inner.int1.outer_i.get_castBody() : e.zpp_inner.int2.outer_i.get_castBody(), n = t == e.zpp_inner.int1.outer_i.get_castBody() ? e.zpp_inner.int2.outer_i.get_castBody() : e.zpp_inner.int1.outer_i.get_castBody(), js_Boot.__cast((null == n.zpp_inner_i.userData && (n.zpp_inner_i.userData = {}), n.zpp_inner_i.userData).hero, Hero).hasArchProtect && (null == t.zpp_inner_i.userData && (t.zpp_inner_i.userData = {}), t.zpp_inner_i.userData).dest != js_Boot.__cast((null == n.zpp_inner_i.userData && (n.zpp_inner_i.userData = {}), n.zpp_inner_i.userData).hero, Hero) && this.arrowsEvents.push({ b1: t, b2: n, imp: nape_geom_Vec3.get(0, 0, 0), isArchHit: !0, listener: e.zpp_inner.listener.outer }); return null == zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT } var i, l, a, s; if (i = e.zpp_inner.pre_swapped ? e.zpp_inner.pre_arbiter.wrapper().get_body2() : e.zpp_inner.pre_arbiter.wrapper().get_body1(), l = e.zpp_inner.pre_swapped ? e.zpp_inner.pre_arbiter.wrapper().get_body1() : e.zpp_inner.pre_arbiter.wrapper().get_body2(), null == i || null == l || i == l) return null == zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT; if (!(null == i.zpp_inner_i.wrap_cbTypes && i.zpp_inner_i.setupcbTypes(), i.zpp_inner_i.wrap_cbTypes).has(this.arrowCBType) && !(null == l.zpp_inner_i.wrap_cbTypes && l.zpp_inner_i.setupcbTypes(), l.zpp_inner_i.wrap_cbTypes).has(this.arrowCBType)) return null == zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT; if ((null == i.zpp_inner_i.wrap_cbTypes && i.zpp_inner_i.setupcbTypes(), i.zpp_inner_i.wrap_cbTypes).has(this.arrowCBType) && (null == l.zpp_inner_i.wrap_cbTypes && l.zpp_inner_i.setupcbTypes(), l.zpp_inner_i.wrap_cbTypes).has(this.arrowCBType)) { var r; return (r = null == (null == i.zpp_inner_i.userData && (i.zpp_inner_i.userData = {}), i.zpp_inner_i.userData).noHitArrow && null == (null == l.zpp_inner_i.userData && (l.zpp_inner_i.userData = {}), l.zpp_inner_i.userData).noHitArrow) && (null == (null == i.zpp_inner_i.userData && (i.zpp_inner_i.userData = {}), i.zpp_inner_i.userData).noHitCounter ? (null == i.zpp_inner_i.userData && (i.zpp_inner_i.userData = {}), i.zpp_inner_i.userData).noHitCounter = 15 : (null == i.zpp_inner_i.userData && (i.zpp_inner_i.userData = {}), i.zpp_inner_i.userData).noHitCounter > 0 && ((null == i.zpp_inner_i.userData && (i.zpp_inner_i.userData = {}), i.zpp_inner_i.userData).noHitCounter--, (null == i.zpp_inner_i.userData && (i.zpp_inner_i.userData = {}), i.zpp_inner_i.userData).noHitCounter <= 0 && ((null == i.zpp_inner_i.userData && (i.zpp_inner_i.userData = {}), i.zpp_inner_i.userData).noHitArrow = !0)), null == (null == l.zpp_inner_i.userData && (l.zpp_inner_i.userData = {}), l.zpp_inner_i.userData).noHitCounter ? (null == l.zpp_inner_i.userData && (l.zpp_inner_i.userData = {}), l.zpp_inner_i.userData).noHitCounter = 15 : (null == l.zpp_inner_i.userData && (l.zpp_inner_i.userData = {}), l.zpp_inner_i.userData).noHitCounter > 0 && ((null == l.zpp_inner_i.userData && (l.zpp_inner_i.userData = {}), l.zpp_inner_i.userData).noHitCounter--, (null == l.zpp_inner_i.userData && (l.zpp_inner_i.userData = {}), l.zpp_inner_i.userData).noHitCounter <= 0 && ((null == l.zpp_inner_i.userData && (l.zpp_inner_i.userData = {}), l.zpp_inner_i.userData).noHitArrow = !0))), r ? (null == zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT) : (null == zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE) } if (a = (null == i.zpp_inner_i.wrap_cbTypes && i.zpp_inner_i.setupcbTypes(), i.zpp_inner_i.wrap_cbTypes).has(this.arrowCBType) ? i : l, s = a == i ? l : i, null != (null == a.zpp_inner_i.userData && (a.zpp_inner_i.userData = {}), a.zpp_inner_i.userData).dest && !js_Boot.__cast((null == a.zpp_inner_i.userData && (a.zpp_inner_i.userData = {}), a.zpp_inner_i.userData).dest, Hero).destroied && (null == s.zpp_inner_i.wrap_cbTypes && s.zpp_inner_i.setupcbTypes(), s.zpp_inner_i.wrap_cbTypes).has(js_Boot.__cast((null == a.zpp_inner_i.userData && (a.zpp_inner_i.userData = {}), a.zpp_inner_i.userData).dest, Hero).thisCBType)) return null == zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE; if (null != s && (null == s.zpp_inner_i.wrap_cbTypes && s.zpp_inner_i.setupcbTypes(), s.zpp_inner_i.wrap_cbTypes).has(Hero.allHeroesPlatformCbType)) return null == zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE; if ((null == i.zpp_inner_i.wrap_cbTypes && i.zpp_inner_i.setupcbTypes(), i.zpp_inner_i.wrap_cbTypes).has(this.arrowCBType) && (null == i.zpp_inner.wrap_constraints && (i.zpp_inner.wrap_constraints = zpp_$nape_util_ZPP_$ConstraintList.get(i.zpp_inner.constraints, !0)), i.zpp_inner.wrap_constraints).get_length() > 0 || (null == l.zpp_inner_i.wrap_cbTypes && l.zpp_inner_i.setupcbTypes(), l.zpp_inner_i.wrap_cbTypes).has(this.arrowCBType) && (null == l.zpp_inner.wrap_constraints && (l.zpp_inner.wrap_constraints = zpp_$nape_util_ZPP_$ConstraintList.get(l.zpp_inner.constraints, !0)), l.zpp_inner.wrap_constraints).get_length() > 0) return null == zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE; if ((null == i.zpp_inner_i.wrap_cbTypes && i.zpp_inner_i.setupcbTypes(), i.zpp_inner_i.wrap_cbTypes).has(this.arrowCBType) && (null == l.zpp_inner_i.wrap_cbTypes && l.zpp_inner_i.setupcbTypes(), l.zpp_inner_i.wrap_cbTypes).has(this.arrowCBType) && (null == i.zpp_inner_i.userData && (i.zpp_inner_i.userData = {}), i.zpp_inner_i.userData).dest == (null == l.zpp_inner_i.userData && (l.zpp_inner_i.userData = {}), l.zpp_inner_i.userData).dest) return null == zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE; var _ = e.zpp_inner.pre_arbiter.wrapper().get_collisionArbiter().totalImpulse(s); return this.arrowsEvents.push({ b1: a, b2: s, imp: nape_geom_Vec3.get((_.zpp_inner.validate(), _.zpp_inner.x), (_.zpp_inner.validate(), _.zpp_inner.y), (_.zpp_inner.validate(), _.zpp_inner.z)), listener: e.zpp_inner.listener.outer }), null == zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE }, destroy: function() { if (openfl_ui_Multitouch.get_supportsTouchEvents()) openfl_Lib.current.stage.removeEventListener("touchBegin", $bind(this, this.onTouchBegin)), openfl_Lib.current.stage.removeEventListener("touchMove", $bind(this, this.onTouchMove)), openfl_Lib.current.stage.removeEventListener("touchEnd", $bind(this, this.onTouchEnd)); else { openfl_Lib.current.stage.removeEventListener("mouseDown", $bind(this, this.mDown)), openfl_Lib.current.stage.removeEventListener("mouseMove", $bind(this, this.mMove)); var e = new openfl_geom_Point; this.touchesCoords.h[0] = e, openfl_Lib.current.stage.removeEventListener("mouseUp", $bind(this, this.mUp)) } for (motion_Actuate.stop(this.spawnTimer, null, !1, !1), this.spawnTimer = null, Archers.current = null, this.arrowData = null, this.spawnsData = null, this.p1 = null, this.p2 = null, this.arrowCBType = null, this.arrowsEvents = null, this.hm = null, this.hm23 = null; this.arrows.length > 0; ) { var t = this.arrows.pop(); this.space.zpp_inner.wrap_listeners.remove(js_Boot.__cast(t.b.get_userData().listener, nape_callbacks_PreListener)); for (var n = t.b.get_constraints().iterator(); n.hasNext(); ) { var i; n.zpp_critical = !1, null != (null == (i = n.zpp_inner.at(n.zpp_i++)).zpp_inner.space ? null : i.zpp_inner.space.outer) && (null != (null == i.zpp_inner.space ? null : i.zpp_inner.space.outer) && (null != i.zpp_inner.component && (i.zpp_inner.component.woken = !1), i.zpp_inner.clearcache(), null != i.zpp_inner.space && i.zpp_inner.space.outer.zpp_inner.wrap_constraints.remove(i), i.zpp_inner.space = null), null == i.zpp_inner.space || i.zpp_inner.space.outer) } t.destroy(), null != t.parent && t.parent.removeChild(t), HxOverrides.remove(this.desk.levels.physicElements, t) } for (; this.allHeroes.length > 0; ) { this.allHeroes.pop().destroy() } this.allHeroes = null, this.arrows = null, Archers.arrowsInterGroup = null, this.space = null, BaseGameMode.prototype.destroy.call(this) }, newRound: function() { if (!this.gameFinished) { this.round++; var e = this.spawnsData[this.round]; if (null == e && (e = this.spawnsData[this.spawnsData.length - 1 - Std.random(5)]), !Archers.isTwoPlayers && null != e) for (var t = 0; t < e.length; ) { var n = e[t]; ++t, this.spawnEnemy(n) } } }, spawnEnemy: function(e) { var t = this; if (!this.gameFinished) { var n = !1 , i = Hero.getHeroClone("Hero" + e.heroType, this.heroesCont); if (i.isPlayer = !1, null != e.delay && 0 != e.delay ? (i.set_active(!1), motion_Actuate.timer(e.delay).onComplete(function() { null != t.desk && i.animateWaveApear() })) : n = !0, i.set_x(e.x), i.set_y(e.y), null != e.dx && 0 != e.dx) { var l = i; l.set_x(l.x + Math.random() * e.dx * (Math.random() > .5 ? 1 : -1)) } if (null != e.dy && 0 != e.dy) { var a = i; a.set_y(a.y + Math.random() * e.dy * (Math.random() > .5 ? 1 : -1)) } null != e.headFrame && 0 != e.headFrame && i.setHeadFrame(e.headFrame), n && i.animateWaveApear(), this.allHeroes.push(i) } }, onResize: function() { if (this.fsAnimator.onResize(), this.tutorialWin.onResize(), this.pauseWindow.onResize(), this.pauseBtn.set_y(-this.desk.get_topLevels() + this.desk.get_sHeightLevels() - this.pauseBtnOYBot), null != this.coinsTF && this.coinsTF.set_y(-this.desk.get_topLevels() + this.desk.get_sHeightLevels() - this.coinsTFOYBot), null != this.bonusBtnsCont) { var e = this.bonusBtnsCont.getBounds(this.bonusBtnsCont.parent); this.bonusBtnsCont.set_y(Math.min(100, -Desk.current.get_topLevels() + Desk.current.get_sHeightLevels() - (e.y - this.bonusBtnsCont.get_y()) - e.height - this.initBonusContOYBot)) } }, onMDown: function() { var e = this; if (this.isTutorActive) { this.isTutorActive = !1, this.tutorialWin.animateHide($bind(this, this.init)); for (var t = 0, n = this.allHeroes; t < n.length; ) { var i = n[t]; ++t, i.startAI() } } else null != this.desk && (this.restBtn.get_visible() && this.restBtn.get_alpha() > .5 && this.desk.hitsMouse(this.restBtn) && (this.desk.animateBtnClick(this.restBtn, function() { e.desk.startNewGame(1) }), this.isBtnClick = !0, Game_uptapAnalytics.trackEvent(Game_uptapAnalytics.EVENT_LEVELRESTART, { levelName: this.getCurLevelName() })), this.homeBtn.get_visible() && this.homeBtn.get_alpha() > .5 && this.desk.hitsMouse(this.homeBtn) && (this.desk.animateBtnClick(this.homeBtn, function() { e.desk.startNewGame(0) }), this.isBtnClick = !0), null != this.pauseBtn && this.pauseBtn.get_visible() && this.pauseBtn.get_alpha() > .5 && this.desk.hitsMouse(this.pauseBtn) && (this.desk.animateBtnClick(this.pauseBtn, $bind(this, this.showPause)), this.isBtnClick = !0)) }, onMUp: function() { this.isBtnClick = !1 }, sortArrY: function(e, t) { var n = e.get_y() , i = t.get_y(); return -1 != e.get_name().indexOf("arrowRD") && (n += 150), -1 != t.get_name().indexOf("arrowRD") && (i += 150), -1 != e.get_name().indexOf("handRRD") && (n -= 200), -1 != t.get_name().indexOf("handRRD") && (i -= 200), -1 != e.get_name().indexOf("archRD") && (n += 200), -1 != t.get_name().indexOf("archRD") && (i += 200), -1 != e.get_name().indexOf("handLRD") && (n += 200), -1 != t.get_name().indexOf("handLRD") && (i += 200), -1 != e.get_name().indexOf("teteva") && (n += 1e3), -1 != t.get_name().indexOf("teteva") && (i += 1e3), -1 != e.get_name().indexOf("helmet") && (n += 900), -1 != t.get_name().indexOf("helmet") && (i += 900), i == n ? e.get_height() - t.get_height() < 0 ? -1 : 1 : n - i < 0 ? -1 : 1 }, sortArr: null, sortY: function() { for (; this.sortArr.length > 0; ) this.sortArr.pop(); for (var e = 0, t = this.heroesCont.get_numChildren(); e < t; ) { var n = e++; this.sortArr.push(this.heroesCont.getChildAt(n)) } this.sortArr.sort($bind(this, this.sortArrY)); for (var i = 0, l = this.sortArr.length; i < l; ) { var a = i++; this.sortArr[a].parent.setChildIndex(this.sortArr[a], a) } }, updateTimerTF: function() { var e = Math.floor(this.twoPlayersTimeLeft / 1e3); e < 0 && (e = 0); var t = Math.floor(e / 60) , n = e - 60 * t; this.timer1Txt.set_text(t >= 10 ? t + "" : "0" + t), this.timer2Txt.set_text(n >= 10 ? n + "" : "0" + n) }, activateBonus: function(e) { if (3 == e) { return this.set_coins(this.get_coins() - Archers.config.bonusesPrices[e]), this.coinsTF.set_text(this.get_coins() + ""), void this.updateBtns() } for (var t = !1, n = 0, i = this.curAciveBonuses; n < i.length; ) { var l = i[n]; if (++n, l.idx == e) { l.timeLeft = this.bonusTimeout, t = !0, this.player1Btns[e].gotoAndStop(1), this.updateBtns(); break } } if (!t) { this.curAciveBonuses.push({ idx: e, timeLeft: this.bonusTimeout }), this.player1Btns[e].gotoAndStop(1); this.set_coins(this.get_coins() - Archers.config.bonusesPrices[e]), this.coinsTF.set_text(this.get_coins() + ""), this.updateBtns() } }, tmpArArr: null, update: function(e) { if (this.gameFinished || this.isTutorActive) for (; this.curFrameTouchesData.length > 0; ) this.curFrameTouchesData.pop(); else { for (var t = 0, n = this.allHeroes; t < n.length; ) { var i = n[t]; ++t, i.update(e) } for (var l = 0, a = !1; l < this.curAciveBonuses.length; ) this.curAciveBonuses[l].timeLeft -= e / 1e3, this.curAciveBonuses[l].timeLeft <= 0 ? (this.p1.deactivateBonus(this.curAciveBonuses[l].idx), this.player1Btns[this.curAciveBonuses[l].idx].gotoAndStop(0), HxOverrides.remove(this.curAciveBonuses, this.curAciveBonuses[l]), a = !0) : this.player1Btns[this.curAciveBonuses[l].idx].gotoAndStop(this.bonusTimeout - Math.floor(this.curAciveBonuses[l].timeLeft)), l++; for (a && this.updateBtns(); this.curFrameTouchesData.length > 0; ) this.curFrameTouchesData.pop(); for (this.sortY(), Archers.isTwoPlayers && this.twoPlayersTimeLeft > 0 && (this.twoPlayersTimeLeft -= e, this.twoPlayersTimeLeft <= 0 && this.showFS(), this.updateTimerTF()); this.tmpArArr.length > 0; ) this.tmpArArr.pop(); for (var s = 0; s < this.arrowsEvents.length; ) if (-1 == HxOverrides.indexOf(this.tmpArArr, this.arrowsEvents[s].b1, 0)) if (null == this.arrowsEvents[s].isArchHit) s++; else { this.tmpArArr.push(this.arrowsEvents[s].b1); var r = this.arrowsEvents[s].b1.get_velocity(); r.set_x(-1 * (r.zpp_inner.validate(), r.zpp_inner.x)); var _ = this.arrowsEvents[s].b1.get_velocity(); _.set_y(-1 * (_.zpp_inner.validate(), _.zpp_inner.y)), this.arrowsEvents[s].b1.get_userData().dest = this.arrowsEvents[s].b2.get_userData().hero, this.arrowsEvents[s].b1.set_group(js_Boot.__cast(this.arrowsEvents[s].b2.get_userData().hero, Hero).arrowGroup); var o = this.arrowsEvents[s].b1; o.set_rotation(o.zpp_inner.rot + Math.PI), HxOverrides.remove(this.arrowsEvents, this.arrowsEvents[s]), this.main.playSpriteSound("Reflect2"), s = 0 } else HxOverrides.remove(this.arrowsEvents, this.arrowsEvents[s]); for (; this.arrowsEvents.length > 0; ) { var p = this.arrowsEvents.pop() , h = p.b1 , d = p.b2; if (null == (null == h.zpp_inner_i.userData && (h.zpp_inner_i.userData = {}), h.zpp_inner_i.userData).used || !(null == h.zpp_inner_i.userData && (h.zpp_inner_i.userData = {}), h.zpp_inner_i.userData).used) { var u = p.imp; if (!((null == h.zpp_inner.wrap_constraints && (h.zpp_inner.wrap_constraints = zpp_$nape_util_ZPP_$ConstraintList.get(h.zpp_inner.constraints, !0)), h.zpp_inner.wrap_constraints).get_length() > 0)) { p.listener.set_space(null); var c = new nape_constraint_WeldJoint(h,d,nape_geom_Vec2.get(0, 0, !0),d.worldPointToLocal((null == h.zpp_inner.wrap_worldCOM && (h.zpp_inner.wrap_worldCOM = nape_geom_Vec2.get(h.zpp_inner.worldCOMx, h.zpp_inner.worldCOMy, null), h.zpp_inner.wrap_worldCOM.zpp_inner._inuse = !0, h.zpp_inner.wrap_worldCOM.zpp_inner._immutable = !0, h.zpp_inner.wrap_worldCOM.zpp_inner._validate = $bind($_ = h.zpp_inner, $_.getworldCOM)), h.zpp_inner.wrap_worldCOM)),d.zpp_inner.rot - h.zpp_inner.rot); 1 != c.zpp_inner.ignore && (c.zpp_inner.ignore = !0, c.zpp_inner.wake()), c.zpp_inner.ignore, (null == d.zpp_inner_i.wrap_cbTypes && d.zpp_inner_i.setupcbTypes(), d.zpp_inner_i.wrap_cbTypes).has(Hero.allHeroesHeadCbType) && (null == h.zpp_inner.wrap_vel && h.zpp_inner.setupVelocity(), h.zpp_inner.wrap_vel).set((null == h.zpp_inner.wrap_vel && h.zpp_inner.setupVelocity(), h.zpp_inner.wrap_vel).mul(5)); for (var m, U = h.zpp_inner.wrap_shapes.iterator(); U.hasNext(); ) { var Q; U.zpp_critical = !1, (Q = U.zpp_inner.at(U.zpp_i++)).zpp_inner.immutable_midstep("Shape::sensorEnabled"), Q.zpp_inner.sensorEnabled = !0, Q.zpp_inner.wake(), Q.zpp_inner.sensorEnabled } if (this.space.zpp_inner.wrap_constraints.add(c), m = 1 == (null == h.zpp_inner_i.userData && (h.zpp_inner_i.userData = {}), h.zpp_inner_i.userData).arrowType, null == (null == d.zpp_inner_i.userData && (d.zpp_inner_i.userData = {}), d.zpp_inner_i.userData).type || "helmet" != (null == d.zpp_inner_i.userData && (d.zpp_inner_i.userData = {}), d.zpp_inner_i.userData).type || m) { if (null != p.b1.get_compound() && null != p.b1.get_compound().get_userData().hero && Std.is(p.b1.get_compound().get_userData().hero, Hero)) { if (p.b1 == js_Boot.__cast(p.b1.get_compound().get_userData().hero, Hero).heroHead && null != js_Boot.__cast(p.b1.get_compound().get_userData().hero, Hero).helmet && !m && js_Boot.__cast(p.b1.get_compound().get_userData().hero, Hero).helmet.b.get_userData().lifes > 0) { (null == (d = js_Boot.__cast(p.b1.get_compound().get_userData().hero, Hero).helmet.b).zpp_inner_i.userData && (d.zpp_inner_i.userData = {}), d.zpp_inner_i.userData).lifes--, (null == d.zpp_inner_i.userData && (d.zpp_inner_i.userData = {}), d.zpp_inner_i.userData).lifes <= 0 && (d.zpp_inner.immutable_midstep("Body::true"), 1 != !d.zpp_inner.nomove && (d.zpp_inner.nomove = !1, d.zpp_inner.invalidate_mass()), d.zpp_inner.nomove, d.zpp_inner.immutable_midstep("Body::true"), 1 != !d.zpp_inner.norotate && (d.zpp_inner.norotate = !1, d.zpp_inner.invalidate_inertia()), d.zpp_inner.norotate), c.set_body2(d), c.set_anchor2(d.worldPointToLocal((null == h.zpp_inner.wrap_worldCOM && (h.zpp_inner.wrap_worldCOM = nape_geom_Vec2.get(h.zpp_inner.worldCOMx, h.zpp_inner.worldCOMy, null), h.zpp_inner.wrap_worldCOM.zpp_inner._inuse = !0, h.zpp_inner.wrap_worldCOM.zpp_inner._immutable = !0, h.zpp_inner.wrap_worldCOM.zpp_inner._validate = $bind($_ = h.zpp_inner, $_.getworldCOM)), h.zpp_inner.wrap_worldCOM))), this.main.playSpriteSound("HelmetHit"); continue } js_Boot.__cast(p.b1.get_compound().get_userData().hero, Hero).recieveDammage(p.b1, (null == h.zpp_inner_i.userData && (h.zpp_inner_i.userData = {}), h.zpp_inner_i.userData).mc, u) } else if (null != p.b2.get_compound() && null != p.b2.get_compound().get_userData().hero && Std.is(p.b2.get_compound().get_userData().hero, Hero)) { if (p.b2 == js_Boot.__cast(p.b2.get_compound().get_userData().hero, Hero).heroHead && null != js_Boot.__cast(p.b2.get_compound().get_userData().hero, Hero).helmet && !m && js_Boot.__cast(p.b2.get_compound().get_userData().hero, Hero).helmet.b.get_userData().lifes > 0) { (null == (d = js_Boot.__cast(p.b2.get_compound().get_userData().hero, Hero).helmet.b).zpp_inner_i.userData && (d.zpp_inner_i.userData = {}), d.zpp_inner_i.userData).lifes--, (null == d.zpp_inner_i.userData && (d.zpp_inner_i.userData = {}), d.zpp_inner_i.userData).lifes <= 0 && (d.zpp_inner.immutable_midstep("Body::true"), 1 != !d.zpp_inner.nomove && (d.zpp_inner.nomove = !1, d.zpp_inner.invalidate_mass()), d.zpp_inner.nomove, d.zpp_inner.immutable_midstep("Body::true"), 1 != !d.zpp_inner.norotate && (d.zpp_inner.norotate = !1, d.zpp_inner.invalidate_inertia()), d.zpp_inner.norotate), c.set_body2(d), c.set_anchor2(d.worldPointToLocal((null == h.zpp_inner.wrap_worldCOM && (h.zpp_inner.wrap_worldCOM = nape_geom_Vec2.get(h.zpp_inner.worldCOMx, h.zpp_inner.worldCOMy, null), h.zpp_inner.wrap_worldCOM.zpp_inner._inuse = !0, h.zpp_inner.wrap_worldCOM.zpp_inner._immutable = !0, h.zpp_inner.wrap_worldCOM.zpp_inner._validate = $bind($_ = h.zpp_inner, $_.getworldCOM)), h.zpp_inner.wrap_worldCOM))), this.main.playSpriteSound("HelmetHit"); continue } js_Boot.__cast(p.b2.get_compound().get_userData().hero, Hero).recieveDammage(p.b2, (null == h.zpp_inner_i.userData && (h.zpp_inner_i.userData = {}), h.zpp_inner_i.userData).mc, u) } } else (null == d.zpp_inner_i.userData && (d.zpp_inner_i.userData = {}), d.zpp_inner_i.userData).lifes--, (null == d.zpp_inner_i.userData && (d.zpp_inner_i.userData = {}), d.zpp_inner_i.userData).lifes <= 0 && (d.zpp_inner.immutable_midstep("Body::true"), 1 != !d.zpp_inner.nomove && (d.zpp_inner.nomove = !1, d.zpp_inner.invalidate_mass()), d.zpp_inner.nomove, d.zpp_inner.immutable_midstep("Body::true"), 1 != !d.zpp_inner.norotate && (d.zpp_inner.norotate = !1, d.zpp_inner.invalidate_inertia()), d.zpp_inner.norotate), this.main.playSpriteSound("HelmetHit"); (null == h.zpp_inner_i.userData && (h.zpp_inner_i.userData = {}), h.zpp_inner_i.userData).used = !0; for (var N = h.zpp_inner.wrap_shapes.iterator(); N.hasNext(); ) { var F; N.zpp_critical = !1, (F = N.zpp_inner.at(N.zpp_i++)).zpp_inner.immutable_midstep("Shape::sensorEnabled"), F.zpp_inner.sensorEnabled = !0, F.zpp_inner.wake(), F.zpp_inner.sensorEnabled } } } } for (var Z = 0; Z < this.arrows.length; ) { var f = this.arrows[Z]; f.b.get_position().get_x() < -2e3 || f.b.get_position().get_x() > 3e3 || f.b.get_position().get_y() > 3e3 ? (Main.clearAllBodyConstraints(f.b), this.space.zpp_inner.wrap_listeners.remove(js_Boot.__cast(f.b.get_userData().listener, nape_callbacks_PreListener)), null != f.b.get_space() && f.b.set_space(null), null != f.b.get_compound() && f.b.set_compound(null), f.destroy(), null != f.parent && f.parent.removeChild(f), HxOverrides.remove(this.desk.levels.physicElements, f), HxOverrides.remove(this.arrows, f)) : Z++ } for (var S = 0, g = !1; S < this.allHeroes.length; ) this.allHeroes[S].fullDead ? HxOverrides.remove(this.allHeroes, this.allHeroes[S]) : (this.allHeroes[S].isPlayer || (g = !0), this.allHeroes[S].isPlayer && !0, S++); g || this.newRound(), this.cancelIsBtnClick && (this.cancelIsBtnClick = !1, this.isBtnClick = !1) } }, __class__: Archers, __properties__: { set_coins: "set_coins", get_coins: "get_coins", set_bestScore: "set_bestScore", get_bestScore: "get_bestScore" } }); var ArrayTools = function() {}; $hxClasses.ArrayTools = ArrayTools, ArrayTools.__name__ = ["ArrayTools"], ArrayTools.randomSort = function(e) { for (var t = 0, n = e.length; t < n; ) { t++; var i = Std.random(e.length) , l = Std.random(e.length) , a = e[i]; e[i] = e[l], e[l] = a } return e } ; var Assembler = function(e) { var t; this.endAnimRobot = null, this.quake = null, this.wasFrameChildIndex = 0, this.mostTopChildIndex = 0, this.passedTime = 0, this.timerTf = null, this.started = !1, this.drY = 0, this.drX = 0, this.dragObjectOnCellTransform = null, this.dragObject = null, this.isDragging = !1, this.completed = !1, this.curTargetIndex = -1, this.targetsFrames = [], this.initTargetsTransfoms = new haxe_ds_ObjectMap, this.allTargets = [], this.targetsGroups = [], this.assembleData = e, this.main = Main.current, this.desk = Desk.current; for (var n = 0, i = e.targets; n < i.length; ) { var l = i[n]; ++n, t = this.getTargets(l), this.targetsGroups.push(t), this.allTargets = this.allTargets.concat(t); for (var a = 0; a < t.length; ) { var s = t[a]; ++a; var r = { x: s.get_x(), y: s.get_y(), sx: s.get_scaleX(), sy: s.get_scaleY(), rotation: s.get_rotation() }; this.initTargetsTransfoms.set(s, r) } var _, o = l.split(":"); _ = 1 == o.length ? o[0] : o[1]; var p = this.desk.getElementByName(_); p.set_alpha(.5), this.targetsFrames.push(p) } for (var h = 0, d = this.allTargets; h < d.length; ) { var u = d[h]; ++h, u.set_visible(!1), this.desk.levels.getChildIndex(u) > this.mostTopChildIndex && (this.mostTopChildIndex = this.desk.levels.getChildIndex(u)) } this.cells = this.desk.getElementsByNamePrefix(e.cellsTarget), this.activateNextTargets(), this.timerTf = this.desk.levelsTextFields[e.timerTfIndex], null != this.timerTf && this.timerTf.set_text("0"), this.quake = this.desk.getElementByName("quake"), null != this.quake && this.quake.set_visible(!1), Assembler.lastAssemblerSeqIndex = e.assemblerSequenceIndex, Assembler.lastAssemblerLevel = this.desk.curLevel, this.endAnimRobot = this.desk.getElementByName("RobotAnim"), null != this.endAnimRobot && this.endAnimRobot.set_visible(!1), this.tutor = this.desk.getElementByName("AssembleTutor"), null != this.tutor && this.tutor.play() }; $hxClasses.Assembler = Assembler, Assembler.__name__ = ["Assembler"], Assembler.__properties__ = { set_bestTime: "set_bestTime", get_bestTime: "get_bestTime" }, Assembler.get_bestTime = function() { return -1 == Assembler._bestTime && (null != LocalSaves.getVar("bestTime") ? Assembler._bestTime = LocalSaves.getVar("bestTime") : Assembler._bestTime = 0), Assembler._bestTime } , Assembler.set_bestTime = function(e) { return Assembler._bestTime != e && (Assembler._bestTime = e, LocalSaves.setVar("bestTime", Assembler._bestTime)), Assembler._bestTime } , Assembler.prototype = { targetsGroups: null, allTargets: null, assembleData: null, initTargetsTransfoms: null, targetsFrames: null, main: null, desk: null, curTargetIndex: null, curAssembleParts: null, completed: null, cells: null, isDragging: null, dragObject: null, dragObjectInitIndex: null, dragObjectOnCellTransform: null, drX: null, drY: null, started: null, timerTf: null, passedTime: null, mostTopChildIndex: null, wasFrameChildIndex: null, curFrame: null, quake: null, endAnimRobot: null, tutor: null, findSlot: function(e) { var t, n = e.split(":"); t = 1 == n.length ? n[0] : n[1]; for (var i = this.desk.getElementsByFolderName("Slots"), l = 0; l < i.length; ) { var a = i[l]; if (++l, a.get_name() == t) return a } return null }, activateNextTargets: function() { if (null != this.curFrame && (motion_Actuate.stop(this.curFrame), this.curFrame.set_alpha(.5), this.desk.levels.setChildIndex(this.curFrame, this.wasFrameChildIndex)), this.curTargetIndex >= 0) { var e = this.findSlot(this.assembleData.targets[this.curTargetIndex]); null != e && e.gotoAndStop(1) } if (-1 != this.curTargetIndex && this.main.playSpriteSound("CompleteGroup"), this.curTargetIndex++, this.curTargetIndex >= this.targetsGroups.length) { this.completed = !0, this.main.playSpriteSound("AssembleComplete"), Assembler.curTime = Math.ceil(this.passedTime / 1e3), 0 == Assembler.get_bestTime() && Assembler.set_bestTime(Assembler.curTime), Assembler.get_bestTime() > Assembler.curTime && Assembler.set_bestTime(Assembler.curTime); for (var t = 0, n = this.allTargets; t < n.length; ) { var i = n[t]; ++t, i.set_visible(!1) } for (var l = 0, a = this.targetsFrames; l < a.length; ) { var s = a[l]; ++l, s.set_visible(!1) } null != this.endAnimRobot && (this.endAnimRobot.set_visible(!0), this.endAnimRobot.play(), this.endAnimRobot.isLoop = !0) } else { this.curAssembleParts = this.targetsGroups[this.curTargetIndex]; for (var r, _ = 0, o = 0, p = this.curAssembleParts; o < p.length; ) { var h = p[o]; ++o, h.set_visible(!0), r = this.cells[_], h.set_x(r.get_x()), h.set_y(r.get_y()); var d = Math.max(h.get_width(), h.get_height()); h.set_scaleX(h.set_scaleY(Math.min(r.get_width(), r.get_height()) / d)), h.get_scaleX() > 1 && h.set_scaleX(h.set_scaleY(1)), _++ } this.curFrame = this.targetsFrames[this.curTargetIndex], this.wasFrameChildIndex = this.desk.levels.getChildIndex(this.curFrame), this.desk.levels.setChildIndex(this.curFrame, this.mostTopChildIndex), motion_Actuate.tween(this.curFrame, .8, { alpha: 1 }).ease(motion_easing_Linear.get_easeNone()).repeat(-1).reflect() } }, getTargets: function(e) { var t = e.split(":"); return t.length > 1 && ("folder" == t[0] || "layer" == t[0]) ? "layer" == t[0] ? this.desk.getElementsByLayerName(t[1]) : "folder" == t[0] ? this.desk.getElementsByFolderName(t[1]) : null : [this.desk.getElementByName(e)] }, destroy: function() { this.targetsGroups = null, this.allTargets = null, this.assembleData = null, this.desk = null, this.curAssembleParts = null, this.cells = null, this.initTargetsTransfoms = null, this.dragObject = null, this.dragObjectOnCellTransform = null, this.main = null, this.endAnimRobot = null, null != this.curFrame && motion_Actuate.stop(this.curFrame), this.curFrame = null, this.targetsFrames = null, this.tutor = null }, onMDown: function() { for (var e = 0, t = this.curAssembleParts; e < t.length; ) { var n = t[e]; if (++e, this.desk.hitsMouse(n)) { this.started = !0, this.isDragging = !0, this.dragObject = n, this.dragObjectOnCellTransform = { x: n.get_x(), y: n.get_y(), sx: n.get_scaleX(), sy: n.get_scaleY(), rotation: n.get_rotation() }; var i = this.initTargetsTransfoms.h[n.__id__]; this.dragObjectInitIndex = this.desk.levels.getChildIndex(this.dragObject), this.desk.levels.addChild(this.dragObject), motion_Actuate.tween(this.dragObject, .3, { scaleX: i.sx, scaleY: i.sy }).ease(motion_easing_Back.get_easeOut()), this.drX = this.main.get_mouseX() - this.dragObject.get_x(), this.drY = this.main.get_mouseY() - this.dragObject.get_y(), this.main.playSpriteSound("TakePart"), null != this.tutor && this.tutor.get_visible() && this.tutor.set_visible(!1); break } } }, checkDragObjectIsOnPos: function() { if (null == this.dragObject) return !1; var e, t = this.initTargetsTransfoms.h[this.dragObject.__id__], n = this.dragObject.get_x() - t.x, i = this.dragObject.get_y() - t.y; return e = this.main.isMobileBrowser ? 45 : 20, Math.sqrt(n * n + i * i) < e }, onMUp: function() { this.isDragging && (motion_Actuate.stop(this.dragObject), this.checkDragObjectIsOnPos() ? this.setDragObjectOnPlace() : this.returnDragObjectToCell(), this.dragObject = null, this.isDragging = !1) }, setDragObjectOnPlace: function() { if (null != this.dragObject) { var e = this.initTargetsTransfoms.h[this.dragObject.__id__]; motion_Actuate.tween(this.dragObject, .2, { x: e.x, y: e.y }).ease(motion_easing_Sine.get_easeOut()).onComplete($bind(this, this.onPartGetInPlace)), this.desk.levels.setChildIndex(this.dragObject, this.dragObjectInitIndex), HxOverrides.remove(this.curAssembleParts, this.dragObject), this.main.playSpriteSound("PutPart"), 0 == this.curAssembleParts.length && this.activateNextTargets() } }, onPartGetInPlace: function() { this.shakeWorld(), this.showQuake() }, shakeWorld: function() { null != this.desk && AnimationHelper.shake(this.desk) }, showQuake: function() { null != this.quake && (this.quake.set_visible(!0), this.quake.set_alpha(.15), this.quake.set_scaleX(this.quake.set_scaleY(8)), motion_Actuate.tween(this.quake, .2, { scaleX: 15, scaleY: 15, alpha: 1e-4 }).ease(motion_easing_Linear.get_easeNone()).onComplete($bind(this, this.onQuakeEnd))) }, onQuakeEnd: function() { null != this.quake && this.quake.set_visible(!1) }, returnDragObjectToCell: function() { motion_Actuate.tween(this.dragObject, .4, { x: this.dragObjectOnCellTransform.x, y: this.dragObjectOnCellTransform.y, scaleX: this.dragObjectOnCellTransform.sx, scaleY: this.dragObjectOnCellTransform.sy }).ease(motion_easing_Sine.get_easeOut()), this.desk.levels.setChildIndex(this.dragObject, this.dragObjectInitIndex) }, update: function(e) { this.isDragging && (this.dragObject.set_x(this.main.get_mouseX() - this.drX), this.dragObject.set_y(this.main.get_mouseY() - this.drY)), this.started && !this.completed && (this.passedTime += e, this.timerTf.set_text(Math.ceil(this.passedTime / 1e3) + "")) }, __class__: Assembler }; var BatchCanvas = function(e, t) { null == t && (t = 0), null == e && (e = 0), this.tileMapPool = [], openfl_display_Sprite.call(this), this.main = Main.current }; $hxClasses.BatchCanvas = BatchCanvas, BatchCanvas.__name__ = ["BatchCanvas"], BatchCanvas.__super__ = openfl_display_Sprite, BatchCanvas.prototype = $extend(openfl_display_Sprite.prototype, { bmCanvas: null, main: null, tileMapPool: null, resize: function() { if (null != this.bmCanvas) { var e = this.bmCanvas.bitmapData.image.buffer.__srcContext; e.canvas.width = Math.ceil(Main.current.sWidth), e.canvas.height = Math.ceil(Main.current.sHeight) } }, clearTileMap: function() { for (var e, t = 0; t < this.get_numChildren(); ) if (Std.is(this.getChildAt(t), openfl_display_Tilemap)) { e = this.removeChildAt(t), this.tileMapPool.push(e); for (var n = 0, i = e.numTiles; n < i; ) { var l = n++; e.getTileAt(l).visible = !1 } } else t++ }, requereTileMap: function(e) { for (var t = null, n = 0, i = this.tileMapPool; n < i.length; ) { var l = i[n]; if (++n, l.tileset == e) { t = l, HxOverrides.remove(this.tileMapPool, t); break } } return null == t && (this.tileMapPool.length > 0 ? (t = this.tileMapPool.pop()).set_tileset(e) : t = new openfl_display_Tilemap(0 | this.main.sWidth,0 | this.main.sHeight,e)), t.get_width() == this.main.sWidth && t.get_height() == this.main.sHeight || (t.set_width(0 | this.main.sWidth), t.set_height(0 | this.main.sHeight)), this.addChild(t), t }, __class__: BatchCanvas }); var Batching = function(e, t, n, i, l, a, s, r, _) { if (null == _ && (_ = ""), null == s && (s = ""), null == n && (n = 1024), null == t && (t = 1024), this._curChildIndex = 0, this.getBitmapDataCache = new haxe_ds_StringMap, this.maxHeight = 0, this.curY = 0, this.curX = 0, this.atlasImgPath = i, this.atlasXmlPath = l, this.atlasBmd = r, this.atlasXml = _, this.drawArr = [], Batching.instances.h[Batching.count] = this, this.tileSheetId = Batching.count, Batching.count++, this.zonesMap = new haxe_ds_StringMap, this.mapZones = new haxe_ds_IntMap, this.rects = new haxe_ds_StringMap, this.frames = new haxe_ds_StringMap, this.framesByInd = [], this.frameM = new openfl_geom_Matrix, this.hm = new openfl_geom_Matrix, this.p = new openfl_geom_Point, this.ct = new openfl_geom_ColorTransform, this.hmm1 = new openfl_geom_Matrix, this.hmm2 = new openfl_geom_Matrix, null == i && null == a && null == r && (this.bmd = new openfl_display_BitmapData(t,n,!0,0)), null == i && null == r) if (null == a) { for (var o, p = null, h = new openfl_geom_Point; e.length > 0; ) { o = e.pop(), p = openfl_Assets.getBitmapData(o), this.curX + p.width > this.bmd.width && (this.curX = 0, this.curY += this.maxHeight + 1, this.maxHeight = 0), this.maxHeight < p.height && (this.maxHeight = p.height), h.x = this.curX, h.y = this.curY, this.bmd.copyPixels(p, p.rect, h); var d = new openfl_geom_Rectangle(h.x,h.y,p.width,p.height); this.rects.set(o, d), this.curX += p.width + 1 } this.tileSet = new openfl_display_Tileset(this.bmd); for (var u = 0, c = (new openfl_geom_Rectangle, this.rects.keys()); c.hasNext(); ) { var m = c.next(); u = this.tileSet.addRect(this.rects.get(m)), this.zonesMap.set(m, u), this.mapZones.h[u] = m } this.main = Main.current } else this.setFromBmd(a, s); else this.parseAtlas() }; $hxClasses.Batching = Batching, Batching.__name__ = ["Batching"], Batching.prototype = { tileSheetId: null, curX: null, curY: null, maxHeight: null, zonesMap: null, mapZones: null, rects: null, frames: null, framesByInd: null, bmd: null, tileSet: null, atlasImgPath: null, atlasXmlPath: null, hm: null, hmm1: null, hmm2: null, p: null, ct: null, frameM: null, drawArr: null, getBitmapDataCache: null, main: null, atlasBmd: null, atlasXml: null, parseAtlas: function() { var e, t, n; null == this.atlasBmd ? (e = openfl_Assets.getBitmapData(this.atlasImgPath), t = Xml.parse(openfl_Assets.getText(this.atlasXmlPath))) : (e = this.atlasBmd, t = Xml.parse(this.atlasXml)); for (var i, l, a = t.firstElement().elementsNamed("SubTexture"); a.hasNext(); ) { var s = a.next(); n = new openfl_geom_Rectangle(Std.parseFloat(s.get("x")),Std.parseFloat(s.get("y")),Std.parseFloat(s.get("width")),Std.parseFloat(s.get("height"))); var r = s.get("name"); if (this.rects.set(r, n), void 0, i = Std.parseFloat(s.get("frameX")), !isNaN(i)) { n = new openfl_geom_Rectangle(Std.parseFloat(s.get("frameX")),Std.parseFloat(s.get("frameY")),Std.parseFloat(s.get("frameWidth")),Std.parseFloat(s.get("frameHeight"))); var _ = s.get("name"); this.frames.set(_, n) } } this.bmd = e, this.tileSet = new openfl_display_Tileset(this.bmd); new openfl_geom_Rectangle; for (var o = this.rects.keys(); o.hasNext(); ) { var p = o.next(); l = this.tileSet.addRect(this.rects.get(p)), this.zonesMap.set(p, l), this.mapZones.h[l] = p, this.framesByInd[l] = this.frames.get(p) } }, setFromBmd: function(e, t) { var n; this.rects.set(t, e.rect), this.bmd = e, this.tileSet = new openfl_display_Tileset(this.bmd); new openfl_geom_Rectangle; for (var i = this.rects.keys(); i.hasNext(); ) { var l = i.next(); n = this.tileSet.addRect(this.rects.get(l)), this.zonesMap.set(l, n), this.mapZones.h[n] = l, this.framesByInd[n] = this.frames.get(l) } }, getImgId: function(e) { var t = this.zonesMap.get(e); return null == t ? -1 : t }, getImgRect: function(e) { return this.frames.exists(e) ? this.frames.get(e).clone() : this.rects.get(e).clone() }, getBitmapData: function(e, t) { if (null == t && (t = !0), -1 == this.getImgId(e)) return null; var n, i, l, a, s, r = this.getImgRect(e); return n = this.frames.exists(e) ? this.frames.get(e) : null, !t && this.getBitmapDataCache.exists(e) ? this.getBitmapDataCache.get(e) : (i = null != n ? new openfl_display_BitmapData(Math.ceil(n.width),Math.ceil(n.height),!0,0) : new openfl_display_BitmapData(Math.ceil(r.width),Math.ceil(r.height),!0,0), l = null != n ? -n.x : 0, a = null != n ? -n.y : 0, s = this.tileSet.getRect(this.getImgId(e)), this.p.x = l, this.p.y = a, i.copyPixels(this.bmd, s, this.p, null, null, !0), t || this.getBitmapDataCache.exists(e) || this.getBitmapDataCache.set(e, i), i) }, _curChildIndex: null, render: function(e, t) { null == t && (t = !0), this._curChildIndex = 0, t && (this._curChildIndex = 0, e.clearTileMap()); var n = e.requereTileMap(this.tileSet); if (0 != this.drawArr.length) { for (var i, l = 1, a = 0; a < this.drawArr.length; ) n.numTiles > this._curChildIndex + 1 ? (i = n.getTileAt(this._curChildIndex)).id != (0 | this.drawArr[a + 2]) && i.set_id(0 | this.drawArr[a + 2]) : (i = new openfl_display_Tile(0 | this.drawArr[a + 2]), n.addTile(i)), i.matrix.identity(), i.matrix.tx = this.drawArr[a], i.matrix.ty = this.drawArr[a + 1], 0 | this.drawArr[a + 2], i.matrix.a = this.drawArr[a + 3], i.matrix.b = this.drawArr[a + 4], i.matrix.c = this.drawArr[a + 5], i.matrix.d = this.drawArr[a + 6], l = this.drawArr[a + 7], a += 8, i.set_matrix(i.matrix), i.visible = !0, i.set_alpha(l), this._curChildIndex++; for (; this.drawArr.length > 0; ) this.drawArr.pop() } }, __class__: Batching }; var openfl_display_Bitmap = function(e, t, n) { null == n && (n = !1), openfl_display_DisplayObject.call(this), this.set_bitmapData(e), this.pixelSnapping = t, this.smoothing = n, null == t && (this.pixelSnapping = 1) }; $hxClasses["openfl.display.Bitmap"] = openfl_display_Bitmap, openfl_display_Bitmap.__name__ = ["openfl", "display", "Bitmap"], openfl_display_Bitmap.__super__ = openfl_display_DisplayObject, openfl_display_Bitmap.prototype = $extend(openfl_display_DisplayObject.prototype, { bitmapData: null, pixelSnapping: null, smoothing: null, __getBounds: function(e, t) { if (null != this.bitmapData) { var n = openfl_geom_Rectangle.__temp; n.setTo(0, 0, this.bitmapData.width, this.bitmapData.height), n.__transform(n, t), e.__expand(n.x, n.y, n.width, n.height) } }, __hitTest: function(e, t, n, i, l, a) { if (!a.get_visible() || this.__isMask || null == this.bitmapData) return !1; if (null != this.get_mask() && !this.get_mask().__hitTestMask(e, t)) return !1; this.__getRenderTransform(); var s = this.__renderTransform.__transformInverseX(e, t) , r = this.__renderTransform.__transformInverseY(e, t); return s > 0 && r > 0 && s <= this.bitmapData.width && r <= this.bitmapData.height && (!(null != this.__scrollRect && !this.__scrollRect.contains(s, r)) && (null == i || l || i.push(a), !0)) }, __hitTestMask: function(e, t) { if (null == this.bitmapData) return !1; this.__getRenderTransform(); var n = this.__renderTransform.__transformInverseX(e, t) , i = this.__renderTransform.__transformInverseY(e, t); return n > 0 && i > 0 && n <= this.bitmapData.width && i <= this.bitmapData.height }, __renderCanvas: function(e) { openfl__$internal_renderer_canvas_CanvasBitmap.render(this, e) }, __renderCanvasMask: function(e) { e.context.rect(0, 0, this.get_width(), this.get_height()) }, __renderGL: function(e) { openfl__$internal_renderer_opengl_GLBitmap.render(this, e) }, __updateMask: function(e) { null != this.bitmapData && (e.__commands.overrideMatrix(this.__worldTransform), e.beginFill(0), e.drawRect(0, 0, this.bitmapData.width, this.bitmapData.height), null == e.__bounds && (e.__bounds = new openfl_geom_Rectangle), this.__getBounds(e.__bounds, openfl_geom_Matrix.__identity), openfl_display_DisplayObject.prototype.__updateMask.call(this, e)) }, set_bitmapData: function(e) { return this.bitmapData = e, this.smoothing = !1, null != this.__filters && this.__filters.length, this.bitmapData }, get_height: function() { return null != this.bitmapData ? this.bitmapData.height * Math.abs(this.get_scaleY()) : 0 }, set_height: function(e) { return null != this.bitmapData ? (e != this.bitmapData.height && this.set_scaleY(e / this.bitmapData.height), e) : 0 }, get_width: function() { return null != this.bitmapData ? this.bitmapData.width * Math.abs(this.__scaleX) : 0 }, set_width: function(e) { return null != this.bitmapData ? (e != this.bitmapData.width && this.set_scaleX(e / this.bitmapData.width), e) : 0 }, __class__: openfl_display_Bitmap, __properties__: $extend(openfl_display_DisplayObject.prototype.__properties__, { set_bitmapData: "set_bitmapData" }) }); var BitmapBatch = function(e, t) { null == t && (t = ""), this.ignoreUpdate = !1, this.tr = new openfl_geom_Rectangle, this.needUpdateTransform = !1, this.mHm1 = new openfl_geom_Matrix, this.baseMatrix = new openfl_geom_Matrix, this.mHm = new openfl_geom_Matrix, this.frameHeight = 0, this.frameWidth = 0, this.frameOffsetY = 0, this.frameOffsetX = 0, this._rotation = 0, this._scaleY = 1, this._scaleX = 1, this._y = 0, this._x = 0, this.imName = "", this.set_imName(t), this.batch = e, null != e && "" != t ? (openfl_display_Bitmap.call(this, e.bmd, 1, !0), "" != t ? (this.posRect = this.getImgAtlasBounds(t), this.set_scrollRect(this.posRect.clone())) : (this.set_scrollRect(new openfl_geom_Rectangle), this.posRect = new openfl_geom_Rectangle)) : (openfl_display_Bitmap.call(this), this.posRect = new openfl_geom_Rectangle), this.set_x(0), this.set_y(0) }; $hxClasses.BitmapBatch = BitmapBatch, BitmapBatch.__name__ = ["BitmapBatch"], BitmapBatch.__super__ = openfl_display_Bitmap, BitmapBatch.prototype = $extend(openfl_display_Bitmap.prototype, { batch: null, imName: null, _x: null, _y: null, _scaleX: null, _scaleY: null, _rotation: null, posRect: null, frameOffsetX: null, frameOffsetY: null, frameWidth: null, frameHeight: null, mHm: null, baseMatrix: null, mHm1: null, needUpdateTransform: null, getImgAtlasBounds: function(e) { var t; if (!this.batch.rects.exists(e)) return new openfl_geom_Rectangle; if (t = this.batch.rects.get(e).clone(), this.batch.frames.exists(this.imName)) { var n = this.batch.frames.get(this.imName); this.frameOffsetX = n.x, this.frameOffsetY = n.y, this.frameWidth = n.width, this.frameHeight = n.height } else this.frameOffsetX = this.frameOffsetY = this.frameWidth = this.frameWidth = 0, this.frameWidth = t.width, this.frameHeight = t.height; return t }, set_imName: function(e) { return this.imName = e, "" == this.imName && this.set_scrollRect(new openfl_geom_Rectangle), null == this.batch ? e : (this.posRect = this.getImgAtlasBounds(this.imName), this.set_scrollRect(this.posRect.clone()), e) }, changeImName: function(e, t) { null == e && (e = ""), null != t && (this.batch = t, this.set_bitmapData(t.bmd)), this.set_imName(e) }, set_x: function(e) { return this._x = e, this.setActualMatrix(), this._x }, set_y: function(e) { return this._y = e, this.setActualMatrix(), this._y }, get_x: function() { return this.updateTransforms(), this._x }, get_y: function() { return this.updateTransforms(), this._y }, set_rotation: function(e) { return this._rotation = e, this.setActualMatrix(), this._rotation }, get_rotation: function() { return this.updateTransforms(), this._rotation }, set_scaleX: function(e) { return this._scaleX = e, this.setActualMatrix(), this._scaleX }, get_scaleX: function() { return this.updateTransforms(), this._scaleX }, set_scaleY: function(e) { return this._scaleY = e, this.setActualMatrix(), this._scaleY }, get_scaleY: function() { return this.updateTransforms(), this._scaleY }, get_width: function() { return this.getBounds(this).width }, get_height: function() { return this.getBounds(this).height }, set_width: function(e) { var t = new openfl_geom_Rectangle , n = this.mHm1; return n.identity(), this.__getBounds(t, n), e != t.width ? this._scaleX = e / t.width : this._scaleX = 1, this.setActualMatrix(), e }, set_height: function(e) { var t = new openfl_geom_Rectangle , n = this.mHm1; return n.identity(), this.__getBounds(t, n), e != t.width ? this._scaleY = e / t.height : this._scaleY = 1, this.setActualMatrix(), e }, get_transform: function() { return null == this.__objectTransform && (this.__objectTransform = new MyTransform(this)), this.__objectTransform }, tr: null, __getBounds: function(e, t) { if (null != this.bitmapData) { var n = this.tr; n.setTo(0, 0, this.frameWidth, this.frameHeight), this.__transformBounds(n, t), this.__expandBounds(e, n.x, n.y, n.width, n.height) } }, __expandBounds: function(e, t, n, i, l) { if (0 == e.width && 0 == e.height) return e.x = t, e.y = n, e.width = i, void (e.height = l); var a = e.get_right() , s = e.get_bottom(); e.x > t && (e.x = t, e.width = a - t), e.y > n && (e.y = n, e.height = s - n), a < t + i && (e.width = t + i - e.x), s < n + l && (e.height = n + l - e.y) }, __transformBounds: function(e, t) { var n = t.a * e.x + t.c * e.y , i = n , l = t.b * e.x + t.d * e.y , a = l , s = t.a * (e.x + e.width) + t.c * e.y , r = t.b * (e.x + e.width) + t.d * e.y; s < n && (n = s), r < l && (l = r), s > i && (i = s), r > a && (a = r), s = t.a * (e.x + e.width) + t.c * (e.y + e.height), r = t.b * (e.x + e.width) + t.d * (e.y + e.height), s < n && (n = s), r < l && (l = r), s > i && (i = s), r > a && (a = r), s = t.a * e.x + t.c * (e.y + e.height), r = t.b * e.x + t.d * (e.y + e.height), s < n && (n = s), r < l && (l = r), s > i && (i = s), r > a && (a = r), e.setTo(n + t.tx, l + t.ty, i - n, a - l) }, getBounds: function(e) { if (this.updateTransforms(), e == this) { var t = new openfl_geom_Rectangle(this._x,this._y,this.frameWidth,this.frameHeight); return this.__transformBounds(t, this.baseMatrix), t } var n = this.mHm1; n.identity(), n.copyFrom(this.baseMatrix); for (var i = this.parent; null != i && (n.concat(i.get_transform().get_matrix()), i != e); ) i = i.parent; var l = new openfl_geom_Rectangle; return this.__getBounds(l, n), l }, __hitTest: function(e, t, n, i, l, a) { if (!a.get_visible() || this.__isMask || null == this.bitmapData) return !1; if (null != this.get_mask() && !this.get_mask().__hitTestMask(e, t)) return !1; this.mHm1.copyFrom(this.baseMatrix); var s = this.parent; for (this.mHm1.concat(s.get_transform().get_matrix()); s != this.stage; ) s = s.parent, this.mHm1.concat(s.get_transform().get_matrix()); var r = this.mHm1.__transformInverseX(e, t) , _ = this.mHm1.__transformInverseY(e, t); return r > 0 && _ > 0 && r <= this.frameWidth && _ <= this.frameHeight && (null == i || l || i.push(a), !0) }, updateTransforms: function() { this.needUpdateTransform && (this.updateMatrix(), this.ignoreUpdate = !0, this.get_transform().set_matrix(this.mHm.clone()), this.ignoreUpdate = !1, this.needUpdateTransform = !1) }, __update: function(e, t, n) { this.updateTransforms(), openfl_display_Bitmap.prototype.__update.call(this, e, t, n) }, __updateTransforms: function(e) { this.updateTransforms(), openfl_display_Bitmap.prototype.__updateTransforms.call(this, e), this.mHm1.identity(), this.mHm1.translate(this.frameOffsetX, this.frameOffsetY), this.mHm1.concat(this.__worldTransform), this.__worldTransform.copyFrom(this.mHm1) }, __renderGL: function(e) { if (this.__renderable && !(this.__worldAlpha <= 0) && null != this.bitmapData && this.bitmapData.__isValid) { var t = e.renderer , n = e.gl; e.blendModeManager.setBlendMode(this.get_blendMode()); var i = e.filterManager.pushObject(this); i.get_data().uImage0.input = this.bitmapData, i.get_data().uImage0.smoothing = e.allowSmoothing && (this.smoothing || e.upscaled), i.get_data().uMatrix.value = t.getMatrix(this.__worldTransform), e.shaderManager.setShader(i), n.bindBuffer(n.ARRAY_BUFFER, this.getBuffer(n)), n.vertexAttribPointer(i.get_data().aPosition.index, 3, n.FLOAT, !1, 24, 0), n.vertexAttribPointer(i.get_data().aTexCoord.index, 2, n.FLOAT, !1, 24, 12), n.vertexAttribPointer(i.get_data().aAlpha.index, 1, n.FLOAT, !1, 24, 20), n.drawArrays(n.TRIANGLE_STRIP, 0, 4), e.filterManager.popObject(this) } }, getBuffer: function(e) { var t, n, i, l, a = this.posRect, s = this.__worldAlpha; if (t = null == a ? 1 : a.width / this.bitmapData.width, n = null == a ? 1 : a.height / this.bitmapData.height, i = null == a ? 0 : a.x / this.bitmapData.width, l = null == a ? 0 : a.y / this.bitmapData.height, null == this.bitmapData.__buffer) { var r, _ = [a.width, a.height, 0, i + t, l + n, s, 0, a.height, 0, i, l + n, s, a.width, 0, 0, i + t, l, s, 0, 0, 0, i, l, s]; r = null != _ ? new Float32Array(_) : null, this.bitmapData.__bufferData = r, this.bitmapData.__buffer = e.createBuffer(), e.bindBuffer(e.ARRAY_BUFFER, this.bitmapData.__buffer), e.bufferData(e.ARRAY_BUFFER, this.bitmapData.__bufferData, e.STATIC_DRAW) } else this.bitmapData.__bufferData[0] = a.width, this.bitmapData.__bufferData[1] = a.height, this.bitmapData.__bufferData[7] = a.height, this.bitmapData.__bufferData[12] = a.width, this.bitmapData.__bufferData[3] = i + t, this.bitmapData.__bufferData[4] = l + n, this.bitmapData.__bufferData[9] = i, this.bitmapData.__bufferData[10] = l + n, this.bitmapData.__bufferData[15] = i + t, this.bitmapData.__bufferData[16] = l, this.bitmapData.__bufferData[21] = i, this.bitmapData.__bufferData[22] = l, this.bitmapData.__bufferData[5] = s, this.bitmapData.__bufferData[11] = s, this.bitmapData.__bufferData[17] = s, this.bitmapData.__bufferData[23] = s, this.bitmapData.__bufferAlpha = s, e.bindBuffer(e.ARRAY_BUFFER, this.bitmapData.__buffer), e.bufferData(e.ARRAY_BUFFER, this.bitmapData.__bufferData, e.STATIC_DRAW); return this.bitmapData.__buffer }, setActualMatrix: function() { this.needUpdateTransform = !0 }, updateMatrix: function() { this.mHm.identity(); var e = this._rotation * (Math.PI / 180); if (1 == this._scaleX && 1 == this._scaleY && 0 == e) this.mHm.tx = this._x, this.mHm.ty = this._y; else if (0 == e) this.mHm.scale(this._scaleX, this._scaleY), this.mHm1.identity(), this.mHm1.tx = this._x, this.mHm1.ty = this._y, this.mHm.concat(this.mHm1); else if (0 == e) this.mHm.a = this._scaleX, this.mHm.b = 0, this.mHm.c = 0, this.mHm.d = this._scaleY, this.mHm.tx = this._x - 0 * this._scaleX, this.mHm.ty = this._y - 0 * this._scaleY; else if (0 != e) { var t = Math.cos(e) , n = Math.sin(e); this.mHm.a = this._scaleX * t, this.mHm.b = this._scaleX * n, this.mHm.c = this._scaleY * -n, this.mHm.d = this._scaleY * t, this.mHm.tx = this._x - 0 * this.mHm.a - 0 * this.mHm.c, this.mHm.ty = this._y - 0 * this.mHm.b - 0 * this.mHm.d } this.mHm1.identity(), this.mHm1.tx = -this.frameOffsetX, this.mHm1.ty = -this.frameOffsetY, this.baseMatrix.copyFrom(this.mHm), this.mHm1.concat(this.mHm), this.mHm.copyFrom(this.mHm1) }, setActualMatrixFromMatrix: function(e) { return this.ignoreUpdate ? this.mHm : (this.mHm.identity(), this.mHm.tx -= this.frameOffsetX, this.mHm.ty -= this.frameOffsetY, this.mHm.concat(e), this.mHm) }, ignoreUpdate: null, updateParamsFromMatrix: function(e) { if (!this.ignoreUpdate) { this.baseMatrix.copyFrom(e); var t = this.baseMatrix , n = Math.PI / 4 , i = Math.atan(-t.c / t.d) , l = Math.atan(t.b / t.a); i != i && (i = 0), l != l && (l = 0), this._scaleY = i > -n && i < n ? t.d / Math.cos(i) : -t.c / Math.sin(i), this._scaleX = l > -n && l < n ? t.a / Math.cos(l) : t.b / Math.sin(l), this.isEquivalent(i, l) ? (this._rotation = i * (180 / Math.PI), i = l = 0) : this._rotation = 0, this._x = t.tx, this._y = t.ty, this.needUpdateTransform = !1 } }, isEquivalent: function(e, t, n) { return null == n && (n = 1e-4), e - n < t && e + n > t }, __class__: BitmapBatch, __properties__: $extend(openfl_display_Bitmap.prototype.__properties__, { set_imName: "set_imName" }) }); var openfl_geom_Transform = function(e) { this.__colorTransform = new openfl_geom_ColorTransform, this.concatenatedColorTransform = new openfl_geom_ColorTransform, this.pixelBounds = new openfl_geom_Rectangle, this.__displayObject = e, this.__hasMatrix = !0 }; $hxClasses["openfl.geom.Transform"] = openfl_geom_Transform, openfl_geom_Transform.__name__ = ["openfl", "geom", "Transform"], openfl_geom_Transform.prototype = { concatenatedColorTransform: null, pixelBounds: null, __colorTransform: null, __displayObject: null, __hasMatrix: null, __hasMatrix3D: null, get_colorTransform: function() { return this.__colorTransform }, set_colorTransform: function(e) { return this.__colorTransform.__equals(e) || (this.__colorTransform = e, null != e && this.__displayObject.set_alpha(e.alphaMultiplier), this.__displayObject.__setRenderDirty()), this.__colorTransform }, get_matrix: function() { return this.__hasMatrix ? this.__displayObject.__transform.clone() : null }, set_matrix: function(e) { return null == e ? (this.__hasMatrix = !1, null) : (this.__hasMatrix = !0, this.__hasMatrix3D = !1, null != this.__displayObject && this.__setTransform(e.a, e.b, e.c, e.d, e.tx, e.ty), e) }, __setTransform: function(e, t, n, i, l, a) { if (null != this.__displayObject) { var s = 0 , r = 0; s = 0 == t ? e : Math.sqrt(e * e + t * t), r = 0 == n ? e : Math.sqrt(n * n + i * i), this.__displayObject.__scaleX = s, this.__displayObject.__scaleY = r; var _ = 180 / Math.PI * Math.atan2(i, n) - 90; if (_ != this.__displayObject.__rotation) { this.__displayObject.__rotation = _; var o = _ * (Math.PI / 180); this.__displayObject.__rotationSine = Math.sin(o), this.__displayObject.__rotationCosine = Math.cos(o) } this.__displayObject.__transform.a = e, this.__displayObject.__transform.b = t, this.__displayObject.__transform.c = n, this.__displayObject.__transform.d = i, this.__displayObject.__transform.tx = l, this.__displayObject.__transform.ty = a, this.__displayObject.__setTransformDirty() } }, __class__: openfl_geom_Transform, __properties__: { set_matrix: "set_matrix", get_matrix: "get_matrix", set_colorTransform: "set_colorTransform", get_colorTransform: "get_colorTransform" } }; var MyTransform = function(e, t) { openfl_geom_Transform.call(this, e), this.dobj = e }; $hxClasses.MyTransform = MyTransform, MyTransform.__name__ = ["MyTransform"], MyTransform.__super__ = openfl_geom_Transform, MyTransform.prototype = $extend(openfl_geom_Transform.prototype, { dobj: null, set_matrix: function(e) { return openfl_geom_Transform.prototype.set_matrix.call(this, this.dobj.setActualMatrixFromMatrix(e).clone()), this.dobj.updateParamsFromMatrix(e), openfl_geom_Transform.prototype.get_matrix.call(this) }, __class__: MyTransform }); var CheatingModeHelper = function(e) { this.offsetWindowsY = 800, this.won = !1, this.failed = !1, this.started = !1, this.isCheating = !1, this.isDanger = !1, this.warningTime = 0, this.timeToWarning = 0, this.dangerTime = 0, this.beatingHeart = null, this.heartsAnims = null, this.complexProgressBar = null, this.desk = Desk.current, this.main = Main.current, this.setup = e; var t = this.desk.getElementsByName("heartParticle"); this.heartsAnims = []; for (var n = 0; n < t.length; ) { var i = t[n]; ++n, i.set_visible(!1); var l = new HartsAnim(this.main.batch,js_Boot.__cast(i.framesList[0].getChildAt(0), BitmapBatch).imName); l.set_x(i.get_x()), l.set_y(i.get_y()), this.desk.levels.addChildAt(l, this.desk.levels.getChildIndex(i)), this.heartsAnims.push(l) } var a = this.desk.getElementByName("beatingHeart"); null != a && (this.beatingHeart = new HartAnim(a)), this.complexProgressBar = new ComplexProgressBar(this.desk.getElementsByFolderName("ProgressBar"),e.progressPercentPerSec / 100 / 1e3,e.regressPercentPerSec / 100 / 1e3), null != this.complexProgressBar && (this.complexProgressBar.completeCallback = $bind(this, this.onWon), this.complexProgressBar.timeoutCallback = $bind(this, this.onTimeout)), this.char1 = this.desk.getElementByName("character1"), this.char2 = this.desk.getElementByName("character2"), this.char3 = this.desk.getElementByName("character3"), this.warningMC = this.desk.getElementByName("Warning"), null != this.warningMC && this.warningMC.set_visible(!1), this.char1GotoIddle(), this.char2.playLabel("iddle1", $bind(this, this.onIddleAnimEnd)), this.char3.playLabel("iddle1", $bind(this, this.onIddleAnimEnd)), this.hideWindowses(), this.hideDisapointment() }; $hxClasses.CheatingModeHelper = CheatingModeHelper, CheatingModeHelper.__name__ = ["CheatingModeHelper"], CheatingModeHelper.prototype = { complexProgressBar: null, heartsAnims: null, beatingHeart: null, char1: null, char2: null, char3: null, warningMC: null, desk: null, main: null, setup: null, dangerTime: null, timeToWarning: null, warningTime: null, isDanger: null, isCheating: null, started: null, failed: null, won: null, curOvl: null, curWindowEls: null, offsetWindowsY: null, reset: function() { this.stopProgramAnims(), null != this.beatingHeart && this.beatingHeart.stop(), null != this.complexProgressBar && (this.complexProgressBar.reset(), this.complexProgressBar.completeCallback = $bind(this, this.onWon), this.complexProgressBar.timeoutCallback = $bind(this, this.onTimeout)), this.dangerTime = 0, this.timeToWarning = 0, this.warningTime = 0, this.isDanger = !1, this.isCheating = !1, this.started = !1, this.failed = !1, this.won = !1, this.curOvl = null, this.curWindowEls = null, null != this.warningMC && this.warningMC.set_visible(!1), this.char1GotoIddle(), this.char2.playLabel("iddle1", $bind(this, this.onIddleAnimEnd)), this.char3.playLabel("iddle1", $bind(this, this.onIddleAnimEnd)), this.hideWindowses(!1), this.hideDisapointment() }, hideDisapointment: function() { for (var e = this.desk.getElementsByLayerName("Disappointment"), t = 0; t < e.length; ) { var n = e[t]; ++t, n.set_visible(!1) } }, showDisapointment: function() { for (var e = this.desk.getElementsByLayerName("Disappointment"), t = 0; t < e.length; ) { var n = e[t]; ++t, n.set_visible(!0), motion_Actuate.timer(.5 * Math.random()).onComplete($bind(n, n.gotoAndPlay), [0]) } }, hideWindowses: function(e) { null == e && (e = !0); for (var t = this.desk.getElementsByLayerName("WinWindow"), n = this.desk.getElementsByLayerName("LoseWindow"), i = this.desk.getElementsByLayerName("TimeoutWindow"), l = 0; l < t.length; ) { var a = t[l]; if (++l, a.set_visible(!1), e && "overlay" != a.get_name()) { var s = a; s.set_y(s.get_y() + this.offsetWindowsY) } } for (var r = 0; r < n.length; ) { var _ = n[r]; if (++r, _.set_visible(!1), e && "overlay" != _.get_name()) { var o = _; o.set_y(o.get_y() + this.offsetWindowsY) } } for (var p = 0; p < i.length; ) { var h = i[p]; if (++p, h.set_visible(!1), e && "overlay" != h.get_name()) { var d = h; d.set_y(d.get_y() + this.offsetWindowsY) } } }, onResize: function() { null != this.curOvl && (this.curOvl.set_x(-this.desk.levels.get_x() - 1 / this.desk.levels.get_scaleX() * 10), this.curOvl.set_y(-this.desk.levels.get_y() - 1 / this.desk.levels.get_scaleY() * 10), this.curOvl.set_width((this.main.sWidth + 20) * (1 / this.desk.levels.get_scaleX())), this.curOvl.set_height((this.main.sHeight + 20) * (1 / this.desk.levels.get_scaleY()))) }, showWindow: function(e) { for (var t = this.desk.getElementsByLayerName(e), n = 0; n < t.length; ) { var i = t[n]; ++n, i.set_visible(!0), "overlay" == i.get_name() ? (this.curOvl = i, i.set_alpha(1e-4), motion_Actuate.tween(i, .4, { alpha: 1 }).ease(motion_easing_Linear.get_easeNone()).delay(0)) : motion_Actuate.tween(i, .4, { y: i.get_y() - this.offsetWindowsY }).ease(motion_easing_Back.get_easeOut()).delay(0) } this.curWindowEls = t, this.onResize() }, onIddleAnimEnd: function(e) { var t = Std.parseInt(StringTools.replace(e.curLabel, "iddle", "")); e.hasLabel("iddle" + (t + 1)) ? e.playLabel("iddle" + (t + 1), $bind(this, this.onIddleAnimEnd)) : e.playLabel("iddle1", $bind(this, this.onIddleAnimEnd)) }, gotoIddleRand: function(e) { for (var t = 1; t < 100; ) { var n = t++; if (!e.hasLabel("iddle" + n)) break; 0 } e.playLabel("iddle1", $bind(this, this.onIddleAnimEnd)) }, startCheatingAnim: function() { for (var e = 0, t = 0, n = 1; n < 100; ) { var i = n++; if (!this.char2.hasLabel("cheat" + i)) break; e++ } for (var l = 1; l < 100; ) { var a = l++; if (!this.char3.hasLabel("cheat" + a)) break; t++ } var s = Math.round(Math.min(e, t)) , r = Std.random(s) + 1; if (this.char2.playLabel("cheat" + r), this.char3.playLabel("cheat" + r), 1 == r) for (var _ = 0, o = this.heartsAnims; _ < o.length; ) { var p = o[_]; ++_, p.start() } null != this.beatingHeart && this.beatingHeart.start(), null != this.setup.cheatingSound && this.desk.playSoundData(this.setup.cheatingSound, !0) }, char1GotoIddle: function() { this.gotoIddleRand(this.char1), this.timeToWarning = this.setup.char1MinIddleTime + Std.random(this.setup.char1MaxIddleTime - this.setup.char1MinIddleTime), null != this.warningMC && this.warningMC.set_visible(!1), this.isDanger = !1 }, startWarning: function() { null != this.warningMC && this.warningMC.set_visible(!0), this.warningMC.gotoAndPlay(0), this.warningMC.isLoop = !0, this.warningTime = this.setup.warningTimeMin + Std.random(this.setup.warningTimeMax - this.setup.warningTimeMin) }, startDanger: function() { this.dangerTime = this.setup.dangerTimeMax + Std.random(this.setup.dangerTimeMax - this.setup.dangerTimeMin), this.char1.playLabel("turn"), this.isDanger = !0 }, onWon: function() { this.failed || this.won || (this.won = !0, this.gotoIddleRand(this.char1), this.gotoIddleRand(this.char2), this.gotoIddleRand(this.char3), this.isCheating = !1, this.stopProgramAnims(), null != this.beatingHeart && this.beatingHeart.stop(), null != this.complexProgressBar && (this.complexProgressBar.isActive = !1), null != this.warningMC && this.warningMC.set_visible(!1), this.showWindow("WinWindow"), null != this.setup.cheatingSound && this.desk.stopSoundData(this.setup.cheatingSound)) }, onTimeout: function() { this.failed || this.won || this.fail(!0) }, fail: function(e) { null == e && (e = !1), this.failed || this.won || (e ? this.gotoIddleRand(this.char1) : this.char1.playLabel("angry"), this.gotoIddleRand(this.char2), this.gotoIddleRand(this.char3), this.stopProgramAnims(), null != this.complexProgressBar && (this.complexProgressBar.isActive = !1), null != this.beatingHeart && this.beatingHeart.stop(), this.failed = !0, null != this.warningMC && this.warningMC.set_visible(!1), e || this.showDisapointment(), e ? this.showWindow("TimeoutWindow") : this.showWindow("LoseWindow"), null != this.setup.cheatingSound && this.desk.stopSoundData(this.setup.cheatingSound)) }, restartLevelClick: function() { this.reset() }, restartGameClick: function() { Desk.current.startNewGame(0) }, nextClick: function() { Desk.current.nextLevel() }, animHideEls: function(e, t) { for (var n = !1, i = 0; i < e.length; ) { var l = e[i]; ++i, "overlay" == l.get_name() ? motion_Actuate.tween(l, .4, { alpha: 1e-5 }).ease(motion_easing_Linear.get_easeNone()).onComplete(n ? null : t) : motion_Actuate.tween(l, .4, { y: l.get_y() + this.offsetWindowsY }).ease(motion_easing_Back.get_easeIn()).onComplete(n ? null : t), n = !0 } }, onMDown: function() { if (this.failed || this.won) { if (null != this.curWindowEls && this.curWindowEls.length > 0) for (var e = 0, t = this.curWindowEls; e < t.length; ) { var n = t[e]; if (++e, (-1 != n.get_name().indexOf("btn") || -1 != n.get_name().indexOf("Btn")) && this.desk.hitsMouse(n)) { if ("nextLevelBtn" == n.get_name()) { this.animHideEls(this.curWindowEls, $bind(this, this.nextClick)); break } if ("restartLevelBtn" == n.get_name()) { this.animHideEls(this.curWindowEls, $bind(this, this.restartLevelClick)); break } if ("restartGameBtn" == n.get_name()) { this.animHideEls(this.curWindowEls, $bind(this, this.restartGameClick)); break } } } } else this.complexProgressBar.start(), this.started = !0, this.isCheating = !0, this.startCheatingAnim() }, onMUp: function() { this.failed || this.won || (this.isCheating = !1, this.gotoIddleRand(this.char2), this.gotoIddleRand(this.char3), this.stopProgramAnims(), null != this.setup.cheatingSound && this.desk.stopSoundData(this.setup.cheatingSound)) }, stopProgramAnims: function() { for (var e = 0, t = this.heartsAnims; e < t.length; ) { var n = t[e]; ++e, n.stop() } null != this.beatingHeart && this.beatingHeart.stop() }, update: function(e) { this.failed || this.won || (null != this.complexProgressBar && this.started && (this.main.isMouseDown ? this.complexProgressBar.addProgress(e) : this.complexProgressBar.addRegress(e), this.complexProgressBar.update(e)), this.started && (this.timeToWarning > 0 ? (this.timeToWarning -= e, this.timeToWarning <= 0 && this.startWarning()) : this.warningTime > 0 ? (this.warningTime -= e, this.warningTime <= 0 && this.startDanger()) : this.dangerTime > 0 && (this.dangerTime -= e, this.dangerTime <= 0 && this.char1GotoIddle())), this.isCheating && this.isDanger && this.fail()) }, destroy: function() { for (null != this.complexProgressBar && this.complexProgressBar.destroy(), this.complexProgressBar = null, null != this.setup.cheatingSound && this.desk.stopSoundData(this.setup.cheatingSound); this.heartsAnims.length > 0; ) { this.heartsAnims.pop().destroy() } this.heartsAnims = null, null != this.beatingHeart && this.beatingHeart.destroy(), this.beatingHeart = null, this.char1 = null, this.char2 = null, this.char3 = null, this.desk = null, this.main = null }, __class__: CheatingModeHelper }; var ComplexProgressBar = function(e, t, n) { this.timeProgress = 0, this.timeoutCallback = null, this.completeCallback = null, this.gameStarted = !1, this.isActive = !0, this.minuteSpeeed = 80, this.progress = 0, this.curHoursRot = 0, this.hoursSprite = new openfl_display_Sprite, this.fillClockInitY = 0, this.elements = e, this.main = Main.current, this.desk = Desk.current, this.progressInSec = t, this.regressInSec = n; for (var i = null, l = null, a = 0; a < e.length; ) { var s = e[a]; ++a, "FillLine" == s.get_name() && (i = s), "HeartFill" == s.get_name() && (l = s), "minutes" == s.get_name() && (this.minuteMC = s), "hours" == s.get_name() && (this.hoursMC = s) } this.fillLineBmdSource = this.main.batch.getBitmapData(js_Boot.__cast(i.framesList[0].getChildAt(0), BitmapBatch).imName), this.fillLine = new openfl_display_Bitmap(this.fillLineBmdSource.clone(),2,!0), this.fillLine.set_x(i.get_x()), this.fillLine.set_y(i.get_y()), this.desk.levels.addChildAt(this.fillLine, this.desk.levels.getChildIndex(i)), this.desk.levels.removeChild(i), this.fillClockBmdSource = this.main.batch.getBitmapData(js_Boot.__cast(l.framesList[0].getChildAt(0), BitmapBatch).imName), this.fillClock = new openfl_display_Bitmap(this.fillClockBmdSource.clone(),2,!0), this.fillClock.set_x(l.get_x()), this.fillClock.set_y(l.get_y()), this.desk.levels.addChildAt(this.fillClock, this.desk.levels.getChildIndex(l)), this.desk.levels.removeChild(l), this.fillClockInitY = this.fillClock.get_y(), this.hoursMC.set_visible(!1), this.desk.levels.addChildAt(this.hoursSprite, this.desk.levels.getChildIndex(this.hoursMC)); var r = this.main.batch.getBitmapData(js_Boot.__cast(this.hoursMC.framesList[0].getChildAt(0), BitmapBatch).imName) , _ = new openfl_display_Bitmap(r,2,!0); this.hoursSprite.addChild(_), _.set_x(this.hoursMC.framesList[0].getChildAt(0).get_x()), _.set_y(this.hoursMC.framesList[0].getChildAt(0).get_y()), this.hoursSprite.set_x(this.hoursMC.get_x()), this.hoursSprite.set_y(this.hoursMC.get_y()), this.setProgress(.09), this.setTimeProgress(0) }; $hxClasses.ComplexProgressBar = ComplexProgressBar, ComplexProgressBar.__name__ = ["ComplexProgressBar"], ComplexProgressBar.prototype = { elements: null, fillLineBmdSource: null, fillClockBmdSource: null, fillLine: null, fillClock: null, fillClockInitY: null, minuteMC: null, hoursMC: null, hoursSprite: null, curHoursRot: null, main: null, desk: null, progress: null, minuteSpeeed: null, isActive: null, gameStarted: null, progressInSec: null, regressInSec: null, completeCallback: null, timeoutCallback: null, start: function() { this.isActive = !0, this.gameStarted = !0 }, reset: function() { this.gameStarted = !1, this.isActive = !1, this.setProgress(.09), this.setTimeProgress(0), this.curHoursRot = 0, this.minuteMC.set_rotation(0), this.curHoursRot = 0 }, setProgress: function(e) { e < .09 && (e = .09), e > 1 && (e = 1), this.progress = e; var t = this.fillLine.bitmapData.width * e; this.fillLine.set_scrollRect(new openfl_geom_Rectangle(this.fillLine.bitmapData.width - t,0,t,this.fillLine.bitmapData.height)) }, addProgress: function(e) { this.isActive && (this.setProgress(this.progress + e * this.progressInSec), this.progress >= 1 && null != this.completeCallback && this.completeCallback()) }, addRegress: function(e) { this.isActive && (this.progress -= e * this.regressInSec, this.setProgress(this.progress)) }, setTimeProgress: function(e) { e > 1 && (e = 1), e < 0 && (e = 0), 0 == e && (e = .01); var t = this.fillClock.bitmapData.height * e; this.fillClock.set_scrollRect(new openfl_geom_Rectangle(0,this.fillClock.bitmapData.height - t,this.fillClock.bitmapData.width,t)), this.fillClock.set_y(this.fillClockInitY + (this.fillClock.bitmapData.height - t)) }, timeProgress: null, update: function(e) { if (this.isActive) { var t, n = this.minuteMC; n.set_rotation(n.get_rotation() + e / 1e3 * this.minuteSpeeed), this.curHoursRot += e / 1e3 * this.minuteSpeeed / 12, this.hoursMC.set_rotation(this.curHoursRot), t = this.hoursMC.get_rotation() >= 0 ? this.hoursMC.get_rotation() : this.hoursMC.get_rotation() + 360, this.timeProgress = t / 359, this.setTimeProgress(this.timeProgress), this.curHoursRot >= 360 && null != this.timeoutCallback && this.timeoutCallback(), this.hoursSprite.set_rotation(this.hoursMC.get_rotation()) } }, destroy: function() { this.elements = null, this.fillLineBmdSource = null, this.fillClockBmdSource = null, null != this.fillLine && null != this.fillLine.parent && this.fillLine.parent.removeChild(this.fillLine), null != this.fillClock && null != this.fillClock.parent && this.fillClock.parent.removeChild(this.fillClock), this.fillLine = null, this.fillClock = null, this.minuteMC = null, this.hoursMC = null, null != this.hoursSprite && null != this.hoursSprite.parent && this.hoursSprite.parent.removeChild(this.hoursSprite), this.hoursSprite = null, this.main = null, this.desk = null }, __class__: ComplexProgressBar }; var Config = function() { this.hidden = "", this.isPausedByOrientation = !1, this.N = 1, this.sHeight = 0, this.sWidth = 0, this.wasLandscape = !1, this.wasPortrait = !1, this.roundPixelsHtml5 = !1, this.initSHeight = 600, this.isPortrait = !0, openfl_Lib.current.stage.__renderer.renderSession.roundPixels = this.roundPixelsHtml5, this.main = Main.current, this.iOSjs = eval("iOSjs"), this.iOSjs.setResFunction($bind(this, this.iosRes)), this.activateHtml5SoundsBrowserVisible(), this.prepareFontsLoad(), nape_phys_Material.glass(), nape_phys_Material.ice(), nape_phys_Material.rubber(), nape_phys_Material.sand(), nape_phys_Material.steel(), nape_phys_Material.wood() }; $hxClasses.Config = Config, Config.__name__ = ["Config"], Config.openLink = function(e) { window.open(e, "_blank").focus() } , Config._getIsMobileBrowser = function() { var isMobileBrowser = !1 , evalString = ""; return evalString += "/Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone|IEMobile|Opera Mini/i.test(navigator.userAgent)", isMobileBrowser = eval(evalString), isMobileBrowser || eval("document.getElementById('openfl-content').style.overflow = 'hidden'"), isMobileBrowser } , Config.prototype = { isPortrait: null, initSHeight: null, roundPixelsHtml5: null, wasPortrait: null, wasLandscape: null, sWidth: null, sHeight: null, sounds: null, N: null, tapToStartWin: null, rotateScreenWindow: null, iOSjs: null, main: null, isPausedByOrientation: null, prepareFontsLoad: function() {}, iosRes: function() { this.main.resize(null) }, hidden: null, activateHtml5SoundsBrowserVisible: function() { // var e = ""; // null != window.document.hidden ? (this.hidden = "hidden", // e = "visibilitychange") : "undefined" != document.mozHidden ? (this.hidden = "mozHidden", // e = "mozvisibilitychange") : "undefined" != document.msHidden ? (this.hidden = "msHidden", // e = "msvisibilitychange") : "undefined" != document.webkitHidden && (this.hidden = "webkitHidden", // e = "webkitvisibilitychange"), // window.document.addEventListener(e, $bind(this, this.handleVisibilityChange), !1) }, handleVisibilityChange: function() { //document[this.hidden] ? window.Howler.mute(!0) : window.Howler.mute(!1) }, initSounds: function() { if (null != this.sounds) return this.sounds; if (null != Sounds.current) return this.sounds = Sounds.current, this.sounds; return this.sounds = new Sounds, this.sounds }, getIsMobileBrowser: function() { return Config._getIsMobileBrowser() }, checkSiteLock: function() {}, setRotateWin: function(e) { var t, n; (null == e && (e = !0), (t = this.iOSjs.getCurSize()).width = this.sWidth, t.height = this.sHeight, e && !this.isPortrait && (this.wasPortrait = !0), e && this.isPortrait && (this.wasLandscape = !0), null == this.rotateScreenWindow) && (this.rotateScreenWindow = new openfl_display_Sprite, n = openfl_Assets.exists("img/Rotate_to_play.jpg") ? new openfl_display_Bitmap(openfl_Assets.getBitmapData("img/Rotate_to_play.jpg"),1,!0) : new openfl_display_Bitmap, this.rotateScreenWindow.addChild(n), this.main.addChild(this.rotateScreenWindow)); e && (this.rotateScreenWindow.set_height(t.height), this.rotateScreenWindow.set_scaleX(this.rotateScreenWindow.get_scaleY()), this.rotateScreenWindow.get_width() < t.width && (this.rotateScreenWindow.set_width(t.width), this.rotateScreenWindow.set_scaleY(this.rotateScreenWindow.get_scaleX())), this.rotateScreenWindow.set_y(t.height / 2 - this.rotateScreenWindow.get_height() / 2), this.rotateScreenWindow.set_x(t.width / 2 - this.rotateScreenWindow.get_width() / 2)), this.rotateScreenWindow.set_visible(e), e || null == this.rotateScreenWindow.parent ? this.main.addChild(this.rotateScreenWindow) : this.rotateScreenWindow.parent.removeChild(this.rotateScreenWindow) }, resizeSet: function(e) { var t; return this.setRotateWin(!1), !1 }, initSize: function(isReinit) { var viewPort; null == isReinit && (isReinit = !1), viewPort = this.iOSjs.getCurSize(), viewPort.width > viewPort.height ? (this.sHeight = this.initSHeight, this.sWidth = viewPort.width / viewPort.height * this.initSHeight) : (this.sWidth = 700, this.sHeight = viewPort.height / viewPort.width * this.sWidth), this.setCorrectMainSize(), this.N = 30 / openfl_Lib.current.stage.get_frameRate(), eval("document.getElementById('openfl-content').style.top = '0px'"), eval("document.getElementById('openfl-content').style.left = '0px'"), eval("document.getElementById('openfl-content').style.margin = 'auto'"), window.scroll(0, 0), window.scrollTo(0, 0), window.document.body.scrollTop = 0; var color = 16711680; return window.scrollTo(0, 0), isReinit || (openfl_Lib.current.stage.addEventListener("touchEnd", $bind(this, this.tapToStartClick)), openfl_Lib.current.stage.addEventListener("click", $bind(this, this.tapToStartClick))), !1 }, setCorrectMainSize: function() { var e; if (e = this.iOSjs.getCurSize(), Config.scale = e.height / this.sHeight, Math.ceil(this.sWidth) > e.width || Math.ceil(this.sHeight) > e.height) { this.main.set_scaleX(this.main.set_scaleY(1)), openfl_Lib.current.stage.stage.window.set_width(Math.ceil(e.width)), openfl_Lib.current.stage.stage.window.set_height(Math.ceil(e.height)), openfl_Lib.current.stage.__setLogicalSize(Math.ceil(this.sWidth), Math.ceil(this.sHeight)); for (var t = 0, n = openfl_Lib.current.stage.stage3Ds; t < n.get_length(); ) { var i = n.get(t); ++t, i.__resize(Math.ceil(this.sWidth), Math.ceil(this.sHeight)) } if (js_Boot.__instanceof(openfl_Lib.current.stage.__renderer, openfl__$internal_renderer_opengl_GLRenderer)) { js_Boot.__cast(openfl_Lib.current.stage.__renderer, openfl__$internal_renderer_opengl_GLRenderer).displayWidth = Math.ceil(this.sWidth), js_Boot.__cast(openfl_Lib.current.stage.__renderer, openfl__$internal_renderer_opengl_GLRenderer).displayHeight = Math.ceil(this.sHeight), js_Boot.__cast(openfl_Lib.current.stage.__renderer, openfl__$internal_renderer_opengl_GLRenderer).projection = lime_math__$Matrix4_Matrix4_$Impl_$.createOrtho(0, js_Boot.__cast(openfl_Lib.current.stage.__renderer, openfl__$internal_renderer_opengl_GLRenderer).displayWidth, js_Boot.__cast(openfl_Lib.current.stage.__renderer, openfl__$internal_renderer_opengl_GLRenderer).displayHeight, 0, -1e3, 1e3), js_Boot.__cast(openfl_Lib.current.stage.__renderer, openfl__$internal_renderer_opengl_GLRenderer).projectionFlipped = lime_math__$Matrix4_Matrix4_$Impl_$.createOrtho(0, e.width, e.height, 0, -1e3, 1e3); var l = new openfl_geom_Matrix; Math.ceil(this.sWidth), e.width; l.scale(Config.scale, Config.scale), js_Boot.__cast(openfl_Lib.current.stage.__renderer, openfl__$internal_renderer_opengl_GLRenderer).displayMatrix = l, js_Boot.__cast(openfl_Lib.current.stage.__renderer, openfl__$internal_renderer_opengl_GLRenderer).width = Math.ceil(this.sWidth), js_Boot.__cast(openfl_Lib.current.stage.__renderer, openfl__$internal_renderer_opengl_GLRenderer).height = Math.ceil(this.sHeight), openfl_Lib.current.stage.__displayMatrix.identity(), openfl_Lib.current.stage.__displayMatrix.scale(Config.scale, Config.scale) } else openfl_Lib.current.stage.__displayMatrix.identity(), openfl_Lib.current.stage.__displayMatrix.scale(Config.scale, Config.scale); window.document.getElementById("openfl-content").style.width = Std.string(e.width) + "px", window.document.getElementById("openfl-content").style.height = Std.string(e.height) + "px"; var a = window.document.getElementById("openfl-content").firstChild; a.setAttribute("width", Math.ceil(this.sWidth) + ""), a.setAttribute("height", Math.ceil(this.sHeight) + ""), a.style.width = Std.string(e.width) + "px", a.style.height = Std.string(e.height) + "px" } else { this.main.set_scaleX(this.main.set_scaleY(e.height / this.sHeight)), openfl_Lib.current.stage.stage.window.set_width(Math.ceil(e.width)), openfl_Lib.current.stage.stage.window.set_height(Math.ceil(e.height)), openfl_Lib.current.stage.__setLogicalSize(0, 0), window.document.getElementById("openfl-content").style.width = Std.string(e.width) + "px", window.document.getElementById("openfl-content").style.height = Std.string(e.height) + "px"; var s = window.document.getElementById("openfl-content").firstChild; s.setAttribute("width", Math.ceil(e.width) + ""), s.setAttribute("height", Math.ceil(e.height) + ""), s.style.width = Math.ceil(e.width) + "px", s.style.height = Math.ceil(e.height) + "px" } }, sendToTopTapToStart: function() {}, tapToStartClick: function(e) { openfl_Lib.current.stage.removeEventListener("touchEnd", $bind(this, this.tapToStartClick)), openfl_Lib.current.stage.removeEventListener("click", $bind(this, this.tapToStartClick)), null != this.tapToStartWin && null != this.tapToStartWin.parent && this.tapToStartWin.parent.removeChild(this.tapToStartWin), null != this.tapToStartWin && this.tapToStartWin.close(), this.tapToStartWin = null, this.main.tapToStartClick(e) }, __class__: Config }; var lime_utils_AssetLibrary = function() { this.types = new haxe_ds_StringMap, this.sizes = new haxe_ds_StringMap, this.preload = new haxe_ds_StringMap, this.paths = new haxe_ds_StringMap, this.classTypes = new haxe_ds_StringMap, this.cachedText = new haxe_ds_StringMap, this.cachedImages = new haxe_ds_StringMap, this.cachedFonts = new haxe_ds_StringMap, this.cachedBytes = new haxe_ds_StringMap, this.cachedAudioBuffers = new haxe_ds_StringMap, this.onChange = new lime_app__$Event_$Void_$Void, this.bytesLoaded = 0, this.bytesTotal = 0 }; $hxClasses["lime.utils.AssetLibrary"] = lime_utils_AssetLibrary, lime_utils_AssetLibrary.__name__ = ["lime", "utils", "AssetLibrary"], lime_utils_AssetLibrary.fromManifest = function(e) { if (null == e) return null; var t = null; return (t = null == e.libraryType ? new lime_utils_AssetLibrary : Type.createInstance(Type.resolveClass(e.libraryType), e.libraryArgs)).__fromManifest(e), t } , lime_utils_AssetLibrary.prototype = { onChange: null, assetsLoaded: null, assetsTotal: null, bytesLoaded: null, bytesLoadedCache: null, bytesTotal: null, cachedAudioBuffers: null, cachedBytes: null, cachedFonts: null, cachedImages: null, cachedText: null, classTypes: null, paths: null, preload: null, promise: null, sizes: null, types: null, pathGroups: null, exists: function(e, t) { var n; n = null != t ? js_Boot.__cast(t, String) : null; var i = this.types.get(e); if (null != i) { if (i == n || ("SOUND" == n || "MUSIC" == n) && ("MUSIC" == i || "SOUND" == i)) return !0; if ("BINARY" == n || null == n || "BINARY" == i && "TEXT" == n) return !0 } return !1 }, getAsset: function(e, t) { switch (t) { case "BINARY": return this.getBytes(e); case "FONT": return this.getFont(e); case "IMAGE": return this.getImage(e); case "MUSIC": case "SOUND": return this.getAudioBuffer(e); case "TEXT": return this.getText(e); case "TEMPLATE": throw new js__$Boot_HaxeError("Not sure how to get template: " + e); default: throw new js__$Boot_HaxeError("Unknown asset type: " + t) } }, getAudioBuffer: function(e) { return this.cachedAudioBuffers.exists(e) ? this.cachedAudioBuffers.get(e) : this.classTypes.exists(e) ? lime_media_AudioBuffer.fromBytes(js_Boot.__cast(Type.createInstance(this.classTypes.get(e), []), haxe_io_Bytes)) : lime_media_AudioBuffer.fromFile(this.paths.get(e)) }, getBytes: function(e) { if (this.cachedBytes.exists(e)) return this.cachedBytes.get(e); if (this.cachedText.exists(e)) { var t = lime_utils__$Bytes_Bytes_$Impl_$.ofString(this.cachedText.get(e)); return this.cachedBytes.set(e, t), t } return this.classTypes.exists(e) ? js_Boot.__cast(Type.createInstance(this.classTypes.get(e), []), haxe_io_Bytes) : lime_utils__$Bytes_Bytes_$Impl_$.fromFile(this.paths.get(e)) }, getFont: function(e) { return this.cachedFonts.exists(e) ? this.cachedFonts.get(e) : this.classTypes.exists(e) ? js_Boot.__cast(Type.createInstance(this.classTypes.get(e), []), lime_text_Font) : lime_text_Font.fromFile(this.paths.get(e)) }, getImage: function(e) { return this.cachedImages.exists(e) ? this.cachedImages.get(e) : this.classTypes.exists(e) ? js_Boot.__cast(Type.createInstance(this.classTypes.get(e), []), lime_graphics_Image) : lime_graphics_Image.fromFile(this.paths.get(e)) }, getText: function(e) { if (this.cachedText.exists(e)) return this.cachedText.get(e); var t = this.getBytes(e); return null == t ? null : t.getString(0, t.length) }, isLocal: function(e, t) { if (this.classTypes.exists(e)) return !0; switch (null != t ? js_Boot.__cast(t, String) : null) { case "IMAGE": return this.cachedImages.exists(e); case "MUSIC": case "SOUND": return this.cachedAudioBuffers.exists(e); default: return this.cachedBytes.exists(e) || this.cachedText.exists(e) } }, loadAsset: function(e, t) { switch (t) { case "BINARY": return this.loadBytes(e); case "FONT": return this.loadFont(e); case "IMAGE": return this.loadImage(e); case "MUSIC": case "SOUND": return this.loadAudioBuffer(e); case "TEXT": return this.loadText(e); case "TEMPLATE": throw new js__$Boot_HaxeError("Not sure how to load template: " + e); default: throw new js__$Boot_HaxeError("Unknown asset type: " + t) } }, load: function() { if (null == this.promise) { this.promise = new lime_app_Promise, this.bytesLoadedCache = new haxe_ds_StringMap, this.assetsLoaded = 0, this.assetsTotal = 1; for (var e = this.preload.keys(); e.hasNext(); ) { var t = e.next() , n = this.types.get(t); if (null != n) switch (n) { case "BINARY": this.assetsTotal++; var i = this.loadBytes(t); i.onProgress(function(e, t) { return function(n, i) { e(t, n, i) } }($bind(this, this.load_onProgress), t)), i.onError(function(e, t) { return function(n) { e(t, n) } }($bind(this, this.load_onError), t)), i.onComplete(function(e, t) { return function(n) { e(t, n) } }($bind(this, this.loadBytes_onComplete), t)); break; case "FONT": this.assetsTotal++; var l = this.loadFont(t); l.onProgress(function(e, t) { return function(n, i) { e(t, n, i) } }($bind(this, this.load_onProgress), t)), l.onError(function(e, t) { return function(n) { e(t, n) } }($bind(this, this.load_onError), t)), l.onComplete(function(e, t) { return function(n) { e(t, n) } }($bind(this, this.loadFont_onComplete), t)); break; case "IMAGE": this.assetsTotal++; var a = this.loadImage(t); a.onProgress(function(e, t) { return function(n, i) { e(t, n, i) } }($bind(this, this.load_onProgress), t)), a.onError(function(e, t) { return function(n) { e(t, n) } }($bind(this, this.load_onError), t)), a.onComplete(function(e, t) { return function(n) { e(t, n) } }($bind(this, this.loadImage_onComplete), t)); break; case "MUSIC": case "SOUND": this.assetsTotal++; var s = this.loadAudioBuffer(t); s.onProgress(function(e, t) { return function(n, i) { e(t, n, i) } }($bind(this, this.load_onProgress), t)), s.onError(function(e, t) { return function(n) { e(t, n) } }($bind(this, this.load_onError), t)), s.onComplete(function(e, t) { return function(n) { e(t, n) } }($bind(this, this.loadAudioBuffer_onComplete), t)); break; case "TEXT": this.assetsTotal++; var r = this.loadText(t); r.onProgress(function(e, t) { return function(n, i) { e(t, n, i) } }($bind(this, this.load_onProgress), t)), r.onError(function(e, t) { return function(n) { e(t, n) } }($bind(this, this.load_onError), t)), r.onComplete(function(e, t) { return function(n) { e(t, n) } }($bind(this, this.loadText_onComplete), t)) } } this.__assetLoaded(null) } return this.promise.future }, loadAudioBuffer: function(e) { return this.cachedAudioBuffers.exists(e) ? lime_app_Future.withValue(this.cachedAudioBuffers.get(e)) : this.classTypes.exists(e) ? lime_app_Future.withValue(Type.createInstance(this.classTypes.get(e), [])) : this.pathGroups.exists(e) ? lime_media_AudioBuffer.loadFromFiles(this.pathGroups.get(e)) : lime_media_AudioBuffer.loadFromFile(this.paths.get(e)) }, loadBytes: function(e) { return this.cachedBytes.exists(e) ? lime_app_Future.withValue(this.cachedBytes.get(e)) : this.classTypes.exists(e) ? lime_app_Future.withValue(Type.createInstance(this.classTypes.get(e), [])) : lime_utils__$Bytes_Bytes_$Impl_$.loadFromFile(this.paths.get(e)) }, loadFont: function(e) { if (this.cachedFonts.exists(e)) return lime_app_Future.withValue(this.cachedFonts.get(e)); if (this.classTypes.exists(e)) { var t = Type.createInstance(this.classTypes.get(e), []); return lime_text_Font.loadFromName(t.name) } return lime_text_Font.loadFromName(this.paths.get(e)) }, loadImage: function(e) { return this.cachedImages.exists(e) ? lime_app_Future.withValue(this.cachedImages.get(e)) : this.classTypes.exists(e) ? lime_app_Future.withValue(Type.createInstance(this.classTypes.get(e), [])) : lime_graphics_Image.loadFromFile(this.paths.get(e)) }, loadText: function(e) { var t = this; return this.cachedText.exists(e) ? lime_app_Future.withValue(this.cachedText.get(e)) : this.loadBytes(e).then(function(n) { return new lime_app_Future(function() { if (null == n) return null; var i = n.getString(0, n.length); return t.cachedText.set(e, i), i } ,!0) }) }, unload: function() {}, __assetLoaded: function(e) { if (this.assetsLoaded++, null != e) { var t = this.sizes.get(e); if (this.bytesLoadedCache.exists(e)) { var n = this.bytesLoadedCache.get(e); n < t && (this.bytesLoaded += t - n) } else this.bytesLoaded += t; this.bytesLoadedCache.set(e, t) } this.assetsLoaded < this.assetsTotal ? this.promise.progress(this.bytesLoaded, this.bytesTotal) : (this.promise.progress(this.bytesTotal, this.bytesTotal), this.promise.complete(this)) }, __fromManifest: function(e) { for (var t, n, i = e.version >= 2, l = e.basePath, a = 0, s = e.assets; a < s.length; ) { var r = s[a]; ++a, t = i ? r.size : 100, n = r.id, this.paths.set(n, l + Std.string(r.path)), this.sizes.set(n, t); var _ = r.type; this.types.set(n, _) } null == this.pathGroups && (this.pathGroups = new haxe_ds_StringMap); for (var o, p, h, d = new haxe_ds_StringMap, u = new haxe_ds_StringMap, c = this.types.keys(); c.hasNext(); ) { var m = c.next(); if ("MUSIC" == (o = this.types.get(m)) || "SOUND" == o) { if (p = this.paths.get(m), h = haxe_io_Path.withoutExtension(p), !(null != __map_reserved[h] ? d.existsReserved(h) : d.h.hasOwnProperty(h))) { var U = []; null != __map_reserved[h] ? d.setReserved(h, U) : d.h[h] = U } var Q; (null != __map_reserved[h] ? d.getReserved(h) : d.h[h]).push(p), Q = null != __map_reserved[h] ? d.getReserved(h) : d.h[h], this.pathGroups.set(m, Q), this.preload.exists(m) && ((null != __map_reserved[h] ? u.existsReserved(h) : u.h.hasOwnProperty(h)) ? this.preload.remove(m) : null != __map_reserved[h] ? u.setReserved(h, !0) : u.h[h] = !0) } } this.bytesTotal = 0; for (var N = 0, F = e.assets; N < F.length; ) { var Z = F[N]; ++N, n = Z.id, this.preload.exists(n) && (this.bytesTotal += this.sizes.get(n)) } }, loadAudioBuffer_onComplete: function(e, t) { this.cachedAudioBuffers.set(e, t), this.__assetLoaded(e) }, loadBytes_onComplete: function(e, t) { this.cachedBytes.set(e, t), this.__assetLoaded(e) }, loadFont_onComplete: function(e, t) { this.cachedFonts.set(e, t), this.__assetLoaded(e) }, loadImage_onComplete: function(e, t) { this.cachedImages.set(e, t), this.__assetLoaded(e) }, loadText_onComplete: function(e, t) { this.cachedText.set(e, t), this.__assetLoaded(e) }, load_onError: function(e, t) { this.promise.error('Error loading asset "' + e + '"') }, load_onProgress: function(e, t, n) { if (t > 0) { var i, l = this.sizes.get(e); if (n > 0 ? ((i = t / n) > 1 && (i = 1), t = Math.floor(i * l)) : t > l && (t = l), this.bytesLoadedCache.exists(e)) { var a = this.bytesLoadedCache.get(e); t != a && (this.bytesLoaded += t - a) } else this.bytesLoaded += t; this.bytesLoadedCache.set(e, t), this.promise.progress(this.bytesLoaded, this.bytesTotal) } }, __class__: lime_utils_AssetLibrary }; var DefaultAssetLibrary = function() { lime_utils_AssetLibrary.call(this), null != ApplicationMain.config && Object.prototype.hasOwnProperty.call(ApplicationMain.config, "assetsPrefix") && (this.rootPath = Reflect.field(ApplicationMain.config, "assetsPrefix")), null == this.rootPath && (this.rootPath = ""); var e; e = "img/backgrounds/BgAddBot.jpg", this.preload.set(e, !0), e = "img/backgrounds/BgNew.jpg", this.preload.set(e, !0), e = "img/backgrounds/BgTopAdd1.jpg", this.preload.set(e, !0), e = "img/MainAtlas.png", this.preload.set(e, !0), e = "img/MainAtlas.xml", this.preload.set(e, !0), e = "img/MainFontNumeric.png", this.preload.set(e, !0), e = "img/MainFontNumeric1.png", this.preload.set(e, !0), e = "img/strings_enGB.json", this.preload.set(e, !0), e = "img/TranspPixel.png", this.preload.set(e, !0), e = "snd/sprite.ac3", e = "snd/sprite.json", e = "snd/sprite.m4a", e = "snd/sprite.mp3", e = "snd/sprite.ogg", e = "snd/sprite.json", this.preload.set(e, !0), this.loadManifest() }; $hxClasses.DefaultAssetLibrary = DefaultAssetLibrary, DefaultAssetLibrary.__name__ = ["DefaultAssetLibrary"], DefaultAssetLibrary.__super__ = lime_utils_AssetLibrary, DefaultAssetLibrary.prototype = $extend(lime_utils_AssetLibrary.prototype, { lastModified: null, rootPath: null, timer: null, loadManifest: function() { var e = haxe_Resource.getBytes("__ASSET_MANIFEST__"); if (null != e) { var t = lime_utils_AssetManifest.fromBytes(e); t.basePath = this.rootPath, this.__fromManifest(t) } else { var n = lime_utils_AssetManifest.fromFile(this.rootPath + "manifest"); null != n ? (n.basePath = this.rootPath, this.__fromManifest(n)) : lime_utils_Log.warn("Could not load asset manifest (bytes was null)", { fileName: "DefaultAssetLibrary.hx", lineNumber: 195, className: "DefaultAssetLibrary", methodName: "loadManifest" }) } }, __class__: DefaultAssetLibrary }); var Desk = function() { this.wasMDown = !1, this.fonSoundStarted = !1, this.wasHideAllTutors = !1, this.onBtnAnimEndFun = null, this.currentlyInitedLevel = !1, this.opLevelAfterOvl = -1, this.lastWinner = -1, this.scaleWidth = -1, this.statBtn = null, this.statWindow = null, this.resumeBtn = null, this.fitCenterResize = !0, this.centerResize = !0, this.curScale = 1, this.pauseBtns = [], this.pauseClickFunction = null, this.paused = !1, this.levelCompleteActions = null, this.levelsTextFields = null, this.actionBtnsActions = null, this.actionBtns = null, this.nextBtnClickLevel = -1, this.isFromSave = !1, this.isGameMode = !1, this.gameModes = [], this.fightTable = null, this.fightingMode = null, this.assembler = null, this.isFightTable = !1, this.isFightingMode = !1, this.isAssembleMode = !1, this.curFonSound = "", this.cheatingModeHelper = null, this.cheatingMode = !1, this.closeGameBtn = null, this.fireWorkLayer = new openfl_display_Sprite, this.fireWorkInterval = 1, this.fireWorks = [], this.fireIsActive = !1, this.gameLogoInitY = 0, this.gameLogoInitX = 0, this.maxLogoDx = 0, this.randAnimElements = [], this.addonPanelsOffsetX = 0, this.offsetToolsXOnSides = 0, this.autoAlignTools = !1, this.isAnimation = !1, this.isToolActive = !1, this.activeTool = null, this.passedLevels = [], this.selectionBtns = [], this.isSelectionLevel = !1, this.removeTutorObject = null, this.removeTutor = null, this.scaledObjectsInits = [], this.objectsToRemove = [], this.isObjectRemoving = !1, this.timeToDrawEraseTutor = 0, this.initTimeToDrawEraseTutor = 2500, this.isDragging = !1, this.isErasingMask = !1, this.isHitHizone = !1, this.isAutoMaskAction = !1, this.isAutoMask = !1, this.isDrawingMask = !1, this.isBlockedAction = !1, this.totalInSequent = 0, this.numUsedTools = 0, this.currentSequent = 0, this.minTimeToBlink = 2, this.maxTimeToBlink = 5, this.isBusy = !1, this.initToolsPosIsLeft = new haxe_ds_ObjectMap, this.initToolsX = new haxe_ds_ObjectMap, this.initToolsY = new haxe_ds_ObjectMap, this.initToolsMostTop = 0, this.toolsConfig = new haxe_ds_StringMap, this.toolsMap = new haxe_ds_StringMap, this.toolsArr = [], this.hp = new openfl_geom_Point, this.hm = new openfl_geom_Matrix, this.levelIndex = 0, this.curLevelIndex = 0, this.curLevel = 0; var e = this; openfl_display_Sprite.call(this), this.main = Main.current, this.levels = new LevelsExt, this.addChild(this.levels), this.main.addChild(this), Desk.current = this, this.deskHelper = new DeskHelper; var t = window.game_uptap; null != t && null == this.moreGamesBtn && (this.moreGamesBtn = new openfl_display_Bitmap, openfl_display_BitmapData.loadFromFile(t.getMoreGamesButtonImage()).onComplete(function(t) { e.moreGamesBtn.set_bitmapData(t), e.moreGamesBtn.smoothing = !0, e.moreGamesBtn.set_scaleX(e.moreGamesBtn.set_scaleY(.4)), e.onResize() })), window.document.addEventListener("click", $bind(this, this.onClick)), window.document.addEventListener("touchend", $bind(this, this.onClick)) }; $hxClasses.Desk = Desk, Desk.__name__ = ["Desk"], Desk.__super__ = openfl_display_Sprite, Desk.prototype = $extend(openfl_display_Sprite.prototype, { curLevel: null, curLevelIndex: null, levelIndex: null, levels: null, main: null, hm: null, hp: null, bg: null, bgTop: null, bgBot: null, get_sHeightLevels: function() { return Main.current.sHeight / this.levels.get_scaleY() }, get_topLevels: function() { return this.levels.get_y() / this.levels.get_scaleY() }, toolsArr: null, toolsMap: null, toolsConfig: null, initToolsMostTop: null, initToolsY: null, initToolsX: null, initToolsPosIsLeft: null, playBtn: null, soundBtn: null, speedBtn: null, nextBtn: null, restartBtn: null, isBusy: null, blinkTimer: null, maxTimeToBlink: null, minTimeToBlink: null, currentSequent: null, numUsedTools: null, totalInSequent: null, isBlockedAction: null, curHitZone: null, curHitTutor: null, initHitCounter: null, curHitCounter: null, currentProgressBar: null, curMaskBmd: null, curMaskBm: null, curBrushBmd: null, curBrushObj: null, draggingObject: null, dragSound: null, isDrawingMask: null, isAutoMask: null, isAutoMaskAction: null, isHitHizone: null, isErasingMask: null, isDragging: null, drawEraseTutor: null, initTimeToDrawEraseTutor: null, timeToDrawEraseTutor: null, isObjectRemoving: null, objectsToRemove: null, scaledObjectsInits: null, objectsRemoveSound: null, removeTutor: null, removeTutorObject: null, isSelectionLevel: null, selectionBtns: null, passedLevels: null, activeTool: null, isToolActive: null, isAnimation: null, autoAlignTools: null, offsetToolsXOnSides: null, toolsHighlighter: null, toolsHighlighterAlignTarget: null, addonPanelsOffsetX: null, randAnimElements: null, moreGamesBtn: null, gameLogo: null, maxLogoDx: null, gameLogoInitX: null, gameLogoInitY: null, externalLinksBtns: null, links: null, finishScreenBtns: null, fireIsActive: null, fireWorks: null, fireWorkInterval: null, fireWorkTimer: null, fireWorkLayer: null, closeGameBtn: null, cheatingMode: null, cheatingModeHelper: null, curFonSound: null, isAssembleMode: null, isFightingMode: null, isFightTable: null, assembler: null, fightingMode: null, fightTable: null, gameModes: null, isGameMode: null, isFromSave: null, nextBtnClickLevel: null, actionBtns: null, actionBtnsActions: null, levelsTextFields: null, levelCompleteActions: null, paused: null, pauseClickFunction: null, pauseWindow: null, pauseBtns: null, pauseFill: null, curScale: null, centerResize: null, fitCenterResize: null, resumeBtn: null, statWindow: null, statBtn: null, scaleWidth: null, lastWinner: null, deskHelper: null, startNewGame: function(e, t) { //0 === e && "SCREEN_HOME" !== window.game_uptap_analytics.getScreen() && window.game_uptap_analytics.trackScreen("SCREEN_HOME"), null == t && (t = !1), this.curLevel = e; for (var n = !1, i = 0, l = this.levels.data.levels.length; i < l; ) { var a = i++; if (this.levels.data.levels[a].name == "level" + (t ? "_select" : e + "")) { this.levelIndex = a, this.curLevelIndex = e, n = !0; break } } if (n) { e = this.levelIndex, this.curLevelIndex = e, this.isSelectionLevel = t; var s = TJSON.parse(this.levels.data.levels[e].levelSetup); "" != s && null != s && null != s.isFightTable && s.isFightTable && Assembler.isTwoPlayersFightMode ? this.startNewGame(e + 1) : this.init(e) } else this.startNewGame(1) }, onOvlShowed: function(e) { HxOverrides.remove(this.levels.physicElements, e), null != e.parent && e.parent.removeChild(e), this.init(this.opLevelAfterOvl, !0), this.levels.addChild(e), this.levels.physicElements.push(e), e.playLabel("hide", $bind(this, this.onOvlHidden)) }, onOvlHidden: function(e) { null != e.parent && e.parent.removeChild(e), HxOverrides.remove(this.levels.physicElements, e), e.destroy() }, opLevelAfterOvl: null, currentlyInitedLevel: null, init: function(e, t) { null == t && (t = !1); var n = this; if (-1 == HxOverrides.indexOf(this.passedLevels, -1, 0)) return this.passedLevels.push(-1), void this.startNewGame(-1); if (this.main.slowedPhysic = !1, !t && null != this.getElementByName("changeOverlay_hidden")) { var i = this.getElementByName("changeOverlay_hidden"); return i.set_visible(!0), this.opLevelAfterOvl = e, i.playLabel("show", $bind(this, this.onOvlShowed)), void (this.paused = !1) } for (ToolActions.resetObjectsScale(), ToolActions.stopAllSounds(), null != this.statWindow && this.statWindow.destroy(), this.statWindow = null, this.currentlyInitedLevel = !0, this.activeTool = null, this.isToolActive = !1, this.nextBtnClickLevel = -1, this.isAssembleMode = !1, null != this.assembler && this.assembler.destroy(); this.gameModes.length > 0; ) { var l = this.gameModes.pop(); null != l && l.destroy() } this.isGameMode = !1, this.isFightingMode = !1, null != this.fightingMode && this.fightingMode.destroy(); var a = "img/backgrounds/" + this.levels.data.levels[e].bg.i; for (-1 == a.indexOf(".jpg") && -1 == a.indexOf(".png") && (a += ".png"), this.fightingMode = null, this.isFightTable = !1, null != this.fightTable && this.fightTable.destroy(), this.fightTable = null, this.cheatingMode = !1, null != this.cheatingModeHelper && this.cheatingModeHelper.destroy(), this.cheatingModeHelper = null, this.dragSound = null, null != this.fireWorkLayer.parent && this.fireWorkLayer.parent.removeChild(this.fireWorkLayer); this.fireWorkLayer.get_numChildren() > 0; ) this.fireWorkLayer.removeChildAt(0); for (null != this.fireWorkTimer && (motion_Actuate.stop(this.fireWorkTimer, null, !1, !1), this.fireWorkTimer = null); this.fireWorks.length > 0; ) this.fireWorks.pop().Destroy(); if (this.fireIsActive = !1, this.isBlockedAction = !1, this.removeTutorObject = null, this.removeTutor = null, this.curHitZone = null, this.curHitTutor = null, this.currentProgressBar = null, this.main.stopSpriteSound("FireworkSound"), null != this.bgTop && null != this.bgTop.parent && this.bgTop.parent.removeChild(this.bgTop), null != this.levels.data.levels[e].bg && null != this.levels.data.levels[e].bg.ti) { var s = "img/backgrounds/" + this.levels.data.levels[e].bg.ti; -1 == s.indexOf(".jpg") && -1 == s.indexOf(".png") && (s += ".png"), this.bgTop = new openfl_display_Bitmap(openfl_Assets.getBitmapData(s),1,!0), this.addChildAt(this.bgTop, 0) } if (null != this.bg && null != this.bg.parent && this.bg.parent.removeChild(this.bg), this.bg = new openfl_display_Bitmap(openfl_Assets.getBitmapData(a),1,!0), this.addChildAt(this.bg, 0), null != this.bgBot && null != this.bgBot.parent && this.bgBot.parent.removeChild(this.bgBot), null != this.levels.data.levels[e].bg && null != this.levels.data.levels[e].bg.bi) { var r = "img/backgrounds/" + this.levels.data.levels[e].bg.bi; -1 == r.indexOf(".jpg") && -1 == r.indexOf(".png") && (r += ".png"), this.bgBot = new openfl_display_Bitmap(openfl_Assets.getBitmapData(r),1,!0), this.addChildAt(this.bgBot, 0) } this.isBusy = !1, this.bg.set_x(this.levels.data.levels[e].bg.x), this.bg.set_y(this.levels.data.levels[e].bg.y); var _ = TJSON.parse(this.levels.data.levels[e].levelSetup); "" == this.levels.data.levels[e].levelSetup && (_ = {}), null != _.fonSound ? (this.curFonSound = _.fonSound, this.main.sounds.canPlaySound && (this.main.playSpriteMusicE(this.curFonSound, !0, !0, !1), this.curFonSound = "")) : this.curFonSound = "fon", null != _ && null != _.autoAlignTools && js_Boot.__cast(_.autoAlignTools, Bool) ? this.autoAlignTools = !0 : this.autoAlignTools = !1, null != _ && null != _.cheatingMode && js_Boot.__cast(_.cheatingMode, Bool) && (this.cheatingMode = !0), this.centerResize = !0, null == _ || null == _.centerResize || js_Boot.__cast(_.centerResize, Bool) || (this.centerResize = !1), this.fitCenterResize = null != _ && null != _.fitCenterResize && js_Boot.__cast(_.fitCenterResize, Bool), this.fitCenterResize && (this.centerResize = !1), null != _ && null != _.scaleWidth ? this.scaleWidth = _.scaleWidth : this.scaleWidth = -1; var o = this.levels.physicElements.slice(); this.levels.initLevel(e); for (var p = 0, h = this.levels.physicElements; p < h.length; ) { var d = h[p]; ++p, d.gotoAndStop(0) } if (null != _.previesFrames && _.previesFrames) for (var u = 0; u < o.length; ) { var c = o[u]; if (++u, "UI" != c.layerName && "" != c.get_name()) { var m = this.getElementByName(c.get_name()); null != m && m.copyStateFrom(c) } } this.levelsTextFields = []; for (var U = 0, Q = !1; !Q; ) { Q = 0 != U; var N = this.getElementsByLayerName("TextLayer" + U); if (N.length > 0) { var F = new LevelsTextField(N); this.levelsTextFields[U] = F, Q = !1 } U++ } for (var Z = this.getElementsByLayerName("Simple_Nums"), f = 0; f < Z.length; ) { var S = Z[f]; ++f; new LevelsTextField([S]) } for (null != _.isAssemblingLevel && _.isAssemblingLevel && (this.isAssembleMode = !0, this.assembler = new Assembler(_.assembleData)), null != _.isFightingLevel && _.isFightingLevel && (this.isFightingMode = !0, this.fightingMode = new FightingMode(_.fightingData)), null != _.isFightTable && _.isFightTable && (this.isFightTable = !0, this.fightTable = new FightTable(_.fightLevel)), this.isFightingMode || this.isFightTable || (FightTable.curFight = 0); this.toolsArr.length > 0; ) this.toolsArr.pop(); this.toolsMap = new haxe_ds_StringMap, this.toolsConfig = new haxe_ds_StringMap, this.totalInSequent = 0, this.toolsArr = this.getElementsByNamePrefix("tool"); for (var g = 0; g < this.toolsArr.length; ) -1 == this.toolsArr[g].get_name().indexOf("_shaddow") ? g++ : HxOverrides.remove(this.toolsArr, this.toolsArr[g]); for (var B = 2, b = 0, v = this.toolsArr; b < v.length; ) { var W = v[b]; ++b; var T = W.get_name(); this.toolsMap.set(T, W); var V = Reflect.field(_.tools, W.get_name()); "string" == typeof V.target && (V.target = [V.target]), "string" == typeof V.label && (V.label = [V.label]), null == V.sequent && (V.sequent = !1), null == V.isInitActive && (V.isInitActive = !0), Object.prototype.hasOwnProperty.call(V, "sequenceIndex") || ("tool1" == W.get_name() ? (V.sequenceIndex = [1], B--) : V.sequenceIndex = [B]), B++; var R, y = V; if (y.isAnimFrames = !1, y.curFrameIndex = 1, "CHANGE_FRAME" == y.action && (R = this.getElementByName(y.target[0]), this.getElementByName(y.target[0]).hasLabel("state1_1") && (y.isAnimFrames = !0, this.getElementByName(y.target[0]).playLabel("state1_1", $bind(this, this.onChangeToolAnimEnd))), !y.isAnimFrames)) { var D = R.getFrameLabels(0); if (null != D && -1 != HxOverrides.indexOf(D, "type1", 0)) { y.isFramesRange = !0, y.framesRangeKeyFrame = -1; for (var x = 0; x < o.length; ) { var J = o[x]; ++x, J.get_name() == R.get_name() && (y.framesRangeKeyFrame = Math.floor(J.curFrame) + 1) } for (var z, k = -1, E = -1, P = 0, M = R.totalFrames; P < M; ) { var w = P++; null != (z = R.getFrameLabels(w)) && z.length > 0 && -1 != HxOverrides.indexOf(z, "type" + y.framesRangeKeyFrame, 0) && (k = w), null != z && z.length > 0 && -1 != HxOverrides.indexOf(z, "type" + (y.framesRangeKeyFrame + 1), 0) && (E = w - 1) } -1 == E && (E = R.totalFrames - 1), y.framesRange = [k, E], R.gotoAndStop(k) } } null != y.initActions && (y._initActions = new ToolActions(y.initActions)), null != y.endActions && (y._endActions = new ToolActions(y.endActions)); var $ = W.get_name(); this.toolsConfig.set($, y), Object.prototype.hasOwnProperty.call(y, "sequenceIndex") ? this.totalInSequent += y.sequenceIndex.length : this.totalInSequent++ } this.currentSequent = 1, this.numUsedTools = 0, this.initToolsY = new haxe_ds_ObjectMap, this.initToolsX = new haxe_ds_ObjectMap, this.initToolsPosIsLeft = new haxe_ds_ObjectMap; var C = 1 / 0 , G = this.getElementsByLayerName("UI"); G = G.concat(this.getElementsByFolderName("UI")); for (var O = 0; O < G.length; ) { var I = G[O]; ++O; var H = I.getBounds(I.parent); H.get_top() < C && (C = H.get_top()); var Y = I.get_y(); this.initToolsY.set(I, Y); var A = I.get_x(); this.initToolsX.set(I, A); var L = I.get_x() < Config.baseSWidth / 2; this.initToolsPosIsLeft.set(I, L) } this.initToolsMostTop = C; for (var X = this.getElementsByNamePostfix("_hidden"), j = 0; j < X.length; ) { var K = X[j]; ++j, K.set_visible(!1) } this.playBtn = this.getElementByName("playBtn"), this.soundBtn = this.getElementByName("soundBtn"), this.speedBtn = this.getElementByName("speedBtn"), this.nextBtn = this.getElementByName("nextBtn"), null == this.nextBtn && (this.nextBtn = this.getElementByName("nextBtnSelection")), this.restartBtn = this.getElementByName("restartBtn"), null != this.nextBtn && this.nextBtn.set_visible(!1), null != this.restartBtn && this.restartBtn.set_visible(!1), null != this.nextBtn && 0 == this.toolsArr.length && this.nextBtn.set_visible(!0), null != this.soundBtn && this.soundBtn.gotoAndStop(this.main.sounds.muted ? 1 : 0), motion_Actuate.stop(this.blinkTimer, null, !1, !1), null != this.blinkTimer && motion_Actuate.unload(this.blinkTimer), this.blinkTimer = null, null != this.getElementByName("blink") && (this.blinkTimer = motion_Actuate.timer(this.minTimeToBlink + Math.random() * (this.maxTimeToBlink - this.minTimeToBlink)).onComplete($bind(this, this.blink))), this.curMaskBmd = null, this.curMaskBm = null, this.curBrushBmd = null, this.curBrushObj = null, this.draggingObject = null, this.isDrawingMask = !1, this.isAutoMask = !1, this.isAutoMaskAction = !1, this.isHitHizone = !1, this.isErasingMask = !1, this.isDragging = !1, this.drawEraseTutor = this.getElementByName("drawEraseTutor_hidden"), this.toolsHighlighter = this.getElementByName("toolhighlight_hidden"), this.toolsHighlighterAlignTarget = null, this.isObjectRemoving = !1, this.isAnimation = !1; for (var q = this.getElementsByLayerName("RandPlay"); this.randAnimElements.length > 0; ) this.randAnimElements.pop(); for (var ee = 0; ee < q.length; ) { var te = q[ee]; ++ee, this.randAnimElements.push({ object: te, delayToPlay: Std.random(15e3) }) } for (var ne, ie, le = this.getElementsByLayerName("Animate"), ae = 0; ae < le.length; ) { var se = le[ae]; ++ae, se.play() } for (this.addonPanelsOffsetX = 0; this.selectionBtns.length > 0; ) this.selectionBtns.pop(); if (this.isSelectionLevel) { this.selectionBtns = this.getElementsByNamePrefix("level_btn"); for (var re = [], _e = 0, oe = this.selectionBtns; _e < oe.length; ) { var pe = oe[_e]; ++_e; var he = Std.parseInt(StringTools.replace(pe.get_name(), "level_btn", "")); re.push(he) } re.sort($bind(this, this.intArrSort)); for (var de = 0, ue = this.selectionBtns; de < ue.length; ) { var ce = ue[de]; ++de; var me, Ue = Std.parseInt(StringTools.replace(ce.get_name(), "level_btn", "")); me = Ue == re[0] || -1 != (ne = this, void 0, ie = re[HxOverrides.indexOf(re, Ue, 0) - 1], HxOverrides.indexOf(ne.passedLevels, ie, 0)), ce.gotoAndStop(me ? 0 : 1) } } this.prepareTool(); var Qe = window.game_uptap; null != Qe && (null == this.moreGamesBtn && (this.moreGamesBtn = new openfl_display_Bitmap, openfl_display_BitmapData.loadFromFile(Qe.getMoreGamesButtonImage()).onComplete(function(e) { n.moreGamesBtn.set_bitmapData(e), n.moreGamesBtn.smoothing = !0, n.moreGamesBtn.set_scaleX(n.moreGamesBtn.set_scaleY(.4)), n.onResize() })) //this.levels.addChild(this.moreGamesBtn) ), this.gameLogo = this.getElementByName("gameLogo"), null != this.gameLogo && (this.maxLogoDx = Config.baseSWidth / 2 - this.gameLogo.get_x()), null != this.gameLogo && (this.gameLogoInitX = this.gameLogo.get_x()), null != this.gameLogo && (this.gameLogoInitY = this.gameLogo.get_y()), //this.moreGamesBtn.set_visible(0 == this.curLevel), this.onResize(), this.pauseFill = null, null != _.isGameMode && _.isGameMode && (this.isGameMode = !0), this.isFromSave = !1, null != _ && null != _.animateToolsApear && js_Boot.__cast(_.animateToolsApear, Bool) && this.animateToolsApear(), this.externalLinksBtns = this.getElementsByFolderName("ClickBtns"), this.finishScreenBtns = this.getElementsByFolderName("FinishScreenBtns"); for (var Ne = 0, Fe = this.finishScreenBtns; Ne < Fe.length; ) { var Ze = Fe[Ne]; ++Ne, Ze.set_visible(!1) } for (var fe = 0, Se = this.externalLinksBtns; fe < Se.length; ) { var ge = Se[fe]; ++fe, -1 != ge.get_name().indexOf("_multi") && ge.gotoAndStop(Std.random(ge.totalFrames)) } for (var Be = 0, be = this.finishScreenBtns; Be < be.length; ) { var ve = be[Be]; ++Be, -1 != ve.get_name().indexOf("_multi") && ve.gotoAndStop(Std.random(ve.totalFrames)) } if (this.actionBtns = [], null != _.actionBtns) for (var We = Reflect.fields(_.actionBtns), Te = 0; Te < We.length; ) { var Ve = We[Te]; ++Te, null != this.getElementByNameInLayer(Ve, "ActionBtn") ? this.actionBtns.push(this.getElementByNameInLayer(Ve, "ActionBtn")) : this.actionBtns.push(this.getElementByName(Ve)) } for (var Re = this.getElementsByLayerName("AndroidCloseWindow"), ye = 0; ye < Re.length; ) { var De = Re[ye]; ++ye, De.set_visible(!1) } if (this.links = new haxe_ds_StringMap, Object.prototype.hasOwnProperty.call(_, "links")) for (var xe = _.links, Je = Reflect.fields(xe), ze = 0; ze < Je.length; ) { var ke = Je[ze]; ++ze; var Ee = Reflect.field(xe, ke); this.links.set(ke, Ee) } if (this.cheatingMode && (this.cheatingModeHelper = new CheatingModeHelper(_.cheatingModeData)), this.actionBtnsActions = new haxe_ds_StringMap, Object.prototype.hasOwnProperty.call(_, "actionBtns")) for (var Pe = _.actionBtns, Me = Reflect.fields(Pe), we = 0; we < Me.length; ) { var $e = Me[we]; ++we; var Ce = Reflect.field(Pe, $e); this.actionBtnsActions.set($e, Ce) } if (null != _.dialogWindowses && _.dialogWindowses) { var Ge = new DialogsWindowses(_.dialogWindowses); this.gameModes.push(Ge) } if (null != _ && null != _.initAction) { var Oe = _.initAction; new ToolActions(Oe).start() } if (null != _ && null != _.completeAction ? this.levelCompleteActions = _.completeAction : this.levelCompleteActions = null, null != _ && null != _.putAssemblerScores && _.putAssemblerScores) { motion_Actuate.update(function(e) { null != n.levelsTextFields && null != n.levelsTextFields[1] && n.levelsTextFields[1].set_text(Math.floor(e) + "") }, 1, [0], [Assembler.curTime]).ease(motion_easing_Linear.get_easeNone()), this.levelsTextFields[1].set_text(Assembler.curTime + ""), this.levelsTextFields[2].set_text(Assembler.get_bestTime() + "") } if (this.pauseWindow = null, this.paused = !1, this.pauseFill = null, null != this.getElementByName("pauseBtn")) { this.pauseBtns = this.getElementsByName("pauseBtn"), this.pauseWindow = this.getElementsByFolderName("PauseWindow"); for (var Ie = 0, He = this.pauseWindow; Ie < He.length; ) { var Ye = He[Ie]; ++Ie, Ye.set_visible(!1), "pauseFill" == Ye.get_name() && (this.pauseFill = Ye, this.pauseFill.set_x(-this.levels.get_x() - 1 / this.levels.get_scaleX() * 10), this.pauseFill.set_y(-this.levels.get_y() - 1 / this.levels.get_scaleY() * 10), this.pauseFill.set_width((this.main.sWidth + 20) * (1 / this.levels.get_scaleX())), this.pauseFill.set_height((this.main.sHeight + 20) * (1 / this.levels.get_scaleY()))) } } if (this.resumeBtn = this.getElementByName("resumeGameBtn"), -1 != this.lastWinner) { var Ae = this.getElementsByFolderName("Winner" + (3 - this.lastWinner)); if (null != Ae) for (var Le = 0; Le < Ae.length; ) { var Xe = Ae[Le]; ++Le, Xe.set_visible(!1) } } if (this.lastWinner = -1, this.deskHelper.init(_), new EReg("iPad|iPhone|iPod","i").match(window.navigator.userAgent) && !window.MSStream && null != this.getElementByName("screenShotBtn") && this.getElementByName("screenShotBtn").set_visible(!1), null != _.IsOrdersMode && _.IsOrdersMode) { var je = new OrdersGameMode(_.OrdersModeData); this.gameModes.push(je) } var Ke = this.getElementsByFolderName("Statistic"); if (Ke.length > 0 && (this.statWindow = new StatWindow(Ke)), this.statBtn = this.getElementByName("statBtn"), -1 == this.curLevel && Archers.initPrepare(_), null != _.isArchersMode && _.isArchersMode) { var qe = new Archers; this.gameModes.push(qe) } -1 == this.curLevel && this.startNewGame(0) }, intArrSort: function(e, t) { return e == t ? 0 : e - t < 0 ? -1 : 1 }, blink: function() { this.getElementByName("blink").gotoAndStop(0), this.getElementByName("blink").playLabel("blink"), this.blinkTimer = motion_Actuate.timer(this.minTimeToBlink + Math.random() * (this.maxTimeToBlink - this.minTimeToBlink)).onComplete($bind(this, this.blink)) }, getElementByName: function(e) { for (var t = 0, n = this.levels.physicElements; t < n.length; ) { var i = n[t]; if (++t, i.get_name() == e) return i } return null }, getElementByNameInFolder: function(e, t) { for (var n = this.getElementsByFolderName(t), i = 0; i < n.length; ) { var l = n[i]; if (++i, l.get_name() == e) return l } return null }, getElementsByName: function(e) { for (var t = [], n = 0, i = this.levels.physicElements; n < i.length; ) { var l = i[n]; ++n, l.get_name() == e && t.push(l) } return t }, getElementsByLayerNameInFolder: function(e, t) { for (var n = [], i = this.getElementsByFolderName(t), l = 0; l < i.length; ) { var a = i[l]; ++l, a.layerName == e && n.push(a) } return n }, getElementByNameInLayer: function(e, t) { for (var n = this.getElementsByLayerName(t), i = 0; i < n.length; ) { var l = n[i]; if (++i, l.get_name() == e) return l } return null }, getElementsByNamePrefix: function(e) { for (var t = [], n = new EReg(e + "([0-9])+","i"), i = 0, l = this.levels.physicElements; i < l.length; ) { var a = l[i]; ++i, n.match(a.get_name()) && t.push(a) } return t }, getElementsByNamePrefix_: function(e) { for (var t = [], n = new EReg(e + "_(.)+","i"), i = 0, l = this.levels.physicElements; i < l.length; ) { var a = l[i]; ++i, n.match(a.get_name()) && t.push(a) } return t }, getElementsByNamePostfix: function(e) { for (var t = [], n = new EReg(".+" + e,"i"), i = 0, l = this.levels.physicElements; i < l.length; ) { var a = l[i]; ++i, n.match(a.get_name()) && t.push(a) } return t }, getElementsByLayerName: function(e) { for (var t = [], n = 0, i = this.levels.physicElements; n < i.length; ) { var l = i[n]; ++n, l.layerName == e && t.push(l) } return t }, getElementsByFolderName: function(e) { for (var t = [], n = 0, i = this.levels.physicElements; n < i.length; ) { var l = i[n]; ++n, l.groupName == e && t.push(l) } return t }, animateToolsApear: function() { for (var e = this.getElementsByLayerName("UI"), t = 0, n = 0, i = !1, l = 0; l < e.length; ) { var a = e[l]; if (++l, -1 == a.get_name().indexOf("no_apear")) { var s = a.get_x(); if (a.get_x() < Config.baseSWidth / 2) { var r = a; r.set_x(r.get_x() - 200), t += .03, i = !0 } if (a.get_x() > Config.baseSWidth / 2) { n += .03; var _ = a; _.set_x(_.get_x() + 200), i = !1 } motion_Actuate.tween(a, .4, { x: s }).ease(motion_easing_Back.get_easeOut()).delay(i ? t : n) } } }, onResize: function() { if (this.centerResize) { this.levels.set_scaleX(this.levels.set_scaleY(1)); -1 == this.scaleWidth && this.main.sWidth / this.main.sHeight < 1 ? this.levels.set_scaleX(this.levels.set_scaleY(this.main.sWidth / this.main.sHeight / 1)) : -1 != this.scaleWidth && this.main.sWidth / this.main.sHeight < 1 && this.levels.set_scaleX(this.levels.set_scaleY(this.main.sWidth / this.scaleWidth)), this.levels.set_y((this.main.sHeight - Config.baseSHeight * this.levels.get_scaleY()) / 2), this.levels.set_x(this.main.sWidth / 2 - Config.baseSWidth * this.levels.get_scaleY() / 2), this.curScale = this.levels.get_scaleX() } else this.fitCenterResize && null != this.bg ? (this.bg.set_scaleX(this.bg.set_scaleY(1)), this.bg.set_scaleY(this.bg.get_scaleX()), this.bg.set_y(0), this.bg.set_x(this.main.sWidth / 2 - this.bg.get_width() / 2), this.bg.set_y(this.main.sHeight / 2 - this.bg.get_height() / 2), this.curScale = this.bg.get_scaleX(), this.levels.set_x(this.levels.set_y(0)), this.levels.set_scaleX(this.levels.set_scaleY(this.curScale)), this.levels.set_x(this.main.sWidth / 2 - Config.baseSWidth * this.levels.get_scaleY() / 2), this.levels.set_y((this.main.sHeight - Config.baseSHeight * this.levels.get_scaleY()) / 2), this.bg.get_width() < this.main.sWidth && (this.bg.set_width(this.main.sWidth), this.bg.set_x(this.main.sWidth / 2 - this.bg.get_width() / 2), this.bg.set_y(this.main.sHeight / 2 - this.bg.get_height() / 2))) : (this.levels.set_x(this.levels.set_y(0)), this.levels.set_y((this.main.sHeight - Config.baseSHeight * this.levels.get_scaleY()) / 2), this.main.sWidth / this.main.sHeight < 1 ? this.curScale = Math.max(.73, this.main.sWidth / this.main.sHeight) : this.curScale = 1.05, this.levels.set_scaleX(this.levels.set_scaleY(this.curScale))); if (-1 != this.scaleWidth && this.main.sWidth < this.scaleWidth && (this.levels.set_scaleX(this.levels.set_scaleY(this.main.sWidth / this.scaleWidth)), this.levels.set_y((this.main.sHeight - Config.baseSHeight * this.levels.get_scaleY()) / 2), this.levels.set_x(this.main.sWidth / 2 - Config.baseSWidth * this.levels.get_scaleY() / 2), this.curScale = this.levels.get_scaleX()), this.autoAlignTools) { for (var e = 1 / 0, t = -1 / 0, n = 1 / 0, i = this.getElementsByLayerName("UI"), l = 0; l < i.length; ) { var a = i[l]; ++l, motion_Actuate.stop(a, null, !1, !1), a.set_x(this.initToolsX.h[a.__id__]); var s = a.getBounds(a.parent); s.get_left() < e && (e = s.get_left()), s.get_right() > t && (t = s.get_right()), s.get_top() < n && (n = s.get_top()) } e += this.offsetToolsXOnSides, t -= this.offsetToolsXOnSides; for (var r = this.main.sWidth / this.levels.get_scaleX() / 2 - (Config.baseSWidth / 2 - e), _ = this.main.sWidth / this.levels.get_scaleX() / 2 - (t - Config.baseSWidth / 2), o = -this.levels.get_y() / this.levels.get_scaleY() - this.initToolsMostTop, p = 0; p < i.length; ) { var h = i[p]; ++p, this.initToolsPosIsLeft.h[h.__id__] && h.set_x(h.get_x() - r - this.addonPanelsOffsetX), this.initToolsPosIsLeft.h[h.__id__] || h.set_x(h.get_x() + _ + this.addonPanelsOffsetX), h.set_y(Math.max(this.initToolsY.h[h.__id__] + o, this.initToolsY.h[h.__id__] + 1500 * (this.levels.get_scaleY() - 1))) } } if (null == this.bg || this.fitCenterResize || (this.bg.set_scaleX(this.bg.set_scaleY(1)), this.bg.set_scaleX(this.bg.set_scaleY(this.main.sHeight / this.bg.get_height())), this.bg.get_width() < this.main.sWidth && this.bg.set_width(this.main.sWidth), this.bg.set_scaleY(this.bg.get_scaleX()), this.bg.set_y(this.main.sHeight / 2 - this.bg.get_height() / 2), this.bg.set_x(this.main.sWidth / 2 - this.bg.get_width() / 2)), -1 != this.scaleWidth && this.main.sWidth < this.scaleWidth && (this.bg.set_scaleX(this.bg.set_scaleY(this.levels.get_scaleX())), this.bg.set_x(this.main.sWidth / 2 - this.bg.get_width() / 2), this.bg.set_y(this.main.sHeight / 2 - this.bg.get_height() / 2)), null != this.bgTop && (this.bgTop.set_scaleX(this.bg.get_scaleX()), this.bgTop.set_scaleY(this.bg.get_scaleY()), this.bg.get_y() > this.bgTop.get_height() && this.bgTop.set_height(this.bg.get_y()), this.bgTop.set_y(this.bg.get_y() - this.bgTop.get_height())), null != this.bgBot && (this.bgBot.set_scaleX(this.bg.get_scaleX()), this.bgBot.set_scaleY(this.bg.get_scaleY()), this.main.sHeight - (this.bg.get_y() + this.bg.get_height()) > this.bgBot.get_height() && this.bgBot.set_height(this.main.sHeight - (this.bg.get_y() + this.bg.get_height())), this.bgBot.set_y(this.bg.get_y() + this.bg.get_height())), null != this.toolsHighlighterAlignTarget && null != this.toolsHighlighter && (this.toolsHighlighter.set_x(this.toolsHighlighterAlignTarget.get_x()), this.toolsHighlighter.set_y(this.toolsHighlighterAlignTarget.get_y())), null != this.nextBtn && (this.nextBtn.set_x(Config.baseSWidth / 2), this.nextBtn.set_y(-this.levels.get_y() / this.levels.get_scaleY() + this.main.sHeight / this.levels.get_scaleY() - this.nextBtn.get_height() / 2 - 10)), null != this.pauseFill && (this.pauseFill.set_x(-this.levels.get_x() - 1 / this.levels.get_scaleX() * 10), this.pauseFill.set_y(-this.levels.get_y() - 1 / this.levels.get_scaleY() * 10), this.pauseFill.set_width((this.main.sWidth + 20) * (1 / this.levels.get_scaleX())), this.pauseFill.set_height((this.main.sHeight + 20) * (1 / this.levels.get_scaleY()))), null != this.moreGamesBtn && (this.moreGamesBtn.set_x(Config.baseSWidth / 2 - this.moreGamesBtn.get_width() / 2), this.moreGamesBtn.set_y(-this.levels.get_y() / this.levels.get_scaleY() + this.main.sHeight / this.levels.get_scaleY() - this.moreGamesBtn.get_height() - 10)), null != this.gameLogo && (this.gameLogo.set_scaleX(this.gameLogo.set_scaleY(1)), 1 != this.levels.get_scaleX() && this.gameLogo.set_scaleX(this.gameLogo.set_scaleY(1 / this.levels.get_scaleX() * .9)), this.gameLogo.set_x(this.gameLogoInitX), this.gameLogo.set_y(this.gameLogoInitY), this.main.sWidth / this.main.sHeight < 1.2)) { var d = this.gameLogo; d.set_x(d.get_x() + this.maxLogoDx * Math.min(1, 2 * (1.2 - this.main.sWidth / this.main.sHeight))); var u = this.gameLogo; u.set_y(u.get_y() + (-this.levels.get_y() / this.levels.get_scaleY() - this.gameLogo.getBounds(this.levels).get_top())) } null != this.statWindow && this.statWindow.onResize(), null != this.cheatingModeHelper && this.cheatingModeHelper.onResize(), null != this.fightingMode && this.fightingMode.onResize(), null != this.deskHelper && this.deskHelper.onResize(); var c = this.getElementsByName("topHalfCentre"); if (this.main.sWidth < this.main.sHeight) for (var m = 0; m < c.length; ) { var U = c[m]; ++m, U.set_y(-this.levels.get_y() / this.levels.get_scaleY() + this.main.sHeight / this.levels.get_scaleY() / 2 / 2), this.levels.get_y() / this.levels.get_scaleY() + U.get_height() / 2 / this.levels.get_scaleY() < 0 && U.set_y(this.levels.get_y() / this.levels.get_scaleY() + U.get_height() / 2 / this.levels.get_scaleY()) } else for (var Q = 0; Q < c.length; ) { var N = c[Q]; ++Q, N.set_y(this.levels.get_y() / this.levels.get_scaleY() + N.get_height() / 2 / this.levels.get_scaleY()) } for (var F = 0, Z = this.gameModes; F < Z.length; ) { var f = Z[F]; ++F, f.onResize() } }, restartLevel: function() { this.startNewGame(this.curLevel) }, nextLevel: function() { this.startNewGame(this.curLevel + 1) }, animateToolClick: function(e) { motion_Actuate.stop(e, null, !0, !0); var t = this.getElementByName(e.get_name() + "_shaddow") , n = 1.3 * e.get_scaleX() , i = 1.3 * e.get_scaleY() , l = [e]; null != t && l.push(t), e.set_forcedRenderFrame(0); for (var a = 0, s = l.length; a < s; ) { var r = a++; motion_Actuate.tween(l[r], .17, { scaleX: n, scaleY: i }).ease(motion_easing_Back.get_easeIn()).repeat(1).reflect(!0).onComplete($bind(this, this.onToolClickAnimEnd), [{ target: l[r], scaleX: l[r].get_scaleX(), scaleY: l[r].get_scaleY() }]) } null != this.toolsHighlighter && (this.toolsHighlighter.set_visible(!0), this.toolsHighlighter.get_x() == e.get_x() && this.toolsHighlighter.get_y() == e.get_y() || (this.toolsHighlighterAlignTarget = e, this.toolsHighlighter.set_x(e.get_x()), this.toolsHighlighter.set_y(e.get_y()), this.toolsHighlighter.set_scaleX(.01), this.toolsHighlighter.set_scaleX(.01), motion_Actuate.tween(this.toolsHighlighter, .3, { scaleX: 1, scaleY: 1 }).ease(motion_easing_Back.get_easeOut()), null != this.toolsHighlighter.parent && this.toolsHighlighter.parent.removeChild(this.toolsHighlighter), this.levels.addChildAt(this.toolsHighlighter, this.levels.getChildIndex(e)))), this.main.playSpriteSound("click1") }, onToolClickAnimEnd: function(e) { js_Boot.__instanceof(e.target, MovieClipExt) && js_Boot.__cast(e.target, MovieClipExt).set_forcedRenderFrame(-1), e.target.set_scaleX(e.scaleX), e.target.set_scaleY(e.scaleY) }, onBtnAnimEndFun: null, animateBtnClick: function(e, t, n) { null == n && (n = !1), motion_Actuate.stop(e, null, !0, !0), this.onBtnAnimEndFun = t; var i = 1.3 * e.get_scaleX() , l = 1.3 * e.get_scaleY(); motion_Actuate.tween(e, .17, { scaleX: i, scaleY: l }).ease(motion_easing_Back.get_easeIn()).repeat(1).reflect(!0).onComplete($bind(this, this.onBtnClickAnimEnd), [{ target: e, scaleX: e.get_scaleX(), scaleY: e.get_scaleY() }]), this.main.sounds.hasSpriteName("BtnSound") ? n || this.main.playSpriteSound("BtnSound") : n || this.main.playSpriteSound("click1") }, onBtnClickAnimEnd: function(e) { console.log("确认开始") e.target.set_scaleX(e.scaleX), e.target.set_scaleY(e.scaleY), null != this.onBtnAnimEndFun && this.onBtnAnimEndFun(), this.onBtnAnimEndFun = null }, wasHideAllTutors: null, prepareTool: function(e) { null == e && (e = !1), this.wasHideAllTutors = e, this.isBlockedAction = !1; for (var t, n, i = 0, l = this.toolsArr; i < l.length; ) { var a, s = l[i]; ++i; var r = s.get_name(); a = this.toolsConfig.get(r), e || -1 == HxOverrides.indexOf(a.sequenceIndex, this.currentSequent, 0) ? s.hasLabel("tutor1") && -1 == s.curLabel.indexOf("tutor2") && 1 != s.curFrame && !(t = this, void 0, n = s.get_name(), t.toolsConfig.get(n)).sequent && s.gotoAndStop(0) : (null != a.isBlockedAction && js_Boot.__cast(a.isBlockedAction, Bool) && (this.isBlockedAction = !0), a.isInitActive ? (null != a._initActions && a._initActions.start(), s.hasLabel("tutor1") && s.playLabel("tutor1")) : null != a._initActions && a._initActions.start()) } }, activateCurrentTool: function() { for (var e = 0, t = this.toolsArr; e < t.length; ) { var n, i = t[e]; ++e; var l = i.get_name(); n = this.toolsConfig.get(l), this.wasHideAllTutors || -1 == HxOverrides.indexOf(n.sequenceIndex, this.currentSequent, 0) || (null != n.isBlockedAction && js_Boot.__cast(n.isBlockedAction, Bool) && (this.isBlockedAction = !0), i.hasLabel("tutor1") && i.playLabel("tutor1")) } }, nextTool: function() { this.changeToNextTool() }, animationToolClick: function(e) { var t, n = e.get_name(); (t = this.toolsConfig.get(n), this.main.isKeyDown(17) || -1 != HxOverrides.indexOf(t.sequenceIndex, this.currentSequent, 0)) && (this.animateToolClick(e), this.isAnimation = !0, this.getElementByName(t.target[0]).set_visible(!0), this.getElementByName(t.target[0]).gotoAndStop(0), this.getElementByName(t.target[0]).playWithCallBack($bind(this, this.onAnimEnd)), null != t.mainAction && new ToolActions(t.mainAction).start()) }, onAnimEnd: function(e) { e.set_visible(!1), this.isAnimation = !1, this.changeToNextTool() }, animateBtnApear: function(e) { e.set_scaleX(e.set_scaleY(.01)), motion_Actuate.tween(e, .3, { scaleX: 1, scaleY: 1 }).ease(motion_easing_Back.get_easeOut()) }, changeFrameToolClick: function(e) { var t, n = e.get_name(); t = this.toolsConfig.get(n); var i = e.get_name(); if (this.toolsConfig.get(i), t.isAnimFrames) t.curFrameIndex++, this.getElementByName(t.target[0]).hasLabel("state" + t.curFrameIndex + "_1") || (t.curFrameIndex = 1), this.getElementByName(t.target[0]).playLabel("state" + t.curFrameIndex + "_1", $bind(this, this.onChangeToolAnimEnd)); else if (t.isFramesRange) { var l = this.getElementByName(t.target[0]); l.nextFrame(), (Math.floor(l.curFrame) > t.framesRange[1] || Math.floor(l.curFrame) < t.framesRange[0]) && l.gotoAndStop(t.framesRange[0]) } else this.getElementByName(t.target[0]).nextFrame(); (1 != e.curFrame && -1 == e.curLabel.indexOf("tutor2") && this.numUsedTools++, e.hasLabel("tutor2_1") && -1 == e.curLabel.indexOf("tutor2") && 1 != e.curFrame ? e.playLabel("tutor2_1", function(t) { e.playLabel("tutor2_2") }) : e.gotoAndStop(1), this.animateToolClick(e), this.numUsedTools >= this.totalInSequent && null != this.nextBtn && (this.nextBtn.get_visible() || this.animateBtnApear(this.nextBtn), this.nextBtn.set_visible(!0)), null != t.mainAction) && new ToolActions(t.mainAction).start() }, onChangeToolAnimEnd: function(e) { 1 == Std.parseInt(e.curLabel.split("_")[e.curLabel.split("_").length - 1]) && e.playLabel(e.curLabel.split("_")[0] + "_2") }, actionToolClick: function(e) { var t, n = e.get_name(); (t = this.toolsConfig.get(n), this.main.isKeyDown(17) || -1 != HxOverrides.indexOf(t.sequenceIndex, this.currentSequent, 0)) && (null != t.scaleData && this.scaleObjects(t), this.animateToolClick(e), new ToolActions(t.mainAction).start()) }, tryPlayToolMainAction: function(e) { null != e.mainAction && new ToolActions(e.mainAction).start() }, objectsRemoveToolClick: function(e) { var t, n = e.get_name(); t = this.toolsConfig.get(n), (this.main.isKeyDown(17) || -1 != HxOverrides.indexOf(t.sequenceIndex, this.currentSequent, 0)) && (this.tryPlayToolMainAction(t), this.animateToolClick(e), this.isObjectRemoving = !0, this.objectsToRemove = this.getElementsByNamePrefix_(t.target[0]), null != t.scaleData && this.scaleObjects(t), null != t.hasTutor && t.hasTutor || (this.removeTutorObject = null, null != t.tutorName && (this.removeTutor = this.getElementByName(t.tutorName))), Object.prototype.hasOwnProperty.call(t, "removeSound") ? this.objectsRemoveSound = t.removeSound : this.objectsRemoveSound = null, this.showRemoveTutor()) }, scaleObjects: function(e) { for (var t = this.getElementsByFolderName(e.scaleData.scalePrefixName); this.scaledObjectsInits.length > 0; ) this.scaledObjectsInits.pop(); for (var n = 0; n < t.length; ) { var i = t[n]; ++n, this.scaledObjectsInits.push({ object: i, x: i.get_x(), y: i.get_y(), sx: i.get_scaleX(), sy: i.get_scaleY() }), this.hm.copyFrom(i.get_transform().get_matrix()), this.hm.translate(-e.scaleData.x, -e.scaleData.y), this.hm.scale(e.scaleData.scale, e.scaleData.scale), this.hm.translate(e.scaleData.x, e.scaleData.y), i.get_transform().set_matrix(this.hm.clone()); var l = i.get_x() , a = i.get_y() , s = i.get_scaleX() , r = i.get_scaleY(); i.set_x(this.scaledObjectsInits[this.scaledObjectsInits.length - 1].x), i.set_y(this.scaledObjectsInits[this.scaledObjectsInits.length - 1].y), i.set_scaleX(this.scaledObjectsInits[this.scaledObjectsInits.length - 1].sx), i.set_scaleY(this.scaledObjectsInits[this.scaledObjectsInits.length - 1].sy), motion_Actuate.tween(i, .4, { x: l, y: a, scaleX: s, scaleY: r }) } }, showRemoveTutor: function() { if (null != this.removeTutor) { if (null == this.removeTutorObject || -1 == HxOverrides.indexOf(this.objectsToRemove, this.removeTutorObject, 0)) { this.removeTutorObject = this.objectsToRemove[Std.random(this.objectsToRemove.length)]; var e = this.removeTutorObject.getBounds(this.levels); this.removeTutor.isPlaying || this.removeTutor.play(), this.removeTutor.set_visible(!0), this.removeTutor.set_x(e.x + e.width / 2), this.removeTutor.set_y(e.y + e.height / 2) } } else { for (var t = 0, n = this.objectsToRemove; t < n.length; ) { var i = n[t]; if (++t, i.isPlaying) return } var l = this.objectsToRemove[Std.random(this.objectsToRemove.length)]; l.playLabel("tutor1"), l.parent.setChildIndex(l, l.parent.get_numChildren() - 1) } }, isRemoveObjectsClick: function() { if (!this.isBlockedAction) { for (var e = !1, t = 0, n = this.objectsToRemove; t < n.length; ) { var i = n[t]; if (++t, this.hitsMouse(i, !0, this.main.isMobileBrowser ? 3 : 1)) { e = !0, HxOverrides.remove(this.objectsToRemove, i), this.removeFromScaled(i), i.set_visible(!1), this.objectsToRemove.length > 0 ? this.showRemoveTutor() : (this.isObjectRemoving = !1, this.removeTutorObject = null, null != this.removeTutor && this.removeTutor.set_visible(!1), this.removeTutor = null, this.changeToNextTool()); break } } e && this.playSoundData(this.objectsRemoveSound) } }, removeFromScaled: function(e) { for (var t = 0, n = this.scaledObjectsInits; t < n.length; ) { var i = n[t]; if (++t, i.object == e) { HxOverrides.remove(this.scaledObjectsInits, i); break } } }, hitHitzoneToolClick: function(e) { var t, n = e.get_name(); t = this.toolsConfig.get(n), (this.main.isKeyDown(17) || -1 != HxOverrides.indexOf(t.sequenceIndex, this.currentSequent, 0)) && (null != t.scaleData && this.scaleObjects(t), null != t.progressBar && (this.currentProgressBar = new ProgressBarData(t)), this.tryPlayToolMainAction(t), this.draggingObject = this.getElementByName(t.dragingObject), this.draggingObject.totalFrames > 1 && this.draggingObject.play(), Object.prototype.hasOwnProperty.call(t, "dragSound") ? this.dragSound = t.dragSound : this.dragSound = null, this.curHitZone = this.getElementByName(t.target[0]), null == t.noHitTutor ? this.curHitTutor = null : this.curHitTutor = this.getElementByName(t.noHitTutor), null != this.curHitTutor && (this.curHitTutor.play(), this.curHitTutor.isLoop = !0), this.curHitCounter = 1e3 * t.hitCounter, this.initHitCounter = this.curHitCounter, this.isHitHizone = !0, Object.prototype.hasOwnProperty.call(t, "dragSound") ? this.dragSound = t.dragSound : this.dragSound = null) }, updateHitHizone: function(e) { if (!this.isBlockedAction) { this.draggingObject.set_visible(this.main.isMouseDown); var t = this.getMouseCoordsInLevels(); if (this.draggingObject.set_x(t.x), this.draggingObject.set_y(t.y), null != this.curHitTutor && this.curHitTutor.set_visible(!1), null != this.curHitZone && this.hitsMouse(this.curHitZone) && this.main.isMouseDown) { if (this.curHitCounter -= e, this.playSoundData(this.dragSound, !0), null != this.currentProgressBar && this.currentProgressBar.setProgress(-1 * (Math.max(this.curHitCounter, 0) - this.initHitCounter) / this.initHitCounter * 100), this.curHitCounter <= 0) { var n = this.getCurrentToolConfig(); null != n && null != n.completeAction ? (this.isHitHizone = !1, new ToolActions(n.completeAction).start()) : (this.isHitHizone = !1, this.changeToNextTool()) } } else null != this.curHitZone && null != this.curHitTutor && (this.curHitTutor.set_visible(!0), this.stopSoundData(this.dragSound)) } }, getCurrentToolConfig: function() { for (var e, t, n = null, i = 0, l = this.toolsArr; i < l.length; ) { var a = l[i]; if (++i, -1 != (t = void 0, t = function(e) { var t = a.get_name(); return e.toolsConfig.get(t) }(e = this).sequenceIndex, HxOverrides.indexOf(t, e.currentSequent, 0))) { var s = a.get_name(); n = this.toolsConfig.get(s); break } } return n }, hideLastMask: function() { null != this.curMaskBm && null != this.curMaskBm.bitmapData && this.curMaskBm.set_bitmapData(new openfl_display_BitmapData(this.curMaskBm.bitmapData.width,this.curMaskBm.bitmapData.height,!0,0)) }, getElementBitmapBatch: function(e) { return js_Boot.__cast(e.getChildAt(0), openfl_display_Sprite).getChildAt(0) }, getElementBitmapData: function(e) { var t = this.getElementBitmapBatch(e); return t.batch.getBitmapData(t.imName) }, getToolMask: function(e, t, n) { null == n && (n = !1); var i = this.getElementByName(e); i.gotoAndStop(t - 1); var l = new openfl_display_Bitmap(this.getElementBitmapData(i),1,!0); return this.hm.copyFrom(l.get_transform().get_matrix()), this.hm.concat(i.get_transform().get_matrix()), l.get_transform().set_matrix(this.hm.clone()), this.levels.addChildAt(l, this.levels.getChildIndex(i)), this.curMaskBmd = l.bitmapData.clone(), this.curMaskBm = l, n && l.set_bitmapData(new openfl_display_BitmapData(l.bitmapData.width,l.bitmapData.height,!0,0)), l }, prepareBrush: function(e) { this.curBrushObj = this.getElementByName(e), this.curBrushBmd = this.getElementBitmapData(this.curBrushObj) }, maskDrawEraseToolClick: function(e, t) { var n, i = e.get_name(); if (n = this.toolsConfig.get(i), this.main.isKeyDown(17) || -1 != HxOverrides.indexOf(n.sequenceIndex, this.currentSequent, 0)) { if (null != n.scaleData && this.scaleObjects(n), this.tryPlayToolMainAction(n), this.isDrawingMask = t, this.isErasingMask = !t, this.isAutoMask = null != n.isAutoMask && n.isAutoMask, this.isAutoMaskAction = !1, this.timeToDrawEraseTutor = this.initTimeToDrawEraseTutor, this.animateToolClick(e), this.isDrawingMask || "PREVIOUS" != n.target[HxOverrides.indexOf(n.sequenceIndex, this.currentSequent, 0)]) this.getToolMask(n.target[HxOverrides.indexOf(n.sequenceIndex, this.currentSequent, 0)], n.maskIndex, t); this.prepareBrush(n.brushObject), this.isAutoMask && this.curBrushObj.set_x(this.curBrushObj.set_y(-1e3)), this.draggingObject = this.getElementByName(n.dragingObject), this.draggingObject.totalFrames > 1 && this.draggingObject.play(), Object.prototype.hasOwnProperty.call(n, "dragSound") ? this.dragSound = n.dragSound : this.dragSound = null } }, updateDrawEraseMask: function() { if (!this.isBlockedAction) { this.draggingObject.set_visible(!0); var e = this.getMouseCoordsInLevels(); this.draggingObject.set_x(e.x), this.draggingObject.set_y(e.y), this.curBrushObj.set_x(this.hp.x), this.curBrushObj.set_y(this.hp.y), this.drawEraseMask(this.isDrawingMask) } }, makeAutoMask: function() { if (!this.isAutoMaskAction) { this.isAutoMaskAction = !0, this.curBrushObj.set_x(this.curMaskBm.get_x() - 3), this.curBrushObj.set_y(this.curMaskBm.get_y() - 3); if (motion_Actuate.tween(this.curBrushObj, 2.5, { y: this.curBrushObj.get_y() + this.curMaskBm.get_height() + 10 }).onComplete($bind(this, this.endMaskTool)).ease(motion_easing_Sine.get_easeOut()), null != this.draggingObject) { this.draggingObject.set_visible(!0); var e = .1 * this.curMaskBm.get_width(); this.draggingObject.set_x(this.curMaskBm.get_x() + e / 2), this.draggingObject.set_y(this.curBrushObj.get_y()); motion_Actuate.tween(this.draggingObject, 2.5, { y: this.draggingObject.get_y() + this.curMaskBm.get_height() + 10 }).ease(motion_easing_Sine.get_easeOut()), motion_Actuate.tween(this.draggingObject, 2.5 / 6, { x: this.draggingObject.get_x() + this.curMaskBm.get_width() - e }, !1).reflect().repeat(5).ease(motion_easing_Sine.get_easeInOut()) } } }, endMaskTool: function() { this.isDrawingMask = !1, this.isErasingMask = !1, this.isAutoMask = !1, this.isAutoMaskAction = !1, this.changeToNextTool(), null != this.draggingObject && this.draggingObject.set_visible(!1) }, drawEraseMask: function(e) { var t = js_Boot.__cast(this.curBrushObj.getChildAt(0), openfl_display_Sprite).getChildAt(0).get_x() , n = js_Boot.__cast(this.curBrushObj.getChildAt(0), openfl_display_Sprite).getChildAt(0).get_y() , i = this.curBrushObj.get_x() - this.curMaskBm.get_x() + t , l = this.curBrushObj.get_y() - this.curMaskBm.get_y() + n , a = this.curMaskBm.bitmapData; this.curMaskBm.bitmapData.lock(); var s = Math.floor(i) , r = Math.floor(l) , _ = this.curBrushBmd.width , o = this.curBrushBmd.height; if (e) for (var p = 0; p < _; ) for (var h = p++, d = 0; d < o; ) { var u = d++; 0 != this.curBrushBmd.getPixel32(h, u) && a.setPixel32(s + h, r + u, this.curMaskBmd.getPixel32(s + h, r + u)) } else for (var c = 0; c < _; ) for (var m = c++, U = 0; U < o; ) { var Q = U++; 0 != this.curBrushBmd.getPixel32(m, Q) && a.setPixel32(s + m, r + Q, 0) } this.curMaskBm.bitmapData.unlock(), this.curMaskBm.smoothing = !0 }, checkMaskUndonePos: function(e) { var t = this.curMaskBmd.width , n = this.curMaskBmd.height , i = this.curMaskBmd , l = this.curMaskBm.bitmapData , a = []; if (e) for (var s, r, _ = 0; _ < t; ) for (var o = _++, p = 0; p < n; ) { var h = p++; s = i.getPixel32(o, h), r = l.getPixel32(o, h), 0 != (s >> 24 & 255) && s != r && Math.abs((s >> 24 & 255) - (r >> 24 & 255)) > 10 && (a.push(o), a.push(h)) } else for (var d = 0; d < t; ) for (var u = d++, c = 0; c < n; ) { var m = c++; 0 != l.getPixel32(u, m) && (a.push(u), a.push(m)) } if (a.length < 50) { if (e) { var U = this.curMaskBm.bitmapData; this.curMaskBm.set_bitmapData(this.curMaskBmd.clone()), U.dispose() } else { var Q = this.curMaskBm.bitmapData; this.curMaskBm.set_bitmapData(new openfl_display_BitmapData(Q.width,Q.height,!0,0)), Q.dispose() } return this.curMaskBm.smoothing = !0, null } if (0 == a.length) return null; var N = Std.random(a.length / 2 | 0); return this.hp.x = a[2 * N] + this.curMaskBm.get_x(), this.hp.y = a[2 * N + 1] + this.curMaskBm.get_y(), this.hp }, getMouseCoordsInLevels: function() { return this.hp.x = this.main.get_mouseX(), this.hp.y = this.main.get_mouseY(), this.hm.copyFrom(this.levels.get_transform().get_matrix()), this.hm.concat(this.get_transform().get_matrix()), this.hm.invert(), this.hp = this.hm.transformPoint(this.hp), this.hp }, toolClick: function(e) { if (!(this.isDrawingMask || this.isErasingMask || this.isAnimation || this.isObjectRemoving || this.isHitHizone)) { var t; this.prepareTool(!0); var n = e.get_name(); if (t = this.toolsConfig.get(n), e.hasLabel("tutor1") && t.sequent && e.gotoAndStop(0), "CHANGE_FRAME" == t.action) this.changeFrameToolClick(e); else if ("MASK_DRAW" == t.action) this.maskDrawEraseToolClick(e, !0); else if ("MASK_ERASE" == t.action) this.maskDrawEraseToolClick(e, !1); else if ("OBJECTS_REMOVE" == t.action) this.objectsRemoveToolClick(e); else if ("ANIMATION" == t.action) this.animationToolClick(e); else if ("ACTION" == t.action) this.actionToolClick(e); else if ("HIT_HITZONE" == t.action) this.hitHitzoneToolClick(e); else if ("HIT_HITZONE_ANIMATION" == t.action) { var i = !0; this.main.isKeyDown(17) || -1 != HxOverrides.indexOf(t.sequenceIndex, this.currentSequent, 0) || (i = !1), i && (this.tryPlayToolMainAction(t), this.animateToolClick(e), this.isToolActive = !0, this.activeTool = new tools_HitHitzoneAnimation(t)) } } }, fonSoundStarted: null, checkSoundsStart: function() { Sounds.current.canPlaySound && (this.fonSoundStarted || "fon" != this.curFonSound ? "" != this.curFonSound && !this.fonSoundStarted && this.main.sounds.canPlaySound && (this.main.playSpriteMusicE(this.curFonSound, !0), this.fonSoundStarted = !0) : (this.main.playSpriteMusicE("fon", !0), this.fonSoundStarted = !0)) }, playClick: function() { this.nextLevel(), this.checkSoundsStart() }, restartClick: function() { this.startNewGame(0), Main.showAdPublisherApi(!0), Game_uptapAnalytics.trackEvent("EVENT_LEVELSTART", { levelName: "game" }) }, showFinishScreenBtns: function() { for (var e = 0, t = this.finishScreenBtns; e < t.length; ) { var n = t[e]; ++e, n.set_scaleX(n.set_scaleY(.001)), n.set_visible(!0), motion_Actuate.timer(.35).onComplete($bind(this, this.animateBtnApear), [n]) } this.fireIsActive || this.fireIsActive || this.showFireWork() }, showFireWork: function() { if (this.fireIsActive = !0, !this.main.fullStop) { this.fireWorkLayer.parent != this.main && this.main.addChild(this.fireWorkLayer); var e = new firework_Firework(this.fireWorkLayer,100 + Math.random() * (this.main.sWidth - 200),100 + Math.random() * (this.main.sHeight - 200)); this.fireWorks.push(e) } this.fireWorkTimer = motion_Actuate.timer(this.fireWorkInterval).onComplete($bind(this, this.showFireWork)) }, nextClick: function() { var e = this , t = null != this.nextBtn && "nextBtnSelection" == this.nextBtn.get_name(); if (this.passedLevels.push(this.curLevel), this.curLevel != this.main.lastLevel) this.main.playSpriteSound("LevelsChange"), -1 != this.nextBtnClickLevel ? this.startNewGame(this.nextBtnClickLevel) : t ? this.startNewGame(0, !0) : this.nextLevel(); else { if (this.main.playSpriteSound("Win"), this.showFinishScreenBtns(), null != this.nextBtn) { if (motion_Actuate.tween(this.nextBtn, .2, { alpha: .001 }).delay(.3).onComplete(function() { e.nextBtn.set_visible(!1) }), null != this.restartBtn) { this.deskHelper.onFinishScreen(), this.restartBtn.set_scaleX(this.restartBtn.set_scaleY(.001)), this.restartBtn.set_visible(!0), motion_Actuate.timer(.35).onComplete($bind(this, this.animateBtnApear), [this.restartBtn]); var n = this.getElementsByLayerName("UI"); this.addonPanelsOffsetX = 200; for (var i = 0; i < n.length; ) { var l = n[i]; ++i, motion_Actuate.tween(l, .4, { x: l.get_x() + (l.get_x() < Config.baseSWidth / 2 ? -this.addonPanelsOffsetX : this.addonPanelsOffsetX) }).ease(motion_easing_Back.get_easeOut()) } } null != this.toolsHighlighter && (this.toolsHighlighter.set_visible(!1), this.toolsHighlighterAlignTarget = null) } this.isBusy = !1 } }, soundClick: function() { this.main.sounds.muted ? this.main.unMute() : this.main.mute(), this.updateSoundBtn() }, updateSoundBtn: function() { null != this.soundBtn && this.soundBtn.gotoAndStop(this.main.sounds.muted ? 1 : 0) }, speedClick: function() {}, hitsMouse: function(e, t, n) { null == n && (n = 1), null == t && (t = !1), this.hp.x = openfl_Lib.current.stage.get_mouseX(), this.hp.y = openfl_Lib.current.stage.get_mouseY(); var i = e.getChildAt(0); return (i.get_numChildren() > 0 ? i.getChildAt(i.get_numChildren() - 1) : i).getBounds(openfl_Lib.current.stage).contains(this.hp.x, this.hp.y) }, changeToNextTool: function() { null != this.dragSound && this.stopSoundData(this.dragSound), this.dragSound = null; var e = this.getCurrentToolConfig(); if (null != e && null != e._endActions && e._endActions.start(), null != this.scaledObjectsInits && this.scaledObjectsInits.length > 0 && (null != e || null == e.scaleData || null == e.scaleData.scaleBack || js_Boot.__cast(e.scaleData.scaleBack, Bool))) { for (var t = 0, n = this.scaledObjectsInits; t < n.length; ) { var i = n[t]; ++t, motion_Actuate.tween(i.object, .4, { x: i.x, y: i.y, scaleX: i.sx, scaleY: i.sy }) } for (; this.scaledObjectsInits.length > 0; ) this.scaledObjectsInits.pop() } (this.curHitZone = null, null != this.currentProgressBar && this.currentProgressBar.onEnd(), this.currentProgressBar = null, this.currentSequent++, this.numUsedTools++, this.numUsedTools >= this.totalInSequent) && (null != this.nextBtn && (this.nextBtn.set_visible(!0), this.animateBtnApear(this.nextBtn)), null != this.levelCompleteActions && new ToolActions(this.levelCompleteActions).start()); this.prepareTool(), null != this.drawEraseTutor && this.drawEraseTutor.set_visible(!1), null != this.toolsHighlighter && (this.toolsHighlighter.set_visible(!1), this.toolsHighlighterAlignTarget = null) }, showDrawEraseTutor: function() { if (!this.isBlockedAction && null != this.drawEraseTutor && !this.drawEraseTutor.get_visible()) { var e = this.checkMaskUndonePos(this.isDrawingMask); null != e && (this.drawEraseTutor.set_visible(!0), this.drawEraseTutor.gotoAndStop(0), this.drawEraseTutor.play(), this.drawEraseTutor.set_x(e.x), this.drawEraseTutor.set_y(e.y)) } }, onClick: function(e) { if (null != this.externalLinksBtns) for (var t = 0, n = this.externalLinksBtns; t < n.length; ) { var i = n[t]; if (++t, (null == this.closeGameBtn || !this.closeGameBtn.get_visible() || "AndroidCloseWindow" == i.layerName) && i.get_visible() && 0 != i.get_alpha() && i.getBounds(openfl_Lib.current.stage).contains(openfl_Lib.current.get_mouseX(), openfl_Lib.current.get_mouseY())) { var l = null , a = i.get_name() , s = ""; -1 != a.indexOf("_multi") && (a = StringTools.replace(a, "_multi", ""), s = "_" + (Math.floor(i.curFrame) + 1)), null != (l = this.links.exists(a + s) ? this.links.get(a + s) : null) && "chartboost:more_games" == l || null != l && "gpg:ShowScoreboard" == l || null != l && "gpg:ShowAchievments" == l || null != l && "iap:remove_ads" == l || null != l && "RewardedVideo" == l || null != l && Config.openLink(l) } } if (null != this.finishScreenBtns) for (var r = 0, _ = this.finishScreenBtns; r < _.length; ) { var o = _[r]; if (++r, (null == this.closeGameBtn || !this.closeGameBtn.get_visible() || "AndroidCloseWindow" == o.layerName) && o.get_visible() && 0 != o.get_alpha() && o.getBounds(openfl_Lib.current.stage).contains(openfl_Lib.current.get_mouseX(), openfl_Lib.current.get_mouseY())) { var p = null , h = o.get_name() , d = ""; -1 != h.indexOf("_multi") && (h = StringTools.replace(h, "_multi", ""), d = "_" + (Math.floor(o.curFrame) + 1)), null != (p = this.links.exists(h + d) ? this.links.get(h + d) : null) && "chartboost:more_games" == p || null != p && "gpg:ShowScoreboard" == p || null != p && "gpg:ShowAchievments" == p || null != p && "iap:remove_ads" == p || null != p && "RewardedVideo" == p || null != p && Config.openLink(p) } } }, showPauseWindow: function() { if (this.paused = !0, motion_Actuate.pauseAll(), null != this.pauseWindow && 0 != this.pauseWindow.length) { for (var e = 0, t = this.pauseWindow; e < t.length; ) { var n = t[e]; if (++e, n.set_visible(!0), "pauseFill" == n.get_name()) n.set_alpha(.01), motion_Actuate.tween(n, .4, { alpha: 1 }).ease(motion_easing_Linear.get_easeNone()); else { var i = n.get_y() , l = n; l.set_y(l.get_y() + 700), motion_Actuate.tween(n, .4, { y: i }).ease(motion_easing_Back.get_easeOut()).delay(.1 * Math.random()) } } Game_uptapAnalytics.trackScreen(Game_uptapAnalytics.SCREEN_PAUSE) } }, resume: function() { var e = this; if (null != this.pauseWindow && 0 != this.pauseWindow.length) { for (var t = 0, n = this.pauseWindow; t < n.length; ) { var i = n[t]; if (++t, "pauseFill" == i.get_name()) motion_Actuate.tween(i, .4, { alpha: .01 }).ease(motion_easing_Linear.get_easeNone()).onComplete(function(e) { e.set_visible(!1) }, [i]); else { var l = i.get_y(); motion_Actuate.tween(i, .3, { y: i.get_y() + 700 }).ease(motion_easing_Back.get_easeIn()).delay(.1 * Math.random()).onComplete(function(e, t) { e.set_visible(!1), e.set_y(t) }, [i, l]) } } motion_Actuate.timer(.4).onComplete(function() { e.paused = !1, motion_Actuate.resumeAll() }) } }, curSoundData: null, playSoundData: function(e, t) { null == t && (t = !1), null != e && (t && e == this.curSoundData || (this.curSoundData = e, null != e.delay ? motion_Actuate.timer(e.delay).onComplete($bind(this, this.playDelaySoundData), [e]) : this.main.playSpriteSound(e.name, !!Object.prototype.hasOwnProperty.call(e, "loop") && e.loop))) }, playDelaySoundData: function(e) { this.main.playSpriteSound(e.name, !!Object.prototype.hasOwnProperty.call(e, "loop") && e.loop) }, stopSoundData: function(e) { null != e && (this.curSoundData = null, this.main.stopSpriteSound(e.name, !!Object.prototype.hasOwnProperty.call(e, "loop") && e.loop)) }, trySelectionBtnsClick: function() { for (var e = this, t = 0, n = this.selectionBtns; t < n.length; ) { var i = n[t]; if (++t, 0 == i.curFrame && this.hitsMouse(i)) { var l = function(t) { return function() { e.startNewGame(t[0]) } }([Std.parseInt(StringTools.replace(i.get_name(), "level_btn", ""))]); return this.animateBtnClick(i, l), !0 } } return !1 }, saveScreenShot: function() { var e, t = Math.floor(this.main.sHeight); Math.floor(-1 * t); e = Math.floor(this.main.sWidth); var n = new openfl_display_BitmapData(e,t) , i = new openfl_geom_Matrix; i.scale(1 / this.main.get_scaleX(), 1 / this.main.get_scaleY()), i.translate(e / 2 - this.main.sWidth / 2, 0), n.draw(openfl_Lib.current.stage, i); var l = lime_graphics_Image.fromBitmapData(n); lime_graphics_utils_ImageCanvasUtil.convertToCanvas(l); var a = window.document.createElement("a"); a.innerHTML = "download image", window.document.body.appendChild(a), a.style.position = "absolute", a.style.top = "0px"; var s = new EReg("iPad|iPhone|iPod","i").match(window.navigator.userAgent) && !window.MSStream; a.addEventListener("click", function(e) { s ? window.open(l.buffer.get_src().toDataURL(), "_blank") : (a.href = l.buffer.get_src().toDataURL(), a.download = "screenshot.png") }, !1), a.click(), window.document.body.removeChild(a) }, wasMDown: null, update: function(e) { var t = this; if (this.currentlyInitedLevel && (this.currentlyInitedLevel = !1, e > 16.666666666666668 && (e = Math.floor(16.666666666666668))), this.paused) { if (null != this.pauseWindow) for (var n = 0, i = this.pauseWindow; n < i.length; ) { var l = i[n]; ++n, l.update(e) } if (!this.wasMDown && this.main.isMouseDown) { if (null != this.pauseClickFunction && this.pauseClickFunction(), null != this.soundBtn && this.hitsMouse(this.soundBtn)) return this.animateBtnClick(this.soundBtn, $bind(this, this.soundClick)), void (this.wasMDown = this.main.isMouseDown); if (null != this.speedBtn && this.speedBtn.get_visible() && this.hitsMouse(this.speedBtn)) return this.animateBtnClick(this.speedBtn, $bind(this, this.speedClick)), void (this.wasMDown = this.main.isMouseDown); if (null != this.pauseWindow) for (var a = 0, s = this.pauseWindow; a < s.length; ) { var r = s[a]; if (++a, "resumeBtn" == r.get_name() && r.get_visible() && this.hitsMouse(r)) return this.animateBtnClick(r, $bind(this, this.resume)), void (this.wasMDown = this.main.isMouseDown); if ("pauseRestartBtn" == r.get_name() && r.get_visible() && this.hitsMouse(r)) return this.animateBtnClick(r, $bind(this, this.restartClick)), void (this.wasMDown = this.main.isMouseDown); if ("pauseRestartLevelBtn" == r.get_name() && r.get_visible() && this.hitsMouse(r)) return this.animateBtnClick(r, $bind(this, this.restartLevel)), void (this.wasMDown = this.main.isMouseDown) } } this.wasMDown = this.main.isMouseDown } else { this.levels.update(e), this.deskHelper.update(e); for (var _ = 0, o = this.randAnimElements; _ < o.length; ) { var p = o[_]; ++_, p.delayToPlay -= e, p.delayToPlay <= 0 && (p.object.gotoAndStop(0), p.object.play(), p.object.isLoop = !1, p.object.curEndFrame = p.object.totalFrames - 1, p.delayToPlay = 5e3 + Std.random(15e3)) } if (this.main.paused || this.isBusy) this.wasMDown = this.main.isMouseDown; else { if (null != this.statWindow && this.statWindow.isActive) return !this.wasMDown && this.main.isMouseDown && this.statWindow.hide(), void (this.wasMDown = this.main.isMouseDown); if (!this.wasMDown && this.main.isMouseDown) { if (this.deskHelper.mDown()) return void (this.wasMDown = this.main.isMouseDown); for (var h = 0, d = this.pauseBtns; h < d.length; ) { var u = d[h]; if (++h, null != u && u.get_visible() && this.hitsMouse(u)) return this.animateBtnClick(u, $bind(this, this.showPauseWindow)), void (this.wasMDown = this.main.isMouseDown) } if (null != this.resumeBtn && 1 == this.resumeBtn.get_alpha() && this.resumeBtn.get_visible() && this.hitsMouse(this.resumeBtn)) return this.animateBtnClick(this.resumeBtn, function() { t.isFromSave = !0, t.startNewGame(1) }), void (this.wasMDown = this.main.isMouseDown); if (null != this.statBtn && null != this.statWindow && this.statBtn.get_visible() && this.hitsMouse(this.statBtn)) return this.animateBtnClick(this.statBtn, function() { t.statWindow.show() }), void (this.wasMDown = this.main.isMouseDown); for (var c = 0, m = this.actionBtns; c < m.length; ) { var U = [m[c]]; if (++c, U[0].get_visible() && U[0].get_alpha() > .5 && this.hitsMouse(U[0])) { var Q = function(e) { return function() { var n, i; if (i = e[0].get_name(), t.actionBtnsActions.exists(i)) { var l = e[0].get_name(); n = t.actionBtnsActions.get(l) } else n = null; null != n && new ToolActions(n).start() } }(U); return this.animateBtnClick(U[0], Q), void (this.wasMDown = this.main.isMouseDown) } } if (this.isSelectionLevel && this.trySelectionBtnsClick() && (this.wasMDown = this.main.isMouseDown), null != this.playBtn && this.hitsMouse(this.playBtn)) return this.isBusy = !0, void this.animateBtnClick(this.playBtn, $bind(this, this.playClick)); if (null != this.restartBtn && this.restartBtn.get_visible() && this.hitsMouse(this.restartBtn)) return this.isBusy = !0, void this.animateBtnClick(this.restartBtn, $bind(this, this.restartClick)); if (null != this.nextBtn && this.nextBtn.get_visible() && this.nextBtn.get_alpha() >= .5 && this.hitsMouse(this.nextBtn)) return this.isBusy = !0, void this.animateBtnClick(this.nextBtn, $bind(this, this.nextClick)); if (null != this.soundBtn && this.hitsMouse(this.soundBtn) && this.soundBtn.get_visible() && this.soundBtn.get_alpha() > .5) return this.animateBtnClick(this.soundBtn, $bind(this, this.soundClick)), void (this.wasMDown = this.main.isMouseDown); null != this.moreGamesBtn && this.moreGamesBtn.get_visible() && this.moreGamesBtn.getBounds(openfl_Lib.current.stage).contains(openfl_Lib.current.get_mouseX(), openfl_Lib.current.get_mouseY()) && window.game_uptap.moreGamesLink() } if (this.wasMDown && !this.main.isMouseDown) { if (this.deskHelper.mUp()) return void (this.wasMDown = this.main.isMouseDown); for (var N = 0, F = this.toolsArr; N < F.length; ) { var Z = F[N]; ++N, Z.get_visible() && this.hitsMouse(Z, !0) && this.toolClick(Z) } if (this.isDragging) if ((this.isDrawingMask || this.isErasingMask) && !this.isAutoMask) null == this.checkMaskUndonePos(this.isDrawingMask) && (this.isDrawingMask = !1, this.isErasingMask = !1, this.changeToNextTool()); this.isDragging = !1, this.isAutoMask || this.stopSoundData(this.dragSound), null != this.drawEraseTutor && this.drawEraseTutor.set_visible(!1), this.timeToDrawEraseTutor = this.initTimeToDrawEraseTutor } !this.wasMDown && this.main.isMouseDown && (this.isAutoMask && this.curMaskBm.hitTestPoint(this.main.stage.get_mouseX(), this.main.stage.get_mouseY(), !1) && !this.isAutoMaskAction && (this.makeAutoMask(), null != this.dragSound && this.playSoundData(this.dragSound)), !this.isDrawingMask && !this.isErasingMask || this.isDragging || (this.isDragging = !0, this.isAutoMask || this.playSoundData(this.dragSound), this.drawEraseTutor.get_visible() && this.drawEraseTutor.set_visible(!1)), this.isObjectRemoving && this.isRemoveObjectsClick()), this.isAutoMaskAction && this.drawEraseMask(this.isDrawingMask), null != this.draggingObject && this.draggingObject.get_visible() && !this.isAutoMaskAction && this.draggingObject.set_visible(!1), this.isDragging || !this.isDrawingMask && !this.isErasingMask || (this.timeToDrawEraseTutor -= e, this.timeToDrawEraseTutor <= 0 && this.showDrawEraseTutor()), (this.isDrawingMask || this.isErasingMask) && this.isDragging && !this.isAutoMask && this.updateDrawEraseMask(), this.isHitHizone && this.updateHitHizone(e), this.cheatingMode && (!this.wasMDown && this.main.isMouseDown ? this.cheatingModeHelper.onMDown() : this.wasMDown && !this.main.isMouseDown && this.cheatingModeHelper.onMUp(), this.cheatingModeHelper.update(e)), this.isAssembleMode && (this.assembler.completed || this.wasMDown || !this.main.isMouseDown ? this.assembler.completed || !this.wasMDown || this.main.isMouseDown || this.assembler.onMUp() : this.assembler.onMDown(), this.assembler.completed || this.assembler.update(e), this.assembler.completed && (this.isAssembleMode = !1, this.assembler.destroy(), this.assembler = null, this.changeToNextTool())); for (var f = 0, S = this.gameModes; f < S.length; ) { var g = S[f]; if (++f, g.completed || this.wasMDown || !this.main.isMouseDown ? g.completed || !this.wasMDown || this.main.isMouseDown || g.onMUp() : g.onMDown(), g.completed || g.update(e), g.completed) { this.changeToNextTool(), g.destroy(), HxOverrides.remove(this.gameModes, g); break } } this.isGameMode, this.isFightingMode && (this.fightingMode.completed || this.wasMDown || !this.main.isMouseDown ? this.fightingMode.completed || !this.wasMDown || this.main.isMouseDown || this.fightingMode.onMUp() : this.fightingMode.onMDown(), this.fightingMode.completed || this.fightingMode.update(e), this.fightingMode.completed && (this.isFightingMode = !1, this.fightingMode.destroy(), this.fightingMode = null, this.changeToNextTool())), this.isFightTable && (this.fightTable.completed || this.wasMDown || !this.main.isMouseDown ? this.fightTable.completed || !this.wasMDown || this.main.isMouseDown || this.fightTable.onMUp() : this.fightTable.onMDown(), this.fightTable.completed || this.fightTable.update(e), this.fightTable.completed && (this.isFightTable = !1, this.fightTable.destroy(), this.fightTable = null, this.changeToNextTool())), this.isToolActive && (this.activeTool.toolCompleted || this.wasMDown || !this.main.isMouseDown ? this.activeTool.toolCompleted || !this.wasMDown || this.main.isMouseDown || this.activeTool.onMUp() : this.activeTool.onMDown(), this.activeTool.toolCompleted || this.activeTool.update(e), this.activeTool.toolCompleted && (this.isToolActive = !1, this.activeTool.destroy(), this.changeToNextTool())); for (var B = 0, b = this.fireWorks; B < b.length; ) { var v = b[B]; ++B, v.update() } for (var W = 0; W < this.fireWorks.length; ) this.fireWorks[W].destroied ? HxOverrides.remove(this.fireWorks, this.fireWorks[W]) : W++; this.wasMDown = this.main.isMouseDown } } }, __class__: Desk, __properties__: $extend(openfl_display_Sprite.prototype.__properties__, { get_topLevels: "get_topLevels", get_sHeightLevels: "get_sHeightLevels" }) }); var DeskHelper = function() { this.hm = new openfl_geom_Matrix, this.centerYElsInitY = [], this.centerYEls = [], this.bgAlignedElementsInitMatrixes = [], this.bgAlignedElements = [], this.initBGY = 0, this.initBGX = 0, this.setToActivate = null, this.toAnimateStars = [], this.setupsMCs = null, this.setsForStarsData = null, this.isUIHideMode = !1, this.desk = Desk.current, this.main = Main.current }; $hxClasses.DeskHelper = DeskHelper, DeskHelper.__name__ = ["DeskHelper"], DeskHelper.prototype = { desk: null, main: null, eyeBtn: null, eyeElementsHidded: null, isUIHideMode: null, setsForStarsData: null, setupsMCs: null, toAnimateStars: null, setToActivate: null, initBGX: null, initBGY: null, bgAlignedElements: null, bgAlignedElementsInitMatrixes: null, centerYEls: null, centerYElsInitY: null, hm: null, spinnerMode: null, init: function(e) { if (-1 != this.desk.curLevel) { for (null != this.spinnerMode && this.spinnerMode.destroy(), this.spinnerMode = null, this.eyeElementsHidded = null, this.eyeBtn = this.desk.getElementByName("eyeBtn"), null != this.eyeBtn && this.eyeBtn.set_visible(!1); this.toAnimateStars.length > 0; ) this.toAnimateStars.pop(); if (this.setToActivate = null, this.setupsMCs = null, this.setsForStarsData = null, null != e && null != e.setsForStars) { this.setsForStarsData = e.setsForStars, this.setupsMCs = this.desk.getElementsByFolderName("SetupsData"); for (var t = 0, n = this.setupsMCs; t < n.length; ) { var i = n[t]; ++t, i.set_visible(!1) } } null != e && null != e.isSpinnMode && e.isSpinnMode && (this.spinnerMode = new SpinnerMode), null != this.desk.levels.data.levels[this.desk.curLevel].bg && null != this.desk.levels.data.levels[this.desk.curLevel].bg.x ? this.initBGX = this.desk.levels.data.levels[this.desk.curLevel].bg.x : this.initBGX = 0, null != this.desk.levels.data.levels[this.desk.curLevel].bg && null != this.desk.levels.data.levels[this.desk.curLevel].bg.y ? this.initBGY = this.desk.levels.data.levels[this.desk.curLevel].bg.y : this.initBGY = 0, this.bgAlignedElements = [], this.bgAlignedElementsInitMatrixes = []; for (var l = this.desk.getElementsByLayerName("BgAligned"), a = this.desk.getElementsByFolderName("BgAligned"), s = 0; s < l.length; ) { var r = l[s]; ++s, -1 == HxOverrides.indexOf(this.bgAlignedElements, r, 0) && (this.bgAlignedElements.push(r), this.bgAlignedElementsInitMatrixes.push(r.get_transform().get_matrix().clone())) } for (var _ = 0; _ < a.length; ) { var o = a[_]; ++_, -1 == HxOverrides.indexOf(this.bgAlignedElements, o, 0) && (this.bgAlignedElements.push(o), this.bgAlignedElementsInitMatrixes.push(o.get_transform().get_matrix().clone())) } this.alignBGsElements(), this.centerYElsInitY = [], this.centerYEls = this.desk.getElementsByFolderName("CenterY"); for (var p = 0, h = this.centerYEls; p < h.length; ) { var d = h[p]; ++p, this.centerYElsInitY.push(d.get_y()) } this.alignCenterYElsElements() } }, onResize: function() { this.alignBGsElements(), this.alignCenterYElsElements(), null != this.spinnerMode && this.spinnerMode.onResize() }, alignCenterYElsElements: function() { for (var e = 0, t = this.centerYEls.length; e < t; ) { var n = e++ , i = this.centerYEls[n]; i.set_y(this.centerYElsInitY[n]); var l = i; l.set_y(l.get_y() - this.desk.levels.get_y() / this.desk.levels.get_scaleY() / 2) } }, alignBGsElements: function() { for (var e = 0, t = this.bgAlignedElements.length; e < t; ) { var n = e++ , i = this.bgAlignedElements[n] , l = this.bgAlignedElementsInitMatrixes[n] , a = i.get_transform().get_matrix(); a.copyFrom(l), isNaN(this.initBGX) || isNaN(this.initBGY) || a.translate(-this.initBGX, -this.initBGY), null != this.desk.bg && a.concat(this.desk.bg.get_transform().get_matrix()), this.hm.copyFrom(this.desk.levels.get_transform().get_matrix()), this.hm.invert(), a.concat(this.hm), i.get_transform().set_matrix(a) } }, activateSetups: function() { if (null != this.setsForStarsData) { var e = []; null != LocalSaves.getVar("setupsData") && (e = LocalSaves.getVar("setupsData")); for (var t = 0, n = this.setupsMCs; t < n.length; ) { var i = n[t]; ++t, i.set_alpha(.001), motion_Actuate.tween(i, .3, { alpha: 1 }).ease(motion_easing_Linear.get_easeNone()), i.set_visible(!0) } var l, a = 1, s = this.desk.getElementByName(Std.string(this.setsForStarsData[0].name) + ""); l = function(e) { var t; t = js_Boot.__cast(e.setsForStarsData[0].indexes, Array); var n = Math.floor(s.curFrame); return HxOverrides.indexOf(t, n, 0) }(this); for (var r = 1, _ = this.setsForStarsData.length; r < _; ) { var o = r++ , p = this.desk.getElementByName(Std.string(this.setsForStarsData[o].name) + ""); (function(e) { var t; t = js_Boot.__cast(e.setsForStarsData[o].indexes, Array); var n = Math.floor(p.curFrame); return HxOverrides.indexOf(t, n, 0) } )(this) == l && a++ } for (var h = 0; h < e.length; ) { var d = e[h]; ++h, this.desk.getElementByNameInFolder("dressIcon" + (d + 1), "SetupsData").hasLabel("animateShow") ? this.desk.getElementByNameInFolder("dressIcon" + (d + 1), "SetupsData").gotoAndStopLabel("animateShow") : this.desk.getElementByNameInFolder("dressIcon" + (d + 1), "SetupsData").gotoAndStop(1) } var u = !1; a > this.setsForStarsData.length - 1 && -1 == HxOverrides.indexOf(e, l, 0) && (e.push(l), u = !0), u && (this.setToActivate = this.desk.getElementByNameInFolder("dressIcon" + (l + 1), "SetupsData")); for (var c = 0; c < a; ) { var m = c++; this.toAnimateStars.push(this.desk.getElementByNameInFolder("star" + (m + 1), "SetupsData")) } this.animateSetsElsApear(); LocalSaves.setVar("setupsData", e) } }, animateSetsElsApear: function(e) { var t; null != e && e.stop(), null != (t = this.toAnimateStars.length > 0 ? this.toAnimateStars.shift() : this.setToActivate) && (t == this.setToActivate && (this.setToActivate = null), t.hasLabel("animateShow") ? t.playLabel("animateShow", $bind(this, this.animateSetsElsApear)) : (t.gotoAndStop(1), this.animateSetsElsApear())) }, onFinishScreen: function() { null != this.eyeBtn && (this.eyeBtn.set_scaleX(this.eyeBtn.set_scaleY(.001)), this.eyeBtn.set_visible(!0), motion_Actuate.timer(.35).onComplete($bind($_ = this.desk, $_.animateBtnApear), [this.eyeBtn]), this.activateSetups()) }, eyeBtnClick: function() { this.isUIHideMode = !0, this.eyeElementsHidded = []; for (var e = this.desk.getElementsByLayerName("NavigationUI"), t = 0; t < e.length; ) { var n = e[t]; ++t, n.get_visible() && (n.set_visible(!1), this.eyeElementsHidded.push(n)) } e = this.desk.getElementsByFolderName("SetupsData"); for (var i = 0; i < e.length; ) { var l = e[i]; ++i, l.get_visible() && (l.set_visible(!1), this.eyeElementsHidded.push(l)) } if (null != this.desk.soundBtn && -1 == HxOverrides.indexOf(this.eyeElementsHidded, this.desk.soundBtn, 0) && this.desk.soundBtn.get_visible() && (this.eyeElementsHidded.push(this.desk.soundBtn), this.desk.soundBtn.set_visible(!1)), null != this.desk.restartBtn && -1 == HxOverrides.indexOf(this.eyeElementsHidded, this.desk.restartBtn, 0) && this.desk.restartBtn.get_visible() && (this.eyeElementsHidded.push(this.desk.restartBtn), this.desk.restartBtn.set_visible(!1)), null != this.desk.pauseBtns && this.desk.pauseBtns.length > 0) for (var a = 0, s = this.desk.pauseBtns; a < s.length; ) { var r = s[a]; ++a, null != r && -1 == HxOverrides.indexOf(this.eyeElementsHidded, r, 0) && r.get_visible() && (this.eyeElementsHidded.push(r), r.set_visible(!1)) } }, mDown: function() { if (null != this.spinnerMode && this.spinnerMode.onMDown(), this.isUIHideMode) { for (var e = 0, t = this.eyeElementsHidded; e < t.length; ) { var n = t[e]; ++e, n.set_visible(!0) } return this.eyeElementsHidded = null, this.isUIHideMode = !1, !0 } return !!(null != this.eyeBtn && this.eyeBtn.get_visible() && this.eyeBtn.get_alpha() > 0 && this.desk.hitsMouse(this.eyeBtn)) && (this.desk.animateBtnClick(this.eyeBtn, $bind(this, this.eyeBtnClick)), !0) }, mUp: function() { return null != this.spinnerMode && this.spinnerMode.onMUp(), !1 }, update: function(e) { null != this.spinnerMode && this.spinnerMode.update(e) }, __class__: DeskHelper }; var DialogsWindowses = function(e) { this.curActiveDialog = null, this.dialogWindowsesDatas = [], BaseGameMode.call(this), this.data = e, DialogsWindowses.current = this; for (var t = 0; t < e.length; ) { var n = e[t]; ++t, this.prepareDialog(n) } }; $hxClasses.DialogsWindowses = DialogsWindowses, DialogsWindowses.__name__ = ["DialogsWindowses"], DialogsWindowses.__super__ = BaseGameMode, DialogsWindowses.prototype = $extend(BaseGameMode.prototype, { data: null, dialogWindowsesDatas: null, curActiveDialog: null, onDialogPlayEnd: function(e) { this.curActiveDialog.curDialogIndex >= this.curActiveDialog.numDialogs && (this.curActiveDialog.closeBtn.set_visible(!0), this.curActiveDialog.skipBtn.set_visible(!1)) }, dialogSkipClick: function() { if (this.curActiveDialog.curDialogIndex < this.curActiveDialog.numDialogs) { this.curActiveDialog.curDialogIndex++; for (var e = 0, t = this.curActiveDialog.dialogMCs; e < t.length; ) { var n = t[e]; ++e, n.playLabel("dialog" + this.curActiveDialog.curDialogIndex, $bind(this, this.onDialogPlayEnd)) } } else { for (var i = 0, l = this.curActiveDialog.dialogMCs; i < l.length; ) { var a = l[i]; ++i, a.gotoAndStopLabel("dialog" + this.curActiveDialog.curDialogIndex) } this.curActiveDialog.closeBtn.set_visible(!0), this.curActiveDialog.skipBtn.set_visible(!1) } }, dialogCloseClick: function() { for (var e = 0, t = this.curActiveDialog.els; e < t.length; ) { var n = t[e]; ++e, n.set_visible(!1) } this.curActiveDialog.curDialogIndex = 1, this.curActiveDialog = null }, prepareDialog: function(e) { for (var t = this.desk.getElementsByFolderName(e.folderName), n = null, i = null, l = [], a = 0; a < t.length; ) { var s = t[a]; ++a, s.set_visible(!1), "dialogSkipBtn" == s.get_name() ? n = s : "dialogCloseBtn" == s.get_name() ? i = s : s.hasLabel("dialog1") && l.push(s) } for (var r = 0, _ = 0; _ < l.length; ) { var o = l[_]; ++_; for (var p = 1; o.hasLabel("dialog" + p); ) p++; r < --p && (r = p) } this.dialogWindowsesDatas.push({ name: e.folderName, skipBtn: n, closeBtn: i, isActive: !1, els: t, numDialogs: r, curDialogIndex: 0, dialogMCs: l }) }, onMDown: function() { BaseGameMode.prototype.onMDown.call(this), null != this.curActiveDialog && (this.curActiveDialog.skipBtn.get_visible() && this.desk.hitsMouse(this.curActiveDialog.skipBtn) ? this.desk.animateBtnClick(this.curActiveDialog.skipBtn, $bind(this, this.dialogSkipClick)) : this.curActiveDialog.closeBtn.get_visible() && this.desk.hitsMouse(this.curActiveDialog.closeBtn) && this.desk.animateBtnClick(this.curActiveDialog.closeBtn, $bind(this, this.dialogCloseClick))) }, destroy: function() { DialogsWindowses.current = null, BaseGameMode.prototype.destroy.call(this) }, __class__: DialogsWindowses }); var EReg = function(e, t) { t = t.split("u").join(""), this.r = new RegExp(e,t) }; $hxClasses.EReg = EReg, EReg.__name__ = ["EReg"], EReg.prototype = { r: null, match: function(e) { return this.r.global && (this.r.lastIndex = 0), this.r.m = this.r.exec(e), this.r.s = e, null != this.r.m }, matched: function(e) { if (null != this.r.m && e >= 0 && e < this.r.m.length) return this.r.m[e]; throw new js__$Boot_HaxeError("EReg::matched") }, matchedPos: function() { if (null == this.r.m) throw new js__$Boot_HaxeError("No string matched"); return { pos: this.r.m.index, len: this.r.m[0].length } }, matchSub: function(e, t, n) { if (null == n && (n = -1), this.r.global) { this.r.lastIndex = t, this.r.m = this.r.exec(n < 0 ? e : HxOverrides.substr(e, 0, t + n)); var i = null != this.r.m; return i && (this.r.s = e), i } var l = this.match(n < 0 ? HxOverrides.substr(e, t, null) : HxOverrides.substr(e, t, n)); return l && (this.r.s = e, this.r.m.index += t), l }, replace: function(e, t) { return e.replace(this.r, t) }, __class__: EReg }; var Game_uptapAnalytics = function() {}; $hxClasses.Game_uptapAnalytics = Game_uptapAnalytics, Game_uptapAnalytics.__name__ = ["Game_uptapAnalytics"], Game_uptapAnalytics.trackScreen = function(e) { console.log("TrackScreen: " + e); // try { // var t = window.game_uptap_analytics[e]; // window.game_uptap_analytics.trackScreen(t, window.game_uptap_analytics.getPageTitle()) // } catch (t) { // if (t instanceof js__$Boot_HaxeError && (t = t.val), // !js_Boot.__instanceof(t, openfl_errors_Error)) // throw t; // console.log("Game_uptap error tracking screen = " + e) // } } , Game_uptapAnalytics.trackEvent = function(e, t) { console.log("玩家进入") window.start_game++ window['uptap'].GameEvent("start_game",window.start_game); console.log("TrackEvent: " + e + ", data: " + Std.string(t)); // try { // window.game_uptap_analytics.trackEvent(window.game_uptap_analytics[e], t) // } catch (t) { // if (t instanceof js__$Boot_HaxeError && (t = t.val), // !js_Boot.__instanceof(t, openfl_errors_Error)) // throw t; // console.log("Game_uptap error tracking event = " + e) // } } ; var FightTable = function(e) { var t; this.actuators = [], this.tableBG = null, this.frame = null, this.tables = [], this.completed = !1, this.desk = Desk.current, t = -1 == Assembler.lastAssemblerSeqIndex ? 1 : 2; for (var n, i = TJSON.parse(this.desk.levels.data.levels[e].levelSetup).fightingData, l = 1; null != (n = this.desk.getElementByName("table" + l)); ) { l++; var a = Std.parseInt(StringTools.replace(n.get_name(), "table", "")); this.tables[a - 1] = n } for (var s = 0, r = this.tables.length; s < r; ) { var _ = s++; n = this.tables[_]; i.botsData[_].robotIndex[0] == t ? n.hasLabel("anim1") ? n.playLabel("anim1") : n.gotoAndStop(1) : n.hasLabel("anim") && n.playLabel("anim"), 0 != i.botsData[_].atrIndex && this.updateRobotImages(n, i.botsData[_].atrIndex) } if (this.frame = this.desk.getElementByName("tableFrame"), 1 == t ? this.frame.hasLabel("anim") && this.frame.playLabel("anim") : this.frame.hasLabel("anim1") ? this.frame.playLabel("anim1") : this.frame.gotoAndStop(1), 0 != i.humanData.atrIndex && this.updateRobotImages(this.frame, i.humanData.atrIndex), 0 == FightTable.curFight) { for (var o = Main.current.sWidth / this.desk.levels.get_scaleX() / 2 - this.tables[this.tables.length - 1].get_x() - this.desk.levels.get_x(), p = Main.current.sHeight / this.desk.levels.get_scaleY() / 2 - this.tables[this.tables.length - 1].get_y() - this.desk.levels.get_y(), h = 0, d = this.tables; h < d.length; ) { var u = d[h]; ++h; var c = u; c.set_x(c.get_x() + o); var m = u; m.set_y(m.get_y() + p) } this.frame.set_x(this.tables[this.tables.length - 1].get_x()), this.frame.set_y(this.tables[this.tables.length - 1].get_y()), this.moveTables(this.tables.length - 1, -1, $bind(this, this.onTablesArrived)) } else { for (var U = Main.current.sWidth / this.desk.levels.get_scaleX() / 2 - this.tables[FightTable.curFight - 1].get_x() - this.desk.levels.get_x(), Q = Main.current.sHeight / this.desk.levels.get_scaleY() / 2 - this.tables[FightTable.curFight - 1].get_y() - this.desk.levels.get_y(), N = 0, F = this.tables; N < F.length; ) { var Z = F[N]; ++N; var f = Z; f.set_x(f.get_x() + U); var S = Z; S.set_y(S.get_y() + Q) } this.frame.set_x(this.tables[FightTable.curFight - 1].get_x()), this.frame.set_y(this.tables[FightTable.curFight - 1].get_y()), this.moveTables(FightTable.curFight - 1, FightTable.curFight, $bind(this, this.onTablesArrived)) } this.tableElements = this.desk.getElementsByFolderName("Table") }; $hxClasses.FightTable = FightTable, FightTable.__name__ = ["FightTable"], FightTable.prototype = { completed: null, tables: null, frame: null, tableElements: null, tableBG: null, desk: null, actuators: null, onTablesArrived: function() {}, moveTables: function(e, t, n) { if (null == t && (t = -1), e <= 0 && -1 == t || e == t) null != n && n(); else { -1 == t ? e-- : e += e > t ? -1 : 1; for (var i = Main.current.sWidth / this.desk.levels.get_scaleX() / 2 - this.tables[e].get_x() - this.desk.levels.get_x(), l = Main.current.sHeight / this.desk.levels.get_scaleY() / 2 - this.tables[e].get_y() - this.desk.levels.get_y(), a = null, s = 0, r = this.tables; s < r.length; ) { var _ = r[s]; ++s, a = motion_Actuate.tween(_, .7, { x: _.get_x() + i, y: _.get_y() + l }).ease(motion_easing_Linear.get_easeNone()), this.actuators.push(a) } this.actuators.push(motion_Actuate.tween(this.frame, .7, { x: this.tables[e].get_x() + i, y: this.tables[e].get_y() + l }, !1).ease(motion_easing_Linear.get_easeNone())), null != a && a.onComplete($bind(this, this.moveTables), [e, t, n]) } }, updateRobotImages: function(e, t) { null == t && (t = -1), -1 != t || FightTable.curFight; for (var n = 0, i = e.framesList.length; n < i; ) for (var l = n++, a = e.framesList[l], s = 0, r = a.get_numChildren(); s < r; ) { var _, o, p = s++; if (null != (_ = Std.is(a.getChildAt(p), BitmapBatch) ? a.getChildAt(p) : null)) (o = _.imName.split("__")[0] + (t > 0 ? "__" + t : "")) != _.imName && -1 != _.batch.getImgId(o) && _.changeImName(o) } }, destroy: function() { for (var e = 0, t = this.actuators; e < t.length; ) { var n = t[e]; ++e, motion_Actuate.stop(n, null, !1, !1) } this.tables = null, this.frame = null, this.tableElements = null, this.tableBG = null, this.desk = null, this.actuators = null }, onMDown: function() {}, onMUp: function() {}, update: function(e) {}, __class__: FightTable }; var FightingMode = function(e) { this.elementsInitY = new haxe_ds_ObjectMap, this.onePlayerLose = !1, this.curFight = 0, this.robots = [], this.quake = null, this.started = !1, this.completed = !1, this.initRobotsTransfoms = new haxe_ds_ObjectMap, FightingMode.current = this, this.fightingData = e, this.main = Main.current, this.desk = Desk.current, this.curFight = FightTable.curFight; for (var t = 0, n = e.robotsNames; t < n.length; ) { var i = n[t]; ++t; var l = this.desk.getElementByName(i) , a = this.desk.getElementByName(i).get_transform().get_matrix().clone(); this.initRobotsTransfoms.set(l, a) } this.numRounds = e.numRounds, this.curRound = 0, openfl_Lib.current.stage.addEventListener("keyDown", $bind(this, this.onKeyboard)), this.quake = this.desk.getElementByName("quake"), null != this.quake && this.quake.set_visible(!1), this.nextBtn = this.desk.getElementByName("action0"), Assembler.lastAssemblerSeqIndex; for (var s = 0, r = e.robotsNames; s < r.length; ) { var _ = r[s]; ++s, this.desk.getElementByName(_).set_visible(!1) } var o = []; o = (o = (o = (o = o.concat(this.desk.getElementsByFolderName("1PBtns"))).concat(this.desk.getElementsByFolderName("2PBtns"))).concat(this.desk.getElementsByLayerName("Progresses1P"))).concat(this.desk.getElementsByLayerName("Progresses2P")); for (var p = 0; p < o.length; ) { var h = o[p]; ++p; var d = h.get_y(); this.elementsInitY.set(h, d) } this.startRound() }; $hxClasses.FightingMode = FightingMode, FightingMode.__name__ = ["FightingMode"], FightingMode.__properties__ = { set_numWins: "set_numWins", get_numWins: "get_numWins" }, FightingMode.get_numWins = function() { return -1 == FightingMode._numWins && (null != LocalSaves.getVar("numWins") ? FightingMode._numWins = LocalSaves.getVar("numWins") : FightingMode._numWins = 0), FightingMode._numWins } , FightingMode.set_numWins = function(e) { return FightingMode._numWins != e && (FightingMode._numWins = e, LocalSaves.setVar("numWins", FightingMode._numWins)), FightingMode._numWins } , FightingMode.prototype = { fightingData: null, initRobotsTransfoms: null, main: null, desk: null, completed: null, started: null, quake: null, robot1: null, robot2: null, robots: null, informs: null, numRounds: null, curRound: null, curFight: null, nextBtn: null, onePlayerLose: null, elementsInitY: null, onResize: function() {}, startRound: function() { var e = this; this.informs = this.desk.getElementsByLayerName("Informs"); for (var t = 0, n = this.informs; t < n.length; ) { var i = n[t]; ++t, i.set_visible(!1) } var l = this.desk.getElementByNameInLayer("FightInform", "Informs"); null != l ? (l.set_visible(!0), l.gotoAndPlay(0, function(t) { e.started = !0 }), l.curEndFrame = l.totalFrames - 1) : this.started = !0; var a = this.desk.getElementByNameInLayer("BattleInform" + (Assembler.isTwoPlayersFightMode ? "" : this.curFight + 1 + ""), "Informs"); null != a && (a.hasLabel("iddle") && a.playLabel("iddle"), a.set_visible(!0)); var s = this.desk.getElementByName("action0"); null != s && s.set_visible(!1); var r, _, o = this.desk.getElementByNameInLayer("RoundInform", "Informs"); if (null != o && (o.hasLabel("round" + (this.curRound + 1)) && o.playLabel("round" + (this.curRound + 1)), o.set_visible(!0)), 0 == this.curRound) { null != this.robot1 && this.robot1.destroy(), null != this.robot2 && this.robot2.destroy(), this.robot1 = this.robot2 = null; var p; p = -1 == Assembler.lastAssemblerSeqIndex ? 1 : 2; var h = 0; h = Assembler.isTwoPlayersFightMode ? this.fightingData.humanData.robotIndex[0] == p ? this.fightingData.humanData.robotIndex[1] : this.fightingData.humanData.robotIndex[0] : this.fightingData.botsData[this.curFight].robotIndex[0] == p ? this.fightingData.botsData[this.curFight].robotIndex[1] : this.fightingData.botsData[this.curFight].robotIndex[0]; for (var d = this.fightingData.robotsNames[p - 1], u = this.fightingData.robotsNames[h - 1], c = 0, m = this.fightingData.robotsNames; c < m.length; ) { var U = m[c]; ++c, this.desk.getElementByName(U).get_transform().set_matrix((r = this, void 0, _ = r.desk.getElementByName(U), r.initRobotsTransfoms.h[_.__id__]).clone()), U != d && U != u ? this.desk.getElementByName(U).set_visible(!1) : this.desk.getElementByName(U).set_visible(!0) } var Q = this.concatWeaponsDatas(this.getWeaponDataFromDefault(this.fightingData.humanData.mainWeaponsData), this.fightingData.humanData.weaponsData) , N = null; N = Assembler.isTwoPlayersFightMode ? this.concatWeaponsDatas(this.getWeaponDataFromDefault(this.fightingData.humanData.mainWeaponsData), this.fightingData.humanData.weaponsData) : this.concatWeaponsDatas(this.getWeaponDataFromDefault(this.fightingData.botsData[this.curFight].mainWeaponsData), this.fightingData.botsData[this.curFight].weaponsData); for (var F = 0, Z = Q.length; F < Z; ) { var f = F++; Q[f].key = this.fightingData.humanData.keysPlayer1[f] } for (var S = 0, g = N.length; S < g; ) { var B = S++; N[B].key = this.fightingData.humanData.keysPlayer2[B] } this.robot1 = new Robot(this.desk.getElementByName(d),null,Q,0,!1), this.robot2 = new Robot(this.desk.getElementByName(u),null,N,1,!1), this.robot1.robot.get_transform().set_matrix(function(e) { var t = e.desk.getElementByName("robot1"); return e.initRobotsTransfoms.h[t.__id__] }(this).clone()), this.robot2.robot.get_transform().set_matrix(function(e) { var t = e.desk.getElementByName("robot2"); return e.initRobotsTransfoms.h[t.__id__] }(this).clone()) } for (this.robot1.init(this.fightingData.humanData.lifes), this.robot2.init(this.fightingData.botsData[this.curFight].lifes), this.robot1.enemy = this.robot2, this.robot2.enemy = this.robot1; this.robots.length > 0; ) this.robots.pop(); this.robots.push(this.robot1), this.robots.push(this.robot2), Object.prototype.hasOwnProperty.call(this.fightingData.humanData, "atrIndex") && Reflect.field(this.fightingData.humanData, "atrIndex") >= 0 && this.updateRobotImages(this.robot1.robot, Reflect.field(this.fightingData.humanData, "atrIndex")), Object.prototype.hasOwnProperty.call(this.fightingData.botsData[this.curFight], "atrIndex") && Reflect.field(this.fightingData.botsData[this.curFight], "atrIndex") >= 0 && this.updateRobotImages(this.robot2.robot, Reflect.field(this.fightingData.botsData[this.curFight], "atrIndex")) }, getWeaponDataFromDefault: function(e) { for (var t = 0, n = this.fightingData.robots; t < n.length; ) { var i = n[t]; if (++t, i.target == e) return i.weaponsData } return null }, concatWeaponsDatas: function(e, t) { for (var n = [], i = 0, l = e.length; i < l; ) { var a = i++ , s = this.concatWeaponsData(e[a], t[a]); n.push(s) } return n }, concatWeaponsData: function(e, t) { for (var n = {}, i = Reflect.fields(e), l = 0; l < i.length; ) { var a = i[l]; ++l, Reflect.setField(n, a, Reflect.field(e, a)) } if (null == t) return n; i = Reflect.fields(t); for (var s = 0; s < i.length; ) { var r = i[s]; ++s, null != Reflect.field(t, r) && Reflect.setField(n, r, Reflect.field(t, r)) } return n }, updateRobotImages: function(e, t) { null == t && (t = -1), -1 != t || this.curFight; for (var n = 0, i = e.framesList.length; n < i; ) for (var l = n++, a = e.framesList[l], s = 0, r = a.get_numChildren(); s < r; ) { var _, o, p = s++; if (null != (_ = Std.is(a.getChildAt(p), BitmapBatch) ? a.getChildAt(p) : null)) (o = _.imName.split("__")[0] + (t > 0 ? "__" + t : "")) != _.imName && -1 != _.batch.getImgId(o) && _.changeImName(o) } }, onKeyboard: function(e) { if (null != this.desk) for (var t = 0, n = this.robots; t < n.length; ) { var i = n[t]; ++t, i.onKeyboard(e.keyCode) } }, destroy: function() { for (this.fightingData = null, this.desk = null, this.initRobotsTransfoms = null, this.main = null, openfl_Lib.current.stage.removeEventListener("keyDown", $bind(this, this.onKeyboard)), this.quake = null, this.robot1 = null, this.robot2 = null; null != this.robots && this.robots.length > 0; ) this.robots.pop().destroy(); this.robots = null, FightingMode.current = null, this.elementsInitY = null }, onMDown: function() { if (null != this.desk) { for (var e = 0, t = this.robots; e < t.length; ) { var n = t[e]; ++e, n.mDown() } var i = Assembler.isTwoPlayersFightMode; null != this.nextBtn && this.nextBtn.get_visible() && this.desk.hitsMouse(this.nextBtn) && (i || this.curFight >= this.fightingData.numBatles || this.onePlayerLose, this.curFight < this.fightingData.numBatles && !i ? this.desk.animateBtnClick(this.nextBtn, $bind(this, this.toFS)) : this.desk.animateBtnClick(this.nextBtn, $bind(this, this.toFS1))) } }, toFS: function() { this.main.stopSpriteSound("RobotDance"), this.desk.init(5) }, toFS1: function() { this.main.stopSpriteSound("RobotDance"), this.desk.init(4) }, toNextRound: function() { this.main.stopSpriteSound("RobotDance"), this.startRound(), motion_Actuate.timer(.8).onComplete($bind(this, this.returnElementsY)) }, returnElementsY: function() { for (var e = this.elementsInitY.keys(); e.hasNext(); ) { var t = e.next(); motion_Actuate.tween(t, .3, { y: this.elementsInitY.h[t.__id__] }).ease(motion_easing_Back.get_easeOut()) } }, onMUp: function() {}, shakeAnim: function() { this.shakeWorld(), this.showQuake() }, shakeWorld: function() { null != this.desk && AnimationHelper.shake(this.desk) }, showQuake: function() { null != this.quake && (this.quake.set_visible(!0), this.quake.set_alpha(.15), this.quake.set_scaleX(this.quake.set_scaleY(8)), motion_Actuate.tween(this.quake, .2, { scaleX: 15, scaleY: 15, alpha: 1e-4 }).ease(motion_easing_Linear.get_easeNone()).onComplete($bind(this, this.onQuakeEnd))) }, onQuakeEnd: function() { null != this.quake && this.quake.set_visible(!1) }, update: function(e) { if (this.started) for (var t = 0, n = this.robots; t < n.length; ) { var i = n[t]; if (++t, i.update(e), i.isDead) { var l; l = i == this.robot1 ? this.robot2 : this.robot1; var a = this.desk.getElementByNameInLayer("BattleInform" + (Assembler.isTwoPlayersFightMode ? "" : this.curFight + 1 + ""), "Informs"); null != a && a.hasLabel("hide") && a.playLabel("hide"); var s = Assembler.isTwoPlayersFightMode , r = null; if (null != (r = s ? this.robot1.isDead ? this.desk.getElementByNameInLayer("P2WinInform", "Informs") : this.desk.getElementByNameInLayer("P1WinInform", "Informs") : i.isBot ? this.desk.getElementByNameInLayer("WinInform", "Informs") : this.desk.getElementByNameInLayer("LoseInform", "Informs")) && (r.set_visible(!0), r.hasLabel("show") && r.playLabel("show")), this.curRound++, this.robot1 == i && this.robot2.numWins++, this.robot2 == i && this.robot1.numWins++, this.curRound > this.numRounds || this.numRounds / 2 < this.robot1.numWins || this.numRounds / 2 < this.robot2.numWins) { if (s || (this.curFight++, FightTable.curFight++), !s && l.isBot && (this.onePlayerLose = !0), s || this.curFight >= this.fightingData.numBatles && !l.isBot) { if (this.started = !1, !s && !l.isBot) { var _ = FightingMode , o = _.get_numWins(); _.set_numWins(o + 1), this.updateAchievments() } } else this.started = !1, this.robot1.reset(), this.robot2.reset(); this.robot1 != i ? this.robot1.animateWin() : this.robot2.animateWin(), !s && this.curFight < this.fightingData.numBatles && this.nextEnemy() } else this.started = !1, motion_Actuate.timer(3).onComplete($bind(this, this.startRound)) } } }, nextEnemy: function() { this.curRound = 0, this.robot1 = this.robot2 = null }, updateAchievments: function() {}, __class__: FightingMode }; var Robot = function(e, t, n, i, l) { this.numWins = 0, this.maxToActTime = 2e3, this.minToActTime = 500, this.nextActTime = 100, this.isBot = !1, this.isDead = !1, this.curActIndex = 0, this.lifes = 100, this.initLifes = 100, this.btns = [], this.destroied = !1, this.isShielded = !1, this.isActing = !1, this.curDeffence = 0, this.reloadTime = 0, this.isTwoPlayersMode = Assembler.isTwoPlayersFightMode, this.desk = Desk.current, this.robot = e, this.weaponsData = n, this.isInversedRobots = l, this.robotIndex = i, this.progressLifes = this.desk.getElementByName("progressLifes" + ((l ? 1 - i : i) + 1)), this.progressLifes.set_scaleX(1), null != this.progressLifes && (this.initProgressWidth = this.progressLifes.get_width(), this.progressLifesInitScaleX = this.progressLifes.get_scaleX()), this.isBot = !this.isTwoPlayersMode && 1 == i, l && !this.isTwoPlayersMode && (this.isBot = !this.isBot); for (var a, s = 1, r = !0; r && !this.isBot; ) r = !1, this.isTwoPlayersMode ? null != (a = this.desk.getElementByNameInFolder("robot" + ((l ? 1 - i : i) + 1) + "_btn" + s, "2PBtns")) && a.set_visible(!0) : null != (a = this.desk.getElementByNameInFolder("robot1_btn" + s, "1PBtns")) && a.set_visible(!0), r = null != a, null != a && this.btns.push(a), s++; this.isBot || (this.actProgress = this.desk.getElementByNameInLayer(this.isTwoPlayersMode ? "actProgress" + ((l ? 1 - i : i) + 1) : "actProgress1", this.isTwoPlayersMode ? "Progresses2P" : "Progresses1P"), null != this.actProgress && (this.actProgress.set_visible(!0), this.progressActInitScaleX = this.actProgress.get_scaleX(), this.initActProgressWidth = this.actProgress.get_width())) }; $hxClasses.Robot = Robot, Robot.__name__ = ["Robot"], Robot.prototype = { robot: null, weaponsData: null, reloadTime: null, curDeffence: null, curWeapon: null, enemy: null, isActing: null, isShielded: null, robotIndex: null, isInversedRobots: null, initReloadTime: null, destroied: null, get_canAct: function() { return this.reloadTime <= 0 && !this.isActing && !this.enemy.isActing && !this.isShielded }, btns: null, desk: null, initLifes: null, lifes: null, curActIndex: null, progressLifes: null, progressLifesInitScaleX: null, initProgressWidth: null, actProgress: null, progressActInitScaleX: null, initActProgressWidth: null, isTwoPlayersMode: null, isDead: null, isBot: null, nextActTime: null, minToActTime: null, maxToActTime: null, numWins: null, hideElements: function(e, t) { if (null == t && (t = ""), null == e && (e = ""), "" != e) for (var n = this.desk.getElementsByFolderName(e), i = 0; i < n.length; ) { var l = n[i]; ++i, l.set_visible(!1) } if ("" != t) for (var a = this.desk.getElementsByLayerName(t), s = 0; s < a.length; ) { var r = a[s]; ++s, r.set_visible(!1) } }, reset: function() { this.numWins = 0 }, init: function(e) { null == e && (e = 100); var t = this.robot.get_x() , n = this.robot; n.set_x(n.get_x() + (this.robot.get_x() < Config.baseSWidth / 2 ? -700 : 700)), motion_Actuate.tween(this.robot, .4, { x: t }).ease(motion_easing_Quad.get_easeOut()), this.reloadTime = 500, this.initReloadTime = this.reloadTime, this.robot.playLabel("idlle1"), this.isTwoPlayersMode && this.hideElements("1PBtns"), this.isTwoPlayersMode || this.hideElements("2PBtns"), this.isTwoPlayersMode && this.hideElements("", "Progresses1P"), this.isTwoPlayersMode || this.hideElements("", "Progresses2P"), this.isBot && (this.nextActTime = this.minToActTime + Math.random() * (this.maxToActTime - this.minToActTime)), this.initLifes = e, this.lifes = e, this.resetActing(), this.updateProgress(), this.updateActProgress(), this.isDead = !1, this.isShielded = !1 }, mDown: function() { for (var e = 1, t = 0, n = this.btns; t < n.length; ) { var i = n[t]; if (++t, this.desk.hitsMouse(i)) return void this.act(e); e++ } }, onKeyboard: function(e) { if (this.get_canAct()) for (var t, n = String.fromCharCode(e), i = 0, l = (t = this.isInversedRobots ? this.enemy.weaponsData : this.weaponsData).length; i < l; ) { var a = i++; if (t[a].key.length > 1 && Std.parseInt(t[a].key) == e || 1 == t[a].key.length && t[a].key.toUpperCase() == n.toUpperCase()) return void this.act(a + 1) } }, act: function(e) { if (this.get_canAct() && (this.curActIndex = e, this.curWeapon = this.weaponsData[e - 1], this.isActing = this.curWeapon.blockActing, this.robot.playLabel("attack" + this.curActIndex, $bind(this, this.onAct1End)), this.curWeapon.reloadAfterAnim || (this.reloadTime = 1e3 * this.curWeapon.reload, this.initReloadTime = this.reloadTime), this.curDeffence = this.curWeapon.deffence, 0 != this.curDeffence && (this.isShielded = !0), this.desk.levels.getChildIndex(this.robot) < this.desk.levels.getChildIndex(this.enemy.robot) && this.desk.levels.swapChildren(this.robot, this.enemy.robot), null != this.curWeapon.sound)) for (var t = 0, n = this.curWeapon.sound; t < n.length; ) { var i = n[t]; ++t, this.desk.playSoundData(i) } }, onAct1End: function(e) { this.destroied || (this.enemy.recieveDammage(this.curWeapon.attack, this.curActIndex), this.robot.hasLabel("attack" + this.curActIndex + "revers") ? this.robot.playLabel("attack" + this.curActIndex + "revers", $bind(this, this.onAttackAnimEnd)) : this.resetActing()) }, onAttackAnimEnd: function(e) { this.destroied || (this.isActing = !1, this.resetActing()) }, resetActing: function() { this.destroied || (null != this.curWeapon && this.curWeapon.reloadAfterAnim && (this.reloadTime = 1e3 * this.curWeapon.reload, this.initReloadTime = this.reloadTime), this.isShielded = !1, this.curActIndex = -1, this.curWeapon = null, this.curDeffence = 0, this.robot.playLabel("idlle1"), this.isActing = !1) }, recieveDammage: function(e, t) { null == t && (t = -1), this.destroied || (this.lifes -= e - this.curDeffence, this.lifes < 0 && (this.lifes = 0), -1 == t || this.isShielded || this.robot.hasLabel("dammage" + t) && this.robot.playLabel("dammage" + t, $bind(this, this.onDamageAnimEnd)), null != FightingMode.current && FightingMode.current.shakeAnim(), this.updateProgress()) }, onDamageAnimEnd: function(e) { this.destroied || (this.lifes > 0 ? this.robot.playLabel("idlle1") : (this.isDead = !0, this.isActing = !0, Main.current.playSpriteSound("BreakRobot"), this.robot.playLabel("dead"))) }, animateWin: function() { var e = this; this.robot.playLabel("idlle1"); motion_Actuate.timer(3).onComplete(function(t) { t.playLabel("winner1", $bind(e, e.startWinner2)) }, [this.robot]), this.isBot && !this.isTwoPlayersMode || motion_Actuate.timer(1).onComplete(function() { Main.current.playSpriteSound("RobotOhYeah") }) }, startWinner2: function(e) { Main.current.playSpriteSound("RobotDance", !0), e.playLabel("winner2"); for (var t = Desk.current.getElementByName("action0"), n = Desk.current.getElementsByFolderName("1PBtns"), i = 0; i < n.length; ) { var l = n[i]; ++i, motion_Actuate.tween(l, .3, { y: l.get_y() + 500 }) } n = Desk.current.getElementsByFolderName("2PBtns"); for (var a = 0; a < n.length; ) { var s = n[a]; ++a, motion_Actuate.tween(s, .3, { y: s.get_y() + 500 }) } n = Desk.current.getElementsByLayerName("Progresses2P"); for (var r = 0; r < n.length; ) { var _ = n[r]; ++r, motion_Actuate.tween(_, .3, { y: _.get_y() + 500 }) } n = Desk.current.getElementsByLayerName("Progresses1P"); for (var o = 0; o < n.length; ) { var p = n[o]; ++o, motion_Actuate.tween(p, .3, { y: p.get_y() + 500 }) } if (null != t) { t.set_visible(!0); var h = t.get_y() , d = t; d.set_y(d.get_y() + 700), motion_Actuate.tween(t, .4, { y: h }).ease(motion_easing_Back.get_easeOut()) } }, updateProgress: function() { var e; e = 0 == this.lifes ? 1e-4 : this.lifes / this.initLifes * this.progressLifesInitScaleX, motion_Actuate.tween(this.progressLifes, .2, { scaleX: e }, !0).ease(motion_easing_Quad.get_easeOut()) }, updateActProgress: function() { var e; null != this.actProgress && (e = 0 == this.reloadTime ? this.progressActInitScaleX : (1 - this.reloadTime / this.initReloadTime) * this.progressActInitScaleX, this.actProgress.set_scaleX(e)) }, destroy: function() { this.destroied = !0, this.robot = null, this.weaponsData = null, this.curWeapon = null, this.enemy = null, this.btns = null, this.desk = null, this.progressLifes = null, this.actProgress = null }, update: function(e) { this.reloadTime > 0 && (this.reloadTime -= e), this.reloadTime < 0 && (this.reloadTime = 0), this.updateActProgress(), this.isBot && this.get_canAct() && (this.nextActTime -= e, this.nextActTime <= 0 && (this.nextActTime = this.minToActTime + Math.random() * (this.maxToActTime - this.minToActTime), this.act(Std.random(4) + 1))) }, __class__: Robot, __properties__: { get_canAct: "get_canAct" } }; var FunctionsForLevels = function() {}; $hxClasses.FunctionsForLevels = FunctionsForLevels, FunctionsForLevels.__name__ = ["FunctionsForLevels"], FunctionsForLevels.initMainMenu = function() { openfl_ui_Multitouch.get_supportsTouchEvents() ? Desk.current.getElementByName("PplayBtn").set_visible(!1) : (Desk.current.getElementByName("playBtn1p").set_visible(!1), Desk.current.getElementByName("playBtn2p").set_visible(!1)) } , FunctionsForLevels.onePlayerClick1 = function() { FunctionsForLevels.onePlayerClick() } , FunctionsForLevels.onePlayerClick = function() { Archers.isTwoPlayers = !1, Desk.current.startNewGame(1) } , FunctionsForLevels.twoPlayersClick = function() { Archers.isTwoPlayers = !0, Desk.current.startNewGame(1) } ; var HartAnim = function(e) { this.animTime = .5, this.mc = e, this.initSx = e.get_scaleX(), this.initSy = e.get_scaleY(), e.set_visible(!1) }; $hxClasses.HartAnim = HartAnim, HartAnim.__name__ = ["HartAnim"], HartAnim.prototype = { initSx: null, initSy: null, mc: null, animTime: null, start: function() { this.mc.set_visible(!0), this.mc.set_scaleX(this.initSx), this.mc.set_scaleY(this.initSy); for (var e = 0; e < 4; ) { var t = e++ , n = 1.1 * (t + 1); motion_Actuate.tween(this.mc, this.animTime, { scaleX: this.initSx * n, scaleY: this.initSx * n }, !1).ease(motion_easing_Back.get_easeOut()).delay(this.animTime * t).onComplete(3 == t ? $bind(this, this.loopAnimStart) : null) } }, loopAnimStart: function() { motion_Actuate.tween(this.mc, this.animTime, { scaleX: 1.1 * this.mc.get_scaleX(), scaleY: 1.1 * this.mc.get_scaleY() }).ease(motion_easing_Back.get_easeOut()).reflect().repeat(-1).reverse(!1) }, stop: function() { this.mc.set_visible(!1), motion_Actuate.stop(this.mc, null, !1, !1) }, destroy: function() { motion_Actuate.stop(this.mc, null, !1, !1), this.mc = null }, __class__: HartAnim }; var HartsAnim = function(e, t) { this.genDifY = 30, this.genDifX = 30, this.randGenTime = .4, this.generationTime = .4, this.isActive = !1, this.hartsPool = [], openfl_display_Sprite.call(this), this.batch = e, this.hartImName = t, this.sourceBmd = e.getBitmapData(t) }; $hxClasses.HartsAnim = HartsAnim, HartsAnim.__name__ = ["HartsAnim"], HartsAnim.__super__ = openfl_display_Sprite, HartsAnim.prototype = $extend(openfl_display_Sprite.prototype, { batch: null, hartImName: null, sourceBmd: null, hartsPool: null, getHart: function() { if (this.hartsPool.length > 0) return this.hartsPool.pop(); var e = new openfl_display_Sprite , t = new openfl_display_Bitmap(this.sourceBmd,2,!0); return t.set_x(-t.get_width() / 2), t.set_y(-t.get_height() / 2), e.addChild(t), e }, sendToPool: function(e) { null != e.parent && e.parent.removeChild(e), e.set_alpha(1), e.set_scaleX(e.set_scaleY(1)), e.set_visible(!0), e.set_x(e.set_y(0)), this.hartsPool.push(e) }, isActive: null, generationTime: null, randGenTime: null, genDifX: null, genDifY: null, startAt: function(e, t) { null == t && (t = 0), null == e && (e = 0), this.isActive = !0, this.set_x(e), this.set_y(t), this.genHart() }, start: function() { this.startAt(this.get_x(), this.get_y()) }, genHart: function() { if (this.isActive) { var e = this.getHart(); this.addChild(e), e.set_x(this.genDifX * Math.random() * (Math.random() > .5 ? 1 : -1)), e.set_y(this.genDifY * Math.random() * (Math.random() > .5 ? 1 : -1)); var t, n = new motion_MotionPath, i = e.get_x(), l = e.get_y(); t = Math.random() > .5 ? 1 : -1; for (var a = 0; a < 5; ) { a++; var s = e.get_x() + 22 * t , r = l - 38; n.bezier(i, r, s, r + 19), l -= 38, t *= -1 } e.set_alpha(.05); motion_Actuate.tween(e, .2 * 2.3, { alpha: 1e-5 }).delay(2.3 - .2 * 2.3).ease(motion_easing_Quad.get_easeIn()), motion_Actuate.tween(e, .2 * 2.3, { alpha: 1 }, !1).ease(motion_easing_Quad.get_easeOut()), motion_Actuate.motionPath(e, 2.3, { x: n.get_x(), y: n.get_y() }).ease(motion_easing_Sine.get_easeIn()).onComplete($bind(this, this.onHartAnimEnd), [e]), motion_Actuate.timer(this.generationTime + Math.random() * this.randGenTime).onComplete($bind(this, this.genHart)) } }, onHartAnimEnd: function(e) { this.sendToPool(e) }, stop: function() { this.isActive = !1; for (var e = 0, t = this.get_numChildren(); e < t; ) { var n = e++; this.getChildAt(n).set_visible(!1) } }, destroy: function() { for (this.isActive = !1; this.get_numChildren() > 0; ) motion_Actuate.stop(this.removeChildAt(0), null, !0, !0); for (this.batch = null, this.sourceBmd = null; this.hartsPool.length > 0; ) this.hartsPool.pop() }, __class__: HartsAnim }); var nape_callbacks_CbType = function() { this.zpp_inner = null, this.zpp_inner = new zpp_$nape_callbacks_ZPP_$CbType, this.zpp_inner.outer = this }; $hxClasses["nape.callbacks.CbType"] = nape_callbacks_CbType, nape_callbacks_CbType.__name__ = ["nape", "callbacks", "CbType"], nape_callbacks_CbType.prototype = { zpp_inner: null, toString: function() { return this == zpp_$nape_callbacks_ZPP_$CbType.ANY_BODY ? "ANY_BODY" : this == zpp_$nape_callbacks_ZPP_$CbType.ANY_SHAPE ? "ANY_SHAPE" : this == zpp_$nape_callbacks_ZPP_$CbType.ANY_COMPOUND ? "ANY_COMPOUND" : this == zpp_$nape_callbacks_ZPP_$CbType.ANY_CONSTRAINT ? "ANY_CONSTRAINT" : "CbType#" + this.zpp_inner.id }, __class__: nape_callbacks_CbType }; var zpp_$nape_callbacks_ZPP_$CbType = function() { this.conlisteners = null, this.bodylisteners = null, this.listeners = null, this.cbsets = null, this.id = 0, this.outer = null, this.id = zpp_$nape_ZPP_$ID.CbType(), this.listeners = new zpp_$nape_util_ZNPList_$ZPP_$InteractionListener, this.bodylisteners = new zpp_$nape_util_ZNPList_$ZPP_$BodyListener, this.conlisteners = new zpp_$nape_util_ZNPList_$ZPP_$ConstraintListener, this.constraints = new zpp_$nape_util_ZNPList_$ZPP_$Constraint, this.interactors = new zpp_$nape_util_ZNPList_$ZPP_$Interactor, this.cbsets = new zpp_$nape_util_ZNPList_$ZPP_$CbSet }; $hxClasses["zpp_nape.callbacks.ZPP_CbType"] = zpp_$nape_callbacks_ZPP_$CbType, zpp_$nape_callbacks_ZPP_$CbType.__name__ = ["zpp_nape", "callbacks", "ZPP_CbType"], zpp_$nape_callbacks_ZPP_$CbType.prototype = { outer: null, id: null, cbsets: null, interactors: null, constraints: null, listeners: null, addint: function(e) { for (var t = null, n = this.listeners.head; null != n; ) { var i = n.elt; if (e.precedence > i.precedence || e.precedence == i.precedence && e.id > i.id) break; t = n, n = n.next } this.listeners.inlined_insert(t, e), this.invalidateint() }, invalidateint: function() { for (var e = this.cbsets.head; null != e; ) { var t = e.elt; t.zip_listeners = !0, t.invalidate_pairs(), e = e.next } }, bodylisteners: null, addbody: function(e) { for (var t = null, n = this.bodylisteners.head; null != n; ) { var i = n.elt; if (e.precedence > i.precedence || e.precedence == i.precedence && e.id > i.id) break; t = n, n = n.next } this.bodylisteners.inlined_insert(t, e), this.invalidatebody() }, invalidatebody: function() { for (var e = this.cbsets.head; null != e; ) { e.elt.zip_bodylisteners = !0, e = e.next } }, conlisteners: null, addconstraint: function(e) { for (var t = null, n = this.conlisteners.head; null != n; ) { var i = n.elt; if (e.precedence > i.precedence || e.precedence == i.precedence && e.id > i.id) break; t = n, n = n.next } this.conlisteners.inlined_insert(t, e), this.invalidateconstraint() }, invalidateconstraint: function() { for (var e = this.cbsets.head; null != e; ) { e.elt.zip_conlisteners = !0, e = e.next } }, __class__: zpp_$nape_callbacks_ZPP_$CbType }; var zpp_$nape_ZPP_$ID = function() {}; $hxClasses["zpp_nape.ZPP_ID"] = zpp_$nape_ZPP_$ID, zpp_$nape_ZPP_$ID.__name__ = ["zpp_nape", "ZPP_ID"], zpp_$nape_ZPP_$ID.Constraint = function() { return zpp_$nape_ZPP_$ID._Constraint++ } , zpp_$nape_ZPP_$ID.Interactor = function() { return zpp_$nape_ZPP_$ID._Interactor++ } , zpp_$nape_ZPP_$ID.CbType = function() { return zpp_$nape_ZPP_$ID._CbType++ } , zpp_$nape_ZPP_$ID.CbSet = function() { return zpp_$nape_ZPP_$ID._CbSet++ } , zpp_$nape_ZPP_$ID.Listener = function() { return zpp_$nape_ZPP_$ID._Listener++ } ; var zpp_$nape_util_ZNPList_$ZPP_$InteractionListener = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_InteractionListener"] = zpp_$nape_util_ZNPList_$ZPP_$InteractionListener, zpp_$nape_util_ZNPList_$ZPP_$InteractionListener.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_InteractionListener"], zpp_$nape_util_ZNPList_$ZPP_$InteractionListener.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$InteractionListener.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$InteractionListener : (n = zpp_$nape_util_ZNPNode_$ZPP_$InteractionListener.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$InteractionListener.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, inlined_insert: function(e, t) { var n, i; return null == zpp_$nape_util_ZNPNode_$ZPP_$InteractionListener.zpp_pool ? i = new zpp_$nape_util_ZNPNode_$ZPP_$InteractionListener : (i = zpp_$nape_util_ZNPNode_$ZPP_$InteractionListener.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$InteractionListener.zpp_pool = i.next, i.next = null), i.elt = t, n = i, null == e ? (n.next = this.head, this.head = n) : (n.next = e.next, e.next = n), this.pushmod = this.modified = !0, this.length++, n }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$InteractionListener.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$InteractionListener.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, remove: function(e) { this.inlined_try_remove(e) }, inlined_try_remove: function(e) { for (var t = null, n = this.head, i = !1; null != n; ) { if (n.elt == e) { this.inlined_erase(t), i = !0; break } t = n, n = n.next } return i }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$InteractionListener.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$InteractionListener.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, clear: function() { for (; null != this.head; ) this.inlined_pop(); this.pushmod = !0 }, inlined_clear: function() { for (; null != this.head; ) this.inlined_pop(); this.pushmod = !0 }, __class__: zpp_$nape_util_ZNPList_$ZPP_$InteractionListener }; var zpp_$nape_util_ZNPList_$ZPP_$BodyListener = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_BodyListener"] = zpp_$nape_util_ZNPList_$ZPP_$BodyListener, zpp_$nape_util_ZNPList_$ZPP_$BodyListener.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_BodyListener"], zpp_$nape_util_ZNPList_$ZPP_$BodyListener.prototype = { head: null, modified: null, pushmod: null, length: null, inlined_insert: function(e, t) { var n, i; return null == zpp_$nape_util_ZNPNode_$ZPP_$BodyListener.zpp_pool ? i = new zpp_$nape_util_ZNPNode_$ZPP_$BodyListener : (i = zpp_$nape_util_ZNPNode_$ZPP_$BodyListener.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$BodyListener.zpp_pool = i.next, i.next = null), i.elt = t, n = i, null == e ? (n.next = this.head, this.head = n) : (n.next = e.next, e.next = n), this.pushmod = this.modified = !0, this.length++, n }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$BodyListener.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$BodyListener.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, remove: function(e) { this.inlined_try_remove(e) }, inlined_try_remove: function(e) { for (var t = null, n = this.head, i = !1; null != n; ) { if (n.elt == e) { this.inlined_erase(t), i = !0; break } t = n, n = n.next } return i }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$BodyListener.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$BodyListener.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, clear: function() { for (; null != this.head; ) this.inlined_pop(); this.pushmod = !0 }, __class__: zpp_$nape_util_ZNPList_$ZPP_$BodyListener }; var zpp_$nape_util_ZNPList_$ZPP_$ConstraintListener = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_ConstraintListener"] = zpp_$nape_util_ZNPList_$ZPP_$ConstraintListener, zpp_$nape_util_ZNPList_$ZPP_$ConstraintListener.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_ConstraintListener"], zpp_$nape_util_ZNPList_$ZPP_$ConstraintListener.prototype = { head: null, modified: null, pushmod: null, length: null, inlined_insert: function(e, t) { var n, i; return null == zpp_$nape_util_ZNPNode_$ZPP_$ConstraintListener.zpp_pool ? i = new zpp_$nape_util_ZNPNode_$ZPP_$ConstraintListener : (i = zpp_$nape_util_ZNPNode_$ZPP_$ConstraintListener.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$ConstraintListener.zpp_pool = i.next, i.next = null), i.elt = t, n = i, null == e ? (n.next = this.head, this.head = n) : (n.next = e.next, e.next = n), this.pushmod = this.modified = !0, this.length++, n }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$ConstraintListener.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$ConstraintListener.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, remove: function(e) { this.inlined_try_remove(e) }, inlined_try_remove: function(e) { for (var t = null, n = this.head, i = !1; null != n; ) { if (n.elt == e) { this.inlined_erase(t), i = !0; break } t = n, n = n.next } return i }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$ConstraintListener.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$ConstraintListener.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, clear: function() { for (; null != this.head; ) this.inlined_pop(); this.pushmod = !0 }, __class__: zpp_$nape_util_ZNPList_$ZPP_$ConstraintListener }; var zpp_$nape_util_ZNPList_$ZPP_$Constraint = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_Constraint"] = zpp_$nape_util_ZNPList_$ZPP_$Constraint, zpp_$nape_util_ZNPList_$ZPP_$Constraint.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_Constraint"], zpp_$nape_util_ZNPList_$ZPP_$Constraint.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$Constraint.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$Constraint : (n = zpp_$nape_util_ZNPNode_$ZPP_$Constraint.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Constraint.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, insert: function(e, t) { return this.inlined_insert(e, t) }, inlined_insert: function(e, t) { var n, i; return null == zpp_$nape_util_ZNPNode_$ZPP_$Constraint.zpp_pool ? i = new zpp_$nape_util_ZNPNode_$ZPP_$Constraint : (i = zpp_$nape_util_ZNPNode_$ZPP_$Constraint.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Constraint.zpp_pool = i.next, i.next = null), i.elt = t, n = i, null == e ? (n.next = this.head, this.head = n) : (n.next = e.next, e.next = n), this.pushmod = this.modified = !0, this.length++, n }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$Constraint.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Constraint.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, inlined_pop_unsafe: function() { var e = this.head.elt; return this.pop(), e }, remove: function(e) { this.inlined_try_remove(e) }, inlined_try_remove: function(e) { for (var t = null, n = this.head, i = !1; null != n; ) { if (n.elt == e) { this.inlined_erase(t), i = !0; break } t = n, n = n.next } return i }, erase: function(e) { return this.inlined_erase(e) }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$Constraint.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Constraint.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, iterator_at: function(e) { for (var t = this.head; e-- > 0 && null != t; ) t = t.next; return t }, __class__: zpp_$nape_util_ZNPList_$ZPP_$Constraint }; var zpp_$nape_util_ZNPList_$ZPP_$CbSet = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_CbSet"] = zpp_$nape_util_ZNPList_$ZPP_$CbSet, zpp_$nape_util_ZNPList_$ZPP_$CbSet.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_CbSet"], zpp_$nape_util_ZNPList_$ZPP_$CbSet.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$CbSet.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$CbSet : (n = zpp_$nape_util_ZNPNode_$ZPP_$CbSet.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$CbSet.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$CbSet.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$CbSet.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, pop_unsafe: function() { return this.inlined_pop_unsafe() }, inlined_pop_unsafe: function() { var e = this.head.elt; return this.pop(), e }, remove: function(e) { this.inlined_try_remove(e) }, inlined_try_remove: function(e) { for (var t = null, n = this.head, i = !1; null != n; ) { if (n.elt == e) { this.inlined_erase(t), i = !0; break } t = n, n = n.next } return i }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$CbSet.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$CbSet.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, __class__: zpp_$nape_util_ZNPList_$ZPP_$CbSet }; var Hero = function(e, t, n, i) { if (null == i && (i = !1), this.destroied = !1, this.y = 0, this.x = 0, this.btnClickTouchIds = [], this.curMP = new openfl_geom_Point, this.wasPivAngle = 0, this.mdP = new openfl_geom_Point, this.touchID = -1, this.arrowGroup = new nape_dynamics_InteractionGroup(!0), this.hm = new openfl_geom_Matrix, this.active = !0, this.hasArchProtect = !1, this.hasTripleArrow = !1, this.hasExplosionArrow = !1, this.type = 0, this.helmet = null, this.pivotEls = [], this.elsPivotInits = [], this.pivot = new openfl_geom_Point, this.curPivotAngle = 0, this.parent = null, this.groupName = "", this.dead = !1, this.imp = 0, this.handInpMaxDX = 17, this.maxImp = 100, this.minImp = 40, this.curImp = 0, this.thisHeroGroup = new nape_dynamics_InteractionGroup(!0), this.fullDead = !1, this.isPlayer = !1, this.lifes = 2, this.platform = null, this.heroHeadMC = null, this.heroHead = null, this.curHeadCBType = new nape_callbacks_CbType, this.thisCBType = new nape_callbacks_CbType, this.joints = null, this.bodies = null, this.compound = null, i = i || Archers.isTwoPlayers, this.isPlayer = i, this.main = Main.current, this.desk = Desk.current, this.type = Std.parseInt(StringTools.replace(e, "Hero", "")), this.groupName = e, this.bodies = null != t ? t : this.desk.getElementsByFolderName(e), null != n) this.joints = n; else { this.joints = []; for (var l = 0, a = this.desk.levels.joints; l < a.length; ) { var s = a[l]; ++l; var r = [[]]; s.visitBodies(function(e) { return function(t) { e[0].push(t) } }(r)); for (var _ = !1, o = 0; o < r[0].length; ) { var p = r[0][o]; ++o; for (var h = 0, d = this.bodies; h < d.length; ) { var u = d[h]; if (++h, null != u.b && u.b == p) { this.joints.push(s), _ = !0; break } } if (_) break } } } this.prepareCloneData(), this.compound = new nape_phys_Compound, this.compound.set_space(this.main.space), this.compound.get_userData().hero = this; for (var c = 0, m = this.bodies; c < m.length; ) { var U = m[c]; ++c, null != U.b && (U.b.set_space(null), U.b.get_cbTypes().add(Hero.allHeroesCbType), U.b.get_cbTypes().add(this.thisCBType), this.compound.zpp_inner.wrap_bodies.add(U.b)) } for (var Q = null, N = 0, F = this.bodies; N < F.length; ) { var Z = F[N]; if (++N, null != Z.b && -1 == Z.get_name().indexOf("platformRD") && Z.b.set_group(this.thisHeroGroup), null != Z.b && -1 == Z.get_name().indexOf("archRD") && (Z.b.set_allowMovement(!1), Z.b.set_allowRotation(!1)), -1 != Z.get_name().indexOf("head")) this.heroHead = Z.b, this.heroHead.get_cbTypes().add(Hero.allHeroesHeadCbType), this.heroHead.get_cbTypes().add(this.curHeadCBType), this.heroHeadMC = Z; else if (-1 != Z.get_name().indexOf("handLRD")) this.pivotEls.push(Z), this.leftHand = Z.b; else if (-1 != Z.get_name().indexOf("handRRD")) this.pivotEls.push(Z), this.rightHand = Z.b; else if (-1 != Z.get_name().indexOf("archRD")) { this.pivotEls.push(Z), this.arch = Z.b, this.arch.get_userData().isArch = !0, this.arch.get_userData().hero = this, this.archEl = Z, this.updateArch(); for (var f = Z.b.zpp_inner.wrap_shapes.iterator(); f.hasNext(); ) { var S; f.zpp_critical = !1, (S = f.zpp_inner.at(f.zpp_i++)).zpp_inner.immutable_midstep("Shape::sensorEnabled"), S.zpp_inner.sensorEnabled = !0, S.zpp_inner.wake(), S.zpp_inner.sensorEnabled } } else if (-1 != Z.get_name().indexOf("arrowRD")) { this.pivotEls.push(Z), this.arrowEL = Z, this.updateArrow(); for (var g = Z.b.zpp_inner.wrap_shapes.iterator(); g.hasNext(); ) { var B; g.zpp_critical = !1, (B = g.zpp_inner.at(g.zpp_i++)).zpp_inner.immutable_midstep("Shape::sensorEnabled"), B.zpp_inner.sensorEnabled = !0, B.zpp_inner.wake(), B.zpp_inner.sensorEnabled } var b = Z.b.zpp_inner.aabb.wrapper(); this.arrowELJointLocP = this.arrowEL.b.worldPointToLocal(nape_geom_Vec2.weak(i && 22 != this.type ? (b.zpp_inner.validate(), b.zpp_inner.minx) : (b.zpp_inner.validate(), b.zpp_inner.minx + (b.zpp_inner.validate(), b.zpp_inner.width())), 0)), this.arrowELJointLocP.set_y(this.arrowEL.b.get_localCOM().get_y()) } else -1 != Z.get_name().indexOf("tetevaRD") ? (this.pivotEls.push(Z), this.teteva1 = Z) : -1 != Z.get_name().indexOf("tetevaP1RD") ? (this.tetevaP1 = Z, Z.set_visible(!1)) : -1 != Z.get_name().indexOf("tetevaP2RD") ? (this.tetevaP2 = Z, Z.set_visible(!1)) : -1 != Z.get_name().indexOf("bodyRD") ? Z.b : -1 != Z.get_name().indexOf("waveRD") ? this.wave = Z : -1 != Z.get_name().indexOf("pivotRD") ? (Q = Z, this.pivot.x = Z.get_x(), this.pivot.y = Z.get_y(), null != Z.parent && Z.parent.removeChild(Z), HxOverrides.remove(this.desk.levels.physicElements, Z)) : null != Z.b && -1 != Z.get_name().indexOf("platformRD") && (this.platform = Z, Z.b.set_group(Archers.arrowsInterGroup), Z.b.get_cbTypes().add(Hero.allHeroesPlatformCbType)) } HxOverrides.remove(this.bodies, Q); var v = this.teteva1.b.zpp_inner.aabb.wrapper(); this.archTetevaLocP1 = this.arch.worldPointToLocal(nape_geom_Vec2.weak((v.zpp_inner.validate(), v.zpp_inner.minx + (v.zpp_inner.validate(), v.zpp_inner.width() / 2)), (v.zpp_inner.validate(), v.zpp_inner.miny))), this.archTetevaLocP2 = this.arch.worldPointToLocal(nape_geom_Vec2.weak((v.zpp_inner.validate(), v.zpp_inner.minx + (v.zpp_inner.validate(), v.zpp_inner.width() / 2)), (v.zpp_inner.validate(), v.zpp_inner.miny + (v.zpp_inner.validate(), v.zpp_inner.height())))); for (var W = 0, T = this.joints; W < T.length; ) { var V = T[W]; ++W, this.compound.zpp_inner.wrap_constraints.add(V) } for (var R = 0, y = this.bodies; R < y.length; ) { var D = y[R]; ++R; var x = { el: D, pivotOX: D.get_x() - this.pivot.x, pivotOY: D.get_y() - this.pivot.y, r: D.get_rotation(), bPivotOX: null == D.b ? 0 : D.b.get_position().get_x() - this.pivot.x, bPivotOY: null == D.b ? 0 : D.b.get_position().get_y() - this.pivot.y, bR: null == D.b ? 0 : D.b.zpp_inner.rot }; this.elsPivotInits.push(x) } this.setHeadFrame(0) }; $hxClasses.Hero = Hero, Hero.__name__ = ["Hero"], Hero.getHeroClone = function(e, t) { var n = Hero.cloneData.get(e) , i = Desk.current.levels.initElementsFromData(n.elements, t) , l = Desk.current.levels.initJointsFromData(n.jointsData, i); i.reverse(); var a = null , s = Std.parseInt(StringTools.replace(e, "Hero", "")); return s < 3 || 22 == s ? a = new Hero(n.groupName,i,l,n.isPlayer) : 3 == s && (a = new HeroBaloon(n.groupName,i,l,n.isPlayer)), a.parent = t, a } , Hero.normalizeAngle = function(e, t) { return null == t && (t = !1), (e %= 2 * Math.PI) < -Math.PI && (e += 2 * Math.PI), e > Math.PI && (e -= 2 * Math.PI), t && e < 0 && (e += 2 * Math.PI), e } , Hero.prototype = { compound: null, bodies: null, joints: null, main: null, desk: null, thisCBType: null, curHeadCBType: null, heroHead: null, heroHeadMC: null, platform: null, lifes: null, isPlayer: null, shootTimer: null, handsActuator: null, shootTimer2: null, deadTimer: null, fullDead: null, arch: null, archEl: null, leftHand: null, rightHand: null, arrowEL: null, teteva1: null, tetevaP1: null, tetevaP2: null, archTetevaLocP1: null, archTetevaLocP2: null, arrowELJointLocP: null, thisHeroGroup: null, curImp: null, minImp: null, maxImp: null, handInpMaxDX: null, imp: null, wave: null, dead: null, groupName: null, parent: null, curPivotAngle: null, pivot: null, elsPivotInits: null, pivotEls: null, helmet: null, type: null, hasExplosionArrow: null, hasTripleArrow: null, hasArchProtect: null, set_hasExplosionArrow: function(e) { return this.hasExplosionArrow = e, this.updateArrow(), e }, set_hasTripleArrow: function(e) { return this.hasTripleArrow = e, this.updateArrow(), e }, set_hasArchProtect: function(e) { return this.hasArchProtect = e, this.updateArch(), e }, getArrowType: function() { return this.hasExplosionArrow ? 1 : this.hasTripleArrow ? 2 : 0 }, updateArrow: function(e) { null != (e = null == e ? this.arrowEL : e).b && (e.b.get_userData().arrowType = this.getArrowType()), e.gotoAndStop(this.getArrowType()) }, updateArch: function() { this.archEl.b.get_userData().reflectProtect = this.hasArchProtect, this.archEl.gotoAndStop(this.hasArchProtect ? 1 : 0) }, get_waveBotttom: function() { return Config.baseSHeight - 50 }, active: null, set_active: function(e) { if (null == this.compound) return !1; if (null == this.parent && (this.parent = this.desk.levels), e == this.active) return e; this.active = e, this.compound.set_space(e ? this.main.space : null); for (var t = 0, n = this.bodies; t < n.length; ) { var i = n[t]; if (++t, i.set_visible(e), e) { if (null != i.b) for (var l = i.b.get_constraints().iterator(); l.hasNext(); ) { var a; l.zpp_critical = !1, 1 != (a = l.zpp_inner.at(l.zpp_i++)).zpp_inner.active && (null != a.zpp_inner.component && (a.zpp_inner.component.woken = !1), a.zpp_inner.clearcache(), a.zpp_inner.active = !0, a.zpp_inner.activate(), null != a.zpp_inner.space && (null != a.zpp_inner.component && (a.zpp_inner.component.sleeping = !0), a.zpp_inner.space.wake_constraint(a.zpp_inner, !0))), a.zpp_inner.active } -1 == HxOverrides.indexOf(this.desk.levels.physicElements, i, 0) && (this.desk.levels.physicElements.push(i), this.parent.addChild(i)) } else { if (null != i.b) for (var s = i.b.get_constraints().iterator(); s.hasNext(); ) { var r; s.zpp_critical = !1, 0 != (r = s.zpp_inner.at(s.zpp_i++)).zpp_inner.active && (null != r.zpp_inner.component && (r.zpp_inner.component.woken = !1), r.zpp_inner.clearcache(), null != r.zpp_inner.space && (r.zpp_inner.wake(), r.zpp_inner.space.live_constraints.remove(r.zpp_inner)), r.zpp_inner.active = !1, r.zpp_inner.deactivate()), r.zpp_inner.active } HxOverrides.remove(this.desk.levels.physicElements, i), null != i.parent && i.parent.removeChild(i) } i.update(0) } return e }, waveUpdate: function(e) { isNaN(e) || null == this.wave || (this.wave.set_scaleY(e), this.wave.set_y(this.get_waveBotttom() - this.wave.get_height())) }, prepareCloneData: function() { if (!Hero.cloneData.exists(this.groupName)) { for (var e = [], t = [], n = 0, i = this.bodies; n < i.length; ) { var l = i[n]; ++n, e.unshift(l.mainData) } for (var a = 0, s = this.joints; a < s.length; ) { var r = s[a]; ++a, t.push(this.desk.levels.getJointData(r)) } var _ = { groupName: this.groupName, elements: e, jointsData: t, isPlayer: this.isPlayer }; Hero.cloneData.set(this.groupName, _) } }, init: function() { this.isPlayer || Archers.current.isTutorActive || this.startAI(), this.set_active(!0), this.tetevaP1.set_visible(!1), this.tetevaP2.set_visible(!1) }, startAI: function() { this.isPlayer || this.destroied || this.isPlayer || (this.shootTimer = motion_Actuate.timer(2).repeat(-1).onRepeat($bind(this, this.throwArrow))) }, setHeadFrame: function(e) { 0 != e && (this.helmet = Archers.getHelmet(e), this.active || null == this.helmet.parent || this.helmet.parent.removeChild(this.helmet), this.active || (this.helmet.b.set_space(null), HxOverrides.remove(this.desk.levels.physicElements, this.helmet)), this.active && (null == this.parent && (this.parent = this.desk.levels), this.parent.addChild(this.helmet)), this.helmet.b.get_position().set_x(this.heroHead.get_position().get_x()), this.helmet.b.get_position().set_y(this.heroHead.get_position().get_y()), this.helmet.b.set_allowMovement(this.helmet.b.set_allowRotation(!1)), this.bodies.push(this.helmet), this.compound.zpp_inner.wrap_bodies.add(this.helmet.b), this.helmet.b.set_group(this.thisHeroGroup), this.helmet.b.get_userData().type = "helmet", this.helmet.b.get_userData().lifes = e, this.helmet.b.get_cbTypes().add(this.thisCBType)) }, onGameOver: function() { motion_Actuate.stop(this.shootTimer) }, throwArrow: function() { this.teteva1.set_visible(!1), this.tetevaP1.set_visible(this.tetevaP2.set_visible(!0)), this.arrowEL.set_visible(!0), this.curImp = 0, this.imp = 0; var e, t, n, i; e = Archers.current.p1.heroHead.get_worldCOM().get_x(), t = Archers.current.p1.heroHead.get_worldCOM().get_y(), n = this.heroHead.get_worldCOM().get_x(), i = this.heroHead.get_worldCOM().get_y(), this.imp = this.minImp + Math.random() * (this.maxImp - this.minImp); var l = Math.atan2(i - t, n - e); l = Hero.normalizeAngle(l), l += Math.PI / 180 * 30 + Math.random() * (Math.PI / 180 * -50), this.shootTimer2 = motion_Actuate.timer(1).onComplete($bind(this, this.shoot), [this.imp]), this.handsActuator = motion_Actuate.update($bind(this, this.updateHands), .5, [this.curPivotAngle, this.minImp], [l, this.imp]).ease(motion_easing_Linear.get_easeNone()), this.updateTetevas(), this.main.playSpriteSound("BowPull") }, updateHands: function(e, t) { this.destroied || isNaN(e) || this.updateHands1(e, t) }, hm: null, updateHands1: function(e, t) { this.curPivotAngle = e; for (var n = 0, i = this.pivotEls; n < i.length; ) { var l = i[n]; ++n; var a = this.getInitData(l); if (null != l.b) { var s = 0; -1 == l.get_name().indexOf("handLRD") && -1 == l.get_name().indexOf("arrowRD") || (s = (t - this.minImp) / (this.maxImp - this.minImp) * this.handInpMaxDX, this.isPlayer && 22 != this.type || (s *= -1)), this.hm.identity(), this.hm.rotate(a.bR), this.hm.tx = this.pivot.x + a.bPivotOX - s, this.hm.ty = this.pivot.y + a.bPivotOY, this.hm.translate(-this.pivot.x, -this.pivot.y), this.hm.rotate(e), this.hm.translate(this.pivot.x, this.pivot.y), l.b.set_rotation(Hero.normalizeAngle(a.bR + e, !0)), l.b.get_position().set_x(this.hm.tx), l.b.get_position().set_y(this.hm.ty) } } }, getInitData: function(e) { for (var t = 0, n = this.elsPivotInits; t < n.length; ) { var i = n[t]; if (++t, i.el == e) return i } return null }, arrowGroup: null, shoot: function(e) { var t; this.updateHands(this.curPivotAngle, this.minImp), this.teteva1.set_visible(!0), this.teteva1.update(0), this.tetevaP1.set_visible(this.tetevaP2.set_visible(!1)), t = this.hasTripleArrow ? 3 : 1; var n, i = 0, l = Math.PI / 180 * 5.2; for (n = this.arrowEL.b.zpp_inner.rot - (this.isPlayer && 22 != this.type ? 0 : Math.PI); i < t; ) { var a = Archers.current.getNewArrowMC(this.arrowEL, this.isPlayer); this.updateArrow(a), this.hasTripleArrow && a.gotoAndStop(0); for (var s = a.b.zpp_inner.wrap_shapes.iterator(); s.hasNext(); ) { s.zpp_critical = !1, s.zpp_inner.at(s.zpp_i++) } a.b.get_position().setxy(this.arrowEL.b.get_position().get_x(), this.arrowEL.b.get_position().get_y()), a.b.set_rotation(Hero.normalizeAngle(this.arrowEL.b.zpp_inner.rot)), this.arrowEL.set_visible(!1); var r = e * a.b.get_mass() * 10; a.b.applyImpulse(nape_geom_Vec2.weak(Math.cos(n) * r, Math.sin(n) * r)), a.update(0), a.b.set_group(this.arrowGroup), a.b.get_userData().dest = this, i++, n += l } this.main.playSpriteSound("BowRealease") }, heal: function() { this.lifes = 2; for (var e = 0, t = this.bodies; e < t.length; ) { var n = t[e]; if (++e, null != n.b) for (var i = n.b.get_constraints().iterator(); i.hasNext(); ) { var l; if (i.zpp_critical = !1, l = i.zpp_inner.at(i.zpp_i++), js_Boot.__instanceof(l, nape_constraint_WeldJoint)) { var a = l; (null == a.zpp_inner_zn.b1 ? null : a.zpp_inner_zn.b1.outer).get_cbTypes().has(Archers.current.arrowCBType) ? (0 != a.zpp_inner.active && (null != a.zpp_inner.component && (a.zpp_inner.component.woken = !1), a.zpp_inner.clearcache(), null != a.zpp_inner.space && (a.zpp_inner.wake(), a.zpp_inner.space.live_constraints.remove(a.zpp_inner)), a.zpp_inner.active = !1, a.zpp_inner.deactivate()), a.zpp_inner.active, (null == a.zpp_inner_zn.b1 ? null : a.zpp_inner_zn.b1.outer).get_position().set_x(-1e4), (null == a.zpp_inner_zn.b1 ? null : a.zpp_inner_zn.b1.outer).set_space(null), js_Boot.__cast((null == a.zpp_inner_zn.b1 ? null : a.zpp_inner_zn.b1.outer).get_userData().mc, openfl_display_DisplayObject).set_visible(!1)) : (null == a.zpp_inner_zn.b2 ? null : a.zpp_inner_zn.b2.outer).get_cbTypes().has(Archers.current.arrowCBType) && (0 != a.zpp_inner.active && (null != a.zpp_inner.component && (a.zpp_inner.component.woken = !1), a.zpp_inner.clearcache(), null != a.zpp_inner.space && (a.zpp_inner.wake(), a.zpp_inner.space.live_constraints.remove(a.zpp_inner)), a.zpp_inner.active = !1, a.zpp_inner.deactivate()), a.zpp_inner.active, (null == a.zpp_inner_zn.b2 ? null : a.zpp_inner_zn.b2.outer).get_position().set_x(-1e4), (null == a.zpp_inner_zn.b2 ? null : a.zpp_inner_zn.b2.outer).set_space(null), js_Boot.__cast((null == a.zpp_inner_zn.b2 ? null : a.zpp_inner_zn.b2.outer).get_userData().mc, openfl_display_DisplayObject).set_visible(!1)) } } } this.main.playSpriteSound("Heal") }, recieveDammage: function(e, t, n, i) { var l; if (null == i && (i = !1), l = null == t ? 0 : t.b.get_userData().arrowType, i && this.isPlayer && (i = !1), (i || 1 == l) && (this.lifes = 1, e = this.leftHand, 1 == l && this.main.playSpriteSound("ExpSound")), !this.dead) { this.isPlayer || !i && null != t && js_Boot.__cast(t.b.get_userData().dest, Hero).isPlayer && Archers.current.numShootsHit++; var a = null != e && (null == e.zpp_inner_i.wrap_cbTypes && e.zpp_inner_i.setupcbTypes(), e.zpp_inner_i.wrap_cbTypes).has(Hero.allHeroesHeadCbType); this.lifes; if (a ? this.lifes = 0 : this.lifes--, 0 == this.lifes) { Archers.current.addScore(a); for (var s = 0, r = this.bodies; s < r.length; ) { var _ = r[s]; ++s, null != _.b && (_.b.set_allowMovement(!0), _.b.set_allowRotation(!0)) } for (var o = this.arch.zpp_inner.wrap_shapes.iterator(); o.hasNext(); ) { var p; o.zpp_critical = !1, (p = o.zpp_inner.at(o.zpp_i++)).zpp_inner.immutable_midstep("Shape::sensorEnabled"), p.zpp_inner.sensorEnabled = !1, p.zpp_inner.wake(), p.zpp_inner.sensorEnabled } for (var h = 0, d = this.joints; h < d.length; ) { var u = d[h]; if (++h, js_Boot.__instanceof(u, nape_constraint_WeldJoint)) { var c = u; if ((null == c.zpp_inner_zn.b1 ? null : c.zpp_inner_zn.b1.outer) == this.teteva1.b || (null == c.zpp_inner_zn.b2 ? null : c.zpp_inner_zn.b2.outer) == this.teteva1.b) continue; null != (null == c.zpp_inner.compound ? null : c.zpp_inner.compound.outer) && null != (null == c.zpp_inner.compound ? null : c.zpp_inner.compound.outer) && (null == c.zpp_inner.compound ? null : c.zpp_inner.compound.outer).zpp_inner.wrap_constraints.remove(c), null == c.zpp_inner.compound || c.zpp_inner.compound.outer } } if (this.teteva1.set_visible(!0), this.tetevaP1.set_visible(this.tetevaP2.set_visible(!1)), this.dead = !0, null != this.platform) { var m = this.platform.b.zpp_inner.aabb.wrapper(); this.platform.b.set_type((null == zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC)), this.platform.b.applyImpulse(nape_geom_Vec2.weak(0, -(200 + 120 * Math.random())), nape_geom_Vec2.weak((m.zpp_inner.validate(), m.zpp_inner.minx + (m.zpp_inner.validate(), m.zpp_inner.width()) - 10), (m.zpp_inner.validate(), m.zpp_inner.miny + (m.zpp_inner.validate(), m.zpp_inner.height() / 2)))) } if (null != this.wave && motion_Actuate.update($bind(this, this.waveUpdate), .5, [this.wave.get_scaleY()], [.001], !1).ease(motion_easing_Quad.get_easeIn()), this.isPlayer && this.main.playSpriteSound("HumHit" + (Std.random(3) + 1)), this.isPlayer && !Archers.isTwoPlayers) return void Archers.current.showFS(); if (this.isPlayer && Archers.isTwoPlayers) return void Archers.current.onTwoPlayersDead(this.type); this.deadTimer = motion_Actuate.timer(1).onComplete($bind(this, this.setFullDead)), null != this.shootTimer && motion_Actuate.stop(this.shootTimer, null, !1, !1), this.shootTimer = null, null != this.shootTimer2 && motion_Actuate.stop(this.shootTimer2, null, !1, !1), this.shootTimer2 = null, null != this.handsActuator && motion_Actuate.stop(this.handsActuator, null, !1, !1), this.handsActuator = null, this.isPlayer || this.main.playSpriteSound("Bones") } else this.main.playSpriteSound("Stab" + (Std.random(2) + 1)); 1 == l && this.explode(t), null != e && null != n && (e.applyImpulse(nape_geom_Vec2.weak((n.zpp_inner.validate(), n.zpp_inner.x), (n.zpp_inner.validate(), n.zpp_inner.y))), e.applyAngularImpulse((n.zpp_inner.validate(), n.zpp_inner.z))) } }, explode: function(e) { for (var t = 0, n = this.bodies; t < n.length; ) { var i = n[t]; if (++t, null != i.b) for (var l = i.b.get_constraints().iterator(); l.hasNext(); ) { l.zpp_critical = !1, l.zpp_inner.at(l.zpp_i++).set_active(!(Math.random() < .3)) } } var a = e.b.get_worldCOM().copy(null) , s = a; s.set_y((s.zpp_inner.validate(), s.zpp_inner.y + 40)); var r, _ = this.main.space.bodiesInCircle(nape_geom_Vec2.weak((a.zpp_inner.validate(), a.zpp_inner.x), (a.zpp_inner.validate(), a.zpp_inner.y)), 120, !1); for (_.zpp_inner.valmod(), r = nape_phys_BodyIterator.get(_); r.hasNext(); ) { var o; r.zpp_critical = !1, o = r.zpp_inner.at(r.zpp_i++); var p = new nape_geom_Vec2 , h = new nape_geom_Vec2; if (2 == o.zpp_inner.type && o != e.b) { var d = nape_geom_Geom.distanceBody(e.b, o, p, h); d < 0 && (d = .001); var u = h.sub(a) , c = Math.sqrt((u.zpp_inner.validate(), u.zpp_inner.x * (u.zpp_inner.validate(), u.zpp_inner.x) + (u.zpp_inner.validate(), u.zpp_inner.y * (u.zpp_inner.validate(), u.zpp_inner.y)))); u.muleq(1 / c), u.muleq((120 - d) / 120 * 70), o.applyImpulse(u), o.applyAngularImpulse((Math.random() > .5 ? 1 : -1) * Math.random() * 200) } } }, setFullDead: function() { this.fullDead = !0, this.deadTimer = motion_Actuate.timer(5).onComplete($bind(this, this.destroy)) }, activateSpecialArrow: function(e) { this.set_hasTripleArrow(2 == e), this.set_hasExplosionArrow(1 == e) }, activateProtect: function() { this.set_hasArchProtect(!0) }, deactivateBonus: function(e) { switch (++e) { case 1: this.set_hasExplosionArrow(!1); break; case 2: this.set_hasTripleArrow(!1); break; case 3: this.set_hasArchProtect(!1) } }, activateBonus: function(e) { switch (e) { case 1: this.activateSpecialArrow(1), this.main.playSpriteSound("Activate"); break; case 2: this.activateSpecialArrow(2), this.main.playSpriteSound("Activate"); break; case 3: this.activateProtect(), this.main.playSpriteSound("Activate"); break; case 4: this.heal() } Archers.current.activateBonus(e - 1) }, touchID: null, mdP: null, wasPivAngle: null, curMP: null, btnClickTouchIds: null, update: function(e) { if (this.dead) for (var t = 0, n = this.bodies; t < n.length; ) { var i = n[t]; if (++t, null != i.b && !i.b.zpp_inner.wrap_shapes.at(0).get_sensorEnabled()) for (var l = i.b.get_arbiters().iterator(); l.hasNext(); ) { var a, s; if (l.zpp_critical = !1, a = l.zpp_inner.at(l.zpp_i++), null != (s = i.b != (a.zpp_inner.ws1.id > a.zpp_inner.ws2.id ? a.zpp_inner.b2.outer : a.zpp_inner.b1.outer) ? a.zpp_inner.ws1.id > a.zpp_inner.ws2.id ? a.zpp_inner.b2.outer : a.zpp_inner.b1.outer : i.b != (a.zpp_inner.ws1.id > a.zpp_inner.ws2.id ? a.zpp_inner.b1.outer : a.zpp_inner.b2.outer) ? a.zpp_inner.ws1.id > a.zpp_inner.ws2.id ? a.zpp_inner.b1.outer : a.zpp_inner.b2.outer : null) && null != (null == s.zpp_inner.compound ? null : s.zpp_inner.compound.outer) && null != (null == s.zpp_inner.compound ? null : s.zpp_inner.compound.outer).get_userData().hero && (null == s.zpp_inner.compound ? null : s.zpp_inner.compound.outer).get_userData().hero != this) { (null == s.zpp_inner.compound ? null : s.zpp_inner.compound.outer).get_userData().hero.recieveDammage(null, null, null, !0); break } } } else if (null != this.helmet && null != this.helmet.b && this.helmet.b.get_userData().lifes <= 0) for (var r = this.helmet.b.get_arbiters().iterator(); r.hasNext(); ) { var _, o; if (r.zpp_critical = !1, _ = r.zpp_inner.at(r.zpp_i++), null != (o = this.helmet.b != (_.zpp_inner.ws1.id > _.zpp_inner.ws2.id ? _.zpp_inner.b2.outer : _.zpp_inner.b1.outer) ? _.zpp_inner.ws1.id > _.zpp_inner.ws2.id ? _.zpp_inner.b2.outer : _.zpp_inner.b1.outer : this.helmet.b != (_.zpp_inner.ws1.id > _.zpp_inner.ws2.id ? _.zpp_inner.b1.outer : _.zpp_inner.b2.outer) ? _.zpp_inner.ws1.id > _.zpp_inner.ws2.id ? _.zpp_inner.b1.outer : _.zpp_inner.b2.outer : null) && null != (null == o.zpp_inner.compound ? null : o.zpp_inner.compound.outer) && null != (null == o.zpp_inner.compound ? null : o.zpp_inner.compound.outer).get_userData().hero && (null == o.zpp_inner.compound ? null : o.zpp_inner.compound.outer).get_userData().hero != this) { (null == o.zpp_inner.compound ? null : o.zpp_inner.compound.outer).get_userData().hero.recieveDammage(null, null, null, !0); break } } if (this.active && !this.dead) { if (this.isPlayer) { var p, h = !1, d = null; if (null != (p = 22 == this.type ? Archers.current.player2Btns : Archers.current.player1Btns)) for (var u = 0, c = Archers.current.curFrameTouchesData; u < c.length; ) { var m = c[u]; if (++u, m.isTouchDown) { this.curMP.x = m.x, this.curMP.y = m.y; for (var U = 0; U < p.length; ) { var Q = p[U]; ++U; var N = Q.getBounds(openfl_Lib.current.stage); if (Q.get_visible() && 1 == Q.get_alpha() && N.contains(this.curMP.x, this.curMP.y)) { h = !0, this.btnClickTouchIds.push(m.id), d = Q; break } } } if (h) break } if (h) { var F = d.get_name() , Z = Std.parseInt(StringTools.replace(StringTools.replace(F, "bonus", ""), "Btn", "")); this.activateBonus(Z) } var f, S = !1; if (f = -1 != this.touchID, -1 != this.touchID) Archers.current.touchesCoords.h.hasOwnProperty(this.touchID) && (this.curMP.x = Archers.current.touchesCoords.h[this.touchID].x, this.curMP.y = Archers.current.touchesCoords.h[this.touchID].y, f = !1); else for (var g = 0, B = Archers.current.curFrameTouchesData; g < B.length; ) { var b = B[g]; if (++g, b.isTouchDown && !h && !Archers.current.isBtnClick && (this.curMP.x = b.x, this.curMP.y = b.y, !Archers.isTwoPlayers || this.curMP.x < openfl_Lib.current.stage.stageWidth / 2 / (Config.scale < 1 ? Config.scale : 1) && 22 != this.type || this.curMP.x > openfl_Lib.current.stage.stageWidth / 2 / (Config.scale < 1 ? Config.scale : 1) && 22 == this.type)) { this.touchID = b.id, HxOverrides.remove(Archers.current.curFrameTouchesData, b), S = !0; break } } if (!h && !Archers.current.isBtnClick) { if (this.curMP = this.desk.levels.globalToLocal(this.curMP), S && (this.teteva1.set_visible(!1), this.tetevaP1.set_visible(this.tetevaP2.set_visible(!0)), this.arrowEL.set_visible(!0), this.mdP.x = this.curMP.x, this.mdP.y = this.curMP.y, this.wasPivAngle = this.curPivotAngle, this.main.playSpriteSound("BowPullShort")), -1 != this.touchID && !f) { var v = this.heroHead.get_worldCOM(); this.curMP.x - (v.zpp_inner.validate(), v.zpp_inner.x), 100; this.curMP.y, this.mdP.y; -1, 22 == this.type && -1; var W = MathHelper.getAngleBetweenPointsXY(this.x, this.y, this.curMP.x, this.curMP.y); 22 == this.type && (W = MathHelper.getAngleBetweenPointsXY(this.curMP.x, this.curMP.y, this.x, this.y)); var T = this.x - this.curMP.x; T /= 5, Archers.isTwoPlayers && (T *= 2), 22 == this.type && (T *= -1), T *= -1, this.curImp = this.minImp + Math.min(1, T > 0 ? Math.abs(T) / 100 : 0) * (this.maxImp - this.minImp), this.updateHands(Hero.normalizeAngle(W), this.curImp) } f && -1 != this.touchID && -1 == HxOverrides.indexOf(this.btnClickTouchIds, this.touchID, 0) && this.shoot(this.curImp), f && (this.touchID = -1) } } for (var V = 0; V < this.btnClickTouchIds.length; ) Archers.current.touchesCoords.h.hasOwnProperty(this.btnClickTouchIds[V]) ? V++ : HxOverrides.remove(this.btnClickTouchIds, this.btnClickTouchIds[V]); this.teteva1.get_visible() || this.updateTetevas() } }, updateTetevas: function() { var e, t, n, i, l = this.arch.localPointToWorld(this.archTetevaLocP1), a = this.arch.localPointToWorld(this.archTetevaLocP2), s = this.arrowEL.b.localPointToWorld(this.arrowELJointLocP); this.tetevaP1.set_x((l.zpp_inner.validate(), l.zpp_inner.x)), this.tetevaP1.set_y((l.zpp_inner.validate(), l.zpp_inner.y)), this.tetevaP2.set_x((a.zpp_inner.validate(), a.zpp_inner.x)), this.tetevaP2.set_y((a.zpp_inner.validate(), a.zpp_inner.y)), this.tetevaP1.set_scaleX(this.tetevaP1.set_scaleY(1)), this.tetevaP2.set_scaleX(this.tetevaP2.set_scaleY(1)), this.tetevaP1.set_rotation(this.tetevaP2.set_rotation(0)), s.zpp_inner.validate(), e = s.zpp_inner.x - (l.zpp_inner.validate(), l.zpp_inner.x), s.zpp_inner.validate(), t = s.zpp_inner.y - (l.zpp_inner.validate(), l.zpp_inner.y), s.zpp_inner.validate(), n = s.zpp_inner.x - (a.zpp_inner.validate(), a.zpp_inner.x), s.zpp_inner.validate(), i = s.zpp_inner.y - (a.zpp_inner.validate(), a.zpp_inner.y), this.tetevaP1.set_height(Math.sqrt(e * e + t * t)), this.tetevaP2.set_height(Math.sqrt(n * n + i * i)), this.tetevaP1.set_rotation(Math.atan2(t, e) * (180 / Math.PI) - 90), this.tetevaP2.set_rotation(Math.atan2(i, n) * (180 / Math.PI) - 90) }, x: null, y: null, set_x: function(e) { return this.x = e, this.posThis(), this.x }, set_y: function(e) { return this.y = e, this.posThis(), this.y }, posThis: function() { var e = this.x - this.platform.b.get_worldCOM().get_x() , t = this.y - this.platform.b.get_worldCOM().get_y(); this.compound.translate(nape_geom_Vec2.get(e, t, !0)); for (var n = 0, i = this.bodies; n < i.length; ) { var l = i[n]; ++n, l.update(0) } if (null != this.wave) { var a = this.wave; a.set_x(a.get_x() + e); var s = this.wave; s.set_y(s.get_y() + t) } this.pivot.x += e, this.pivot.y += t }, animateWaveApear: function(e) { if (null == e && (e = !0), null != this.wave) { this.wave.set_scaleY(1); var t = (this.get_waveBotttom() - this.wave.get_y()) / this.wave.get_height(); this.deadTimer = motion_Actuate.update($bind(this, this.waveUpdate), .8, [.01], [t], !0).onComplete($bind(this, this.onWaveApeared), [e]), this.wave.set_scaleY(.001), this.set_active(!1), this.wave.set_visible(!0), this.parent.addChild(this.wave) } else this.init() }, onWaveApeared: function(e) { null == e && (e = !0), e && this.init() }, destroied: null, destroy: function() { if (!this.destroied) { for (this.destroied = !0, this.set_active(!1), this.heroHeadMC = null, this.compound.set_space(null), this.compound = null, this.bodies = null, this.joints = null, this.wave = null, this.main = null, this.desk = null, this.heroHead = null, this.curHeadCBType = null, this.thisCBType = null, this.leftHand = null, this.rightHand = null, this.arch = null, this.platform = null, this.teteva1 = null, this.tetevaP1 = null, this.tetevaP2 = null; this.elsPivotInits.length > 0; ) this.elsPivotInits.pop(); this.elsPivotInits = null, this.archTetevaLocP1 = null, this.archTetevaLocP2 = null, null != this.shootTimer && motion_Actuate.stop(this.shootTimer, null, !1, !1), this.shootTimer = null, null != this.shootTimer2 && motion_Actuate.stop(this.shootTimer2, null, !1, !1), this.shootTimer2 = null, null != this.handsActuator && motion_Actuate.stop(this.handsActuator, null, !1, !1), null != this.deadTimer && motion_Actuate.stop(this.deadTimer, null, !1, !1), this.deadTimer = null } }, __class__: Hero, __properties__: { set_y: "set_y", set_x: "set_x", set_active: "set_active", get_waveBotttom: "get_waveBotttom", set_hasArchProtect: "set_hasArchProtect", set_hasTripleArrow: "set_hasTripleArrow", set_hasExplosionArrow: "set_hasExplosionArrow" } }; var HeroBaloon = function(e, t, n, i) { null == i && (i = !1), Hero.call(this, e, t, n, i); for (var l = 0, a = this.bodies; l < a.length; ) { var s = a[l]; if (++l, null != s.b && -1 != s.get_name().indexOf("baloonRD")) { this.baloon = s, this.baloon.gotoAndStop(0), s.b.set_type((null == zpp_$nape_util_ZPP_$Flags.BodyType_KINEMATIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_KINEMATIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.BodyType_KINEMATIC)); break } } }; $hxClasses.HeroBaloon = HeroBaloon, HeroBaloon.__name__ = ["HeroBaloon"], HeroBaloon.__super__ = Hero, HeroBaloon.prototype = $extend(Hero.prototype, { baloon: null, recieveDammage: function(e, t, n, i) { var l; if (null == i && (i = !1), l = null == t ? 0 : t.b.get_userData().arrowType, i && this.isPlayer && (i = !1), (i || 1 == l && e != this.baloon.b) && (this.lifes = 1, e = this.leftHand, 1 == l && this.main.playSpriteSound("ExpSound")), !this.dead) { var a = (null == e.zpp_inner_i.wrap_cbTypes && e.zpp_inner_i.setupcbTypes(), e.zpp_inner_i.wrap_cbTypes).has(Hero.allHeroesHeadCbType) , s = (this.lifes, null) , r = null; if (e == this.baloon.b) { this.baloon.playLabel("hit"); for (var _ = this.baloon.b.zpp_inner.wrap_shapes.iterator(); _.hasNext(); ) { var o; _.zpp_critical = !1, (o = _.zpp_inner.at(_.zpp_i++)).zpp_inner.immutable_midstep("Shape::sensorEnabled"), o.zpp_inner.sensorEnabled = !0, o.zpp_inner.wake(), o.zpp_inner.sensorEnabled } s = nape_geom_Vec2.get(this.baloon.b.get_position().get_x(), this.baloon.b.get_position().get_y(), null), r = nape_geom_Vec2.get(0, -50, null), this.main.playSpriteSound("BaloonPop") } if (a || e == this.baloon.b ? this.lifes = 0 : this.lifes--, 0 == this.lifes) { this.baloon.b.set_type((null == zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC)); for (var p = 0, h = this.bodies; p < h.length; ) { var d = h[p]; ++p, null != d.b && (d.b.set_allowMovement(!0), d.b.set_allowRotation(!0)) } if (null != s) for (var u = 0, c = this.bodies; u < c.length; ) { var m = c[u]; ++u, m != this.baloon && (null != m.b && m.b.applyImpulse(r)) } for (var U = this.arch.zpp_inner.wrap_shapes.iterator(); U.hasNext(); ) { var Q; U.zpp_critical = !1, (Q = U.zpp_inner.at(U.zpp_i++)).zpp_inner.immutable_midstep("Shape::sensorEnabled"), Q.zpp_inner.sensorEnabled = !1, Q.zpp_inner.wake(), Q.zpp_inner.sensorEnabled } for (var N = 0, F = this.joints; N < F.length; ) { var Z = F[N]; if (++N, js_Boot.__instanceof(Z, nape_constraint_WeldJoint)) { var f = Z; if ((null == f.zpp_inner_zn.b1 ? null : f.zpp_inner_zn.b1.outer) == this.teteva1.b || (null == f.zpp_inner_zn.b2 ? null : f.zpp_inner_zn.b2.outer) == this.teteva1.b) continue; null != (null == f.zpp_inner.compound ? null : f.zpp_inner.compound.outer) && null != (null == f.zpp_inner.compound ? null : f.zpp_inner.compound.outer) && (null == f.zpp_inner.compound ? null : f.zpp_inner.compound.outer).zpp_inner.wrap_constraints.remove(f), null == f.zpp_inner.compound || f.zpp_inner.compound.outer } } if (this.teteva1.set_visible(!0), this.tetevaP1.set_visible(this.tetevaP2.set_visible(!1)), this.dead = !0, this.isPlayer) return void Archers.current.showFS(); this.deadTimer = motion_Actuate.timer(1).onComplete($bind(this, this.setFullDead)), null != this.shootTimer && motion_Actuate.stop(this.shootTimer, null, !1, !1), this.shootTimer = null, null != this.shootTimer2 && motion_Actuate.stop(this.shootTimer2, null, !1, !1), this.shootTimer2 = null, null != this.handsActuator && motion_Actuate.stop(this.handsActuator, null, !1, !1), this.handsActuator = null, this.isPlayer || e == this.baloon.b || this.main.playSpriteSound("Bones") } else this.main.playSpriteSound("Stab" + (Std.random(2) + 1)); 1 == l && this.explode(t), null != e && null != n && (e.applyImpulse(nape_geom_Vec2.weak((n.zpp_inner.validate(), n.zpp_inner.x), (n.zpp_inner.validate(), n.zpp_inner.y))), e.applyAngularImpulse((n.zpp_inner.validate(), n.zpp_inner.z))) } }, posThis: function() { var e = this.x - this.baloon.b.get_worldCOM().get_x() , t = this.y - this.baloon.b.get_worldCOM().get_y(); this.compound.translate(nape_geom_Vec2.get(e, t, !0)); for (var n = 0, i = this.bodies; n < i.length; ) { var l = i[n]; ++n, l.update(0) } this.pivot.x += e, this.pivot.y += t }, update: function(e) { if (Hero.prototype.update.call(this, e), !this.dead && this.active && this.baloon.b.get_worldCOM().get_x() > 100) { for (var t = .01 * -e, n = 0, i = this.bodies; n < i.length; ) { var l = i[n]; if (++n, null != l.b) ; else { var a = l; a.set_x(a.get_x() + t) } } this.compound.translate(nape_geom_Vec2.get(t, 0, !0)), this.pivot.x += t } }, __class__: HeroBaloon }); var openfl_geom_Point = function(e, t) { null == t && (t = 0), null == e && (e = 0), this.x = e, this.y = t }; $hxClasses["openfl.geom.Point"] = openfl_geom_Point, openfl_geom_Point.__name__ = ["openfl", "geom", "Point"], openfl_geom_Point.prototype = { x: null, y: null, clone: function() { return new openfl_geom_Point(this.x,this.y) }, setTo: function(e, t) { this.x = e, this.y = t }, __toLimeVector2: function() { return null == openfl_geom_Point.__limeVector2 && (openfl_geom_Point.__limeVector2 = new lime_math_Vector2), openfl_geom_Point.__limeVector2.setTo(this.x, this.y), openfl_geom_Point.__limeVector2 }, __class__: openfl_geom_Point }; var HxOverrides = function() {}; $hxClasses.HxOverrides = HxOverrides, HxOverrides.__name__ = ["HxOverrides"], HxOverrides.strDate = function(e) { switch (e.length) { case 8: var t = e.split(":") , n = new Date; return n.setTime(0), n.setUTCHours(t[0]), n.setUTCMinutes(t[1]), n.setUTCSeconds(t[2]), n; case 10: var i = e.split("-"); return new Date(i[0],i[1] - 1,i[2],0,0,0); case 19: var l = e.split(" ") , a = l[0].split("-") , s = l[1].split(":"); return new Date(a[0],a[1] - 1,a[2],s[0],s[1],s[2]); default: throw new js__$Boot_HaxeError("Invalid date format : " + e) } } , HxOverrides.cca = function(e, t) { var n = e.charCodeAt(t); if (n == n) return n } , HxOverrides.substr = function(e, t, n) { return null != t && 0 != t && null != n && n < 0 ? "" : (null == n && (n = e.length), t < 0 ? (t = e.length + t) < 0 && (t = 0) : n < 0 && (n = e.length + n - t), e.substr(t, n)) } , HxOverrides.indexOf = function(e, t, n) { var i = e.length; for (n < 0 && (n += i) < 0 && (n = 0); n < i; ) { if (e[n] === t) return n; n++ } return -1 } , HxOverrides.remove = function(e, t) { var n = HxOverrides.indexOf(e, t, 0); return -1 != n && (e.splice(n, 1), !0) } , HxOverrides.iter = function(e) { return { cur: 0, arr: e, hasNext: function() { return this.cur < this.arr.length }, next: function() { return this.arr[this.cur++] } } } ; var LevelsExt = function(e, t) { this.batching = null, this.jointsInitsData = new haxe_ds_ObjectMap, this.joints = [], this.physicElements = [], this.curLevel = -1, openfl_display_Sprite.call(this), this.main = Main.current, this.data = null == e ? this.main.levelsData : e, this.batching = t }; $hxClasses.LevelsExt = LevelsExt, LevelsExt.__name__ = ["LevelsExt"], LevelsExt.__super__ = openfl_display_Sprite, LevelsExt.prototype = $extend(openfl_display_Sprite.prototype, { main: null, data: null, curLevel: null, physicElements: null, handJoint: null, joints: null, jointsInitsData: null, batching: null, spaceM: null, initLevel: function(e) { for (; this.physicElements.length > 0; ) this.physicElements.pop().destroy(); for (this.jointsInitsData = new haxe_ds_ObjectMap; this.joints.length > 0; ) { var t = this.joints.pop(); null != (null == t.zpp_inner.compound ? null : t.zpp_inner.compound.outer) && (null == t.zpp_inner.compound ? null : t.zpp_inner.compound.outer).zpp_inner.wrap_constraints.remove(t), null != (null == t.zpp_inner.space ? null : t.zpp_inner.space.outer) && (null != t.zpp_inner.component && (t.zpp_inner.component.woken = !1), t.zpp_inner.clearcache(), null != t.zpp_inner.space && t.zpp_inner.space.outer.zpp_inner.wrap_constraints.remove(t), t.zpp_inner.space = null), null == t.zpp_inner.space || t.zpp_inner.space.outer } for (; this.get_numChildren() > 0; ) this.removeChildAt(0); this.curLevel = e; var n = this.data.levels[e].elements , i = this.data.levels[e].joints , l = this.data.levels[e].space; this.main.space.get_gravity().setxy(l.gravityX, l.gravityY), this.main.space.set_worldAngularDrag(l.worldAngularDrag), this.main.space.set_worldLinearDrag(l.worldLinearDrag), this.main.velocityIterations = Math.round(l.velocityIterations), this.main.positionIterations = Math.round(l.positionIterations), this.spaceM = new openfl_geom_Matrix(l.a,l.b,l.c,l.d,l.tx,l.ty), this.initElementsFromData(n), this.initJointsFromData(i), null == this.handJoint && (this.handJoint = new nape_constraint_PivotJoint(this.main.space.zpp_inner.__static,null,nape_geom_Vec2.get(0, 0, !0),nape_geom_Vec2.get(0, 0, !0)), this.handJoint.set_space(this.main.space), this.handJoint.set_active(!1), this.handJoint.set_stiff(!1)), this.handJoint.set_active(!1) }, initElementsFromData: function(e, t) { t = null == t ? this : t; for (var n, i = [], l = e.length - 1; l >= 0; ) "BodyBlock" != e[l].type && "Graphic" != e[l].type || (n = new MovieClipExt(e[l],this.spaceM,this.batching,this.data), this.physicElements.push(n), t.addChild(n), i.push(n)), l--; return i }, initJointsFromData: function(e, t) { var n; n = null == t ? this.physicElements : t; for (var i, l = [], a = e.length - 1, s = null, r = [], _ = "", o = !1, p = 0, h = 0; a >= 0; ) { for (i = e[a]; r.length > 0; ) r.pop(); for (var d = 0; d < 10; ) { var u = d++; if (!Object.prototype.hasOwnProperty.call(i, "body" + (u + 1) + "Name")) break; if (o = !1, "space" == (_ = Reflect.field(i, "body" + (u + 1) + "Name"))) o = !0, r.push(this.main.space.zpp_inner.__static); else for (var c = 0, m = n.length; c < m; ) { var U = c++; if (n[U].get_name() == _) { r.push(n[U].b), o = !0; break } } if (!o) throw new js__$Boot_HaxeError(new openfl_errors_Error("Constraint:Could not found element with name " + _)) } p = i.x, h = i.y, "PivotJoint" == i.JointType ? (s = new nape_constraint_PivotJoint(r[0],r[1],r[0].worldPointToLocal(nape_geom_Vec2.get(p, h, !0)),r[1].worldPointToLocal(nape_geom_Vec2.get(p, h, !0))), -1 != i.damping && js_Boot.__cast(s, nape_constraint_PivotJoint).set_damping(i.damping)) : "WeldJoint" == i.JointType ? (s = new nape_constraint_WeldJoint(r[0],r[1],r[0].worldPointToLocal(nape_geom_Vec2.get(p, h, !0)),r[1].worldPointToLocal(nape_geom_Vec2.get(p, h, !0)),i.phase), -1 != i.damping && js_Boot.__cast(s, nape_constraint_WeldJoint).set_damping(i.damping)) : "AngleJoint" == i.JointType && (s = new nape_constraint_AngleJoint(r[0],r[1],i.jointMin,i.jointMax,i.ratio), -1 != i.damping && js_Boot.__cast(s, nape_constraint_AngleJoint).set_damping(i.damping)), s.set_active(i.active), i.breakUnderError && s.set_maxError(i.maxError), i.breakUnderForce && s.set_maxForce(i.maxForce), s.set_breakUnderError(i.breakUnderError), s.set_breakUnderForce(i.breakUnderForce), i.frequency > 0 && s.set_frequency(i.frequency), s.set_ignore(i.ignore), s.set_removeOnBreak(i.removeOnBreak), s.set_stiff(i.stiff), s.set_space(this.main.space), this.joints.push(s); var Q = i; this.jointsInitsData.set(s, Q), l.push(s), a-- } return l }, getJointData: function(e) { return null != this.jointsInitsData.h.__keys__[e.__id__] ? this.jointsInitsData.h[e.__id__] : null }, update: function(e, t) { null == t && (t = !1); for (var n = 0, i = this.physicElements.length; n < i; ) { var l = n++; this.physicElements[l].update(e) } }, __class__: LevelsExt }); var MovieClipExt = function(e, t, n, i, l) { if (null == l && (l = !1), this.destroied = !1, this.hp = new openfl_geom_Point, this.mHm1 = new openfl_geom_Matrix, this.mHm = new openfl_geom_Matrix, this.forcedRenderFrame = -1, this.wasFrameBeforeForcedFrame = -1, this.initFrame = 0, this.framesList = [], this.highlighted = !1, this.playCallback = null, this.isLoop = !1, this.curEndFrame = -1, this.curStartFrame = -1, this.curLabel = "", this.isPlaying = !0, this.layerName = "", this.groupName = "", this.addonMatrix = null, this.hm1 = new openfl_geom_Matrix, this.hm = new openfl_geom_Matrix, this.totalFrames = 0, this.oneFrameTime = 41.666666666666664, this.curFrame = 0, this.ty = 0, this.tx = 0, this.hm23 = new nape_geom_Mat23, openfl_display_Sprite.call(this), this.mainData = e, this.main = Main.current, this.batch = null == n ? this.main.batch : n, null != e) { var a = Reflect.field(null == i ? this.main.levelsData.classes : i.classes, e.element.libName); if (this.initFrame = e.ff, this.labels = a.labels, this.sounds = a.sounds, this.hitObjects = a.hitObjects, "BodyBlock" == e.type) { var s; "DYNAMIC" == e.body.bodyType ? (null == zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), s = zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC) : "STATIC" == e.body.bodyType ? (null == zpp_$nape_util_ZPP_$Flags.BodyType_STATIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_STATIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), s = zpp_$nape_util_ZPP_$Flags.BodyType_STATIC) : (null == zpp_$nape_util_ZPP_$Flags.BodyType_KINEMATIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_KINEMATIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), s = zpp_$nape_util_ZPP_$Flags.BodyType_KINEMATIC), this.b = new nape_phys_Body(s,nape_geom_Vec2.get(e.element.tx, e.element.ty, null)), this.setBodyParamsFromData(this.b, e.body); for (var r = a.body.shapes, _ = 0, o = r.length; _ < o; ) { var p = _++; this.setShape(r[p]) } this.hm23.set_a(e.element.a), this.hm23.set_c(e.element.b), this.hm23.set_b(e.element.c), this.hm23.set_d(e.element.d), this.hm23.set_tx(0), this.hm23.set_ty(0), this.b.transformShapes(this.hm23) } if (this.bodyInverseInitMatrix = new openfl_geom_Matrix(e.element.a,e.element.b,e.element.c,e.element.d,0,0), null == this.b) { var h = new openfl_geom_Matrix(e.element.a,e.element.b,e.element.c,e.element.d,e.element.tx,e.element.ty); null != t && h.concat(t); Math.PI; var d = Math.atan(-h.c / h.d) , u = Math.atan(h.b / h.a); d != d && (d = 0), u != u && (u = 0), this.isEquivalent(d, u) && (d = u = 0), this.get_transform().set_matrix(h), this.set_x(this.get_x()) } null != e.element.al && this.set_alpha(e.element.al), null != this.b && (this.main.space.zpp_inner.wrap_bodies.add(this.b), this.get_transform().set_matrix(this.getCurTransform())), this.totalFrames = a.totalFrames, this.framesData = a.frames, this.set_name(e.name), this.groupName = e.folder, this.layerName = e.layer, l || this.prepareFramesList(), this.prepareTransformMatrix() } }; $hxClasses.MovieClipExt = MovieClipExt, MovieClipExt.__name__ = ["MovieClipExt"], MovieClipExt.__super__ = openfl_display_Sprite, MovieClipExt.prototype = $extend(openfl_display_Sprite.prototype, { main: null, b: null, hm23: null, tx: null, ty: null, curFrame: null, set_curFrame: function(e) { if (null != this.sounds && this.isPlaying) for (var t = 0, n = this.sounds; t < n.length; ) { var i = n[t]; if (++t, i.frame <= e && i.frame >= this.curFrame) { var l = Std.string(i.name) + "" , a = l.split("_"); 1 == a.length ? Main.current.playSpriteSound(l) : "stop" == a[1] ? Main.current.stopSpriteSound(a[0]) : "loop" == a[1] ? Main.current.playSpriteSound(a[0], !0) : "once" == a[1] && Main.current.playSpriteSound(a[0]) } } return this.curFrame = e, this.curFrame }, oneFrameTime: null, totalFrames: null, framesData: null, batch: null, hm: null, hm1: null, bodyInverseInitMatrix: null, addonMatrix: null, groupName: null, layerName: null, labels: null, sounds: null, isPlaying: null, curLabel: null, curStartFrame: null, curEndFrame: null, isLoop: null, playCallback: null, highlighted: null, hitObjects: null, framesList: null, mainData: null, initFrame: null, wasFrameBeforeForcedFrame: null, forcedRenderFrame: null, set_forcedRenderFrame: function(e) { if (e == this.forcedRenderFrame) return e; if (this.forcedRenderFrame = e, -1 == e) { var t = Math.floor(this.wasFrameBeforeForcedFrame); for (this.set_curFrame(this.wasFrameBeforeForcedFrame); this.get_numChildren() > 0; ) this.removeChildAt(0); this.addChild(this.framesList[t]) } else { for (this.wasFrameBeforeForcedFrame = this.curFrame; this.get_numChildren() > 0; ) this.removeChildAt(0); this.addChild(this.framesList[this.forcedRenderFrame]) } return this.forcedRenderFrame }, copyStateFrom: function(e) { this.set_curFrame(e.curFrame), this.curLabel = e.curLabel, this.isLoop = e.isLoop, this.isPlaying = e.isPlaying, this.curStartFrame = e.curStartFrame, this.curEndFrame = e.curEndFrame }, isEquivalent: function(e, t, n) { return null == n && (n = 1e-4), e - n < t && e + n > t }, prepareFramesList: function() { for (var e, t, n, i = 0, l = this.totalFrames; i < l; ) { var a = i++; e = new openfl_display_Sprite, this.framesList.push(e); for (var s = this.framesData[a], r = 0; r < s.length; ) { var _; _ = s[r] + (this.highlighted ? "_1" : ""), (n = new openfl_geom_Matrix).a = parseFloat(s[r + 1] + ""), n.b = parseFloat(s[r + 2] + ""), n.c = parseFloat(s[r + 3] + ""), n.d = parseFloat(s[r + 4] + ""), n.tx = parseFloat(s[r + 5] + ""), n.ty = parseFloat(s[r + 6] + ""), (t = new BitmapBatch(this.batch,_)).set_alpha(parseFloat(s[r + 7] + "")), t.get_transform().set_matrix(n), e.addChild(t), r += 8 } } this.addChild(this.framesList[0]) }, set_x: function(e) { return openfl_display_Sprite.prototype.set_x.call(this, e), this.prepareTransformMatrix(), e }, set_y: function(e) { return openfl_display_Sprite.prototype.set_y.call(this, e), this.prepareTransformMatrix(), e }, set_scaleX: function(e) { return openfl_display_Sprite.prototype.set_scaleX.call(this, e), this.prepareTransformMatrix(), e }, set_scaleY: function(e) { return openfl_display_Sprite.prototype.set_scaleY.call(this, e), this.prepareTransformMatrix(), e }, set_rotation: function(e) { return openfl_display_Sprite.prototype.set_rotation.call(this, e), this.prepareTransformMatrix(), e }, set_width: function(e) { return openfl_display_Sprite.prototype.set_width.call(this, e), this.prepareTransformMatrix(), e }, set_height: function(e) { return openfl_display_Sprite.prototype.set_height.call(this, e), this.prepareTransformMatrix(), e }, setBodyParamsFromData: function(e, t) { e.set_allowMovement(t.allowMovement), e.set_allowRotation(t.allowRotation), e.set_angularVel(t.angularVel), -1 != t.gravMass && e.set_gravMass(t.gravMass), t.inertia >= 0 && e.set_inertia(t.inertia), e.set_angularVel(t.angularVel), (null == e.zpp_inner.wrap_vel && e.zpp_inner.setupVelocity(), e.zpp_inner.wrap_vel).setxy(t.velocityX, t.velocityY), (null == e.zpp_inner.wrap_kinvel && e.zpp_inner.setupkinvel(), e.zpp_inner.wrap_kinvel).setxy(t.kinematicVelX, t.kinematicVelY), e.set_isBullet(t.isBullet), e.set_kinAngVel(t.kinAngVel) }, setShape: function(e) { var t = null; if ("Circle" == e.type) t = new nape_shape_Circle(e.radius), this.setShapeParams(t, e); else for (var n = this.getShapesFromPoints(e.vertexes), i = 0, l = n.length; i < l; ) { var a = i++; this.setShapeParams(n[a], e) } null != t && ((null == t.zpp_inner_i.userData && (t.zpp_inner_i.userData = {}), t.zpp_inner_i.userData).name = e.name) }, setShapeParams: function(e, t) { var n = t.params , i = null; if ("null" == t.params.material ? i = new nape_phys_Material(n.elasticityMat,n.dynamicFrictionMat,n.staticFrictionMat,n.densityMat,n.rollingFrictionMat) : "default" != t.params.material && (i = Reflect.field(nape_phys_Material, t.params.material)()), null != i && (e.zpp_inner.immutable_midstep("Shape::material"), e.zpp_inner.setMaterial(i.zpp_inner), e.zpp_inner.material.wrapper()), -1 != n.fluidDensity && -1 != n.fluidViscosity) { var l = new nape_phys_FluidProperties(n.fluidDensity,n.fluidViscosity); e.zpp_inner.setFluid(l.zpp_inner), e.zpp_inner.immutable_midstep("Shape::fluidProperties"), null == e.zpp_inner.fluidProperties && e.zpp_inner.setFluid((new nape_phys_FluidProperties).zpp_inner), e.zpp_inner.fluidProperties.wrapper() } n.inertia, e.set_fluidEnabled(n.fluidEnabled), e.set_sensorEnabled(n.sensorEnabled), e.zpp_inner.filter.wrapper().set_collisionGroup(n.collisionGroup), e.zpp_inner.filter.wrapper().set_collisionMask(n.collisionMask), this.hm23.set_a(t.a), this.hm23.set_c(t.b), this.hm23.set_b(t.c), this.hm23.set_d(t.d), this.hm23.set_tx(t.tx), this.hm23.set_ty(t.ty), e.transform(this.hm23), (null == e.zpp_inner_i.userData && (e.zpp_inner_i.userData = {}), e.zpp_inner_i.userData).name = t.name, this.b.zpp_inner.wrap_shapes.add(e) }, getShapesFromPoints: function(e, t) { for (var n, i = [], l = [], a = 0, s = e.length; a < s; ) { var r = a++; n = nape_geom_Vec2.weak(e[r].x, e[r].y), i.unshift(n) } var _, o, p = new nape_geom_GeomPoly(i); if (p.isConvex() ? (_ = new nape_geom_GeomPolyList).push(p) : _ = p.convexDecomposition(), 0 == _.get_length()) return null; var h = null; null != t && (h = new nape_geom_Mat23(t.a,t.b,t.c,t.d,t.tx,t.ty)); for (var d = 0, u = _.get_length(); d < u; ) { var c = d++; null != h && _.at(c).transform(h), o = new nape_shape_Polygon(_.at(c)), l.push(o) } return l }, mHm: null, mHm1: null, prepareTransformMatrix: function() {}, hasLabel: function(e) { for (var t = 0, n = this.labels.length; t < n; ) { var i = t++; if (-1 != (Std.string(this.labels[i].name) + "").indexOf(e)) return !0 } return !1 }, getFrameLabels: function(e) { for (var t = null, n = 0, i = this.labels; n < i.length; ) { var l = i[n]; ++n, l.frame == e && (null == t && (t = []), t.push(l.name)) } return t }, playLabel: function(e, t) { if (this.curLabel == e && this.isPlaying) return !0; var n = ""; this.curStartFrame = -1, this.curEndFrame = -1; for (var i = 0, l = this.labels.length; i < l; ) { var a = i++; 0 == (Std.string(this.labels[a].name) + "").indexOf(e + "_") && (-1 != (Std.string(this.labels[a].name) + "").indexOf("_end") ? this.curEndFrame = this.labels[a].frame : (this.curStartFrame = this.labels[a].frame, n = this.labels[a].name)) } return this.curStartFrame < 0 || this.curEndFrame < 0 ? (this.curStartFrame = -1, this.curEndFrame = -1, !1) : (this.isPlaying = !0, this.playCallback = t, this.curLabel = e, this.isLoop = !1, this.set_curFrame(this.curStartFrame), this.isLoop = n.indexOf("_loop") > -1 || n.indexOf("_Loop") > -1, this.isPlaying = -1 == n.indexOf("_stop"), !0) }, playWithCallBack: function(e) { this.isPlaying = !0, this.playCallback = e, this.curLabel = "", this.isLoop = !1, this.curStartFrame = 0, this.curEndFrame = this.totalFrames - 1 }, play: function() { this.isPlaying = !0 }, stop: function() { this.isPlaying = !1 }, gotoAndPlay: function(e, t) { this.playCallback = t, this.set_curFrame(e), this.isPlaying = !0, this.curLabel = "", this.curStartFrame = -1, this.curEndFrame = -1, this.isLoop = !1 }, gotoAndStop: function(e) { this.set_curFrame(e), this.isPlaying = !1, this.curLabel = "", this.curStartFrame = -1, this.curEndFrame = -1, this.isLoop = !1; for (var t = Math.floor(this.curFrame); this.get_numChildren() > 0; ) this.removeChildAt(0); this.addChild(this.framesList[t]) }, gotoAndStopLabel: function(e) { for (var t = -1, n = 0, i = this.labels.length; n < i; ) { var l = n++; if (0 == (Std.string(this.labels[l].name) + "").indexOf(e + "_") && -1 != (Std.string(this.labels[l].name) + "").indexOf("_end")) { t = this.labels[l].frame; break } } -1 != t && (this.gotoAndStop(t), this.curLabel = e) }, nextFrame: function() { this.set_curFrame(Math.floor(this.curFrame) + 1), this.curFrame >= this.totalFrames && this.set_curFrame(0); for (var e = Math.floor(this.curFrame); this.get_numChildren() > 0; ) this.removeChildAt(0); this.addChild(this.framesList[e]) }, hp: null, getCurTransform: function() { return null != this.b ? (this.hm1.a = this.bodyInverseInitMatrix.a, this.hm1.b = this.bodyInverseInitMatrix.b, this.hm1.c = this.bodyInverseInitMatrix.c, this.hm1.d = this.bodyInverseInitMatrix.d, this.hm1.tx = this.bodyInverseInitMatrix.tx, this.hm1.ty = this.bodyInverseInitMatrix.ty, this.hm1.rotate(this.b.zpp_inner.rot), this.parent, this.hm1.translate(this.b.get_position().get_x(), this.b.get_position().get_y())) : (this.hm1.a = this.mHm.a, this.hm1.b = this.mHm.b, this.hm1.c = this.mHm.c, this.hm1.d = this.mHm.d, this.hm1.tx = this.mHm.tx, this.hm1.ty = this.mHm.ty), this.parent, null != this.addonMatrix && this.hm1.concat(this.addonMatrix), this.hm1 }, update: function(e) { if (null != this.mHm && -1 == this.forcedRenderFrame) { var t = !1; if (this.isPlaying) { this.set_curFrame(this.curFrame + e / this.oneFrameTime), -1 != this.curEndFrame ? this.curFrame > this.curEndFrame && (null != this.playCallback && (t = !0), this.isLoop ? this.set_curFrame(this.curStartFrame) : (this.set_curFrame(this.curEndFrame), this.isPlaying = !1)) : this.curFrame >= this.totalFrames && this.set_curFrame(0) } if (t) { var n = this.playCallback; this.playCallback = null, n(this), n = null } if (this.get_visible() && !this.destroied) { var i; for (null != this.b && this.get_transform().set_matrix(this.getCurTransform()), i = -1 == this.forcedRenderFrame ? Math.floor(this.curFrame) : this.forcedRenderFrame; this.get_numChildren() > 0; ) this.removeChildAt(0); this.addChild(this.framesList[i]) } } }, destroied: null, destroy: function() { if (!this.destroied) { if (this.destroied = !0, this.main = null, null != this.sounds) for (var e = 0, t = this.sounds; e < t.length; ) { var n = t[e]; ++e; var i = (Std.string(n.name) + "").split("_"); Main.current.stopSpriteSound(i[0]), Main.current.stopSpriteSound(i[0], !0) } for (null != this.b && Main.current.space.zpp_inner.wrap_bodies.remove(this.b), this.b = null, this.hm23 = null, this.framesData = null, this.batch = null, this.hm = null, this.hm1 = null, this.bodyInverseInitMatrix = null, this.mHm = null, this.mHm1 = null, this.hp = null, this.labels = null; this.get_numChildren() > 0; ) this.removeChildAt(0); for (; this.framesList.length > 0; ) this.framesList.pop(); this.framesList = null } }, __class__: MovieClipExt, __properties__: $extend(openfl_display_Sprite.prototype.__properties__, { set_forcedRenderFrame: "set_forcedRenderFrame", set_curFrame: "set_curFrame" }) }); var LevelsTextField = function(e) { this.text = "", this.editables = [], this.elementsInits = [], MovieClipExt.call(this, null), this.layerName = e[0].layerName, this.groupName = e[0].groupName, this.sortedElements = e.slice(), this.sortedElements.sort($bind(this, this.sortByX)), Desk.current.levels.addChildAt(this, Desk.current.levels.getChildIndex(this.sortedElements[0])), Desk.current.levels.physicElements.push(this); for (var t = 0, n = 0, i = 0, l = this.sortedElements; i < l.length; ) { var a = l[i]; if (++i, HxOverrides.remove(Desk.current.levels.physicElements, a), -1 != a.get_name().indexOf("_edit")) { this.set_name(a.get_name()); var s = new LevelsEditableTextField(a); this.addChild(s), this.editables.push(s), this.elementsInits.push({ el: s, x: a.get_x(), y: a.get_y(), w: a.get_width(), h: a.get_height() }) } else this.addChild(a), this.elementsInits.push({ el: a, x: a.get_x(), y: a.get_y(), w: a.get_width(), h: a.get_height() }); -1 != a.get_name().indexOf("pivotEl") && (t = a.get_x(), n = a.get_y()) } this.set_x(t), this.set_y(n); for (var r = 0, _ = this.elementsInits; r < _.length; ) { var o = _[r]; ++r; var p = o.el; p.set_x(p.get_x() - t); var h = o.el; h.set_y(h.get_y() - n), o.x -= t, o.y -= n } this.set_name(StringTools.replace(this.get_name(), "_edit", "")), this.set_name(StringTools.replace(this.get_name(), "_center", "")), this.set_name(StringTools.replace(this.get_name(), "_right", "")) }; $hxClasses.LevelsTextField = LevelsTextField, LevelsTextField.__name__ = ["LevelsTextField"], LevelsTextField.__super__ = MovieClipExt, LevelsTextField.prototype = $extend(MovieClipExt.prototype, { sortedElements: null, elementsInits: null, editables: null, text: null, sortByX: function(e, t) { return e.get_x() == t.get_x() ? 0 : e.get_x() - t.get_x() < 0 ? -1 : 1 }, set_text: function(e) { return this.text != e && (this.text = e, this.updateText()), e }, updateText: function() { for (var e = 0, t = this.editables; e < t.length; ) { var n = t[e]; ++e, n.set_text(this.text) } for (var i = 0, l = 0, a = 0, s = this.elementsInits; a < s.length; ) { var r = s[a]; ++a, r.el.set_x(r.x + i), r.el.get_width() == r.w || js_Boot.__instanceof(r.el, LevelsEditableTextField) && js_Boot.__cast(r.el, LevelsEditableTextField).centered || (i += r.el.get_width() - r.w), js_Boot.__instanceof(r.el, LevelsEditableTextField) && (l += js_Boot.__cast(r.el, LevelsEditableTextField).offsetForRightAlign) } for (var _ = 0, o = this.elementsInits; _ < o.length; ) { var p = o[_]; ++_; var h = p.el; h.set_x(h.get_x() + l) } }, update: function(e) {}, __class__: LevelsTextField, __properties__: $extend(MovieClipExt.prototype.__properties__, { set_text: "set_text" }) }); var LevelsEditableTextField = function(e) { this.initWidth = 0, this.offsetForRightAlign = 0, this.alignRight = !1, this.centered = !1, this.text = "", this.imNames = new haxe_ds_StringMap, this.pool = [], openfl_display_Sprite.call(this), this.main = Main.current, this.baseElement = e, this.centered = -1 != e.get_name().indexOf("_center"), this.alignRight = -1 != e.get_name().indexOf("_right"), this.initWidth = e.get_width(); for (var t, n = 0, i = this.baseElement.framesList.length; n < i; ) { var l, a = n++; l = js_Boot.__cast(this.baseElement.framesList[a].getChildAt(0), BitmapBatch).imName, this.imNames.set(a + "", l) } this.baseElement.framesList.length > 10 && (t = js_Boot.__cast(this.baseElement.framesList[10].getChildAt(0), BitmapBatch).imName, this.imNames.set("%", t)); this.baseElement.set_visible(!1), null != this.baseElement.parent && this.baseElement.parent.removeChild(this.baseElement), this.set_x(e.get_x()), this.set_y(e.get_y()) }; $hxClasses.LevelsEditableTextField = LevelsEditableTextField, LevelsEditableTextField.__name__ = ["LevelsEditableTextField"], LevelsEditableTextField.__super__ = openfl_display_Sprite, LevelsEditableTextField.prototype = $extend(openfl_display_Sprite.prototype, { pool: null, baseElement: null, imNames: null, text: null, main: null, centered: null, alignRight: null, offsetForRightAlign: null, initWidth: null, set_text: function(e) { return this.text != e && (this.text = e, this.updateText()), e }, getFromPool: function(e) { var t, n; return null == e && (e = ""), t = "" == e ? "" : this.imNames.get(e), this.pool.length > 0 ? (n = this.pool.pop(), "" != t && n.changeImName(t), n) : "" == t ? new BitmapBatch(this.main.batch) : new BitmapBatch(this.main.batch,t) }, sendToPool: function(e) { null != e.parent && e.parent.removeChild(e), this.pool.push(e) }, updateText: function() { for (; this.get_numChildren() > 0; ) this.sendToPool(js_Boot.__cast(this.getChildAt(0), BitmapBatch)); for (var e, t, n = this.text.length, i = 0, l = 0; l < n; ) { var a = l++; t = this.text.charAt(a), e = this.getFromPool(t), this.addChild(e), e.set_x(i), e.set_y(0), i += e.get_width() } if (this.centered) for (var s = this.initWidth / 2 - i / 2, r = 0, _ = this.get_numChildren(); r < _; ) { var o = r++ , p = this.getChildAt(o); p.set_x(p.get_x() + s) } else this.alignRight && (this.offsetForRightAlign = this.initWidth - i) }, __class__: LevelsEditableTextField, __properties__: $extend(openfl_display_Sprite.prototype.__properties__, { set_text: "set_text" }) }); var List = function() { this.length = 0 }; $hxClasses.List = List, List.__name__ = ["List"], List.prototype = { h: null, q: null, length: null, add: function(e) { var t = [e]; null == this.h ? this.h = t : this.q[1] = t, this.q = t, this.length++ }, pop: function() { if (null == this.h) return null; var e = this.h[0]; return this.h = this.h[1], null == this.h && (this.q = null), this.length--, e }, iterator: function() { return new _$List_ListIterator(this.h) }, __class__: List }; var _$List_ListIterator = function(e) { this.head = e, this.val = null }; $hxClasses["_List.ListIterator"] = _$List_ListIterator, _$List_ListIterator.__name__ = ["_List", "ListIterator"], _$List_ListIterator.prototype = { head: null, val: null, hasNext: function() { return null != this.head }, next: function() { return this.val = this.head[0], this.head = this.head[1], this.val }, __class__: _$List_ListIterator }; var LocalSaves = function() {}; $hxClasses.LocalSaves = LocalSaves, LocalSaves.__name__ = ["LocalSaves"], LocalSaves.getVar = function(e) { return null == LocalSaves.so && (LocalSaves.localPath = window.location.href, LocalSaves.localPath = LocalSaves.localPath.split("?")[0], LocalSaves.so = openfl_net_SharedObject.getLocal(LocalSaves.storeName, LocalSaves.localPath)), Reflect.field(LocalSaves.so.data, e) } , LocalSaves.setVar = function(e, t) { null == LocalSaves.so && (LocalSaves.localPath = window.location.href, LocalSaves.localPath = LocalSaves.localPath.split("?")[0], LocalSaves.so = openfl_net_SharedObject.getLocal(LocalSaves.storeName, LocalSaves.localPath)), LocalSaves.so.data[e] = t, LocalSaves.so.flush() } , Math.__name__ = ["Math"]; var MathHelper = function() {}; $hxClasses.MathHelper = MathHelper, MathHelper.__name__ = ["MathHelper"], MathHelper.getAngleBetweenPointsXY = function(e, t, n, i) { var l = n - e , a = i - t; return Math.atan2(a, l) } ; var Menu = function() { this.moveByResizeCallBack = null, this.moveThisOnResize = !1, this.remakeThisOnResize = !1, this.stopPropagation = !0, this.lastTime = -1, this.hitAlphaThereshold = 200, this.removedListeners = !1, this.isSimpleHittest = !0 }; $hxClasses.Menu = Menu, Menu.__name__ = ["Menu"], Menu.__super__ = openfl_display_Sprite, Menu.prototype = $extend(openfl_display_Sprite.prototype, { btnsArr: null, btnsFuntions: null, mcsArr: null, threeStateBtns: null, scrollContainers: null, textFields: null, isSimpleHittest: null, removedListeners: null, hitAlphaThereshold: null, lastBm: null, main: null, sWidth: null, sHeight: null, updateFunction: null, lastTime: null, minUpdateTime: null, snapShot: null, fill: null, hp: null, mHm: null, mainBatch: null, stopPropagation: null, allClickFunction: null, remakeThisOnResize: null, moveThisOnResize: null, moveByResizeCallBack: null, resizeCheck: function(e) { if (null != this.parent && (this.main.sWidth != this.sWidth || this.main.sHeight != this.sHeight)) { if (this.moveThisOnResize) this.moveByResize(); else if (this.remakeThisOnResize && (this.main.sWidth != this.sWidth || this.main.sHeight != this.sHeight)) { var t = Type.createInstance(js_Boot.getClass(this), []); return this.parent.addChildAt(t, this.parent.getChildIndex(this)), this.close(), void (Menu.wasRemake = !0) } this.sWidth = this.main.sWidth, this.sHeight = this.main.sHeight, null != this.moveByResizeCallBack && this.moveByResizeCallBack() } }, moveByResize: function() { if (this.main.sWidth != this.sWidth || this.main.sHeight != this.sHeight) { var e = this.main.sWidth - this.sWidth; this.set_x(this.get_x() + e / 2) } }, removeOverlay: function() { if (null != this.fill) { this.fill.removeEventListener("click", $bind(this, this.stopEventForOverlay)), this.fill.removeEventListener("click", $bind(this, this.stopEventForOverlay)); var e = this.fill.getChildAt(0); null != e && e.bitmapData.dispose(), null != this.fill.parent && this.fill.parent.removeChild(this.fill) } }, stopEventForOverlay: function(e) { e.stopImmediatePropagation() }, btnClick: function(e) { if (!this.main.fullStop) if (null != this.allClickFunction && this.allClickFunction(), this.removeListeners(e), this.stopPropagation && e.stopImmediatePropagation(), this.isSimpleHittest) { if (this.get_visible() && null != this.hp) { var t, n; this.hp.x = e.stageX, this.hp.y = e.stageY; for (var i = this.btnsFuntions.keys(); i.hasNext(); ) { var l = i.next(); if (this.btnsArr.h.hasOwnProperty(l)) { var a = this.btnsArr.h[l]; if (null == a) continue; var s = a.get_alpha(); null != a.parent && (s *= a.parent.get_alpha()); var r = !0; for (t = a; null != t.parent; ) if (!(t = t.parent).get_visible()) { r = !1; break } if (r && s > 0 && a.hitTestPoint(this.hp.x, this.hp.y)) return void (js_Boot.__instanceof(a, ThreeStateBtn) && !this.btnsArr.h[l].isActive || (n = this.btnsFuntions.h[l], Reflect.isFunction(n) ? n() : Reflect.callMethod(n.callBack, n.callBack, n.params))) } } } } else this.btnClickAlpha(e) }, btnClickAlpha: function(e) { if (this.get_visible()) { this.hp.x = e.stageX, this.hp.y = e.stageY, this.hp = this.globalToLocal(this.hp); for (var t, n, i = 0, l = 0, a = this.btnsFuntions.keys(); a.hasNext(); ) { var s = a.next(); if (this.btnsArr.h.hasOwnProperty(s) && (i = Std.is(this.btnsArr.h[s], openfl_display_Bitmap) ? 0 : this.btnsArr.h[s].getChildAt(0).x, l = Std.is(this.btnsArr.h[s], openfl_display_Bitmap) ? 0 : this.btnsArr.h[s].getChildAt(0).y, t = Std.is(this.btnsArr.h[s], openfl_display_Bitmap) ? this.btnsArr.h[s] : this.btnsArr.h[s].getChildAt(0), this.btnsArr.h[s].visible && this.btnsArr.h[s].alpha > 0 && (t.bitmapData.getPixel32(Std.int(this.hp.x - this.btnsArr.h[s].x - i), Std.int(this.hp.y - this.btnsArr.h[s].y - l)) >> 24 & 255) > this.hitAlphaThereshold)) return void (Std.is(this.btnsArr.h[s], ThreeStateBtn) && !this.btnsArr.h[s].isActive || (n = this.btnsFuntions.h[s], Reflect.isFunction(n) ? n() : Reflect.callMethod(n.callBack, n.callBack, n.params))) } } }, removeListeners: function(e) { this.removedListeners || ("click" == e.type || "mouseDown" == e.type || "mouseMove" == e.type || "mouseUp" == e.type ? this.removeEventListener("touchEnd", $bind(this, this.btnClick)) : this.removeEventListener("click", $bind(this, this.btnClick)), this.removedListeners = !0) }, updatePr: function(e) { if (null != this.main) if (-1 != this.lastTime) { var t = openfl_Lib.getTimer() , n = t - this.lastTime; if (n >= this.minUpdateTime) { this.lastTime = t; for (var i = 0, l = this.mcsArr.length; i < l; ) { var a = i++; this.mcsArr[a].update(n) } for (var s = 0, r = this.scrollContainers.length; s < r; ) { var _ = s++; this.scrollContainers[_].update(n) } this.updateThreeStateBtns(), null != this.updateFunction && this.updateFunction(n) } } else this.lastTime = openfl_Lib.getTimer() }, updateThreeStateBtns: function() { if (null != this.threeStateBtns && 0 != this.threeStateBtns.length) if (this.main.isMouseDown) { this.hp.x = openfl_Lib.current.stage.get_mouseX(), this.hp.y = openfl_Lib.current.stage.get_mouseY(); for (var e = 0, t = this.threeStateBtns.length; e < t; ) { var n = e++; if (null == this.threeStateBtns || null == this.threeStateBtns[n]) break; var i = this.threeStateBtns[n].getBounds(this.stage); this.isSimpleHittest, this.threeStateBtns[n].get_visible() && this.threeStateBtns[n].get_alpha() > 0 && i.contains(this.hp.x, this.hp.y) ? this.threeStateBtns[n].press() : this.threeStateBtns[n].unPress() } } else for (var l = 0, a = this.threeStateBtns.length; l < a; ) { var s = l++; this.threeStateBtns[s].unPress() } }, close: function() { this.main.overlayMaker == this && (this.main.overlayMaker = null), this.destroy() }, destroy: function() { var e; if (this.removeEventListener("click", $bind(this, this.btnClick)), this.removeEventListener("touchEnd", $bind(this, this.btnClick)), this.removeEventListener("enterFrame", $bind(this, this.updatePr)), this.removeEventListener("enterFrame", $bind(this, this.resizeCheck)), this.moveByResizeCallBack = null, null != this.snapShot && null != this.snapShot.parent && this.snapShot.parent.removeChild(this.snapShot), this.snapShot = null, this.mainBatch = null, null != this.btnsFuntions) for (var t = this.btnsFuntions.keys(); t.hasNext(); ) { var n = t.next(); this.btnsArr.h.hasOwnProperty(n) && Std.is(this.btnsArr.h[n], openfl_display_DisplayObject) && null != (e = this.btnsArr.h[n]).parent && e.parent.removeChild(e) } for (this.updateFunction = null, this.removeOverlay(), this.fill = null, this.btnsArr = null, this.btnsFuntions = null, this.textFields = null; this.get_numChildren() > 0; ) this.removeChildAt(0); if (this.hp = null, this.mHm = null, this.lastBm = null, this.main = null, null != this.mcsArr) { for (; this.mcsArr.length > 0; ) this.mcsArr.pop().destroy(); this.mcsArr = null } if (null != this.threeStateBtns) for (; this.threeStateBtns.length > 0; ) this.threeStateBtns.pop().destroy(); if (this.threeStateBtns = null, null != this.scrollContainers) for (; this.scrollContainers.length > 0; ) this.scrollContainers.pop().destroy(); this.scrollContainers = null, null != this.parent && this.parent.removeChild(this) }, __class__: Menu }); var MenuMC = function() { this.framesSpeed = 1, this.curDelay = 0, this.loopDelay = 0, this.isPlaying = !0, this.loop = !0, this.totalFrames = 0, this.currentFrame = 0 }; $hxClasses.MenuMC = MenuMC, MenuMC.__name__ = ["MenuMC"], MenuMC.__super__ = openfl_display_Bitmap, MenuMC.prototype = $extend(openfl_display_Bitmap.prototype, { currentFrame: null, totalFrames: null, loop: null, isPlaying: null, loopDelay: null, curDelay: null, framesSpeed: null, batching: null, bmdsArr: null, update: function(e) { if (this.isPlaying && this.get_visible() && 0 != this.get_alpha() && (this.curDelay > 0 && (this.curDelay -= e), this.curDelay <= 0)) { if (this.curDelay = 0, this.currentFrame += e / 16.666666666666668 * this.framesSpeed, this.currentFrame >= this.totalFrames) { if (this.loop) return this.currentFrame = 0, this.loopDelay > 0 && (this.curDelay = this.loopDelay), void this.set_bitmapData(this.bmdsArr[this.bmdsArr.length - 1]); this.isPlaying = !1 } this.set_bitmapData(this.bmdsArr[Math.floor(this.currentFrame)]), this.smoothing = !0 } }, destroy: function() { for (this.batching = null; this.bmdsArr.length > 0; ) this.bmdsArr.pop(); this.bmdsArr = null, null != this.parent && this.parent.removeChild(this) }, __class__: MenuMC }); var MovieClipHX = function() { this.stopFrames = [], this.__isPlaying = !0 }; $hxClasses.MovieClipHX = MovieClipHX, MovieClipHX.__name__ = ["MovieClipHX"], MovieClipHX.prototype = { __currentFrame: null, __currentFrameLabel: null, __currentLabel: null, __currentLabels: null, __totalFrames: null, __isPlaying: null, stopFrames: null, update: function(e) { if (null == e && (e = !0), this.__isPlaying) { this.__currentFrameLabel = ""; for (var t = 0, n = this.__currentLabels.length; t < n; ) { var i = t++; if (this.__currentLabels[i].get_frame() == this.__currentFrame) { this.__currentFrameLabel = this.__currentLabels[i].get_name(), this.__currentLabel = this.__currentLabels[i].get_name(); break } } this.__currentFrame++, this.__currentFrame >= this.get_totalFrames() && (this.__currentFrame = 0); for (var l = 0, a = this.stopFrames.length; l < a; ) { var s = l++; this.stopFrames[s] == this.__currentFrame && (this.__isPlaying = !1) } } }, get_totalFrames: function() { return this.__totalFrames + 1 }, __class__: MovieClipHX, __properties__: { get_totalFrames: "get_totalFrames" } }; var openfl_display_DefaultPreloader = function() { openfl_display_Sprite.call(this); var e = this.getBackgroundColor() , t = 0; .299 * (e >> 16 & 255) + .587 * (e >> 8 & 255) + .114 * (255 & e) < 70 && (t = 16777215); var n = this.getHeight() / 2 - 3.5 , i = this.getWidth() - 60; this.outline = new openfl_display_Sprite, this.outline.get_graphics().beginFill(t, .07), this.outline.get_graphics().drawRect(0, 0, i, 7), this.outline.set_x(30), this.outline.set_y(n), this.outline.set_alpha(0), this.addChild(this.outline), this.progress = new openfl_display_Sprite, this.progress.get_graphics().beginFill(t, .35), this.progress.get_graphics().drawRect(0, 0, i - 4, 3), this.progress.set_x(32), this.progress.set_y(n + 2), this.progress.set_scaleX(0), this.progress.set_alpha(0), this.addChild(this.progress), this.startAnimation = openfl_Lib.getTimer() + 100, this.endAnimation = this.startAnimation + 1e3, this.addEventListener("addedToStage", $bind(this, this.this_onAddedToStage)) }; $hxClasses["openfl.display.DefaultPreloader"] = openfl_display_DefaultPreloader, openfl_display_DefaultPreloader.__name__ = ["openfl", "display", "DefaultPreloader"], openfl_display_DefaultPreloader.__super__ = openfl_display_Sprite, openfl_display_DefaultPreloader.prototype = $extend(openfl_display_Sprite.prototype, { endAnimation: null, outline: null, progress: null, startAnimation: null, getBackgroundColor: function() { return openfl_Lib.current.stage.window.config.background }, getHeight: function() { var e = openfl_Lib.current.stage.window.config.height; return e > 0 ? e : openfl_Lib.current.stage.stageHeight }, getWidth: function() { var e = openfl_Lib.current.stage.window.config.width; return e > 0 ? e : openfl_Lib.current.stage.stageWidth }, onInit: function() { this.addEventListener("enterFrame", $bind(this, this.this_onEnterFrame)) }, onLoaded: function() { this.removeEventListener("enterFrame", $bind(this, this.this_onEnterFrame)), this.dispatchEvent(new openfl_events_Event("unload")) }, onUpdate: function(e, t) { var n = 0; t > 0 && (n = e / t) > 1 && (n = 1), this.progress.set_scaleX(n) }, this_onAddedToStage: function(e) { this.removeEventListener("addedToStage", $bind(this, this.this_onAddedToStage)), this.onInit(), this.onUpdate(this.get_loaderInfo().bytesLoaded, this.get_loaderInfo().bytesTotal), this.addEventListener("progress", $bind(this, this.this_onProgress)), this.addEventListener("complete", $bind(this, this.this_onComplete)) }, this_onComplete: function(e) { var t = this; e.preventDefault(), this.removeEventListener("progress", $bind(this, this.this_onProgress)), this.removeEventListener("complete", $bind(this, this.this_onComplete)), this.addEventListener("complete", function(e) { t.dispatchEvent(new openfl_events_Event("unload")) }), this.onLoaded() }, this_onEnterFrame: function(e) { var t = (openfl_Lib.getTimer() - this.startAnimation) / (this.endAnimation - this.startAnimation); t < 0 && (t = 0), t > 1 && (t = 1), this.outline.set_alpha(t), this.progress.set_alpha(t) }, this_onProgress: function(e) { this.onUpdate(0 | e.bytesLoaded, 0 | e.bytesTotal) }, __class__: openfl_display_DefaultPreloader }); var NumericFont = function(e, t) { this.img = openfl_Assets.getBitmapData("img/" + e + ".png"), this.symWidth = t, this.hp = new openfl_geom_Point, this.hct = new openfl_geom_ColorTransform, this.hm = new openfl_geom_Matrix, this.hr = new openfl_geom_Rectangle(0,0,this.symWidth,this.img.height), this.colorArray = new haxe_ds_IntMap }; $hxClasses.NumericFont = NumericFont, NumericFont.__name__ = ["NumericFont"], NumericFont.prototype = { img: null, colorArray: null, symWidth: null, hp: null, hct: null, hm: null, hr: null, __class__: NumericFont }; var OrdersGameMode = function(e) { this.tmpArr = [], this.ordersHighlight = null, this.selectedOrderState = null, this.numServedClients = 0, this.ordersStates = [], this.ordersProgressBarsBars = [], this.ordersProgressBars = [], this.orders = [], this.clientsHitZones = [], this.clientsOrdersStates = [], this.clients = [], this.data = null, BaseGameMode.call(this), this.data = e, this.completed = !1, this.waiter = this.getTargets(e.waiterData.target); var t = this.desk.getElementByName(e.waiterData.pivot); this.waiterPivot = { x: t.get_x(), y: t.get_y() }, t.parent.removeChild(t), HxOverrides.remove(this.desk.levels.physicElements, t); for (var n = 1; ; ) { var i = this.getElementsByPrefrix(e.clientsData.targetsPrefix, n); if (null == i || 0 == i.length) break; this.clientsHitZones.push([]); for (var l = 0; l < i.length; ) { var a = i[l]; ++l, "hitZone" == a.get_name() && (this.clientsHitZones[this.clientsHitZones.length - 1].push(a), a.set_visible(!1)) } 0 == this.clientsHitZones[this.clientsHitZones.length - 1].length && (this.clientsHitZones[this.clientsHitZones.length - 1] = i.slice()), this.clients.push(i), n++ } for (n = 1; ; ) { var s = this.getElementsByPrefrix(e.ordersTargetsPrefix, n) , r = this.getElementsByPrefrix(e.ordersProgressBarPrefix, n); if (null == s || 0 == s.length) break; this.orders.push(s[0]), this.ordersProgressBars.push(r), this.orders[this.orders.length - 1].set_visible(!1); for (var _ = 0, o = this.ordersProgressBars[this.ordersProgressBars.length - 1]; _ < o.length; ) { var p = o[_]; ++_, p.get_name() == e.ordersProgressBarBarName && (this.ordersProgressBarsBars[this.ordersProgressBars.length - 1] = p), p.set_visible(!1) } n++ } for (n = 1; ; ) { var h = this.getElementsByPrefrix(e.clientsData.clientsWaypointsPrefix, n); if (null == h || 0 == h.length) break; for (var d = [], u = 0; u < h.length; ) { var c = h[u]; ++u, d.push({ x: c.get_x(), y: c.get_y(), sx: c.get_scaleX(), sy: c.get_scaleY() }), c.parent.removeChild(c), HxOverrides.remove(this.desk.levels.physicElements, c) } n++ } this.ordersHighlight = this.desk.getElementByName(e.ordersHighlightTarget), null != this.ordersHighlight && this.ordersHighlight.set_visible(!1), this.totalProgressEls = this.getTargets(e.totalProgressTargets), this.totalProgressBar = this.desk.getElementByName(e.totalProgressBarTarget), this.updateTotalProgress(), null != this.desk.nextBtn && this.desk.nextBtn.set_visible(!1), this.prepareClientsAndOrders() }; $hxClasses.OrdersGameMode = OrdersGameMode, OrdersGameMode.__name__ = ["OrdersGameMode"], OrdersGameMode.__super__ = BaseGameMode, OrdersGameMode.prototype = $extend(BaseGameMode.prototype, { data: null, waiter: null, waiterPivot: null, clients: null, clientsOrdersStates: null, clientsHitZones: null, orders: null, ordersProgressBars: null, ordersProgressBarsBars: null, ordersStates: null, totalProgressEls: null, totalProgressBar: null, numServedClients: null, selectedOrderState: null, set_selectedOrderState: function(e) { return this.selectedOrderState = e, null != this.ordersHighlight && (this.ordersHighlight.set_visible(null != this.selectedOrderState), null != this.selectedOrderState && (this.ordersHighlight.gotoAndStop(this.selectedOrderState.orderIdx), this.ordersHighlight.set_x(this.orders[e.id].get_x()), this.ordersHighlight.set_y(this.orders[e.id].get_y()))), this.selectedOrderState }, ordersHighlight: null, onIdle: function(e) { for (var t = 0, n = this.clients; t < n.length; ) { var i = n[t]; ++t, -1 != HxOverrides.indexOf(i, e, 0) && this.playLabelInArr(i, "idle") } }, showHideOrder: function(e, t) { this.orders[e].set_visible(t); for (var n = 0, i = this.ordersProgressBars[e]; n < i.length; ) { var l = i[n]; ++n, l.set_visible(t) } t && this.updateOrderProgress(e), null != this.selectedOrderState && this.selectedOrderState.id == e && null != this.ordersHighlight && this.ordersHighlight.set_visible(!1) }, updateTotalProgress: function() { if (!this.completed) { var e = Math.min(1, this.numServedClients / this.data.numOrdersToWin); this.totalProgressBar.set_scaleX(e), 1 == e && (this.completed = !0) } }, swapOrders: function(e, t) { for (var n = 0, i = this.ordersStates; n < i.length; ) { var l = i[n]; ++n, l.curClientIdx == t.id && (l.curClientIdx = e.curClientIdx) } }, onMDown: function() { if (BaseGameMode.prototype.onMDown.call(this), null == this.selectedOrderState) { for (var e = !1, t = 0, n = this.clientsOrdersStates; t < n.length; ) { var i = n[t]; if (++t, i.isWaitingWaiter && this.hitsMouseArr(this.clientsHitZones[i.id])) { i.isWaitingWaiter = !1, i.isWaitingOrder = !0, i.timeToCall = -1; for (var l = 0, a = this.ordersStates.length; l < a; ) { var s = l++ , r = this.ordersStates[s]; if (!r.isActive) { r.orderIdx = i.waitingOrderIdx, r.isActive = !0, r.curClientIdx = i.id, r.timeToPrepare = this.data.orderPrepareMinTime + Math.random() * (this.data.orderPrepareMaxTime - this.data.orderPrepareMinTime), r.initTimeToPrepare = r.timeToPrepare, this.showHideOrder(r.id, !0), this.orders[r.id].gotoAndStop(r.orderIdx); break } } this.playLabelInArr(this.clients[i.id], this.data.clientsData.orderAnimLabelPrefix + (i.waitingOrderIdx + 1)), e = !0; break } } if (!e) for (var _ = 0, o = this.ordersStates; _ < o.length; ) { var p = o[_]; if (++_, p.isActive && p.timeToPrepare < 0 && this.desk.hitsMouse(this.orders[p.id])) { this.desk.animateBtnClick(this.orders[p.id]), this.set_selectedOrderState(p); break } } } else { for (var h = 0, d = this.clientsOrdersStates; h < d.length; ) { var u = d[h]; if (++h, this.hitsMouseArr(this.clientsHitZones[u.id])) { u.waitingOrderIdx == this.selectedOrderState.orderIdx && u.isWaitingOrder ? (this.selectedOrderState.curClientIdx != u.id && this.swapOrders(this.selectedOrderState, u), this.numServedClients++, this.updateTotalProgress(), this.showHideOrder(this.selectedOrderState.id, !1), this.playLabelInArr(this.clients[u.id], this.data.clientsData.orderUseAnimLabelPrefix + (u.waitingOrderIdx + 1), $bind(this, this.onIdle)), this.resetOrderState(this.selectedOrderState), this.resetClientOrderState(u), this.recheckClientsToOrder(), this.set_selectedOrderState(null)) : (this.set_selectedOrderState(null), this.isCurLabelActiveInArr(this.clients[u.id], this.data.clientsData.dissatisfactionLabel) || this.playLabelInArr(this.clients[u.id], this.data.clientsData.dissatisfactionLabel, null, !0)); break } } this.set_selectedOrderState(null) } }, resetOrderState: function(e) { e.curClientIdx = -1, e.isActive = !1, e.orderIdx = -1, e.timeToAnulate = -1, e.initTimeToAnulate = -1, e.timeToPrepare = -1, e.initTimeToPrepare = -1, this.showHideOrder(e.id, !1) }, resetClientOrderState: function(e, t) { null == t && (t = !1), t && this.playLabelInArr(this.clients[e.id], "idle"), e.timeToCall = -1, e.isWaitingOrder = !1, e.isWaitingWaiter = !1, e.timeToCall = -1, e.waitingOrderIdx = -1 }, hitsMouseArr: function(e) { for (var t = 0; t < e.length; ) { var n = e[t]; if (++t, this.desk.hitsMouse(n)) return !0 } return !1 }, prepareClientsAndOrders: function() { for (var e = 0, t = this.clients.length; e < t; ) { var n = e++; this.clientsOrdersStates.push({ id: n, isWaitingWaiter: !1, isWaitingOrder: !1, waitingOrderIdx: Std.random(this.data.clientsData.numOrders), timeToCall: this.data.clientsData.minTimeToOrder + Math.random() * (this.data.clientsData.maxTimeToOrder - this.data.clientsData.minTimeToOrder) }) } for (var i = 0, l = this.orders.length; i < l; ) { var a = i++; this.ordersStates.push({ id: a, orderIdx: -1, isActive: !1, timeToAnulate: -1, initTimeToAnulate: -1, timeToPrepare: -1, initTimeToPrepare: -1, curClientIdx: -1 }) } if (this.orders.length < this.clients.length) { var s = this.clients.length - this.orders.length , r = this.clientsOrdersStates.slice(); ArrayTools.randomSort(r); for (var _ = 0; _ < s; ) { var o = _++; r[o].isWaitingWaiter = !1, r[o].isWaitingOrder = !1, r[o].timeToCall = -1, r[o].waitingOrderIdx = -1 } } }, getElementsByPrefrix: function(e, t) { return this.getTargets(e + t) }, getTargets: function(e) { return 0 == e.toLowerCase().indexOf("layer:") ? this.desk.getElementsByLayerName(HxOverrides.substr(e, "layer:".length, null)) : 0 == e.toLowerCase().indexOf("folder:") ? this.desk.getElementsByFolderName(HxOverrides.substr(e, "folder:".length, null)) : this.desk.getElementsByName(e) }, isCurLabelActiveInArr: function(e, t) { for (var n = 0; n < e.length; ) { var i = e[n]; if (++n, i.curLabel == t) return !0 } return !1 }, playLabelInArr: function(e, t, n, i) { null == i && (i = !1); for (var l = null, a = 0, s = 0; s < e.length; ) { var r = [e[s]]; if (++s, r[0].hasLabel(t)) { if (i) { var _ = [r[0].curFrame] , o = [r[0].isPlaying] , p = [r[0].isLoop] , h = [r[0].curLabel] , d = [r[0].curStartFrame] , u = [r[0].curEndFrame]; r[0].playLabel(t, function(e, t, n, i, l, a, s) { return function(r) { r.curFrame = a[0], r.isPlaying = l[0], r.isLoop = i[0], r.curLabel = n[0], r.playCallback = null, s[0].curStartFrame = t[0], s[0].curEndFrame = e[0] } }(u, d, h, p, o, _, r)) } else r[0].playLabel(t), null == n && (r[0].playCallback = null); var c = r[0].curEndFrame - r[0].curStartFrame; c > a && (a = c, l = r[0]) } } null != l && null != n && (l.playCallback = n) }, tmpArr: null, recheckClientsToOrder: function() { for (; this.tmpArr.length > 0; ) this.tmpArr.pop(); for (var e = 0, t = 0, n = this.clientsOrdersStates; t < n.length; ) { var i = n[t]; ++t, !i.isWaitingOrder && !i.isWaitingWaiter && i.timeToCall <= 0 && e++, this.tmpArr.push(i) } ArrayTools.randomSort(this.tmpArr); for (var l = this.orders.length - e, a = 0, s = this.tmpArr; a < s.length; ) { var r = s[a]; if (++a, l <= 0) break; !r.isWaitingOrder && !r.isWaitingWaiter && r.timeToCall <= 0 && (r.waitingOrderIdx = Std.random(this.data.clientsData.numOrders), r.timeToCall = this.data.clientsData.minTimeToOrder + Math.random() * (this.data.clientsData.maxTimeToOrder - this.data.clientsData.minTimeToOrder), l--) } }, updateOrderProgress: function(e) { var t = this.ordersStates[e]; t.timeToPrepare > 0 ? this.ordersProgressBarsBars[e].set_scaleX(Math.min(1, (t.initTimeToPrepare - t.timeToPrepare) / t.initTimeToPrepare)) : t.timeToAnulate > 0 ? this.ordersProgressBarsBars[e].set_scaleX(t.timeToAnulate / t.initTimeToAnulate) : this.ordersProgressBarsBars[e].set_scaleX(1) }, anulateOrder: function(e) { var t = this.clientsOrdersStates[e.curClientIdx]; if (t.isWaitingOrder && t.waitingOrderIdx == e.orderIdx) this.resetClientOrderState(t, !0); else for (var n = 0, i = this.clientsOrdersStates; n < i.length; ) { var l = i[n]; if (++n, l.isWaitingOrder && t.waitingOrderIdx == e.orderIdx) { this.resetClientOrderState(l, !0); break } } this.selectedOrderState == e && this.set_selectedOrderState(null), this.resetOrderState(e), this.recheckClientsToOrder() }, update: function(e) { BaseGameMode.prototype.update.call(this, e); for (var t = 0, n = this.clientsOrdersStates.length; t < n; ) { var i = t++ , l = this.clientsOrdersStates[i]; l.timeToCall > 0 && (l.timeToCall -= e, l.timeToCall <= 0 && (l.isWaitingWaiter = !0, this.playLabelInArr(this.clients[i], this.data.clientsData.callWaiterLabel))) } for (var a = 0, s = this.ordersStates.length; a < s; ) { var r = a++ , _ = this.ordersStates[r]; _.isActive && (_.timeToPrepare > 0 ? (_.timeToPrepare -= e, _.timeToPrepare <= 0 && (_.timeToAnulate = this.data.orderAnulateMinTime + Math.random() * (this.data.orderAnulateMaxTime - this.data.orderAnulateMinTime), _.initTimeToAnulate = _.timeToAnulate)) : _.timeToAnulate > 0 && (_.timeToAnulate -= e, _.timeToAnulate <= 0 && this.anulateOrder(_)), this.updateOrderProgress(r)) } }, __class__: OrdersGameMode, __properties__: { set_selectedOrderState: "set_selectedOrderState" } }); var openfl_display_BitmapData = function(e, t, n, i) { null == i && (i = -1), null == n && (n = !0), this.transparent = n, e = null == e ? 0 : e, t = null == t ? 0 : t, e = e < 0 ? 0 : e, t = t < 0 ? 0 : t, this.width = e, this.height = t, this.rect = new openfl_geom_Rectangle(0,0,e,t), e > 0 && t > 0 && (n ? 0 == (-16777216 & i) && (i = 0) : i = -16777216 | 16777215 & i, i = i << 8 | i >> 24 & 255, this.image = new lime_graphics_Image(null,0,0,e,t,i), this.image.set_transparent(n), this.__isValid = !0, this.readable = !0), this.__worldTransform = new openfl_geom_Matrix, this.__worldColorTransform = new openfl_geom_ColorTransform }; $hxClasses["openfl.display.BitmapData"] = openfl_display_BitmapData, openfl_display_BitmapData.__name__ = ["openfl", "display", "BitmapData"], openfl_display_BitmapData.__interfaces__ = [openfl_display_IBitmapDrawable], openfl_display_BitmapData.fromCanvas = function(e, t) { if (null == t && (t = !0), null == e) return null; var n = new openfl_display_BitmapData(0,0,t,0); return n.__fromImage(lime_graphics_Image.fromCanvas(e)), n.image.set_transparent(t), n } , openfl_display_BitmapData.fromImage = function(e, t) { if (null == t && (t = !0), null == e || null == e.buffer) return null; var n = new openfl_display_BitmapData(0,0,t,0); return n.__fromImage(e), n.image.set_transparent(t), n } , openfl_display_BitmapData.fromTexture = function(e) { if (null == e) return null; var t = new openfl_display_BitmapData(e.__width,e.__height,!0,0); return t.readable = !1, t.__texture = e.__textureID, t.image = null, t } , openfl_display_BitmapData.loadFromFile = function(e) { return lime_graphics_Image.loadFromFile(e).then(function(e) { return lime_app_Future.withValue(openfl_display_BitmapData.fromImage(e)) }) } , openfl_display_BitmapData.prototype = { height: null, image: null, readable: null, rect: null, transparent: null, width: null, __buffer: null, __bufferAlpha: null, __bufferData: null, __framebuffer: null, __isValid: null, __surface: null, __texture: null, __textureVersion: null, __transform: null, __worldColorTransform: null, __worldTransform: null, clone: function() { if (this.__isValid) { if (this.readable || null != this.image) return openfl_display_BitmapData.fromImage(this.image.clone(), this.transparent); var e = new openfl_display_BitmapData(0,0,this.transparent,0); return e.width = this.width, e.height = this.height, e.rect.copyFrom(this.rect), e.__framebuffer = this.__framebuffer, e.__texture = this.__texture, e.__isValid = !0, e } return new openfl_display_BitmapData(this.width,this.height,this.transparent,0) }, colorTransform: function(e, t) { this.readable && this.image.colorTransform(e.__toLimeRectangle(), t.__toLimeColorMatrix()) }, copyPixels: function(e, t, n, i, l, a) { null == a && (a = !1), this.readable && null != e && this.image.copyPixels(e.image, t.__toLimeRectangle(), n.__toLimeVector2(), null != i ? i.image : null, null != l ? l.__toLimeVector2() : null, a) }, dispose: function() { this.image = null, this.width = 0, this.height = 0, this.rect = null, this.__isValid = !1, this.readable = !1, this.__surface = null, this.__buffer = null, this.__framebuffer = null, this.__texture = null }, draw: function(e, t, n, i, l, a) { if (null == a && (a = !1), null == t && (t = new openfl_geom_Matrix, null != e.__transform && (t.copyFrom(e.__transform), t.tx = 0, t.ty = 0)), this.readable) { if (null != n) { var s = Math.ceil(Reflect.getProperty(e, "width")) , r = Math.ceil(Reflect.getProperty(e, "height")) , _ = new openfl_display_BitmapData(s,r,!0,0); _.draw(e), _.colorTransform(_.rect, n), e = _ } lime_graphics_utils_ImageCanvasUtil.convertToCanvas(this.image); var o = this.image.buffer , p = new openfl__$internal_renderer_RenderSession; p.context = o.__srcContext, p.allowSmoothing = a, p.roundPixels = !0, p.maskManager = new openfl__$internal_renderer_canvas_CanvasMaskManager(p), a || (o.__srcContext.mozImageSmoothingEnabled = !1, o.__srcContext.msImageSmoothingEnabled = !1, o.__srcContext.imageSmoothingEnabled = !1), null != l && p.maskManager.pushRect(l, new openfl_geom_Matrix); var h = e.__worldTransform; e.__updateTransforms(t), e.__updateChildren(!1), e.__renderCanvas(p), e.__updateTransforms(h), e.__updateChildren(!0), a || (o.__srcContext.mozImageSmoothingEnabled = !0, o.__srcContext.msImageSmoothingEnabled = !0, o.__srcContext.imageSmoothingEnabled = !0), null != l && p.maskManager.popRect(), o.__srcContext.setTransform(1, 0, 0, 1, 0, 0), o.__srcImageData = null, o.data = null, this.image.dirty = !0, this.image.version++ } else if (null != lime_graphics_opengl_GL.context) { var d = lime_graphics_opengl_GL.context; d.bindFramebuffer(d.FRAMEBUFFER, this.__getFramebuffer(d)), d.viewport(0, 0, this.width, this.height); var u = new openfl__$internal_renderer_opengl_GLRenderer(openfl_Lib.current.stage,d,!1); u.resize(this.width, this.height), u.renderSession.shaderManager = js_Boot.__cast(openfl_Lib.current.stage.__renderer, openfl__$internal_renderer_opengl_GLRenderer).renderSession.shaderManager; var c = e.__worldTransform; e.__updateTransforms(t), e.__updateChildren(!1), e.__renderGL(u.renderSession), e.__updateTransforms(c), e.__updateChildren(!0), d.bindFramebuffer(d.FRAMEBUFFER, null) } }, getBuffer: function(e, t) { if (null == this.__buffer) { var n, i = [this.width, this.height, 0, 1, 1, t, 0, this.height, 0, 0, 1, t, this.width, 0, 0, 1, 0, t, 0, 0, 0, 0, 0, t]; n = null != i ? new Float32Array(i) : null, this.__bufferData = n, this.__bufferAlpha = t, this.__buffer = e.createBuffer(), e.bindBuffer(e.ARRAY_BUFFER, this.__buffer), e.bufferData(e.ARRAY_BUFFER, this.__bufferData, e.STATIC_DRAW) } else this.__bufferAlpha != t && (this.__bufferData[5] = t, this.__bufferData[11] = t, this.__bufferData[17] = t, this.__bufferData[23] = t, this.__bufferAlpha = t, e.bindBuffer(e.ARRAY_BUFFER, this.__buffer), e.bufferData(e.ARRAY_BUFFER, this.__bufferData, e.STATIC_DRAW)); return this.__buffer }, getPixel32: function(e, t) { return this.readable ? this.image.getPixel32(e, t, 1) : 0 }, getTexture: function(e) { if (!this.__isValid) return null; if (null == this.__texture && (this.__texture = e.createTexture(), e.bindTexture(e.TEXTURE_2D, this.__texture), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.CLAMP_TO_EDGE), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MAG_FILTER, e.NEAREST), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, e.NEAREST), this.__textureVersion = -1), lime_graphics_utils_ImageCanvasUtil.sync(this.image, !1), null != this.image && this.image.version != this.__textureVersion) { var t, n; null != this.__surface && lime_graphics_cairo__$CairoSurface_CairoSurface_$Impl_$.flush(this.__surface), 1 == this.image.buffer.bitsPerPixel ? (t = e.ALPHA, n = e.ALPHA) : (t = e.RGBA, n = e.RGBA), e.bindTexture(e.TEXTURE_2D, this.__texture); var i = this.image; i.type == lime_graphics_ImageType.DATA || i.get_premultiplied() ? !i.get_premultiplied() && i.get_transparent() && e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1) : e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1), 0 != i.get_format() && (i = i.clone()).set_format(0), i.type == lime_graphics_ImageType.DATA ? e.texImage2D(e.TEXTURE_2D, 0, t, i.buffer.width, i.buffer.height, 0, n, e.UNSIGNED_BYTE, i.get_data()) : e.texImage2D(e.TEXTURE_2D, 0, t, n, e.UNSIGNED_BYTE, i.get_src()), e.bindTexture(e.TEXTURE_2D, null), this.__textureVersion = this.image.version } return this.readable || null == this.image || (this.__surface = null, this.image = null), this.__texture }, lock: function() {}, setPixel32: function(e, t, n) { this.readable && this.image.setPixel32(e, t, n, 1) }, unlock: function(e) {}, __fromBase64: function(e, t, n) { var i = this; lime_graphics_Image.fromBase64(e, t, function(e) { i.__fromImage(e), null != n && n(i) }) }, __fromImage: function(e) { null != e && null != e.buffer && (this.image = e, this.width = e.width, this.height = e.height, this.rect = new openfl_geom_Rectangle(0,0,e.width,e.height), this.readable = !0, this.__isValid = !0) }, __getFramebuffer: function(e) { return null == this.__framebuffer && (this.getTexture(e), this.__framebuffer = e.createFramebuffer(), e.bindFramebuffer(e.FRAMEBUFFER, this.__framebuffer), e.framebufferTexture2D(e.FRAMEBUFFER, e.COLOR_ATTACHMENT0, e.TEXTURE_2D, this.__texture, 0)), this.__framebuffer }, __renderCanvas: function(e) { if (this.readable) { this.image.type == lime_graphics_ImageType.DATA && lime_graphics_utils_ImageCanvasUtil.convertToCanvas(this.image); var t = e.context; null == this.__worldTransform && (this.__worldTransform = new openfl_geom_Matrix), t.globalAlpha = 1; var n = this.__worldTransform; e.roundPixels ? t.setTransform(n.a, n.b, n.c, n.d, 0 | n.tx, 0 | n.ty) : t.setTransform(n.a, n.b, n.c, n.d, n.tx, n.ty), t.drawImage(this.image.get_src(), 0, 0) } }, __renderGL: function(e) { var t = e.renderer , n = e.gl; e.blendModeManager.setBlendMode(10); var i = e.shaderManager.defaultShader; i.get_data().uImage0.input = this, i.get_data().uImage0.smoothing = e.allowSmoothing && e.upscaled, i.get_data().uMatrix.value = t.getMatrix(this.__worldTransform), e.shaderManager.setShader(i), n.bindBuffer(n.ARRAY_BUFFER, this.getBuffer(n, 1)), n.vertexAttribPointer(i.get_data().aPosition.index, 3, n.FLOAT, !1, 24, 0), n.vertexAttribPointer(i.get_data().aTexCoord.index, 2, n.FLOAT, !1, 24, 12), n.vertexAttribPointer(i.get_data().aAlpha.index, 1, n.FLOAT, !1, 24, 20), n.drawArrays(n.TRIANGLE_STRIP, 0, 4) }, __updateChildren: function(e) {}, __updateTransforms: function(e) { null == e ? this.__worldTransform.identity() : this.__worldTransform = e }, __class__: openfl_display_BitmapData }; var SponsorLogo = function(e, t, n, i, l) { null == i && (i = -1), null == n && (n = !0), openfl_display_BitmapData.call(this, 0, 0, n, i), null != SponsorLogo.preload ? this.__fromImage(SponsorLogo.preload) : this.__fromBase64(haxe_Resource.getString(SponsorLogo.resourceName), SponsorLogo.resourceType, function(e) { null == SponsorLogo.preload && (SponsorLogo.preload = e.image), null != l && l(e) }) }; $hxClasses.SponsorLogo = SponsorLogo, SponsorLogo.__name__ = ["SponsorLogo"], SponsorLogo.__super__ = openfl_display_BitmapData, SponsorLogo.prototype = $extend(openfl_display_BitmapData.prototype, { __class__: SponsorLogo }); var GameLogo = function(e, t, n, i, l) { null == i && (i = -1), null == n && (n = !0), openfl_display_BitmapData.call(this, 0, 0, n, i), null != GameLogo.preload ? this.__fromImage(GameLogo.preload) : this.__fromBase64(haxe_Resource.getString(GameLogo.resourceName), GameLogo.resourceType, function(e) { null == GameLogo.preload && (GameLogo.preload = e.image), null != l && l(e) }) }; $hxClasses.GameLogo = GameLogo, GameLogo.__name__ = ["GameLogo"], GameLogo.__super__ = openfl_display_BitmapData, GameLogo.prototype = $extend(openfl_display_BitmapData.prototype, { __class__: GameLogo }); var LoadMeter = function(e, t, n, i, l) { null == i && (i = -1), null == n && (n = !0), openfl_display_BitmapData.call(this, 0, 0, n, i), null != LoadMeter.preload ? this.__fromImage(LoadMeter.preload) : this.__fromBase64(haxe_Resource.getString(LoadMeter.resourceName), LoadMeter.resourceType, function(e) { null == LoadMeter.preload && (LoadMeter.preload = e.image), null != l && l(e) }) }; $hxClasses.LoadMeter = LoadMeter, LoadMeter.__name__ = ["LoadMeter"], LoadMeter.__super__ = openfl_display_BitmapData, LoadMeter.prototype = $extend(openfl_display_BitmapData.prototype, { __class__: LoadMeter }); var LoadBarContur = function(e, t, n, i, l) { null == i && (i = -1), null == n && (n = !0), openfl_display_BitmapData.call(this, 0, 0, n, i), null != LoadBarContur.preload ? this.__fromImage(LoadBarContur.preload) : this.__fromBase64(haxe_Resource.getString(LoadBarContur.resourceName), LoadBarContur.resourceType, function(e) { null == LoadBarContur.preload && (LoadBarContur.preload = e.image), null != l && l(e) }) }; $hxClasses.LoadBarContur = LoadBarContur, LoadBarContur.__name__ = ["LoadBarContur"], LoadBarContur.__super__ = openfl_display_BitmapData, LoadBarContur.prototype = $extend(openfl_display_BitmapData.prototype, { __class__: LoadBarContur }); var LoadBarFill = function(e, t, n, i, l) { null == i && (i = -1), null == n && (n = !0), openfl_display_BitmapData.call(this, 0, 0, n, i), null != LoadBarFill.preload ? this.__fromImage(LoadBarFill.preload) : this.__fromBase64(haxe_Resource.getString(LoadBarFill.resourceName), LoadBarFill.resourceType, function(e) { null == LoadBarFill.preload && (LoadBarFill.preload = e.image), null != l && l(e) }) }; $hxClasses.LoadBarFill = LoadBarFill, LoadBarFill.__name__ = ["LoadBarFill"], LoadBarFill.__super__ = openfl_display_BitmapData, LoadBarFill.prototype = $extend(openfl_display_BitmapData.prototype, { __class__: LoadBarFill }); var OurLogo = function(e, t, n, i, l) { null == i && (i = -1), null == n && (n = !0), openfl_display_BitmapData.call(this, 0, 0, n, i), null != OurLogo.preload ? this.__fromImage(OurLogo.preload) : this.__fromBase64(haxe_Resource.getString(OurLogo.resourceName), OurLogo.resourceType, function(e) { null == OurLogo.preload && (OurLogo.preload = e.image), null != l && l(e) }) }; $hxClasses.OurLogo = OurLogo, OurLogo.__name__ = ["OurLogo"], OurLogo.__super__ = openfl_display_BitmapData, OurLogo.prototype = $extend(openfl_display_BitmapData.prototype, { __class__: OurLogo }); var Preloader = function() { this.wasHeight = 0, this.wasWidth = 0, this.horseAng = 0, this.inited = !1, openfl_display_DefaultPreloader.call(this), Preloader.instance = this; var isMobileBrowser = !1 , evalString = ""; evalString += "/Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone|IEMobile|Opera Mini/i.test(navigator.userAgent)", isMobileBrowser = eval(evalString), isMobileBrowser || eval("document.getElementById('openfl-content').style.overflow = 'hidden'"), this.mainCont = new openfl_display_Sprite, this.addChild(this.mainCont), this.sponsorLogo = new openfl_display_Sprite, this.sponsorBm = new openfl_display_Bitmap(new SponsorLogo(0,0),1,!0), this.sponsorLogo.addChild(this.sponsorBm), this.gameLogo = new openfl_display_Bitmap(new GameLogo(0,0),1,!0), this.barContur = new openfl_display_Bitmap(new LoadBarContur(0,0)), this.bar = new openfl_display_Bitmap(new LoadBarFill(0,0)), this.loadMetrCont = new openfl_display_Sprite, this.loadMetr = new openfl_display_Bitmap(new LoadMeter(0,0),1,!0), this.ourLogo = new openfl_display_Sprite, this.ourLogo.addChild(new openfl_display_Bitmap(new OurLogo(0,0),1,!0)), this.getChildAt(0).set_visible(!1), this.getChildAt(1).set_visible(!1), window.document.addEventListener("touchstart", function(e) { e.preventDefault() }, !1), window.document.addEventListener("touchmove", function(e) { e.preventDefault() }, !1), new Sounds }; $hxClasses.Preloader = Preloader, Preloader.__name__ = ["Preloader"], Preloader.remove = function() { Preloader.instance.onLoadedRemove() } , Preloader.getSize = function() { var e = 0 , t = 0; return window.innerWidth > 0 ? (e = window.innerWidth, t = window.innerHeight) : null != window.document.documentElement && (window.document.documentElement.clientWidth > 0 || window.document.documentElement.clientHeight > 0) ? (e = window.document.documentElement.clientWidth, t = window.document.documentElement.clientHeight) : null != window.document.body && (window.document.body.clientWidth > 0 || window.document.body.clientHeight > 0) && (e = window.document.body.clientWidth, t = window.document.body.clientHeight), { width: e, height: t } } , Preloader.__super__ = openfl_display_DefaultPreloader, Preloader.prototype = $extend(openfl_display_DefaultPreloader.prototype, { mainCont: null, sponsorBm: null, sponsorLogo: null, gameLogo: null, loadMetr: null, loadMetrCont: null, barContur: null, bar: null, ourLogo: null, inited: null, overlay: null, horseAng: null, wasWidth: null, wasHeight: null, init: function() { var e = Preloader.getSize(); this.wasWidth = e.width, this.wasHeight = e.height, this.sponsorLogo.set_x(-this.sponsorLogo.get_width() / 2), this.inited || this.mainCont.addChild(this.sponsorLogo); this.sponsorBm.__graphics; if (this.mainCont.set_scaleX(this.mainCont.set_scaleY(1)), this.gameLogo.set_width(e.width), this.gameLogo.get_scaleX() > 1 && this.gameLogo.set_scaleX(this.gameLogo.set_scaleY(1)), this.gameLogo.set_scaleY(this.gameLogo.get_scaleX()), this.gameLogo.set_x(-this.gameLogo.get_width() / 2), this.gameLogo.set_y(this.sponsorLogo.get_y() + this.sponsorLogo.get_height() + 60), this.inited || this.mainCont.addChild(this.gameLogo), this.loadMetr.set_x(-this.loadMetr.get_width() / 2), this.loadMetr.set_y(-this.loadMetr.get_height()), this.inited || this.loadMetrCont.addChild(this.loadMetr), this.loadMetrCont.set_x(-this.bar.get_width() / 2), this.loadMetrCont.set_y(this.gameLogo.get_y() + this.gameLogo.get_height() + 50), this.inited || this.mainCont.addChild(this.loadMetrCont), this.bar.set_x(-this.bar.bitmapData.width / 2), this.bar.set_y(this.loadMetrCont.get_y() + 5), this.barContur.set_x(this.bar.get_x() - 2), this.barContur.set_y(this.bar.get_y() - 2), this.inited || this.mainCont.addChild(this.barContur), this.inited || this.mainCont.addChild(this.bar), this.bar.set_width(1), this.ourLogo.set_scaleX(this.ourLogo.set_scaleY(.8)), this.ourLogo.set_x(-this.ourLogo.get_width() / 2), this.ourLogo.set_y(this.barContur.get_y() + this.barContur.get_height() + 50), this.ourLogo.set_scaleX(this.ourLogo.set_scaleY(.01)), this.ourLogo.set_alpha(0), this.inited || this.mainCont.addChild(this.ourLogo), this.set_x(e.width / 2), this.mainCont.get_height() > e.height) { var t = e.height / (this.mainCont.get_height() + 50); this.mainCont.set_scaleX(this.mainCont.set_scaleY(t)) } this.set_y(e.height / 2 - this.mainCont.get_height() / 2), null == this.overlay && (this.overlay = new openfl_display_Bitmap(new openfl_display_BitmapData(100,100,!0,4128908)), this.addChildAt(this.overlay, this.getChildIndex(this.mainCont))), this.overlay.set_width(e.width), this.overlay.set_height(e.height), this.overlay.set_x(-this.get_x()), this.overlay.set_y(-this.get_y()), this.inited = !0, openfl_Lib.current.stage.addEventListener("resize", $bind(this, this.stage_onResize)) }, stage_onResize: function(e) { this.init() }, onUpdate: function(e, t) { this.init(), openfl_display_DefaultPreloader.prototype.onUpdate.call(this, e, t), this.bar.set_width(218 * e / t), this.loadMetrCont.set_x(this.bar.get_x() + this.bar.get_width()), this.horseAng += .6, this.loadMetrCont.set_rotation(15 * Math.sin(this.horseAng)) }, onLoaded: function() { var e = window.navigator.userAgent.indexOf("SM-G900") > -1 , t = window.navigator.userAgent.indexOf("SamsungBrowser") > -1; e && t || openfl_display_DefaultPreloader.prototype.onLoaded.call(this) }, onLoadedRemove: function() { openfl_display_DefaultPreloader.prototype.onLoaded.call(this) }, __class__: Preloader }); var ProgressBarData = function(e) { if (this.fillWidth = 0, this.toolData = e, this.desk = Desk.current, this.parts = this.desk.getElementsByNamePrefix_(e.progressBar), this.fill = this.desk.getElementByName(e.progressBar + "_fill"), null == this.fill && (this.fill = this.desk.getElementByName(e.progressBar + "_fill_hidden")), HxOverrides.remove(this.parts, this.fill), null == this.fill) throw new js__$Boot_HaxeError(new openfl_errors_Error("Progress Bar with name:" + e.progressBar + " doesn't have fill line")); for (var t = 0, n = this.parts; t < n.length; ) { var i = n[t]; ++t, i.set_visible(!0) } this.fill.set_visible(!0), this.fill.set_scaleX(this.fill.set_scaleY(1)), this.fillWidth = this.fill.get_width(), this.fill.set_scaleX(.001) }; $hxClasses.ProgressBarData = ProgressBarData, ProgressBarData.__name__ = ["ProgressBarData"], ProgressBarData.prototype = { parts: null, fill: null, toolData: null, desk: null, fillWidth: null, setProgress: function(e) { e > 100 && (e = 100), e < 0 && (e = 0), this.fill.set_scaleX(e / 100) }, onEnd: function() { if (null != this.toolData.hideProgressOnEnd && this.toolData.hideProgressOnEnd) { for (var e = 0, t = this.parts; e < t.length; ) { var n = t[e]; ++e, n.set_visible(!1) } this.fill.set_visible(!1) } }, __class__: ProgressBarData }; var Reflect = function() {}; $hxClasses.Reflect = Reflect, Reflect.__name__ = ["Reflect"], Reflect.field = function(e, t) { try { return e[t] } catch (e) { return e instanceof js__$Boot_HaxeError && (e = e.val), null } } , Reflect.setField = function(e, t, n) { e[t] = n } , Reflect.getProperty = function(e, t) { var n; return null == e ? null : e.__properties__ && (n = e.__properties__["get_" + t]) ? e[n]() : e[t] } , Reflect.setProperty = function(e, t, n) { var i; e.__properties__ && (i = e.__properties__["set_" + t]) ? e[i](n) : e[t] = n } , Reflect.callMethod = function(e, t, n) { return t.apply(e, n) } , Reflect.fields = function(e) { var t = []; if (null != e) { var n = Object.prototype.hasOwnProperty; for (var i in e) "__id__" != i && "hx__closures__" != i && n.call(e, i) && t.push(i) } return t } , Reflect.isFunction = function(e) { return "function" == typeof e && !(e.__name__ || e.__ename__) } , Reflect.compareMethods = function(e, t) { return e == t || !(!Reflect.isFunction(e) || !Reflect.isFunction(t)) && (e.scope == t.scope && e.method == t.method && null != e.method) } , Reflect.deleteField = function(e, t) { return !!Object.prototype.hasOwnProperty.call(e, t) && (delete e[t], !0) } ; var ScrollContainer = function() { this.scrolled = !1, this.verLineSize = 0, this.isVerLineScrolling = !1, this.isVerScrollLine = !1, this.speedY = 0, this.speedX = 0, this.isMDown = !1, this.removedListeners = !1, this.doSimpleHorizontalScroll = !1, this.doSimpleVerticalScroll = !1 }; $hxClasses.ScrollContainer = ScrollContainer, ScrollContainer.__name__ = ["ScrollContainer"], ScrollContainer.__super__ = openfl_display_Sprite, ScrollContainer.prototype = $extend(openfl_display_Sprite.prototype, { contSprite: null, scrollHeight: null, scrollWidth: null, doSimpleVerticalScroll: null, doSimpleHorizontalScroll: null, removedListeners: null, isMDown: null, hp: null, main: null, speedX: null, speedY: null, scrollVerLine: null, scrollVerElement: null, isVerScrollLine: null, isVerLineScrolling: null, verLineSize: null, scrolled: null, btnDown: function(e) { this.removeListeners(e), this.isMDown || this.isVerLineScrolling || (e.stopImmediatePropagation(), null != this.scrollVerElement && this.scrollVerElement.hitTestPoint(e.stageX, e.stageY) ? this.isVerLineScrolling = !0 : this.isMDown = !0, this.hp.x = this.main.get_mouseX(), this.hp.y = this.main.get_mouseY()) }, btnMove: function(e) { if (this.isMDown) this.doSimpleVerticalScroll && this.addVerticalScroll((this.main.get_mouseY() - this.hp.y) * this.get_scaleY()), this.doSimpleHorizontalScroll && this.addHorScroll((this.main.get_mouseX() - this.hp.x) * this.get_scaleX()), this.speedY = (this.speedY + (this.hp.y - this.main.get_mouseY()) * this.get_scaleY() * 4 / 60) / 2, this.speedX = (this.speedX + (this.hp.x - this.main.get_mouseX()) * this.get_scaleX() * 4 / 60) / 2, this.hp.x = this.main.get_mouseX(), this.hp.y = this.main.get_mouseY(), this.scrolled = !0, this.isVerScrollLine && this.scrollHeight < this.contSprite.get_height() && this.scrollVerElement.set_y(this.scrollVerLine.get_y() - this.verLineSize / (this.contSprite.get_height() - this.scrollHeight) * this.contSprite.get_y()); else if (this.isVerLineScrolling) { var t = this.scrollVerElement; t.set_y(t.get_y() + (this.main.get_mouseY() - this.hp.y) * this.get_scaleY()), this.scrollVerElement.get_y() - this.scrollVerLine.get_y() < 0 ? this.scrollVerElement.set_y(this.scrollVerLine.get_y()) : this.scrollVerElement.get_y() - this.scrollVerLine.get_y() > this.verLineSize && this.scrollVerElement.set_y(this.scrollVerLine.get_y() + this.verLineSize), this.contSprite.set_y(-(this.contSprite.get_height() - this.scrollHeight) / this.verLineSize * (this.scrollVerElement.get_y() - this.scrollVerLine.get_y())), this.hp.x = this.main.get_mouseX(), this.hp.y = this.main.get_mouseY() } }, btnUp: function(e) { this.isMDown && e.stopImmediatePropagation(), this.isVerLineScrolling = !1, this.isMDown = !1, 60 * Math.abs(this.speedX) < 2 && (this.speedX = 0), 60 * Math.abs(this.speedY) < 2 && (this.speedY = 0) }, btnClick: function(e) { this.scrolled && e.stopImmediatePropagation(), this.scrolled = !1 }, removeListeners: function(e) { this.removedListeners || ("mouseDown" == e.type || "mouseMove" == e.type || "mouseUp" == e.type ? (this.removeEventListener("touchBegin", $bind(this, this.btnDown)), openfl_Lib.current.stage.removeEventListener("touchBegin", $bind(this, this.btnDown)), openfl_Lib.current.stage.removeEventListener("touchMove", $bind(this, this.btnMove)), openfl_Lib.current.stage.removeEventListener("touchEnd", $bind(this, this.btnUp))) : (this.removeEventListener("mouseDown", $bind(this, this.btnDown)), openfl_Lib.current.stage.removeEventListener("mouseDown", $bind(this, this.btnDown)), openfl_Lib.current.stage.removeEventListener("mouseMove", $bind(this, this.btnMove)), openfl_Lib.current.stage.removeEventListener("mouseUp", $bind(this, this.btnUp)), this.removeEventListener("click", $bind(this, this.btnClick))), this.removedListeners = !0) }, addVerticalScroll: function(e) { if (this.scrollHeight > this.contSprite.get_height()) return !1; var t = this.contSprite; return t.set_y(t.get_y() + e), this.contSprite.get_y() > 0 ? (this.contSprite.set_y(0), !1) : !(this.contSprite.get_height() + this.contSprite.get_y() < this.scrollHeight) || (this.contSprite.set_y(this.scrollHeight - this.contSprite.get_height()), !1) }, addHorScroll: function(e) { var t = this.contSprite; return t.set_x(t.get_x() + e), this.contSprite.get_x() > 0 ? (this.contSprite.set_x(0), !1) : !(this.contSprite.get_width() + this.contSprite.get_x() < this.scrollWidth) || (this.contSprite.set_x(this.scrollWidth - this.contSprite.get_width()), !1) }, addChild: function(e) { return this.contSprite.addChild(e) }, addChildAt: function(e, t) { return this.contSprite.addChildAt(e, t) }, removeChild: function(e) { return e.parent == this.contSprite && this.contSprite.removeChild(e), e }, removeChildAt: function(e) { return this.contSprite.removeChildAt(e) }, update: function(e) { if (!(this.isMDown || this.isVerLineScrolling || 0 == this.speedX && 0 == this.speedY)) { var t = e / 16.666666666666668 , n = Math.pow(.92, t); this.speedY *= n, this.speedX *= n, this.doSimpleVerticalScroll && !this.addVerticalScroll(-this.speedY * e) && (this.speedY = 0), this.doSimpleHorizontalScroll && !this.addHorScroll(-this.speedX * e) && (this.speedX = 0), 60 * Math.abs(this.speedY) <= .2 && (this.speedY = 0), 60 * Math.abs(this.speedX) <= .2 && (this.speedX = 0), this.isVerScrollLine && this.scrollVerElement.set_y(this.scrollVerLine.get_y() - this.verLineSize / (this.contSprite.get_height() - this.scrollHeight) * this.contSprite.get_y()) } this.isVerScrollLine && this.scrollVerElement.set_visible(this.contSprite.get_height() > this.scrollHeight) }, destroy: function() { this.removeEventListener("touchBegin", $bind(this, this.btnDown)), openfl_Lib.current.stage.removeEventListener("touchBegin", $bind(this, this.btnDown)), openfl_Lib.current.stage.removeEventListener("touchMove", $bind(this, this.btnMove)), openfl_Lib.current.stage.removeEventListener("touchEnd", $bind(this, this.btnUp)), this.removeEventListener("mouseDown", $bind(this, this.btnDown)), openfl_Lib.current.stage.removeEventListener("mouseDown", $bind(this, this.btnDown)), openfl_Lib.current.stage.removeEventListener("mouseMove", $bind(this, this.btnMove)), openfl_Lib.current.stage.removeEventListener("mouseUp", $bind(this, this.btnUp)), this.removeEventListener("click", $bind(this, this.btnClick)), this.main = null, null != this.contSprite && null != this.contSprite.parent && openfl_display_Sprite.prototype.removeChild.call(this, this.contSprite), this.contSprite = null, null != this.scrollVerLine && null != this.scrollVerLine.parent && openfl_display_Sprite.prototype.removeChild.call(this, this.scrollVerLine), this.scrollVerLine = null, null != this.scrollVerElement && null != this.scrollVerElement.parent && openfl_display_Sprite.prototype.removeChild.call(this, this.scrollVerElement), this.scrollVerElement = null, this.hp = null }, __class__: ScrollContainer }); var ShowHideAnimator = function(e, t, n) { null == n && (n = !1), null == t && (t = !0), this.isActive = !1, this.fills = [], this.hm = new openfl_geom_Matrix, this.isAnimating = !1, this.curDy = 0, this.curDx = 0, this.centerPoint = new openfl_geom_Point, this.initsMats = [], this.center = !1, this.main = Main.current, this.desk = Desk.current, this.elements = e, this.center = t; for (var i = Desk.current, l = 1e4, a = -1e4, s = 1e4, r = -1e4, _ = 0; _ < e.length; ) { var o = e[_]; if (++_, js_Boot.__instanceof(o, LevelsTextField) || -1 != o.get_name().indexOf("txt") && -1 != o.get_name().indexOf("edit")) this.initsMats.push(o.get_transform().get_matrix().clone()); else if ("fill" != o.get_name()) { var p = o.getBounds(i.levels); p.x < s && (s = p.x), p.get_right() > r && (r = p.get_right()), p.y < l && (l = p.y), p.get_bottom() > a && (a = p.get_bottom()), this.initsMats.push(o.get_transform().get_matrix().clone()) } else this.initsMats.push(null), this.fills.push(o) } this.centerPoint.x = s + (r - s) / 2, this.centerPoint.y = l + (a - l) / 2; var h = -this.get_leftLevels() + this.get_sWidthLevels() / 2 - this.centerPoint.x , d = -this.get_topLevels() + this.get_sHeightLevels() / 2 - this.centerPoint.y; if (t) for (var u = 0, c = this.initsMats; u < c.length; ) { var m = c[u]; ++u, null != m && (m.translate(h, d), e[HxOverrides.indexOf(this.initsMats, m, 0)].get_transform().set_matrix(m.clone())) } for (var U = 0, Q = this.fills; U < Q.length; ) { var N = Q[U]; ++U, N.set_x(-i.levels.get_x() * (1 / Desk.current.levels.get_scaleX()) - 1 / Desk.current.levels.get_scaleX() * 10), N.set_y(-i.levels.get_y() * (1 / Desk.current.levels.get_scaleY()) - 1 / Desk.current.levels.get_scaleY() * 10), N.set_width((Main.current.sWidth + 20) * (1 / Desk.current.levels.get_scaleX())), N.set_height((Main.current.sHeight + 20) * (1 / Desk.current.levels.get_scaleY())) } if (n) for (var F = 0; F < e.length; ) { var Z = e[F]; ++F, Z.set_visible(!1) } this.wasSWidth = this.get_sWidthLevels(), this.wasSHeight = this.get_sHeightLevels(), this.wasTopLevels = this.get_topLevels(), this.wasLeftLevels = this.get_leftLevels(), this.isActive = !n }; $hxClasses.ShowHideAnimator = ShowHideAnimator, ShowHideAnimator.__name__ = ["ShowHideAnimator"], ShowHideAnimator.prototype = { elements: null, center: null, initsMats: null, centerPoint: null, wasSWidth: null, wasSHeight: null, wasTopLevels: null, wasLeftLevels: null, curDx: null, curDy: null, isAnimating: null, hm: null, main: null, desk: null, fills: null, isActive: null, get_sWidthLevels: function() { return Main.current.sWidth / Desk.current.levels.get_scaleX() }, get_sHeightLevels: function() { return Main.current.sHeight / Desk.current.levels.get_scaleY() }, get_leftLevels: function() { return Desk.current.levels.get_x() / Desk.current.levels.get_scaleX() }, get_topLevels: function() { return Desk.current.levels.get_y() / Desk.current.levels.get_scaleY() }, animateShow: function(e, t) { this.isAnimating = !0; for (var n = null, i = 0, l = this.elements; i < l.length; ) { var a = l[i]; ++i, a.set_visible(!0), "fill" != a.get_name() && (n = motion_Actuate.update($bind(this, this.updateAnim), .2, [a, 1, 0, 1], [a, 1, 1.4, 0], !1).ease(motion_easing_Quad.get_easeInOut()), this.updateAnim(a, 2, 0)) } n.onComplete($bind(this, this.onAnimEnd), [e, t]); for (var s = 0, r = this.fills; s < r.length; ) { var _ = r[s]; ++s, _.set_alpha(.001), motion_Actuate.tween(_, .4, { alpha: 1 }).ease(motion_easing_Linear.get_easeNone()) } this.isActive = !0 }, updateAnim: function(e, t, n, i) { if (null == i && (i = 0), null == n && (n = 0), null != e) { n = Math.min(1, n); var l = e.get_transform().get_matrix(); this.hm.identity(), this.center && this.hm.translate(this.get_leftLevels() - this.get_sWidthLevels() / 2, this.get_topLevels() - this.get_sHeightLevels() / 2), this.hm.scale(t, 1), this.center && this.hm.translate(-this.get_leftLevels() + this.get_sWidthLevels() / 2, -this.get_topLevels() + this.get_sHeightLevels() / 2), l.copyFrom(this.initsMats[HxOverrides.indexOf(this.elements, e, 0)]), l.concat(this.hm), e.set_alpha(n), e.get_transform().set_matrix(l) } }, onAnimEnd: function(e, t) { this.isAnimating = !1, null != e && motion_Actuate.timer(0).onComplete(e, t) }, animateHide: function(e, t) { this.isAnimating = !0; for (var n = null, i = 0, l = this.elements; i < l.length; ) { var a = l[i]; ++i, "fill" != a.get_name() && (n = motion_Actuate.update($bind(this, this.updateAnim), .2, [a, 1, 1, 0], [a, 2, 1e-4, 1], !1).ease(motion_easing_Quad.get_easeInOut())) } n.onComplete($bind(this, this.onHideEnd), [e, t]); for (var s = 0, r = this.fills; s < r.length; ) { var _ = r[s]; ++s, motion_Actuate.tween(_, .2, { alpha: 1e-4 }).ease(motion_easing_Linear.get_easeNone()) } }, onHideEnd: function(e, t) { this.isAnimating = !1; for (var n = 0, i = this.elements; n < i.length; ) { var l = i[n]; ++n, l.set_visible(!1) } null != e && motion_Actuate.timer(0).onComplete(e, t), this.isActive = !1 }, onResize: function() { var e = this.wasLeftLevels - this.get_leftLevels() + (this.get_sWidthLevels() - this.wasSWidth) / 2 , t = this.wasTopLevels - this.get_topLevels() + (this.get_sHeightLevels() - this.wasSHeight) / 2; if (this.curDx = e, this.curDy = t, !this.isAnimating && (this.centerPoint.x += e, this.centerPoint.y += t, this.center)) { for (var n = 0, i = this.initsMats; n < i.length; ) { var l = i[n]; ++n, null != l && l.translate(e, t) } for (var a = 0, s = this.elements; a < s.length; ) { var r = s[a]; ++a, "fill" != r.get_name() && this.updateAnim(r, r.get_scaleX(), 1, 0) } } for (var _ = 0, o = this.fills; _ < o.length; ) { var p = o[_]; ++_, p.set_x(-this.desk.levels.get_x() * (1 / Desk.current.levels.get_scaleX()) - 1 / Desk.current.levels.get_scaleX() * 10), p.set_y(-this.desk.levels.get_y() * (1 / Desk.current.levels.get_scaleY()) - 1 / Desk.current.levels.get_scaleY() * 10), p.set_width((Main.current.sWidth + 20) * (1 / Desk.current.levels.get_scaleX())), p.set_height((Main.current.sHeight + 20) * (1 / Desk.current.levels.get_scaleY())) } this.wasSWidth = this.get_sWidthLevels(), this.wasSHeight = this.get_sHeightLevels(), this.wasTopLevels = this.get_topLevels(), this.wasLeftLevels = this.get_leftLevels() }, destroy: function() { motion_Actuate.stop($bind(this, this.updateAnim), null, !1, !1), this.elements = null, this.initsMats = null, this.centerPoint = null, this.hm = null, this.main = null, this.desk = null }, __class__: ShowHideAnimator, __properties__: { get_topLevels: "get_topLevels", get_leftLevels: "get_leftLevels", get_sHeightLevels: "get_sHeightLevels", get_sWidthLevels: "get_sWidthLevels" } }; var haxe_io_Bytes = function(e) { this.length = e.byteLength, this.b = new Uint8Array(e), this.b.bufferValue = e, e.hxBytes = this, e.bytes = this.b }; $hxClasses["haxe.io.Bytes"] = haxe_io_Bytes, haxe_io_Bytes.__name__ = ["haxe", "io", "Bytes"], haxe_io_Bytes.ofString = function(e) { for (var t = [], n = 0; n < e.length; ) { var i = StringTools.fastCodeAt(e, n++); 55296 <= i && i <= 56319 && (i = i - 55232 << 10 | 1023 & StringTools.fastCodeAt(e, n++)), i <= 127 ? t.push(i) : i <= 2047 ? (t.push(192 | i >> 6), t.push(128 | 63 & i)) : i <= 65535 ? (t.push(224 | i >> 12), t.push(128 | i >> 6 & 63), t.push(128 | 63 & i)) : (t.push(240 | i >> 18), t.push(128 | i >> 12 & 63), t.push(128 | i >> 6 & 63), t.push(128 | 63 & i)) } return new haxe_io_Bytes(new Uint8Array(t).buffer) } , haxe_io_Bytes.ofData = function(e) { var t = e.hxBytes; return null != t ? t : new haxe_io_Bytes(e) } , haxe_io_Bytes.prototype = { length: null, b: null, data: null, get: function(e) { return this.b[e] }, set: function(e, t) { this.b[e] = 255 & t }, blit: function(e, t, n, i) { if (e < 0 || n < 0 || i < 0 || e + i > this.length || n + i > t.length) throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds); 0 == n && i == t.b.byteLength ? this.b.set(t.b, e) : this.b.set(t.b.subarray(n, n + i), e) }, getString: function(e, t) { if (e < 0 || t < 0 || e + t > this.length) throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds); for (var n = "", i = this.b, l = String.fromCharCode, a = e, s = e + t; a < s; ) { var r = i[a++]; if (r < 128) { if (0 == r) break; n += l(r) } else if (r < 224) n += l((63 & r) << 6 | 127 & i[a++]); else if (r < 240) { n += l((31 & r) << 12 | (127 & i[a++]) << 6 | 127 & i[a++]) } else { var _ = (15 & r) << 18 | (127 & i[a++]) << 12 | (127 & i[a++]) << 6 | 127 & i[a++]; n += l(55232 + (_ >> 10)), n += l(1023 & _ | 56320) } } return n }, toString: function() { return this.getString(0, this.length) }, __class__: haxe_io_Bytes }; var openfl_utils_IDataOutput = function() {}; $hxClasses["openfl.utils.IDataOutput"] = openfl_utils_IDataOutput, openfl_utils_IDataOutput.__name__ = ["openfl", "utils", "IDataOutput"], openfl_utils_IDataOutput.prototype = { __class__: openfl_utils_IDataOutput }; var openfl_utils_IDataInput = function() {}; $hxClasses["openfl.utils.IDataInput"] = openfl_utils_IDataInput, openfl_utils_IDataInput.__name__ = ["openfl", "utils", "IDataInput"], openfl_utils_IDataInput.prototype = { __class__: openfl_utils_IDataInput }; var openfl_utils_ByteArrayData = function(e) { null == e && (e = 0); var t = new haxe_io_Bytes(new ArrayBuffer(e)); haxe_io_Bytes.call(this, t.b.buffer), this.__length = e, this.__endian = 0, this.position = 0 }; $hxClasses["openfl.utils.ByteArrayData"] = openfl_utils_ByteArrayData, openfl_utils_ByteArrayData.__name__ = ["openfl", "utils", "ByteArrayData"], openfl_utils_ByteArrayData.__interfaces__ = [openfl_utils_IDataOutput, openfl_utils_IDataInput], openfl_utils_ByteArrayData.__super__ = haxe_io_Bytes, openfl_utils_ByteArrayData.prototype = $extend(haxe_io_Bytes.prototype, { position: null, __endian: null, __length: null, __fromBytes: function(e) { this.b = e.b, this.__length = e.length, this.data = e.data, this.length = e.length }, __class__: openfl_utils_ByteArrayData }); var SpriteJson = function(e) { null == e && (e = 0), openfl_utils_ByteArrayData.call(this); var t = haxe_Resource.getBytes(SpriteJson.resourceName); this.__fromBytes(t) }; $hxClasses.SpriteJson = SpriteJson, SpriteJson.__name__ = ["SpriteJson"], SpriteJson.__super__ = openfl_utils_ByteArrayData, SpriteJson.prototype = $extend(openfl_utils_ByteArrayData.prototype, { __class__: SpriteJson }); var Sounds = function() { this.spriteSoundsNames = [], this.canPlaySound = !1, this.soundsAvailable = !0, this.muted = !1, this.playSoundsByAction = !1, this.soundAssets = new haxe_ds_StringMap, this.soundsToPlay = [], this.playingSounds = [], this.pausedSounds = [], eval("Howler.mobileAutoEnable = false;"), this.loadSounds(), Config._getIsMobileBrowser() ? (window.document.addEventListener("touchstart", $bind(this, this.bodyClick), !1), window.document.addEventListener("click", $bind(this, this.bodyClick), !1)) : this.canPlaySound = !0, "true" == LocalSaves.getVar("muted") && (this.muted = !0), Sounds.current = this }; $hxClasses.Sounds = Sounds, Sounds.__name__ = ["Sounds"], Sounds.prototype = { soundAssets: null, soundsToPlay: null, playSoundsByAction: null, playingSounds: null, pausedSounds: null, spriteMap: null, muted: null, soundsAvailable: null, canPlaySound: null, spriteSoundsNames: null, bodyClick: function(e) { if (window.document.removeEventListener("touchstart", $bind(this, this.bodyClick)), window.document.removeEventListener("click", $bind(this, this.bodyClick)), null != Main.current) try { Main.current.update(null) } catch (e) { if (e instanceof js__$Boot_HaxeError && (e = e.val), !js_Boot.__instanceof(e, openfl_errors_Error)) throw e } return !!this.canPlaySound || (this.playSound("sprite", "silence", !1), this.playSound("sprite", "silence", !0), this.canPlaySound = !0, !0) }, loadSounds: function() { var e, t, n = []; n.push(JSON.parse((new SpriteJson).toString())); for (var i = 0, l = n.length; i < l; ) { t = n[i++], e = this.getSound(t.stream, !1, !1, !1, t.sprite); var a = t.stream , s = e; this.soundAssets.set(a, s); var r = e = this.getSound(t.stream, !0, !0, !1, t.sprite); this.soundAssets.set(Std.string(t.stream) + "_loop", r) } }, hasSpriteName: function(e) { return -1 != HxOverrides.indexOf(this.spriteSoundsNames, e, 0) }, getSound: function(stream, buffer, loop, autoplay, sprite) { null == autoplay && (autoplay = !1), null == loop && (loop = !1), null == buffer && (buffer = !1), null != sprite && (this.spriteSoundsNames = this.spriteSoundsNames.concat(Reflect.fields(sprite))), buffer = !1; var spriteString = "", evalString; if (null != sprite) { var wasAnElement = !1; spriteString = ", sprite:{"; for (var spr = Reflect.fields(sprite), _g = 0; _g < spr.length; ) { var i = spr[_g]; ++_g, spriteString += (wasAnElement ? "," : "") + (null == i ? "null" : "" + i) + ":[" + Reflect.field(sprite, i)[0] + "," + Reflect.field(sprite, i)[1] + "]", wasAnElement = !0 } spriteString += "}" } this.spriteMap = sprite, evalString = "new Howl({ src: ['" + stream + ".ogg', '" + stream + ".m4a', '" + stream + ".mp3']" + spriteString + ", autoplay : " + (autoplay ? "true" : "false") + ", loop : " + (loop ? "true" : "false") + ", html5 : " + (buffer ? "true" : "false") + " }); "; var snd = eval(evalString); return snd }, playSound: function(e, t, n, i, l, a) { if (null == a && (a = "sound"), null == l && (l = !1), null == i && (i = !1), null == n && (n = !1), null == t && (t = ""), this.soundsAvailable && (!this.muted || n || "silence" == t)) { var s = this.soundAssets.get("snd/" + e + (n ? "_loop" : "")); if ("silence" != t) { if (!this.playSoundsByAction || l) { var r = s.play(t); this.playingSounds.push({ sprite: t, id: r, endTime: n ? -1 : openfl_Lib.getTimer() + Reflect.field(this.spriteMap, t)[1] + 50, sound: s }) } else i && this.soundsToPlay.push({ sound: s, sprite: t }); this.muted && (s.mute(!0), s.pause()) } else s.play(t) } }, stopSound: function(e, t) { for (var n = 0, i = openfl_Lib.getTimer(); n < this.playingSounds.length; ) if (this.playingSounds[n].sprite == t) { var l = [this.playingSounds[n].sound] , a = [this.playingSounds[n].id]; l[0].once("play", function(e, t) { return function() { t[0].stop(e[0]) } }(a, l), a[0]), this.playingSounds[n].sound.stop(this.playingSounds[n].id); var s = this.playingSounds[n]; HxOverrides.remove(this.playingSounds, s) } else if (-1 != this.playingSounds[n].endTime && i > this.playingSounds[n].endTime) { var r = this.playingSounds[n]; HxOverrides.remove(this.playingSounds, r) } else n++ }, mute: function() { if (this.soundsAvailable) { this.muted = !0, LocalSaves.setVar("muted", "true"); for (var e = 0; e < this.playingSounds.length; ) if (-1 == this.playingSounds[e].endTime) this.playingSounds[e].sound.pause(this.playingSounds[e].id), e++; else { this.playingSounds[e].sound.stop(this.playingSounds[e].id); var t = this.playingSounds[e]; HxOverrides.remove(this.playingSounds, t) } } }, unMute: function(e) { if (null == e && (e = !0), this.soundsAvailable) { this.muted = !1; for (var t = 0; t < this.playingSounds.length; ) -1 == this.playingSounds[t].endTime && this.playingSounds[t].sound.play(this.playingSounds[t].id), t++; for (var n = this.soundAssets.keys(); n.hasNext(); ) { var i = n.next(); if (-1 != i.indexOf("_loop")) this.soundAssets.get(i).mute(!1) } LocalSaves.setVar("muted", "false") } }, __class__: Sounds }; var SpinnerMode = function() { this.wasMDown = !1, this.curAvSpeed = 0, this.lastCircAng = 0, this.lmP = new openfl_geom_Point, this.mdP = new openfl_geom_Point, this.dump = .993, this.rotSpeed = 0, this.curAngle = 0, this.started = !0, SpinnerMode.current = this, this.main = Main.current, this.desk = Desk.current, this.spinnElements = this.desk.getElementsByFolderName("SpinnerParts"); var e = this.desk.getElementByNameInFolder("spinner", "SpinnerParts"); this.pPoint = new openfl_geom_Point(e.get_x(),e.get_y()), this.initMatrixes = []; for (var t = 0, n = this.spinnElements.length; t < n; ) { var i = t++; this.initMatrixes[i] = this.spinnElements[i].get_transform().get_matrix().clone() } this.onResize() }; $hxClasses.SpinnerMode = SpinnerMode, SpinnerMode.__name__ = ["SpinnerMode"], SpinnerMode.prototype = { main: null, desk: null, started: null, spinnElements: null, initMatrixes: null, pPoint: null, curAngle: null, rotSpeed: null, dump: null, mdP: null, lmP: null, lastCircAng: null, curAvSpeed: null, onResize: function() { for (var e = -this.desk.levels.get_x() / this.desk.levels.get_scaleX() + this.main.sWidth / this.desk.levels.get_scaleX() / 2 - this.pPoint.x, t = -this.desk.levels.get_y() / this.desk.levels.get_scaleY() + this.main.sHeight / this.desk.levels.get_scaleY() / 2 - this.pPoint.y, n = 0, i = this.initMatrixes; n < i.length; ) { var l = i[n]; ++n, l.translate(e, t) } this.pPoint.x = -this.desk.levels.get_x() / this.desk.levels.get_scaleX() + this.main.sWidth / this.desk.levels.get_scaleX() / 2, this.pPoint.y = -this.desk.levels.get_y() / this.desk.levels.get_scaleY() + this.main.sHeight / this.desk.levels.get_scaleY() / 2, this.updateElsAng() }, destroy: function() { this.spinnElements = null, this.initMatrixes = null, this.pPoint = null, this.mdP = null, this.lmP = null }, onMDown: function() { this.desk }, onMUp: function() {}, updateElsAng: function() { for (var e = 0, t = this.spinnElements.length; e < t; ) { var n = e++ , i = this.spinnElements[n] , l = i.get_transform().get_matrix(); l.copyFrom(this.initMatrixes[n]), l.translate(-this.pPoint.x, -this.pPoint.y), "center" != i.get_name() && l.rotate(this.curAngle), l.translate(this.pPoint.x, this.pPoint.y), i.get_transform().set_matrix(l) } }, canMouseSpin: function() { var e = this.desk.toolsArr , t = !0; if (null != e) for (var n = 0; n < e.length; ) { var i = e[n]; if (++n, this.desk.hitsMouse(i)) { t = !1; break } } return t = (null == this.desk.nextBtn || !this.desk.hitsMouse(this.desk.nextBtn)) && t }, wasMDown: null, update: function(e) { if (this.started) { if (!this.wasMDown && this.main.isMouseDown) { if (!this.canMouseSpin()) { if (0 == this.rotSpeed) return; return this.curAngle += this.rotSpeed * e, this.rotSpeed *= this.dump, void this.updateElsAng() } this.mdP.x = this.desk.levels.get_mouseX(), this.mdP.y = this.desk.levels.get_mouseY(), this.lmP.x = this.desk.levels.get_mouseX(), this.lmP.y = this.desk.levels.get_mouseY(); var t = this.pPoint.x - this.desk.levels.get_mouseX() , n = this.pPoint.y - this.desk.levels.get_mouseY(); this.lastCircAng = Math.atan2(n, t), this.curAvSpeed = 0 } if (this.main.isMouseDown || this.wasMDown) { if (!this.canMouseSpin()) { if (0 == this.rotSpeed) return; return this.curAngle += this.rotSpeed * e, this.rotSpeed *= this.dump, void this.updateElsAng() } var i = !1; this.wasMDown = this.main.isMouseDown; var l = this.pPoint.x - this.desk.levels.get_mouseX() , a = this.pPoint.y - this.desk.levels.get_mouseY() , s = Math.sqrt(l * l + a * a) , r = Math.atan2(a, l) , _ = Math.atan2(Math.sin(r - this.lastCircAng), Math.cos(r - this.lastCircAng)) , o = s * Std.int(Math.abs(_) / _) / 500 * e / 1e4; if (this.curAvSpeed += o, this.curAvSpeed /= 2, this.wasMDown ? Math.abs(this.rotSpeed) < .001 ? (this.curAngle += _, this.updateElsAng(), i = !0) : this.rotSpeed += o : this.rotSpeed += 15 * this.curAvSpeed, this.lastCircAng = r, this.lmP.x = this.desk.levels.get_mouseX(), this.lmP.y = this.desk.levels.get_mouseY(), i) return } if (0 != this.rotSpeed) { for (this.curAngle += this.rotSpeed * e, this.rotSpeed *= this.dump; this.curAngle > 2 * Math.PI; ) this.curAngle -= 2 * Math.PI; for (; this.curAngle < 2 * -Math.PI; ) this.curAngle += 2 * Math.PI; this.updateElsAng() } } }, __class__: SpinnerMode }; var StatWindow = function(e) { this.isActive = !1, this.elements = e, this.animator = new ShowHideAnimator(e,!0); for (var t, n = 0; n < e.length; ) { var i = e[n]; ++n, i.set_visible(!1), -1 != i.get_name().indexOf("player") && i.gotoAndStop(Std.parseInt(StringTools.replace(i.get_name(), "player", "")) - 1) } if (0 == (t = null == LocalSaves.getVar("scores") ? [] : LocalSaves.getVar("scores")).length) for (var l = 0; l < 100; ) { t[l++] = 0 } for (var a = 0; a < e.length; ) { var s = e[a]; ++a, -1 != s.layerName.indexOf("TextLayer") && js_Boot.__instanceof(s, LevelsTextField) && js_Boot.__cast(s, LevelsTextField).set_text(t[Std.parseInt(StringTools.replace(s.layerName, "TextLayer", "")) - 1] + "") } }; $hxClasses.StatWindow = StatWindow, StatWindow.__name__ = ["StatWindow"], StatWindow.prototype = { elements: null, animator: null, isActive: null, show: function() { this.isActive = !0, this.animator.animateShow() }, hide: function() { this.isActive = !1, this.animator.animateHide() }, onResize: function() { this.animator.onResize() }, destroy: function() { this.animator.destroy(), this.elements = null }, __class__: StatWindow }; var Std = function() {}; $hxClasses.Std = Std, Std.__name__ = ["Std"], Std.is = function(e, t) { return js_Boot.__instanceof(e, t) } , Std.string = function(e) { return js_Boot.__string_rec(e, "") } , Std.int = function(e) { return 0 | e } , Std.parseInt = function(e) { var t = parseInt(e, 10); return 0 != t || 120 != HxOverrides.cca(e, 1) && 88 != HxOverrides.cca(e, 1) || (t = parseInt(e)), isNaN(t) ? null : t } , Std.parseFloat = function(e) { return parseFloat(e) } , Std.random = function(e) { return e <= 0 ? 0 : Math.floor(Math.random() * e) } ; var StringBuf = function() { this.b = "" }; $hxClasses.StringBuf = StringBuf, StringBuf.__name__ = ["StringBuf"], StringBuf.prototype = { b: null, add: function(e) { this.b += Std.string(e) }, addSub: function(e, t, n) { this.b += null == n ? HxOverrides.substr(e, t, null) : HxOverrides.substr(e, t, n) }, __class__: StringBuf }; var StringTools = function() {}; $hxClasses.StringTools = StringTools, StringTools.__name__ = ["StringTools"], StringTools.urlEncode = function(e) { return encodeURIComponent(e) } , StringTools.startsWith = function(e, t) { return e.length >= t.length && HxOverrides.substr(e, 0, t.length) == t } , StringTools.isSpace = function(e, t) { var n = HxOverrides.cca(e, t); return n > 8 && n < 14 || 32 == n } , StringTools.ltrim = function(e) { for (var t = e.length, n = 0; n < t && StringTools.isSpace(e, n); ) n++; return n > 0 ? HxOverrides.substr(e, n, t - n) : e } , StringTools.rtrim = function(e) { for (var t = e.length, n = 0; n < t && StringTools.isSpace(e, t - n - 1); ) n++; return n > 0 ? HxOverrides.substr(e, 0, t - n) : e } , StringTools.trim = function(e) { return StringTools.ltrim(StringTools.rtrim(e)) } , StringTools.replace = function(e, t, n) { return e.split(t).join(n) } , StringTools.hex = function(e, t) { var n = ""; do { n = "0123456789ABCDEF".charAt(15 & e) + n, e >>>= 4 } while (e > 0);if (null != t) for (; n.length < t; ) n = "0" + n; return n } , StringTools.fastCodeAt = function(e, t) { return e.charCodeAt(t) } ; var TJSON = function() {}; $hxClasses.TJSON = TJSON, TJSON.__name__ = ["TJSON"], TJSON.parse = function(e, t, n) { return null == t && (t = "JSON Data"), new TJSONParser(e,t,n).doParse() } ; var TJSONParser = function(e, t, n) { null == t && (t = "JSON Data"), this.json = e, this.fileName = t, this.currentLine = 1, this.lastSymbolQuoted = !1, this.pos = 0, this.floatRegex = new EReg("^-?[0-9]*\\.[0-9]+$",""), this.intRegex = new EReg("^-?[0-9]+$",""), this.strProcessor = null == n ? $bind(this, this.defaultStringProcessor) : n, this.cache = [] }; $hxClasses.TJSONParser = TJSONParser, TJSONParser.__name__ = ["TJSONParser"], TJSONParser.prototype = { pos: null, json: null, lastSymbolQuoted: null, fileName: null, currentLine: null, cache: null, floatRegex: null, intRegex: null, strProcessor: null, doParse: function() { try { var e = this.getNextSymbol() , t = e; switch (e) { case "{": return this.doObject(); case "[": return this.doArray(); default: return this.convertSymbolToProperType(t) } } catch (e) { throw e instanceof js__$Boot_HaxeError && (e = e.val), js_Boot.__instanceof(e, String) ? new js__$Boot_HaxeError(this.fileName + " on line " + this.currentLine + ": " + e) : e } }, doObject: function() { var e, t = {}, n = "", i = !1; for (this.cache.push(t); this.pos < this.json.length; ) if ("," != (e = this.getNextSymbol()) || this.lastSymbolQuoted) { if ("}" == e && !this.lastSymbolQuoted) return i && null != t.TJ_unserialize && t.TJ_unserialize(), t; var l = this.getNextSymbol(); if (":" != l) throw new js__$Boot_HaxeError("Expected ':' but got '" + l + "' instead."); var a = this.getNextSymbol(); if ("_hxcls" != e) n = "{" != a || this.lastSymbolQuoted ? "[" != a || this.lastSymbolQuoted ? this.convertSymbolToProperType(a) : this.doArray() : this.doObject(), t[e] = n; else { if (StringTools.startsWith(a, "Date@")) { var s = Std.parseInt(HxOverrides.substr(a, 5, null)) , r = new Date; r.setTime(s), t = r } else { var _ = Type.resolveClass(a); if (null == _) throw new js__$Boot_HaxeError("Invalid class name - " + a); t = Type.createEmptyInstance(_) } this.cache.pop(), this.cache.push(t), i = !0 } } throw new js__$Boot_HaxeError("Unexpected end of file. Expected '}'") }, doArray: function() { for (var e, t = []; this.pos < this.json.length; ) if ("," != (e = this.getNextSymbol()) || this.lastSymbolQuoted) { if ("]" == e && !this.lastSymbolQuoted) return t; e = "{" != e || this.lastSymbolQuoted ? "[" != e || this.lastSymbolQuoted ? this.convertSymbolToProperType(e) : this.doArray() : this.doObject(), t.push(e) } throw new js__$Boot_HaxeError("Unexpected end of file. Expected ']'") }, convertSymbolToProperType: function(e) { if (this.lastSymbolQuoted) { if (StringTools.startsWith(e, TJSON.OBJECT_REFERENCE_PREFIX)) { var t = Std.parseInt(HxOverrides.substr(e, TJSON.OBJECT_REFERENCE_PREFIX.length, null)); return this.cache[t] } return e } return this.looksLikeFloat(e) ? parseFloat(e) : this.looksLikeInt(e) ? Std.parseInt(e) : "true" == e.toLowerCase() || "false" != e.toLowerCase() && ("null" == e.toLowerCase() ? null : e) }, looksLikeFloat: function(e) { if (this.floatRegex.match(e)) return !0; if (this.intRegex.match(e)) { if (n = this.intRegex.matched(0), 45 == HxOverrides.cca(n, 0) ? n > "-2147483648" : n > "2147483647") return !0; var t = parseFloat(e); if (t > 2147483647) return !0; if (t < -2147483648) return !0 } var n; return !1 }, looksLikeInt: function(e) { return this.intRegex.match(e) }, getNextSymbol: function() { this.lastSymbolQuoted = !1; for (var e = "", t = !1, n = "", i = "", l = !1, a = !1, s = !1, r = !1; this.pos < this.json.length; ) if ("\n" != (e = this.json.charAt(this.pos++)) || a || this.currentLine++, s) "\n" != e && "\r" != e || (s = !1, this.pos++); else if (r) "*" == e && "/" == this.json.charAt(this.pos) && (r = !1, this.pos++); else if (t) { if (l) { if (l = !1, "'" == e || '"' == e) { i += e; continue } if ("t" == e) { i += "\t"; continue } if ("n" == e) { i += "\n"; continue } if ("\\" == e) { i += "\\"; continue } if ("r" == e) { i += "\r"; continue } if ("/" == e) { i += "/"; continue } if ("u" == e) { for (var _ = 0, o = 0; o < 4; ) { var p; o++; if (this.pos >= this.json.length) throw new js__$Boot_HaxeError("Unfinished UTF8 character"); var h = this.pos++; if (_ <<= 4, (p = HxOverrides.cca(this.json, h)) >= 48 && p <= 57) _ += p - 48; else if (p >= 65 && p <= 70) _ += 10 + p - 65; else { if (!(p >= 97 && p <= 102)) throw new js__$Boot_HaxeError("Not a hex digit"); _ += 10 + p - 95 } } var d = new haxe_Utf8; d.__b += String.fromCharCode(_), i += d.__b; continue } throw new js__$Boot_HaxeError("Invalid escape sequence '\\" + e + "'") } if ("\\" == e) { l = !0; continue } if (e == n) return i; i += e } else { if ("/" == e) { var u = this.json.charAt(this.pos); if ("/" == u) { s = !0, this.pos++; continue } if ("*" == u) { r = !0, this.pos++; continue } } if (a) { if (" " == e || "\n" == e || "\r" == e || "\t" == e || "," == e || ":" == e || "}" == e || "]" == e) return this.pos--, i; i += e } else if (" " != e && "\t" != e && "\n" != e && "\r" != e) { if ("{" == e || "}" == e || "[" == e || "]" == e || "," == e || ":" == e) return e; "'" != e && '"' != e ? (a = !0, i = e) : (t = !0, n = e, this.lastSymbolQuoted = !0) } } if (t) throw new js__$Boot_HaxeError("Unexpected end of data. Expected ( " + n + " )"); return i }, defaultStringProcessor: function(e) { return e }, __class__: TJSONParser }; var TapToStartWindow = function() {}; $hxClasses.TapToStartWindow = TapToStartWindow, TapToStartWindow.__name__ = ["TapToStartWindow"], TapToStartWindow.__super__ = Menu, TapToStartWindow.prototype = $extend(Menu.prototype, { tapToStartTxt: null, filll: null, upd: function(e) { this.set_x(0), this.set_y(0), this.tapToStartTxt.set_width(Main.current.config.sWidth), null != this.filll && (this.filll.set_width(this.sWidth), this.filll.set_height(this.sHeight), this.filll.set_x(-this.get_x()), this.filll.set_y(-this.get_y())) }, close: function() { this.removeEventListener("enterFrame", $bind(this, this.upd)), null != this.main && (null != this.parent && this.parent.removeChild(this), Menu.prototype.close.call(this)) }, __class__: TapToStartWindow }); var ThreeStateBtn = function() { this.isPressed = !1 }; $hxClasses.ThreeStateBtn = ThreeStateBtn, ThreeStateBtn.__name__ = ["ThreeStateBtn"], ThreeStateBtn.__super__ = openfl_display_Sprite, ThreeStateBtn.prototype = $extend(openfl_display_Sprite.prototype, { normal: null, pressed: null, inactive: null, isPressed: null, press: function() { if (!this.isPressed && (this.isPressed = !0, null == this.inactive.parent)) { for (; this.get_numChildren() > 0; ) this.removeChildAt(0); this.addChild(this.pressed) } }, unPress: function() { if (this.isPressed && (this.isPressed = !1, null == this.inactive.parent)) { for (; this.get_numChildren() > 0; ) this.removeChildAt(0); this.addChild(this.normal) } }, destroy: function() { for (; this.get_numChildren() > 0; ) this.removeChildAt(0); this.normal = this.pressed = this.inactive = null }, __class__: ThreeStateBtn }); var ToolActions = function(e) { this.hm = new openfl_geom_Matrix, this.actions = [], this.desk = Desk.current; for (var t = new EReg("(.*)\\((.*)\\)","i"), n = 0; n < e.length; ) { var i = e[n]; ++n; var l = i.split(".") , a = l.shift() , s = l.shift(); t.match(l.shift()); var r = { seqName: a, target: s, action: [StringTools.trim(t.matched(1)), StringTools.trim(t.matched(2))], onEnd: this.getCallDataFromArr(l, "onEnd") }; this.actions.push(r) } }; $hxClasses.ToolActions = ToolActions, ToolActions.__name__ = ["ToolActions"], ToolActions.resetObjectsScale = function() { ToolActions.objectsScale = new haxe_ds_ObjectMap } , ToolActions.stopAllSounds = function() { for (; ToolActions.playingSounds.length > 0; ) { var e = ToolActions.playingSounds.pop(); Main.current.stopSpriteSound(e), Main.current.stopSpriteSound(e, !0) } } , ToolActions.prototype = { desk: null, actions: null, hm: null, start: function() { for (var e = 0, t = this.actions; e < t.length; ) { var n = t[e]; ++e, "now" == n.seqName.toLowerCase() && this.playAction(n) } }, setConfig: function(e) { if ("setnextbtnlevel" == e.action[0].toLowerCase() && (this.desk.nextBtnClickLevel = Std.parseInt(e.action[1]), null != e.onEnd && null != e.onEnd.params && this.onEnd1(e.onEnd.params)), "gotolevel" == e.action[0].toLowerCase() && (this.desk.startNewGame(Std.parseInt(e.action[1])), null != e.onEnd && null != e.onEnd.params && this.onEnd1(e.onEnd.params)), "settruefrommain" == e.action[0].toLowerCase()) { for (var t = Main.current, n = e.action[1].split(","); n.length > 1; ) t = Reflect.field(t, n.shift()); t[n[0]] = !0 } if ("call" == e.action[0].toLowerCase()) { for (var i = e.action[1].split(","), l = 0, a = i.length; l < a; ) { var s = l++; i[s] = StringTools.trim(i[s]) } Desk.current.checkSoundsStart(), this.callMethod(Reflect.field(FunctionsForLevels, i.shift()), i.length > 0 ? i : null) } var r = []; if ("makescreenshot" == e.action[0].toLowerCase()) { if ("" != e.action[1]) for (var _ = e.action[1].split(","), o = 0, p = _.length; o < p; ) { var h = o++ , d = this.desk.getElementByName(StringTools.trim(_[h])); null != d && d.get_visible() && (d.set_visible(!1), r.push(d)) } this.desk.saveScreenShot(), null != e.onEnd && null != e.onEnd.params && this.onEnd1(e.onEnd.params); for (var u = 0; u < r.length; ) { var c = r[u]; ++u, c.set_visible(!0) } } if ("track" == e.action[0].toLowerCase()) { var m = StringTools.trim(e.action[1]) , U = m.split(",")[0] , Q = 0 == U.indexOf("SCREEN_") , N = null; if (!Q) { var F = m.split(","); F.shift(), N = TJSON.parse(F.join(",")) } Q ? Game_uptapAnalytics.trackScreen(U) : Game_uptapAnalytics.trackEvent(U, N), null != e.onEnd && null != e.onEnd.params && this.onEnd1(e.onEnd.params) } }, callMethod: function(e, t) { return null == t && (t = []), Reflect.callMethod(e, e, t) }, setAssembler: function(e) { "restartlastassemblerlevel" == e.action[0].toLowerCase() && (this.desk.startNewGame(Assembler.lastAssemblerLevel), null != e.onEnd && null != e.onEnd.params && this.onEnd1(e.onEnd.params)), "startoneplayerfight" == e.action[0].toLowerCase() && (Assembler.isTwoPlayersFightMode = !1, this.desk.startNewGame(Std.parseInt(e.action[1])), null != e.onEnd && null != e.onEnd.params && this.onEnd1(e.onEnd.params)), "starttwoplayerfight" == e.action[0].toLowerCase() && (Assembler.isTwoPlayersFightMode = !0, this.desk.startNewGame(Std.parseInt(e.action[1])), null != e.onEnd && null != e.onEnd.params && this.onEnd1(e.onEnd.params)) }, playDelayAction: function(e) { if ("delay" == e.action[0].toLowerCase()) { var t = Std.parseFloat(StringTools.replace(e.action[1], ",", ".")); motion_Actuate.timer(t).onComplete($bind(this, this.onEnd1), [e.onEnd.params]) } }, playSoundAction: function(e) { for (var t = e.action[1].split(","), n = 0, i = t.length; n < i; ) { var l = n++; t[l] = StringTools.trim(t[l]) } switch (e.action[0]) { case "play": Main.current.playSpriteSound(t[0], -1 != HxOverrides.indexOf(t, "loop", 0)), ToolActions.playingSounds.push(t[0]); break; case "stop": Main.current.stopSpriteSound(t[0], -1 != HxOverrides.indexOf(t, "loop", 0)), HxOverrides.remove(ToolActions.playingSounds, t[0]); break; default: throw new js__$Boot_HaxeError(new openfl_errors_Error("Action: Incorrect sound action")) } }, getTargets: function(e) { var t = e.split(":"); return t.length > 1 && ("folder" == t[0] || "layer" == t[0]) ? "layer" == t[0] ? this.desk.getElementsByLayerName(t[1]) : "folder" == t[0] ? this.desk.getElementsByFolderName(t[1]) : null : [this.desk.getElementByName(e)] }, scale: function(e) { var t, n, i, l, a = this.getTargets(e.target), s = StringTools.trim(e.action[1]).split(","); t = null == s[0] ? 1 : Std.parseInt(s[0]) / 100, n = null == s[1] ? 0 : Std.parseInt(s[1]), i = null == s[2] ? 0 : Std.parseInt(s[2]), l = null == s[3] ? 0 : Std.parseInt(s[3]) / 1e3; for (var r = 1, _ = null, o = 0; o < a.length; ) { var p = a[o]; if (++o, null == ToolActions.objectsScale.h.__keys__[p.__id__] || ToolActions.objectsScale.h[p.__id__].scale != t) { var h; h = null != ToolActions.objectsScale.h.__keys__[p.__id__] ? ToolActions.objectsScale.h[p.__id__] : null, r = null != ToolActions.objectsScale.h.__keys__[p.__id__] ? ToolActions.objectsScale.h[p.__id__].scale : 1; var d = t; null == h ? (h = { initM: p.get_transform().get_matrix().clone(), scale: t, px: n, py: i, ix: p.get_x(), iy: p.get_y() }, ToolActions.objectsScale.set(p, h)) : (h.scale = t, h.px = n, h.py = i), _ = motion_Actuate.update($bind(this, this.updateScale), l, [p, r], [p, d], !1).ease(motion_easing_Quad.get_easeOut()) } } null != e.onEnd && null != _ ? _.onComplete($bind(this, this.onEnd1), [e.onEnd.params]) : null != e.onEnd && null == _ && this.onEnd1(e.onEnd.params) }, updateScale: function(e, t) { if (null != ToolActions.objectsScale.h.__keys__[e.__id__]) { this.hm.identity(), this.hm.translate(-ToolActions.objectsScale.h[e.__id__].px, -ToolActions.objectsScale.h[e.__id__].py), this.hm.scale(t, t), this.hm.translate(ToolActions.objectsScale.h[e.__id__].px, ToolActions.objectsScale.h[e.__id__].py); var n = e.get_transform().get_matrix(); n.copyFrom(ToolActions.objectsScale.h[e.__id__].initM), n.concat(this.hm), e.get_transform().set_matrix(n) } }, move: function(e) { var t, n, i, l = this.getTargets(e.target), a = StringTools.trim(e.action[1]).split(","); t = null == a[0] ? 0 : Std.parseInt(a[0]), n = null == a[1] ? 0 : Std.parseInt(a[1]), i = null == a[2] ? 0 : Std.parseInt(a[2]) / 1e3; for (var s = null, r = 0; r < l.length; ) { var _, o = l[r]; ++r, null == (_ = null != ToolActions.objectsScale.h.__keys__[o.__id__] ? ToolActions.objectsScale.h[o.__id__] : null) && (_ = { initM: o.get_transform().get_matrix().clone(), scale: 1, px: 0, py: 0, ix: o.get_x(), iy: o.get_y() }, ToolActions.objectsScale.set(o, _)), s = motion_Actuate.tween(o, i, { x: _.ix + t, y: _.iy + n }, !1).ease(motion_easing_Quad.get_easeOut()) } null != e.onEnd && null != s ? s.onComplete($bind(this, this.onEnd1), [e.onEnd.params]) : null != e.onEnd && null == s && this.onEnd1(e.onEnd.params) }, playScore: function(e) { switch (e.action[0]) { case "count": var t, n, i, l = 5e3 + Std.random(4999), a = l - 1e3 - Std.random(3e3); n = 1 == (t = Math.random() > .5 ? 1 : 2) ? l : a, i = 2 == t ? l : a, Desk.current.lastWinner = t; var s, r = Desk.current.levelsTextFields[1], _ = Desk.current.levelsTextFields[2]; s = null != e.action[1] && "" != e.action[1] ? Std.parseInt(e.action[1]) / 1e3 : 1; var o = function(e, t) { e.set_text(Math.ceil(t) + "") }; motion_Actuate.update(o, s, [r, 0], [r, n], !1).ease(motion_easing_Linear.get_easeNone()), motion_Actuate.update(o, s, [_, 0], [_, i], !1).ease(motion_easing_Linear.get_easeNone()).onComplete($bind(this, this.onEndScoreCount), [e, t]); break; default: throw new js__$Boot_HaxeError(new openfl_errors_Error("Action: Incorrect score action")) } }, onEndScoreCount: function(e, t) { null != e.onEnd && this.onEnd1(e.onEnd.params), this.callActionByName(1 == t ? "onWinner1" : "onWinner2") }, playAction: function(e) { var t = this; if ("delay" != e.target) if ("sound" != e.target) if ("score" != e.target) if ("config" != e.target) if ("assemblerConfig" != e.target) if ("rewardedVideo" != e.target) if ("scale" != e.action[0]) if ("move" != e.action[0]) { var n, i = this.getTargets(e.target); if (n = null == e.onEnd ? null : function(n) { t.onEnd(n, e.onEnd.params) } , !(null != i && i.length > 0)) throw new js__$Boot_HaxeError(new openfl_errors_Error("Action: Target mc with name:'" + e.target + "' not found on scene")); switch (e.action[0]) { case "play": if (null != n) for (var l = 0, a = i.length; l < a; ) { var s = l++; i[s].playWithCallBack(0 == s ? n : null) } else for (var r = 0; r < i.length; ) { var _ = i[r]; ++r, _.play() } break; case "stop": for (var o = 0; o < i.length; ) { var p = i[o]; ++o, p.stop() } null != n && n(i[0]); break; case "restartCurLabel": for (var h = 0; h < i.length; ) { var d = i[h]; if (++h, "" != d.curLabel) { var u = [d.curLabel]; if ("full" == e.action[1].toLowerCase()) { var c = u[0].split("_"); if (c.length > 1 && Std.parseInt(c[c.length - 1]) > 0) { var m = Std.parseInt(c.pop()) - 1 , U = c.join("_") + "_" + m; if (d.hasLabel(U)) { var Q = function(e, t) { return function(n) { n.playLabel(t[0], e[0]) } }([d.playCallback], u); d.playLabel(U, Q) } else d.curLabel = "", d.playLabel(u[0], d.playCallback) } } else d.curLabel = "", d.playLabel(u[0], d.playCallback) } } null != n && n(i[0]); break; case "gotoAndPlay": if (Std.parseInt(e.action[1]) + "" == e.action[1]) for (var N = 0, F = i.length; N < F; ) { var Z = N++; i[Z].gotoAndPlay(Std.parseInt(e.action[1]), 0 == Z ? n : null) } else for (var f = 0, S = i.length; f < S; ) { var g = f++; i[g].playLabel(e.action[1], 0 == g ? n : null) } break; case "gotoAndPlayIfNot": if (Std.parseInt(e.action[1]) + "" == e.action[1]) for (var B = 0, b = i.length; B < b; ) { var v = B++; i[v].gotoAndPlay(Std.parseInt(e.action[1]), 0 == v ? n : null) } else { for (var W = !1, T = 0, V = i.length; T < V; ) { var R = T++; i[R].curLabel != e.action[1] && (i[R].playLabel(e.action[1], W ? null : n), W = !0) } W || null == n || n(i[0]) } break; case "gotoAndStop": if (Std.parseInt(e.action[1]) + "" == e.action[1]) for (var y = 0; y < i.length; ) { var D = i[y]; ++y, D.gotoAndStop(Std.parseInt(e.action[1])) } else for (var x = 0; x < i.length; ) { var J = i[x]; ++x, J.gotoAndStopLabel(e.action[1]) } null != n && n(i[0]); break; case "hide": for (var z = 0; z < i.length; ) { var k = i[z]; ++z, k.set_visible(!1) } null != n && n(i[0]); break; case "show": for (var E = 0; E < i.length; ) { var P = i[E]; ++E, P.set_visible(!0) } null != n && n(i[0]); break; default: throw new js__$Boot_HaxeError(new openfl_errors_Error("Action: Unknow action:'" + e.action[0] + "' on target:'" + e.target + "'")) } } else this.move(e); else this.scale(e); else "showOnce" == e.action[0] ? -1 == HxOverrides.indexOf(ToolActions.onceIDS, e.action[1], 0) && (console.log("RewVid"), ToolActions.onceIDS.push(e.action[1])) : "show" == e.action[0] && console.log("RewVid"); else this.setAssembler(e); else this.setConfig(e); else this.playScore(e); else this.playSoundAction(e); else this.playDelayAction(e) }, onEnd1: function(e) { this.onEnd(null, e) }, onEnd: function(e, t) { for (var n = 0; n < t.length; ) { var i = t[n]; switch (++n, i) { case "activate": this.desk.activateCurrentTool(); break; case "nextTool": this.desk.nextTool(); break; case "unblockTool": this.desk.isBlockedAction = !1; break; case "hideLastMask": this.desk.hideLastMask(); break; default: this.callActionByName(i) } } }, callActionByName: function(e) { for (var t = 0, n = this.actions; t < n.length; ) { var i = n[t]; ++t, i.seqName == e && (this.playAction(i), !0) } }, getCallDataFromArr: function(e, t) { for (var n = new EReg(t + "[\\s]*\\((.*)\\)","i"), i = 0; i < e.length; ) { var l = e[i]; if (++i, n.match(l)) { for (var a = n.matched(1).split(","), s = [], r = 0; r < a.length; ) { var _ = a[r]; ++r, s.push(StringTools.trim(_)) } return { method: t, params: s } } } return null }, __class__: ToolActions }; var ValueType = $hxClasses.ValueType = { __ename__: ["ValueType"], __constructs__: ["TNull", "TInt", "TFloat", "TBool", "TObject", "TFunction", "TClass", "TEnum", "TUnknown"] }; ValueType.TNull = ["TNull", 0], ValueType.TNull.toString = $estr, ValueType.TNull.__enum__ = ValueType, ValueType.TInt = ["TInt", 1], ValueType.TInt.toString = $estr, ValueType.TInt.__enum__ = ValueType, ValueType.TFloat = ["TFloat", 2], ValueType.TFloat.toString = $estr, ValueType.TFloat.__enum__ = ValueType, ValueType.TBool = ["TBool", 3], ValueType.TBool.toString = $estr, ValueType.TBool.__enum__ = ValueType, ValueType.TObject = ["TObject", 4], ValueType.TObject.toString = $estr, ValueType.TObject.__enum__ = ValueType, ValueType.TFunction = ["TFunction", 5], ValueType.TFunction.toString = $estr, ValueType.TFunction.__enum__ = ValueType, ValueType.TClass = function(e) { var t = ["TClass", 6, e]; return t.__enum__ = ValueType, t.toString = $estr, t } , ValueType.TEnum = function(e) { var t = ["TEnum", 7, e]; return t.__enum__ = ValueType, t.toString = $estr, t } , ValueType.TUnknown = ["TUnknown", 8], ValueType.TUnknown.toString = $estr, ValueType.TUnknown.__enum__ = ValueType; var Type = function() {}; $hxClasses.Type = Type, Type.__name__ = ["Type"], Type.getClassName = function(e) { var t = e.__name__; return null == t ? null : t.join(".") } , Type.getEnumName = function(e) { return e.__ename__.join(".") } , Type.resolveClass = function(e) { var t = $hxClasses[e]; return null != t && t.__name__ ? t : null } , Type.resolveEnum = function(e) { var t = $hxClasses[e]; return null != t && t.__ename__ ? t : null } , Type.createInstance = function(e, t) { switch (t.length) { case 0: return new e; case 1: return new e(t[0]); case 2: return new e(t[0],t[1]); case 3: return new e(t[0],t[1],t[2]); case 4: return new e(t[0],t[1],t[2],t[3]); case 5: return new e(t[0],t[1],t[2],t[3],t[4]); case 6: return new e(t[0],t[1],t[2],t[3],t[4],t[5]); case 7: return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6]); case 8: return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7]); default: throw new js__$Boot_HaxeError("Too many arguments") } return null } , Type.createEmptyInstance = function(e) { function t() {} return t.prototype = e.prototype, new t } , Type.createEnum = function(e, t, n) { var i = Reflect.field(e, t); if (null == i) throw new js__$Boot_HaxeError("No such constructor " + t); if (Reflect.isFunction(i)) { if (null == n) throw new js__$Boot_HaxeError("Constructor " + t + " need parameters"); return Reflect.callMethod(e, i, n) } if (null != n && 0 != n.length) throw new js__$Boot_HaxeError("Constructor " + t + " does not need parameters"); return i } , Type.getInstanceFields = function(e) { var t = []; for (var n in e.prototype) t.push(n); return HxOverrides.remove(t, "__class__"), HxOverrides.remove(t, "__properties__"), t } , Type.getEnumConstructs = function(e) { return e.__constructs__.slice() } , Type.typeof = function(e) { switch (typeof e) { case "boolean": return ValueType.TBool; case "string": return ValueType.TClass(String); case "number": return Math.ceil(e) == e % 2147483648 ? ValueType.TInt : ValueType.TFloat; case "object": if (null == e) return ValueType.TNull; var t = e.__enum__; if (null != t) return ValueType.TEnum(t); var n = js_Boot.getClass(e); return null != n ? ValueType.TClass(n) : ValueType.TObject; case "function": return e.__name__ || e.__ename__ ? ValueType.TObject : ValueType.TFunction; case "undefined": return ValueType.TNull; default: return ValueType.TUnknown } } ; var Xml = function(e) { this.nodeType = e, this.children = [], this.attributeMap = new haxe_ds_StringMap }; $hxClasses.Xml = Xml, Xml.__name__ = ["Xml"], Xml.parse = function(e) { return haxe_xml_Parser.parse(e) } , Xml.createElement = function(e) { var t = new Xml(Xml.Element); if (t.nodeType != Xml.Element) throw new js__$Boot_HaxeError("Bad node type, expected Element but found " + t.nodeType); return t.nodeName = e, t } , Xml.createPCData = function(e) { var t = new Xml(Xml.PCData); if (t.nodeType == Xml.Document || t.nodeType == Xml.Element) throw new js__$Boot_HaxeError("Bad node type, unexpected " + t.nodeType); return t.nodeValue = e, t } , Xml.createCData = function(e) { var t = new Xml(Xml.CData); if (t.nodeType == Xml.Document || t.nodeType == Xml.Element) throw new js__$Boot_HaxeError("Bad node type, unexpected " + t.nodeType); return t.nodeValue = e, t } , Xml.createComment = function(e) { var t = new Xml(Xml.Comment); if (t.nodeType == Xml.Document || t.nodeType == Xml.Element) throw new js__$Boot_HaxeError("Bad node type, unexpected " + t.nodeType); return t.nodeValue = e, t } , Xml.createDocType = function(e) { var t = new Xml(Xml.DocType); if (t.nodeType == Xml.Document || t.nodeType == Xml.Element) throw new js__$Boot_HaxeError("Bad node type, unexpected " + t.nodeType); return t.nodeValue = e, t } , Xml.createProcessingInstruction = function(e) { var t = new Xml(Xml.ProcessingInstruction); if (t.nodeType == Xml.Document || t.nodeType == Xml.Element) throw new js__$Boot_HaxeError("Bad node type, unexpected " + t.nodeType); return t.nodeValue = e, t } , Xml.createDocument = function() { return new Xml(Xml.Document) } , Xml.prototype = { nodeType: null, nodeName: null, nodeValue: null, parent: null, children: null, attributeMap: null, get: function(e) { if (this.nodeType != Xml.Element) throw new js__$Boot_HaxeError("Bad node type, expected Element but found " + this.nodeType); return this.attributeMap.get(e) }, set: function(e, t) { if (this.nodeType != Xml.Element) throw new js__$Boot_HaxeError("Bad node type, expected Element but found " + this.nodeType); this.attributeMap.set(e, t) }, exists: function(e) { if (this.nodeType != Xml.Element) throw new js__$Boot_HaxeError("Bad node type, expected Element but found " + this.nodeType); return this.attributeMap.exists(e) }, elementsNamed: function(e) { if (this.nodeType != Xml.Document && this.nodeType != Xml.Element) throw new js__$Boot_HaxeError("Bad node type, expected Element or Document but found " + this.nodeType); for (var t, n = [], i = 0, l = this.children; i < l.length; ) { var a = l[i]; ++i, a.nodeType == Xml.Element && function(e) { if (a.nodeType != Xml.Element) throw new js__$Boot_HaxeError("Bad node type, expected Element but found " + a.nodeType); return a.nodeName }() == e && n.push(a) } return t = n, HxOverrides.iter(t) }, firstElement: function() { if (this.nodeType != Xml.Document && this.nodeType != Xml.Element) throw new js__$Boot_HaxeError("Bad node type, expected Element or Document but found " + this.nodeType); for (var e = 0, t = this.children; e < t.length; ) { var n = t[e]; if (++e, n.nodeType == Xml.Element) return n } return null }, addChild: function(e) { if (this.nodeType != Xml.Document && this.nodeType != Xml.Element) throw new js__$Boot_HaxeError("Bad node type, expected Element or Document but found " + this.nodeType); null != e.parent && e.parent.removeChild(e), this.children.push(e), e.parent = this }, removeChild: function(e) { if (this.nodeType != Xml.Document && this.nodeType != Xml.Element) throw new js__$Boot_HaxeError("Bad node type, expected Element or Document but found " + this.nodeType); return !!HxOverrides.remove(this.children, e) && (e.parent = null, !0) }, __class__: Xml }; var firework_Firework = function(e, t, n) { this.destroied = !1, this.stars = [], this.starsNum = 30, this.rotVelocityMax = 20, this.layer = e, this.AddStars(t, n), Main.current.playSpriteSound("FireworkSound") }; $hxClasses["firework.Firework"] = firework_Firework, firework_Firework.__name__ = ["firework", "Firework"], firework_Firework.prototype = { rotVelocityMax: null, starsNum: null, stars: null, destroied: null, layer: null, on_enter_frame: function() { this.MoveFirework() }, MoveFirework: function() { for (var e = this.stars.length - 1; e >= 0; ) { var t = this.stars[e]; t.RunFirework(), t.lifeCounter <= 0 ? (HxOverrides.remove(this.stars, t), null != t.parent && t.parent.removeChild(t), e -= 2) : e-- } 0 == this.stars.length && this.Destroy() }, AddStars: function(e, t) { for (var n = 360 / this.starsNum, i = 0, l = Math.round(this.starsNum), a = 0; a < l; ) { a++; var s = firework_Firework.X_VELOCITY / 4 + Math.random() * firework_Firework.X_VELOCITY * 3 / 4 , r = firework_Firework.Y_VELOCITY / 4 + Math.random() * firework_Firework.Y_VELOCITY * 3 / 4 , _ = this.rotVelocityMax / 2 - Math.random() * this.rotVelocityMax , o = new firework_Star; o.xVelocity = Math.sin(i * Math.PI / 180) * s * 3, o.yVelocity = Math.cos(i * Math.PI / 180) * r * 3, o.rotVelocity = 3 * _, o.lifeCounter = o.lifeCounter / 2 + Math.random() * o.lifeCounter / 2, o.set_x(e), o.set_y(t), o.RunFirework(), o.set_scaleX(o.set_scaleY(.7 + .3 * Math.random())), this.stars.push(o), this.layer.addChild(o), i += n } }, Destroy: function() { if (!this.destroied) { for (this.destroied = !0; this.stars.length > 0; ) { var e = this.stars.pop(); null != e && null != e.parent && e.parent.removeChild(e) } this.stars = [] } }, update: function() { this.on_enter_frame() }, __class__: firework_Firework }; var firework_Star = function() { this.lifeCounter = 21, this.rotVelocity = 4.761904761904762, this.gravity = .47619047619047616, this.yVelocity = .47619047619047616, this.xVelocity = .47619047619047616, openfl_display_Sprite.call(this), this.bmBatch = new BitmapBatch(Main.current.batch,"firework" + (1 + Math.floor(6 * Math.random()))), this.bmBatch.set_x(-this.bmBatch.get_width() / 2), this.bmBatch.set_y(-this.bmBatch.get_height() / 2), this.addChild(this.bmBatch) }; $hxClasses["firework.Star"] = firework_Star, firework_Star.__name__ = ["firework", "Star"], firework_Star.__super__ = openfl_display_Sprite, firework_Star.prototype = $extend(openfl_display_Sprite.prototype, { xVelocity: null, yVelocity: null, gravity: null, rotVelocity: null, lifeCounter: null, bmBatch: null, RunFirework: function() { this.lifeCounter--, this.yVelocity <= .2 && (this.yVelocity += this.gravity), this.xVelocity = this.xVelocity / 1.4, this.yVelocity = this.yVelocity / 1.4, this.set_x(this.get_x() + this.xVelocity), this.set_y(this.get_y() + this.yVelocity), this.set_rotation(this.get_rotation() + this.rotVelocity) }, __class__: firework_Star }); var haxe_IMap = function() {}; $hxClasses["haxe.IMap"] = haxe_IMap, haxe_IMap.__name__ = ["haxe", "IMap"]; var haxe__$Int64__$_$_$Int64 = function(e, t) { this.high = e, this.low = t }; $hxClasses["haxe._Int64.___Int64"] = haxe__$Int64__$_$_$Int64, haxe__$Int64__$_$_$Int64.__name__ = ["haxe", "_Int64", "___Int64"], haxe__$Int64__$_$_$Int64.prototype = { high: null, low: null, __class__: haxe__$Int64__$_$_$Int64 }; var haxe_Resource = function() {}; $hxClasses["haxe.Resource"] = haxe_Resource, haxe_Resource.__name__ = ["haxe", "Resource"], haxe_Resource.getString = function(e) { for (var t = 0, n = haxe_Resource.content; t < n.length; ) { var i = n[t]; if (++t, i.name == e) return null != i.str ? i.str : haxe_crypto_Base64.decode(i.data).toString() } return null } , haxe_Resource.getBytes = function(e) { for (var t = 0, n = haxe_Resource.content; t < n.length; ) { var i = n[t]; if (++t, i.name == e) return null != i.str ? haxe_io_Bytes.ofString(i.str) : haxe_crypto_Base64.decode(i.data) } return null } ; var haxe_Serializer = function() { this.buf = new StringBuf, this.cache = [], this.useCache = haxe_Serializer.USE_CACHE, this.useEnumIndex = haxe_Serializer.USE_ENUM_INDEX, this.shash = new haxe_ds_StringMap, this.scount = 0 }; $hxClasses["haxe.Serializer"] = haxe_Serializer, haxe_Serializer.__name__ = ["haxe", "Serializer"], haxe_Serializer.run = function(e) { var t = new haxe_Serializer; return t.serialize(e), t.toString() } , haxe_Serializer.prototype = { buf: null, cache: null, shash: null, scount: null, useCache: null, useEnumIndex: null, toString: function() { return this.buf.b }, serializeString: function(e) { var t = this.shash.get(e); if (null != t) return this.buf.b += "R", void (this.buf.b += null == t ? "null" : "" + t); this.shash.set(e, this.scount++), this.buf.b += "y", null == (e = encodeURIComponent(e)).length ? this.buf.b += "null" : this.buf.b += "" + e.length, this.buf.b += ":", this.buf.b += null == e ? "null" : "" + e }, serializeRef: function(e) { for (var t = typeof e, n = 0, i = this.cache.length; n < i; ) { var l = n++ , a = this.cache[l]; if (typeof a == t && a == e) return this.buf.b += "r", this.buf.b += null == l ? "null" : "" + l, !0 } return this.cache.push(e), !1 }, serializeFields: function(e) { for (var t = 0, n = Reflect.fields(e); t < n.length; ) { var i = n[t]; ++t, this.serializeString(i), this.serialize(Reflect.field(e, i)) } this.buf.b += "g" }, serialize: function(e) { var t = Type.typeof(e); switch (t[1]) { case 0: this.buf.b += "n"; break; case 1: var n = e; if (0 == n) return void (this.buf.b += "z"); this.buf.b += "i", this.buf.b += null == n ? "null" : "" + n; break; case 2: var i = e; isNaN(i) ? this.buf.b += "k" : isFinite(i) ? (this.buf.b += "d", this.buf.b += null == i ? "null" : "" + i) : this.buf.b += i < 0 ? "m" : "p"; break; case 3: this.buf.b += e ? "t" : "f"; break; case 6: var l = t[2]; if (l == String) return void this.serializeString(e); if (this.useCache && this.serializeRef(e)) return; switch (l) { case Array: var a = 0; this.buf.b += "a"; for (var s = e.length, r = 0; r < s; ) { var _ = r++; null == e[_] ? a++ : (a > 0 && (1 == a ? this.buf.b += "n" : (this.buf.b += "u", this.buf.b += null == a ? "null" : "" + a), a = 0), this.serialize(e[_])) } a > 0 && (1 == a ? this.buf.b += "n" : (this.buf.b += "u", this.buf.b += null == a ? "null" : "" + a)), this.buf.b += "h"; break; case List: this.buf.b += "l"; for (var o = e.h, p = null; null != o; ) { var h; p = o[0], o = o[1], h = p, this.serialize(h) } this.buf.b += "h"; break; case Date: var d = e; this.buf.b += "v", this.buf.add(d.getTime()); break; case haxe_ds_StringMap: this.buf.b += "b"; for (var u = e, c = u.keys(); c.hasNext(); ) { var m = c.next(); this.serializeString(m), this.serialize(null != __map_reserved[m] ? u.getReserved(m) : u.h[m]) } this.buf.b += "h"; break; case haxe_ds_IntMap: this.buf.b += "q"; for (var U = e, Q = U.keys(); Q.hasNext(); ) { var N = Q.next(); this.buf.b += ":", this.buf.b += null == N ? "null" : "" + N, this.serialize(U.h[N]) } this.buf.b += "h"; break; case haxe_ds_ObjectMap: this.buf.b += "M"; for (var F = e, Z = F.keys(); Z.hasNext(); ) { var f = Z.next() , S = Reflect.field(f, "__id__"); Reflect.deleteField(f, "__id__"), this.serialize(f), f.__id__ = S, this.serialize(F.h[f.__id__]) } this.buf.b += "h"; break; case haxe_io_Bytes: for (var g = e, B = 0, b = g.length - 2, v = new StringBuf, W = haxe_Serializer.BASE64; B < b; ) { var T = g.get(B++) , V = g.get(B++) , R = g.get(B++); v.add(W.charAt(T >> 2)), v.add(W.charAt(63 & (T << 4 | V >> 4))), v.add(W.charAt(63 & (V << 2 | R >> 6))), v.add(W.charAt(63 & R)) } if (B == b) { var y = g.get(B++) , D = g.get(B++); v.add(W.charAt(y >> 2)), v.add(W.charAt(63 & (y << 4 | D >> 4))), v.add(W.charAt(D << 2 & 63)) } else if (B == b + 1) { var x = g.get(B++); v.add(W.charAt(x >> 2)), v.add(W.charAt(x << 4 & 63)) } var J = v.b; this.buf.b += "s", null == J.length ? this.buf.b += "null" : this.buf.b += "" + J.length, this.buf.b += ":", this.buf.b += null == J ? "null" : "" + J; break; default: this.useCache && this.cache.pop(), null != e.hxSerialize ? (this.buf.b += "C", this.serializeString(Type.getClassName(l)), this.useCache && this.cache.push(e), e.hxSerialize(this), this.buf.b += "g") : (this.buf.b += "c", this.serializeString(Type.getClassName(l)), this.useCache && this.cache.push(e), this.serializeFields(e)) } break; case 4: if (js_Boot.__instanceof(e, Class)) { var z = Type.getClassName(e); this.buf.b += "A", this.serializeString(z) } else if (js_Boot.__instanceof(e, Enum)) this.buf.b += "B", this.serializeString(Type.getEnumName(e)); else { if (this.useCache && this.serializeRef(e)) return; this.buf.b += "o", this.serializeFields(e) } break; case 7: var k = t[2]; if (this.useCache) { if (this.serializeRef(e)) return; this.cache.pop() } this.useEnumIndex ? this.buf.b += "j" : this.buf.b += "w", this.serializeString(Type.getEnumName(k)), this.useEnumIndex ? (this.buf.b += ":", this.buf.b += Std.string(e[1])) : this.serializeString(e[0]), this.buf.b += ":"; var E = e.length; this.buf.b += Std.string(E - 2); for (var P = 2; P < E; ) { var M = P++; this.serialize(e[M]) } this.useCache && this.cache.push(e); break; case 5: throw new js__$Boot_HaxeError("Cannot serialize function"); default: throw new js__$Boot_HaxeError("Cannot serialize " + Std.string(e)) } }, __class__: haxe_Serializer }; var haxe_Timer = function(e) { var t = this; this.id = setInterval(function() { t.run() }, e) }; $hxClasses["haxe.Timer"] = haxe_Timer, haxe_Timer.__name__ = ["haxe", "Timer"], haxe_Timer.delay = function(e, t) { var n = new haxe_Timer(t); return n.run = function() { n.stop(), e() } , n } , haxe_Timer.prototype = { id: null, stop: function() { null != this.id && (clearInterval(this.id), this.id = null) }, run: function() {}, __class__: haxe_Timer }; var haxe_Unserializer = function(e) { this.buf = e, this.length = e.length, this.pos = 0, this.scache = [], this.cache = []; var t = haxe_Unserializer.DEFAULT_RESOLVER; null == t && (t = Type, haxe_Unserializer.DEFAULT_RESOLVER = t), this.setResolver(t) }; $hxClasses["haxe.Unserializer"] = haxe_Unserializer, haxe_Unserializer.__name__ = ["haxe", "Unserializer"], haxe_Unserializer.initCodes = function() { for (var e = [], t = 0, n = haxe_Unserializer.BASE64.length; t < n; ) { var i = t++; e[haxe_Unserializer.BASE64.charCodeAt(i)] = i } return e } , haxe_Unserializer.run = function(e) { return new haxe_Unserializer(e).unserialize() } , haxe_Unserializer.prototype = { buf: null, pos: null, length: null, cache: null, scache: null, resolver: null, setResolver: function(e) { this.resolver = null == e ? { resolveClass: function(e) { return null }, resolveEnum: function(e) { return null } } : e }, get: function(e) { return this.buf.charCodeAt(e) }, readDigits: function() { for (var e = 0, t = !1, n = this.pos; ; ) { var i = this.buf.charCodeAt(this.pos); if (i != i) break; if (45 != i) { if (i < 48 || i > 57) break; e = 10 * e + (i - 48), this.pos++ } else { if (this.pos != n) break; t = !0, this.pos++ } } return t && (e *= -1), e }, readFloat: function() { for (var e = this.pos; ; ) { var t = this.buf.charCodeAt(this.pos); if (!(t >= 43 && t < 58 || 101 == t || 69 == t)) break; this.pos++ } return Std.parseFloat(HxOverrides.substr(this.buf, e, this.pos - e)) }, unserializeObject: function(e) { for (; ; ) { if (this.pos >= this.length) throw new js__$Boot_HaxeError("Invalid object"); if (103 == this.buf.charCodeAt(this.pos)) break; var t = this.unserialize(); if ("string" != typeof t) throw new js__$Boot_HaxeError("Invalid object key"); var n = this.unserialize(); e[t] = n } this.pos++ }, unserializeEnum: function(e, t) { if (58 != this.get(this.pos++)) throw new js__$Boot_HaxeError("Invalid enum format"); var n = this.readDigits(); if (0 == n) return Type.createEnum(e, t); for (var i = []; n-- > 0; ) i.push(this.unserialize()); return Type.createEnum(e, t, i) }, unserialize: function() { switch (this.get(this.pos++)) { case 110: return null; case 116: return !0; case 102: return !1; case 122: return 0; case 105: return this.readDigits(); case 100: return this.readFloat(); case 121: var e = this.readDigits(); if (58 != this.get(this.pos++) || this.length - this.pos < e) throw new js__$Boot_HaxeError("Invalid string length"); var t = HxOverrides.substr(this.buf, this.pos, e); return this.pos += e, t = decodeURIComponent(t.split("+").join(" ")), this.scache.push(t), t; case 107: return NaN; case 109: return -1 / 0; case 112: return 1 / 0; case 97: this.buf; var n = []; for (this.cache.push(n); ; ) { var i = this.buf.charCodeAt(this.pos); if (104 == i) { this.pos++; break } if (117 == i) { this.pos++; var l = this.readDigits(); n[n.length + l - 1] = null } else n.push(this.unserialize()) } return n; case 111: var a = {}; return this.cache.push(a), this.unserializeObject(a), a; case 114: var s = this.readDigits(); if (s < 0 || s >= this.cache.length) throw new js__$Boot_HaxeError("Invalid reference"); return this.cache[s]; case 82: var r = this.readDigits(); if (r < 0 || r >= this.scache.length) throw new js__$Boot_HaxeError("Invalid string reference"); return this.scache[r]; case 120: throw new js__$Boot_HaxeError(this.unserialize()); case 99: var _ = this.unserialize() , o = this.resolver.resolveClass(_); if (null == o) throw new js__$Boot_HaxeError("Class not found " + _); var p = Type.createEmptyInstance(o); return this.cache.push(p), this.unserializeObject(p), p; case 119: var h = this.unserialize() , d = this.resolver.resolveEnum(h); if (null == d) throw new js__$Boot_HaxeError("Enum not found " + h); var u = this.unserializeEnum(d, this.unserialize()); return this.cache.push(u), u; case 106: var c = this.unserialize() , m = this.resolver.resolveEnum(c); if (null == m) throw new js__$Boot_HaxeError("Enum not found " + c); this.pos++; var U = this.readDigits() , Q = Type.getEnumConstructs(m)[U]; if (null == Q) throw new js__$Boot_HaxeError("Unknown enum index " + c + "@" + U); var N = this.unserializeEnum(m, Q); return this.cache.push(N), N; case 108: var F = new List; this.cache.push(F); for (this.buf; 104 != this.buf.charCodeAt(this.pos); ) F.add(this.unserialize()); return this.pos++, F; case 98: var Z = new haxe_ds_StringMap; this.cache.push(Z); for (this.buf; 104 != this.buf.charCodeAt(this.pos); ) { var f = this.unserialize(); Z.set(f, this.unserialize()) } return this.pos++, Z; case 113: var S = new haxe_ds_IntMap; this.cache.push(S); this.buf; for (var g = this.get(this.pos++); 58 == g; ) { var B = this.readDigits(); S.set(B, this.unserialize()), g = this.get(this.pos++) } if (104 != g) throw new js__$Boot_HaxeError("Invalid IntMap format"); return S; case 77: var b = new haxe_ds_ObjectMap; this.cache.push(b); for (this.buf; 104 != this.buf.charCodeAt(this.pos); ) { var v = this.unserialize(); b.set(v, this.unserialize()) } return this.pos++, b; case 118: var W; if (this.buf.charCodeAt(this.pos) >= 48 && this.buf.charCodeAt(this.pos) <= 57 && this.buf.charCodeAt(this.pos + 1) >= 48 && this.buf.charCodeAt(this.pos + 1) <= 57 && this.buf.charCodeAt(this.pos + 2) >= 48 && this.buf.charCodeAt(this.pos + 2) <= 57 && this.buf.charCodeAt(this.pos + 3) >= 48 && this.buf.charCodeAt(this.pos + 3) <= 57 && 45 == this.buf.charCodeAt(this.pos + 4)) { var T = HxOverrides.substr(this.buf, this.pos, 19); W = HxOverrides.strDate(T), this.pos += 19 } else { var V = this.readFloat() , R = new Date; R.setTime(V), W = R } return this.cache.push(W), W; case 115: var y = this.readDigits() , D = this.buf; if (58 != this.get(this.pos++) || this.length - this.pos < y) throw new js__$Boot_HaxeError("Invalid bytes length"); var x = haxe_Unserializer.CODES; null == x && (x = haxe_Unserializer.initCodes(), haxe_Unserializer.CODES = x); for (var J = this.pos, z = 3 & y, k = J + (y - z), E = new haxe_io_Bytes(new ArrayBuffer(3 * (y >> 2) + (z >= 2 ? z - 1 : 0))), P = 0; J < k; ) { var M = x[StringTools.fastCodeAt(D, J++)] , w = x[StringTools.fastCodeAt(D, J++)]; E.set(P++, M << 2 | w >> 4); var $ = x[StringTools.fastCodeAt(D, J++)]; E.set(P++, w << 4 | $ >> 2); var C = x[StringTools.fastCodeAt(D, J++)]; E.set(P++, $ << 6 | C) } if (z >= 2) { var G = x[StringTools.fastCodeAt(D, J++)] , O = x[StringTools.fastCodeAt(D, J++)]; if (E.set(P++, G << 2 | O >> 4), 3 == z) { var I = x[StringTools.fastCodeAt(D, J++)]; E.set(P++, O << 4 | I >> 2) } } return this.pos += y, this.cache.push(E), E; case 67: var H = this.unserialize() , Y = this.resolver.resolveClass(H); if (null == Y) throw new js__$Boot_HaxeError("Class not found " + H); var A = Type.createEmptyInstance(Y); if (this.cache.push(A), A.hxUnserialize(this), 103 != this.get(this.pos++)) throw new js__$Boot_HaxeError("Invalid custom data"); return A; case 65: var L = this.unserialize() , X = this.resolver.resolveClass(L); if (null == X) throw new js__$Boot_HaxeError("Class not found " + L); return X; case 66: var j = this.unserialize() , K = this.resolver.resolveEnum(j); if (null == K) throw new js__$Boot_HaxeError("Enum not found " + j); return K } throw this.pos--, new js__$Boot_HaxeError("Invalid char " + this.buf.charAt(this.pos) + " at position " + this.pos) }, __class__: haxe_Unserializer }; var haxe_Utf8 = function(e) { this.__b = "" }; $hxClasses["haxe.Utf8"] = haxe_Utf8, haxe_Utf8.__name__ = ["haxe", "Utf8"], haxe_Utf8.prototype = { __b: null, __class__: haxe_Utf8 }; var haxe_crypto_Adler32 = function() { this.a1 = 1, this.a2 = 0 }; $hxClasses["haxe.crypto.Adler32"] = haxe_crypto_Adler32, haxe_crypto_Adler32.__name__ = ["haxe", "crypto", "Adler32"], haxe_crypto_Adler32.read = function(e) { var t = new haxe_crypto_Adler32 , n = e.readByte() , i = e.readByte() , l = e.readByte() , a = e.readByte(); return t.a1 = l << 8 | a, t.a2 = n << 8 | i, t } , haxe_crypto_Adler32.prototype = { a1: null, a2: null, update: function(e, t, n) { for (var i = this.a1, l = this.a2, a = t, s = t + n; a < s; ) { var r = a++; l = (l + (i = (i + e.b[r]) % 65521)) % 65521 } this.a1 = i, this.a2 = l }, equals: function(e) { return e.a1 == this.a1 && e.a2 == this.a2 }, __class__: haxe_crypto_Adler32 }; var haxe_crypto_Base64 = function() {}; $hxClasses["haxe.crypto.Base64"] = haxe_crypto_Base64, haxe_crypto_Base64.__name__ = ["haxe", "crypto", "Base64"], haxe_crypto_Base64.decode = function(e, t) { if (null == t && (t = !0), t) for (; 61 == HxOverrides.cca(e, e.length - 1); ) e = HxOverrides.substr(e, 0, -1); return new haxe_crypto_BaseCode(haxe_crypto_Base64.BYTES).decodeBytes(haxe_io_Bytes.ofString(e)) } ; var haxe_crypto_BaseCode = function(e) { for (var t = e.length, n = 1; t > 1 << n; ) n++; if (n > 8 || t != 1 << n) throw new js__$Boot_HaxeError("BaseCode : base length must be a power of two."); this.base = e, this.nbits = n }; $hxClasses["haxe.crypto.BaseCode"] = haxe_crypto_BaseCode, haxe_crypto_BaseCode.__name__ = ["haxe", "crypto", "BaseCode"], haxe_crypto_BaseCode.prototype = { base: null, nbits: null, tbl: null, initTable: function() { for (var e = [], t = 0; t < 256; ) { e[t++] = -1 } for (var n = 0, i = this.base.length; n < i; ) { var l = n++; e[this.base.b[l]] = l } this.tbl = e }, decodeBytes: function(e) { var t = this.nbits; this.base; null == this.tbl && this.initTable(); for (var n = this.tbl, i = e.length * t >> 3, l = new haxe_io_Bytes(new ArrayBuffer(i)), a = 0, s = 0, r = 0, _ = 0; _ < i; ) { for (; s < 8; ) { s += t, a <<= t; var o = n[e.get(r++)]; if (-1 == o) throw new js__$Boot_HaxeError("BaseCode : invalid encoded char"); a |= o } s -= 8, l.set(_++, a >> s & 255) } return l }, __class__: haxe_crypto_BaseCode }; var haxe_ds_IntMap = function() { this.h = {} }; $hxClasses["haxe.ds.IntMap"] = haxe_ds_IntMap, haxe_ds_IntMap.__name__ = ["haxe", "ds", "IntMap"], haxe_ds_IntMap.__interfaces__ = [haxe_IMap], haxe_ds_IntMap.prototype = { h: null, set: function(e, t) { this.h[e] = t }, remove: function(e) { return !!this.h.hasOwnProperty(e) && (delete this.h[e], !0) }, keys: function() { var e = []; for (var t in this.h) this.h.hasOwnProperty(t) && e.push(0 | t); return HxOverrides.iter(e) }, iterator: function() { return { ref: this.h, it: this.keys(), hasNext: function() { return this.it.hasNext() }, next: function() { var e = this.it.next(); return this.ref[e] } } }, __class__: haxe_ds_IntMap }; var haxe_ds_ObjectMap = function() { this.h = {}, this.h.__keys__ = {} }; $hxClasses["haxe.ds.ObjectMap"] = haxe_ds_ObjectMap, haxe_ds_ObjectMap.__name__ = ["haxe", "ds", "ObjectMap"], haxe_ds_ObjectMap.__interfaces__ = [haxe_IMap], haxe_ds_ObjectMap.prototype = { h: null, set: function(e, t) { var n = e.__id__ || (e.__id__ = ++haxe_ds_ObjectMap.count); this.h[n] = t, this.h.__keys__[n] = e }, remove: function(e) { var t = e.__id__; return null != this.h.__keys__[t] && (delete this.h[t], delete this.h.__keys__[t], !0) }, keys: function() { var e = []; for (var t in this.h.__keys__) this.h.hasOwnProperty(t) && e.push(this.h.__keys__[t]); return HxOverrides.iter(e) }, iterator: function() { return { ref: this.h, it: this.keys(), hasNext: function() { return this.it.hasNext() }, next: function() { var e = this.it.next(); return this.ref[e.__id__] } } }, __class__: haxe_ds_ObjectMap }; var haxe_ds__$StringMap_StringMapIterator = function(e, t) { this.map = e, this.keys = t, this.index = 0, this.count = t.length }; $hxClasses["haxe.ds._StringMap.StringMapIterator"] = haxe_ds__$StringMap_StringMapIterator, haxe_ds__$StringMap_StringMapIterator.__name__ = ["haxe", "ds", "_StringMap", "StringMapIterator"], haxe_ds__$StringMap_StringMapIterator.prototype = { map: null, keys: null, index: null, count: null, hasNext: function() { return this.index < this.count }, next: function() { return this.map.get(this.keys[this.index++]) }, __class__: haxe_ds__$StringMap_StringMapIterator }; var haxe_ds_StringMap = function() { this.h = {} }; $hxClasses["haxe.ds.StringMap"] = haxe_ds_StringMap, haxe_ds_StringMap.__name__ = ["haxe", "ds", "StringMap"], haxe_ds_StringMap.__interfaces__ = [haxe_IMap], haxe_ds_StringMap.prototype = { h: null, rh: null, set: function(e, t) { null != __map_reserved[e] ? this.setReserved(e, t) : this.h[e] = t }, get: function(e) { return null != __map_reserved[e] ? this.getReserved(e) : this.h[e] }, exists: function(e) { return null != __map_reserved[e] ? this.existsReserved(e) : this.h.hasOwnProperty(e) }, setReserved: function(e, t) { null == this.rh && (this.rh = {}), this.rh["$" + e] = t }, getReserved: function(e) { return null == this.rh ? null : this.rh["$" + e] }, existsReserved: function(e) { return null != this.rh && this.rh.hasOwnProperty("$" + e) }, remove: function(e) { return null != __map_reserved[e] ? (e = "$" + e, !(null == this.rh || !this.rh.hasOwnProperty(e)) && (delete this.rh[e], !0)) : !!this.h.hasOwnProperty(e) && (delete this.h[e], !0) }, keys: function() { var e = this.arrayKeys(); return HxOverrides.iter(e) }, arrayKeys: function() { var e = []; for (var t in this.h) this.h.hasOwnProperty(t) && e.push(t); if (null != this.rh) for (var t in this.rh) 36 == t.charCodeAt(0) && e.push(t.substr(1)); return e }, iterator: function() { return new haxe_ds__$StringMap_StringMapIterator(this,this.arrayKeys()) }, __class__: haxe_ds_StringMap }; var haxe_io_BytesBuffer = function() { this.b = [] }; $hxClasses["haxe.io.BytesBuffer"] = haxe_io_BytesBuffer, haxe_io_BytesBuffer.__name__ = ["haxe", "io", "BytesBuffer"], haxe_io_BytesBuffer.prototype = { b: null, addBytes: function(e, t, n) { if (t < 0 || n < 0 || t + n > e.length) throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds); this.b; for (var i = e.b, l = t, a = t + n; l < a; ) { var s = l++; this.b.push(i[s]) } }, getBytes: function() { var e = new haxe_io_Bytes(new Uint8Array(this.b).buffer); return this.b = null, e }, __class__: haxe_io_BytesBuffer }; var haxe_io_Input = function() {}; $hxClasses["haxe.io.Input"] = haxe_io_Input, haxe_io_Input.__name__ = ["haxe", "io", "Input"], haxe_io_Input.prototype = { bigEndian: null, readByte: function() { throw new js__$Boot_HaxeError("Not implemented") }, readBytes: function(e, t, n) { var i = n , l = e.b; if (t < 0 || n < 0 || t + n > e.length) throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds); for (; i > 0; ) l[t] = this.readByte(), t++, i--; return n }, read: function(e) { for (var t = new haxe_io_Bytes(new ArrayBuffer(e)), n = 0; e > 0; ) { var i = this.readBytes(t, n, e); if (0 == i) throw new js__$Boot_HaxeError(haxe_io_Error.Blocked); n += i, e -= i } return t }, readUInt16: function() { var e = this.readByte() , t = this.readByte(); return this.bigEndian ? t | e << 8 : e | t << 8 }, __class__: haxe_io_Input }; var haxe_io_BytesInput = function(e, t, n) { if (null == t && (t = 0), null == n && (n = e.length - t), t < 0 || n < 0 || t + n > e.length) throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds); this.b = e.b, this.pos = t, this.len = n, this.totlen = n }; $hxClasses["haxe.io.BytesInput"] = haxe_io_BytesInput, haxe_io_BytesInput.__name__ = ["haxe", "io", "BytesInput"], haxe_io_BytesInput.__super__ = haxe_io_Input, haxe_io_BytesInput.prototype = $extend(haxe_io_Input.prototype, { b: null, pos: null, len: null, totlen: null, readByte: function() { if (0 == this.len) throw new js__$Boot_HaxeError(new haxe_io_Eof); return this.len--, this.b[this.pos++] }, readBytes: function(e, t, n) { if (t < 0 || n < 0 || t + n > e.length) throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds); if (0 == this.len && n > 0) throw new js__$Boot_HaxeError(new haxe_io_Eof); this.len < n && (n = this.len); for (var i = this.b, l = e.b, a = 0; a < n; ) { var s = a++; l[t + s] = i[this.pos + s] } return this.pos += n, this.len -= n, n }, __class__: haxe_io_BytesInput }); var haxe_io_Eof = function() {}; $hxClasses["haxe.io.Eof"] = haxe_io_Eof, haxe_io_Eof.__name__ = ["haxe", "io", "Eof"], haxe_io_Eof.prototype = { toString: function() { return "Eof" }, __class__: haxe_io_Eof }; var haxe_io_Error = $hxClasses["haxe.io.Error"] = { __ename__: ["haxe", "io", "Error"], __constructs__: ["Blocked", "Overflow", "OutsideBounds", "Custom"] }; haxe_io_Error.Blocked = ["Blocked", 0], haxe_io_Error.Blocked.toString = $estr, haxe_io_Error.Blocked.__enum__ = haxe_io_Error, haxe_io_Error.Overflow = ["Overflow", 1], haxe_io_Error.Overflow.toString = $estr, haxe_io_Error.Overflow.__enum__ = haxe_io_Error, haxe_io_Error.OutsideBounds = ["OutsideBounds", 2], haxe_io_Error.OutsideBounds.toString = $estr, haxe_io_Error.OutsideBounds.__enum__ = haxe_io_Error, haxe_io_Error.Custom = function(e) { var t = ["Custom", 3, e]; return t.__enum__ = haxe_io_Error, t.toString = $estr, t } ; var haxe_io_FPHelper = function() {}; $hxClasses["haxe.io.FPHelper"] = haxe_io_FPHelper, haxe_io_FPHelper.__name__ = ["haxe", "io", "FPHelper"], haxe_io_FPHelper.i32ToFloat = function(e) { var t = e >>> 23 & 255 , n = 8388607 & e; return 0 == n && 0 == t ? 0 : (1 - (e >>> 31 << 1)) * (1 + Math.pow(2, -23) * n) * Math.pow(2, t - 127) } , haxe_io_FPHelper.floatToI32 = function(e) { if (0 == e) return 0; var t; t = e < 0 ? -e : e; var n = Math.floor(Math.log(t) / .6931471805599453); n < -127 ? n = -127 : n > 128 && (n = 128); var i = Math.round(8388608 * (t / Math.pow(2, n) - 1)); return 8388608 == i && n < 128 && (i = 0, n++), (e < 0 ? -2147483648 : 0) | n + 127 << 23 | i } , haxe_io_FPHelper.i64ToDouble = function(e, t) { var n = (t >> 20 & 2047) - 1023 , i = 4294967296 * (1048575 & t) + 2147483648 * (e >>> 31) + (2147483647 & e); return 0 == i && -1023 == n ? 0 : (1 - (t >>> 31 << 1)) * (1 + Math.pow(2, -52) * i) * Math.pow(2, n) } , haxe_io_FPHelper.doubleToI64 = function(e) { var t = haxe_io_FPHelper.i64tmp; if (0 == e) t.low = 0, t.high = 0; else if (isFinite(e)) { var n; n = e < 0 ? -e : e; var i, l = Math.floor(Math.log(n) / .6931471805599453), a = 4503599627370496 * (n / Math.pow(2, l) - 1), s = 0 | (i = Math.round(a)), r = i / 4294967296 | 0; t.low = s, t.high = (e < 0 ? -2147483648 : 0) | l + 1023 << 20 | r } else e > 0 ? (t.low = 0, t.high = 2146435072) : (t.low = 0, t.high = -1048576); return t } ; var haxe_io_Path = function(e) { switch (e) { case ".": case "..": return this.dir = e, void (this.file = "") } var t = e.lastIndexOf("/") , n = e.lastIndexOf("\\"); t < n ? (this.dir = HxOverrides.substr(e, 0, n), e = HxOverrides.substr(e, n + 1, null), this.backslash = !0) : n < t ? (this.dir = HxOverrides.substr(e, 0, t), e = HxOverrides.substr(e, t + 1, null)) : this.dir = null; var i = e.lastIndexOf("."); -1 != i ? (this.ext = HxOverrides.substr(e, i + 1, null), this.file = HxOverrides.substr(e, 0, i)) : (this.ext = null, this.file = e) }; $hxClasses["haxe.io.Path"] = haxe_io_Path, haxe_io_Path.__name__ = ["haxe", "io", "Path"], haxe_io_Path.withoutExtension = function(e) { var t = new haxe_io_Path(e); return t.ext = null, t.toString() } , haxe_io_Path.prototype = { dir: null, file: null, ext: null, backslash: null, toString: function() { return (null == this.dir ? "" : this.dir + (this.backslash ? "\\" : "/")) + this.file + (null == this.ext ? "" : "." + this.ext) }, __class__: haxe_io_Path }; var haxe_xml_Parser = function() {}; $hxClasses["haxe.xml.Parser"] = haxe_xml_Parser, haxe_xml_Parser.__name__ = ["haxe", "xml", "Parser"], haxe_xml_Parser.parse = function(e, t) { null == t && (t = !1); var n = Xml.createDocument(); return haxe_xml_Parser.doParse(e, t, 0, n), n } , haxe_xml_Parser.doParse = function(e, t, n, i) { null == n && (n = 0); for (var l = null, a = 1, s = 1, r = null, _ = 0, o = 0, p = 0, h = e.charCodeAt(n), d = new StringBuf, u = 1, c = -1; h == h; ) { switch (a) { case 0: switch (h) { case 10: case 13: case 9: case 32: break; default: a = s; continue } break; case 1: switch (h) { case 60: a = 0, s = 2; break; default: _ = n, a = 13; continue } break; case 13: if (60 == h) { d.addSub(e, _, n - _); var m = Xml.createPCData(d.b); d = new StringBuf, i.addChild(m), o++, a = 0, s = 2 } else 38 == h && (d.addSub(e, _, n - _), a = 18, u = 13, _ = n + 1); break; case 17: if (93 == h && 93 == e.charCodeAt(n + 1) && 62 == e.charCodeAt(n + 2)) { var U = Xml.createCData(HxOverrides.substr(e, _, n - _)); i.addChild(U), o++, n += 2, a = 1 } break; case 2: switch (h) { case 33: if (91 == e.charCodeAt(n + 1)) { if (n += 2, "CDATA[" != HxOverrides.substr(e, n, 6).toUpperCase()) throw new js__$Boot_HaxeError("Expected = 97 && h <= 122 || h >= 65 && h <= 90 || h >= 48 && h <= 57 || 58 == h || 46 == h || 95 == h || 45 == h)) { if (n == _) throw new js__$Boot_HaxeError("Expected node name"); l = Xml.createElement(HxOverrides.substr(e, _, n - _)), i.addChild(l), o++, a = 0, s = 4; continue } break; case 4: switch (h) { case 47: a = 11; break; case 62: a = 9; break; default: a = 5, _ = n; continue } break; case 5: if (!(h >= 97 && h <= 122 || h >= 65 && h <= 90 || h >= 48 && h <= 57 || 58 == h || 46 == h || 95 == h || 45 == h)) { if (_ == n) throw new js__$Boot_HaxeError("Expected attribute name"); if (r = HxOverrides.substr(e, _, n - _), l.exists(r)) throw new js__$Boot_HaxeError("Duplicate attribute"); a = 0, s = 6; continue } break; case 6: switch (h) { case 61: a = 0, s = 7; break; default: throw new js__$Boot_HaxeError("Expected =") } break; case 7: switch (h) { case 34: case 39: d = new StringBuf, a = 8, _ = n + 1, c = h; break; default: throw new js__$Boot_HaxeError('Expected "') } break; case 8: switch (h) { case 38: d.addSub(e, _, n - _), a = 18, u = 8, _ = n + 1; break; case 62: if (t) throw new js__$Boot_HaxeError("Invalid unescaped " + String.fromCharCode(h) + " in attribute value"); if (h == c) { d.addSub(e, _, n - _); var Q = d.b; d = new StringBuf, l.set(r, Q), a = 0, s = 4 } break; case 60: if (t) throw new js__$Boot_HaxeError("Invalid unescaped " + String.fromCharCode(h) + " in attribute value"); if (h == c) { d.addSub(e, _, n - _); var N = d.b; d = new StringBuf, l.set(r, N), a = 0, s = 4 } break; default: if (h == c) { d.addSub(e, _, n - _); var F = d.b; d = new StringBuf, l.set(r, F), a = 0, s = 4 } } break; case 9: _ = n = haxe_xml_Parser.doParse(e, t, n, l), a = 1; break; case 11: switch (h) { case 62: a = 1; break; default: throw new js__$Boot_HaxeError("Expected >") } break; case 12: switch (h) { case 62: return 0 == o && i.addChild(Xml.createPCData("")), n; default: throw new js__$Boot_HaxeError("Expected >") } break; case 10: if (!(h >= 97 && h <= 122 || h >= 65 && h <= 90 || h >= 48 && h <= 57 || 58 == h || 46 == h || 95 == h || 45 == h)) { if (_ == n) throw new js__$Boot_HaxeError("Expected node name"); if (HxOverrides.substr(e, _, n - _) != function(e) { if (i.nodeType != Xml.Element) throw new js__$Boot_HaxeError("Bad node type, expected Element but found " + i.nodeType); return i.nodeName }()) throw new js__$Boot_HaxeError("Expected "); a = 0, s = 12; continue } break; case 15: if (45 == h && 45 == e.charCodeAt(n + 1) && 62 == e.charCodeAt(n + 2)) { var Z = Xml.createComment(HxOverrides.substr(e, _, n - _)); i.addChild(Z), o++, n += 2, a = 1 } break; case 16: if (91 == h) p++; else if (93 == h) p--; else if (62 == h && 0 == p) { var f = Xml.createDocType(HxOverrides.substr(e, _, n - _)); i.addChild(f), o++, a = 1 } break; case 14: if (63 == h && 62 == e.charCodeAt(n + 1)) { n++; var S = HxOverrides.substr(e, _ + 1, n - _ - 2) , g = Xml.createProcessingInstruction(S); i.addChild(g), o++, a = 1 } break; case 18: if (59 == h) { var B, b = HxOverrides.substr(e, _, n - _); if (35 == b.charCodeAt(0)) B = 120 == b.charCodeAt(1) ? Std.parseInt("0" + HxOverrides.substr(b, 1, b.length - 1)) : Std.parseInt(HxOverrides.substr(b, 1, b.length - 1)), d.b += String.fromCharCode(B); else if (haxe_xml_Parser.escapes.exists(b)) d.add(haxe_xml_Parser.escapes.get(b)); else { if (t) throw new js__$Boot_HaxeError("Undefined entity: " + b); d.b += Std.string("&" + b + ";") } _ = n + 1, a = u } else if (!(h >= 97 && h <= 122 || h >= 65 && h <= 90 || h >= 48 && h <= 57 || 58 == h || 46 == h || 95 == h || 45 == h) && 35 != h) { if (t) throw new js__$Boot_HaxeError("Invalid character in entity: " + String.fromCharCode(h)); d.b += "&", d.addSub(e, _, n - _), _ = --n + 1, a = u } } h = StringTools.fastCodeAt(e, ++n) } if (1 == a && (_ = n, a = 13), 13 == a) { if (n != _ || 0 == o) { d.addSub(e, _, n - _); var v = Xml.createPCData(d.b); i.addChild(v), o++ } return n } if (!t && 18 == a && 13 == u) { d.b += "&", d.addSub(e, _, n - _); var W = Xml.createPCData(d.b); return i.addChild(W), o++, n } throw new js__$Boot_HaxeError("Unexpected end") } ; var haxe_zip_Huffman = $hxClasses["haxe.zip.Huffman"] = { __ename__: ["haxe", "zip", "Huffman"], __constructs__: ["Found", "NeedBit", "NeedBits"] }; haxe_zip_Huffman.Found = function(e) { var t = ["Found", 0, e]; return t.__enum__ = haxe_zip_Huffman, t.toString = $estr, t } , haxe_zip_Huffman.NeedBit = function(e, t) { var n = ["NeedBit", 1, e, t]; return n.__enum__ = haxe_zip_Huffman, n.toString = $estr, n } , haxe_zip_Huffman.NeedBits = function(e, t) { var n = ["NeedBits", 2, e, t]; return n.__enum__ = haxe_zip_Huffman, n.toString = $estr, n } ; var haxe_zip_HuffTools = function() {}; $hxClasses["haxe.zip.HuffTools"] = haxe_zip_HuffTools, haxe_zip_HuffTools.__name__ = ["haxe", "zip", "HuffTools"], haxe_zip_HuffTools.prototype = { treeDepth: function(e) { switch (e[1]) { case 0: return 0; case 2: throw new js__$Boot_HaxeError("assert"); case 1: var t = e[3] , n = e[2] , i = this.treeDepth(n) , l = this.treeDepth(t); return 1 + (i < l ? i : l) } }, treeCompress: function(e) { var t = this.treeDepth(e); if (0 == t) return e; if (1 == t) switch (e[1]) { case 1: var n = e[3] , i = e[2]; return haxe_zip_Huffman.NeedBit(this.treeCompress(i), this.treeCompress(n)); default: throw new js__$Boot_HaxeError("assert") } for (var l = 1 << t, a = [], s = 0; s < l; ) { s++; a.push(haxe_zip_Huffman.Found(-1)) } return this.treeWalk(a, 0, 0, t, e), haxe_zip_Huffman.NeedBits(t, a) }, treeWalk: function(e, t, n, i, l) { switch (l[1]) { case 1: var a = l[3] , s = l[2]; i > 0 ? (this.treeWalk(e, t, n + 1, i - 1, s), this.treeWalk(e, t | 1 << n, n + 1, i - 1, a)) : e[t] = this.treeCompress(l); break; default: e[t] = this.treeCompress(l) } }, treeMake: function(e, t, n, i) { if (i > t) throw new js__$Boot_HaxeError("Invalid huffman"); var l = n << 5 | i; return e.h.hasOwnProperty(l) ? haxe_zip_Huffman.Found(e.h[l]) : (n <<= 1, i += 1, haxe_zip_Huffman.NeedBit(this.treeMake(e, t, n, i), this.treeMake(e, t, 1 | n, i))) }, make: function(e, t, n, i) { var l = [] , a = []; if (i > 32) throw new js__$Boot_HaxeError("Invalid huffman"); for (var s = 0; s < i; ) { s++; l.push(0), a.push(0) } for (var r = 0; r < n; ) { var _ = e[r++ + t]; if (_ >= i) throw new js__$Boot_HaxeError("Invalid huffman"); l[_]++ } for (var o = 0, p = 1, h = i - 1; p < h; ) { var d = p++; o = o + l[d] << 1, a[d] = o } for (var u = new haxe_ds_IntMap, c = 0; c < n; ) { var m = c++ , U = e[m + t]; if (0 != U) { var Q = a[U - 1]; a[U - 1] = Q + 1, u.h[Q << 5 | U] = m } } return this.treeCompress(haxe_zip_Huffman.NeedBit(this.treeMake(u, i, 0, 1), this.treeMake(u, i, 1, 1))) }, __class__: haxe_zip_HuffTools }; var haxe_zip__$InflateImpl_Window = function(e) { this.buffer = new haxe_io_Bytes(new ArrayBuffer(65536)), this.pos = 0, e && (this.crc = new haxe_crypto_Adler32) }; $hxClasses["haxe.zip._InflateImpl.Window"] = haxe_zip__$InflateImpl_Window, haxe_zip__$InflateImpl_Window.__name__ = ["haxe", "zip", "_InflateImpl", "Window"], haxe_zip__$InflateImpl_Window.prototype = { buffer: null, pos: null, crc: null, slide: function() { null != this.crc && this.crc.update(this.buffer, 0, 32768); var e = new haxe_io_Bytes(new ArrayBuffer(65536)); this.pos -= 32768, e.blit(0, this.buffer, 32768, this.pos), this.buffer = e }, addBytes: function(e, t, n) { this.pos + n > 65536 && this.slide(), this.buffer.blit(this.pos, e, t, n), this.pos += n }, addByte: function(e) { 65536 == this.pos && this.slide(), this.buffer.b[this.pos] = 255 & e, this.pos++ }, getLastChar: function() { return this.buffer.b[this.pos - 1] }, available: function() { return this.pos }, checksum: function() { return null != this.crc && this.crc.update(this.buffer, 0, this.pos), this.crc }, __class__: haxe_zip__$InflateImpl_Window }; var haxe_zip__$InflateImpl_State = $hxClasses["haxe.zip._InflateImpl.State"] = { __ename__: ["haxe", "zip", "_InflateImpl", "State"], __constructs__: ["Head", "Block", "CData", "Flat", "Crc", "Dist", "DistOne", "Done"] }; haxe_zip__$InflateImpl_State.Head = ["Head", 0], haxe_zip__$InflateImpl_State.Head.toString = $estr, haxe_zip__$InflateImpl_State.Head.__enum__ = haxe_zip__$InflateImpl_State, haxe_zip__$InflateImpl_State.Block = ["Block", 1], haxe_zip__$InflateImpl_State.Block.toString = $estr, haxe_zip__$InflateImpl_State.Block.__enum__ = haxe_zip__$InflateImpl_State, haxe_zip__$InflateImpl_State.CData = ["CData", 2], haxe_zip__$InflateImpl_State.CData.toString = $estr, haxe_zip__$InflateImpl_State.CData.__enum__ = haxe_zip__$InflateImpl_State, haxe_zip__$InflateImpl_State.Flat = ["Flat", 3], haxe_zip__$InflateImpl_State.Flat.toString = $estr, haxe_zip__$InflateImpl_State.Flat.__enum__ = haxe_zip__$InflateImpl_State, haxe_zip__$InflateImpl_State.Crc = ["Crc", 4], haxe_zip__$InflateImpl_State.Crc.toString = $estr, haxe_zip__$InflateImpl_State.Crc.__enum__ = haxe_zip__$InflateImpl_State, haxe_zip__$InflateImpl_State.Dist = ["Dist", 5], haxe_zip__$InflateImpl_State.Dist.toString = $estr, haxe_zip__$InflateImpl_State.Dist.__enum__ = haxe_zip__$InflateImpl_State, haxe_zip__$InflateImpl_State.DistOne = ["DistOne", 6], haxe_zip__$InflateImpl_State.DistOne.toString = $estr, haxe_zip__$InflateImpl_State.DistOne.__enum__ = haxe_zip__$InflateImpl_State, haxe_zip__$InflateImpl_State.Done = ["Done", 7], haxe_zip__$InflateImpl_State.Done.toString = $estr, haxe_zip__$InflateImpl_State.Done.__enum__ = haxe_zip__$InflateImpl_State; var haxe_zip_InflateImpl = function(e, t, n) { null == n && (n = !0), null == t && (t = !0), this.final = !1, this.htools = new haxe_zip_HuffTools, this.huffman = this.buildFixedHuffman(), this.huffdist = null, this.len = 0, this.dist = 0, this.state = t ? haxe_zip__$InflateImpl_State.Head : haxe_zip__$InflateImpl_State.Block, this.input = e, this.bits = 0, this.nbits = 0, this.needed = 0, this.output = null, this.outpos = 0, this.lengths = []; for (var i = 0; i < 19; ) { i++; this.lengths.push(-1) } this.window = new haxe_zip__$InflateImpl_Window(n) }; $hxClasses["haxe.zip.InflateImpl"] = haxe_zip_InflateImpl, haxe_zip_InflateImpl.__name__ = ["haxe", "zip", "InflateImpl"], haxe_zip_InflateImpl.run = function(e, t) { null == t && (t = 65536); for (var n = new haxe_io_Bytes(new ArrayBuffer(t)), i = new haxe_io_BytesBuffer, l = new haxe_zip_InflateImpl(e); ; ) { var a = l.readBytes(n, 0, t); if (i.addBytes(n, 0, a), a < t) break } return i.getBytes() } , haxe_zip_InflateImpl.prototype = { nbits: null, bits: null, state: null, final: null, huffman: null, huffdist: null, htools: null, len: null, dist: null, needed: null, output: null, outpos: null, input: null, lengths: null, window: null, buildFixedHuffman: function() { if (null != haxe_zip_InflateImpl.FIXED_HUFFMAN) return haxe_zip_InflateImpl.FIXED_HUFFMAN; for (var e = [], t = 0; t < 288; ) { var n = t++; e.push(n <= 143 ? 8 : n <= 255 ? 9 : n <= 279 ? 7 : 8) } return haxe_zip_InflateImpl.FIXED_HUFFMAN = this.htools.make(e, 0, 288, 10), haxe_zip_InflateImpl.FIXED_HUFFMAN }, readBytes: function(e, t, n) { if (this.needed = n, this.outpos = t, this.output = e, n > 0) for (; this.inflateLoop(); ) ; return n - this.needed }, getBits: function(e) { for (; this.nbits < e; ) this.bits |= this.input.readByte() << this.nbits, this.nbits += 8; var t = this.bits & (1 << e) - 1; return this.nbits -= e, this.bits >>= e, t }, getBit: function() { 0 == this.nbits && (this.nbits = 8, this.bits = this.input.readByte()); var e = 1 == (1 & this.bits); return this.nbits--, this.bits >>= 1, e }, getRevBits: function(e) { return 0 == e ? 0 : this.getBit() ? 1 << e - 1 | this.getRevBits(e - 1) : this.getRevBits(e - 1) }, resetBits: function() { this.bits = 0, this.nbits = 0 }, addBytes: function(e, t, n) { this.window.addBytes(e, t, n), this.output.blit(this.outpos, e, t, n), this.needed -= n, this.outpos += n }, addByte: function(e) { this.window.addByte(e), this.output.b[this.outpos] = 255 & e, this.needed--, this.outpos++ }, addDistOne: function(e) { for (var t = this.window.getLastChar(), n = 0; n < e; ) { n++; this.addByte(t) } }, addDist: function(e, t) { this.addBytes(this.window.buffer, this.window.pos - e, t) }, applyHuffman: function(e) { switch (e[1]) { case 0: return e[2]; case 1: var t = e[3] , n = e[2]; return this.applyHuffman(this.getBit() ? t : n); case 2: var i = e[3] , l = e[2]; return this.applyHuffman(i[this.getBits(l)]) } }, inflateLengths: function(e, t) { for (var n = 0, i = 0; n < t; ) { var l = this.applyHuffman(this.huffman); switch (l) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: i = l, e[n] = l, n++; break; case 16: var a = n + 3 + this.getBits(2); if (a > t) throw new js__$Boot_HaxeError("Invalid data"); for (; n < a; ) e[n] = i, n++; break; case 17: if ((n += 3 + this.getBits(3)) > t) throw new js__$Boot_HaxeError("Invalid data"); break; case 18: if ((n += 11 + this.getBits(7)) > t) throw new js__$Boot_HaxeError("Invalid data"); break; default: throw new js__$Boot_HaxeError("Invalid data") } } }, inflateLoop: function() { switch (this.state[1]) { case 0: var e = this.input.readByte(); if (8 != (15 & e)) throw new js__$Boot_HaxeError("Invalid data"); var t = this.input.readByte() , n = 0 != (32 & t); if (((e << 8) + t) % 31 != 0) throw new js__$Boot_HaxeError("Invalid data"); if (n) throw new js__$Boot_HaxeError("Unsupported dictionary"); return this.state = haxe_zip__$InflateImpl_State.Block, !0; case 4: var i = this.window.checksum(); if (null == i) return this.state = haxe_zip__$InflateImpl_State.Done, !0; var l = haxe_crypto_Adler32.read(this.input); if (!i.equals(l)) throw new js__$Boot_HaxeError("Invalid CRC"); return this.state = haxe_zip__$InflateImpl_State.Done, !0; case 7: return !1; case 1: switch (this.final = this.getBit(), this.getBits(2)) { case 0: if (this.len = this.input.readUInt16(), this.input.readUInt16() != 65535 - this.len) throw new js__$Boot_HaxeError("Invalid data"); this.state = haxe_zip__$InflateImpl_State.Flat; var a = this.inflateLoop(); return this.resetBits(), a; case 1: return this.huffman = this.buildFixedHuffman(), this.huffdist = null, this.state = haxe_zip__$InflateImpl_State.CData, !0; case 2: for (var s = this.getBits(5) + 257, r = this.getBits(5) + 1, _ = this.getBits(4) + 4, o = 0; o < _; ) { var p = o++; this.lengths[haxe_zip_InflateImpl.CODE_LENGTHS_POS[p]] = this.getBits(3) } for (var h = _; h < 19; ) { var d = h++; this.lengths[haxe_zip_InflateImpl.CODE_LENGTHS_POS[d]] = 0 } this.huffman = this.htools.make(this.lengths, 0, 19, 8); for (var u = [], c = 0, m = s + r; c < m; ) { c++; u.push(0) } return this.inflateLengths(u, s + r), this.huffdist = this.htools.make(u, s, r, 16), this.huffman = this.htools.make(u, 0, s, 16), this.state = haxe_zip__$InflateImpl_State.CData, !0; default: throw new js__$Boot_HaxeError("Invalid data") } break; case 3: var U; U = this.len < this.needed ? this.len : this.needed; var Q = this.input.read(U); return this.len -= U, this.addBytes(Q, 0, U), 0 == this.len && (this.final ? this.state = haxe_zip__$InflateImpl_State.Crc : this.state = haxe_zip__$InflateImpl_State.Block), this.needed > 0; case 6: var N; return N = this.len < this.needed ? this.len : this.needed, this.addDistOne(N), this.len -= N, 0 == this.len && (this.state = haxe_zip__$InflateImpl_State.CData), this.needed > 0; case 5: for (; this.len > 0 && this.needed > 0; ) { var F, Z; F = this.len < this.dist ? this.len : this.dist, Z = this.needed < F ? this.needed : F, this.addDist(this.dist, Z), this.len -= Z } return 0 == this.len && (this.state = haxe_zip__$InflateImpl_State.CData), this.needed > 0; case 2: var f = this.applyHuffman(this.huffman); if (f < 256) return this.addByte(f), this.needed > 0; if (256 == f) return this.final ? this.state = haxe_zip__$InflateImpl_State.Crc : this.state = haxe_zip__$InflateImpl_State.Block, !0; f -= 257; var S, g = haxe_zip_InflateImpl.LEN_EXTRA_BITS_TBL[f]; if (-1 == g) throw new js__$Boot_HaxeError("Invalid data"); if (this.len = haxe_zip_InflateImpl.LEN_BASE_VAL_TBL[f] + this.getBits(g), S = null == this.huffdist ? this.getRevBits(5) : this.applyHuffman(this.huffdist), -1 == (g = haxe_zip_InflateImpl.DIST_EXTRA_BITS_TBL[S])) throw new js__$Boot_HaxeError("Invalid data"); if (this.dist = haxe_zip_InflateImpl.DIST_BASE_VAL_TBL[S] + this.getBits(g), this.dist > this.window.available()) throw new js__$Boot_HaxeError("Invalid data"); return 1 == this.dist ? this.state = haxe_zip__$InflateImpl_State.DistOne : this.state = haxe_zip__$InflateImpl_State.Dist, !0 } }, __class__: haxe_zip_InflateImpl }; var haxe_zip_Uncompress = function() {}; $hxClasses["haxe.zip.Uncompress"] = haxe_zip_Uncompress, haxe_zip_Uncompress.__name__ = ["haxe", "zip", "Uncompress"], haxe_zip_Uncompress.run = function(e, t) { return haxe_zip_InflateImpl.run(new haxe_io_BytesInput(e), t) } ; var js__$Boot_HaxeError = function(e) { Error.call(this), this.val = e, this.message = String(e), Error.captureStackTrace && Error.captureStackTrace(this, js__$Boot_HaxeError) }; $hxClasses["js._Boot.HaxeError"] = js__$Boot_HaxeError, js__$Boot_HaxeError.__name__ = ["js", "_Boot", "HaxeError"], js__$Boot_HaxeError.__super__ = Error, js__$Boot_HaxeError.prototype = $extend(Error.prototype, { val: null, __class__: js__$Boot_HaxeError }); var js_Boot = function() {}; $hxClasses["js.Boot"] = js_Boot, js_Boot.__name__ = ["js", "Boot"], js_Boot.getClass = function(e) { if (e instanceof Array && null == e.__enum__) return Array; var t = e.__class__; if (null != t) return t; var n = js_Boot.__nativeClassName(e); return null != n ? js_Boot.__resolveNativeClass(n) : null } , js_Boot.__string_rec = function(e, t) { if (null == e) return "null"; if (t.length >= 5) return "<...>"; var n = typeof e; switch ("function" == n && (e.__name__ || e.__ename__) && (n = "object"), n) { case "object": if (e instanceof Array) { if (e.__enum__) { if (2 == e.length) return e[0]; var i = e[0] + "("; t += "\t"; for (var l = 2, a = e.length; l < a; ) { var s = l++; i += 2 != s ? "," + js_Boot.__string_rec(e[s], t) : js_Boot.__string_rec(e[s], t) } return i + ")" } var r = e.length , _ = "["; t += "\t"; for (var o = 0; o < r; ) { var p = o++; _ += (p > 0 ? "," : "") + js_Boot.__string_rec(e[p], t) } return _ += "]" } var h; try { h = e.toString } catch (e) { return e instanceof js__$Boot_HaxeError && (e = e.val), "???" } if (null != h && h != Object.toString && "function" == typeof h) { var d = e.toString(); if ("[object Object]" != d) return d } var u = null , c = "{\n"; t += "\t"; var m = null != e.hasOwnProperty; for (var u in e) m && !e.hasOwnProperty(u) || "prototype" != u && "__class__" != u && "__super__" != u && "__interfaces__" != u && "__properties__" != u && (2 != c.length && (c += ", \n"), c += t + u + " : " + js_Boot.__string_rec(e[u], t)); return c += "\n" + (t = t.substring(1)) + "}"; case "function": return ""; case "string": return e; default: return String(e) } } , js_Boot.__interfLoop = function(e, t) { if (null == e) return !1; if (e == t) return !0; var n = e.__interfaces__; if (null != n) for (var i = 0, l = n.length; i < l; ) { var a = n[i++]; if (a == t || js_Boot.__interfLoop(a, t)) return !0 } return js_Boot.__interfLoop(e.__super__, t) } , js_Boot.__instanceof = function(e, t) { if (null == t) return !1; switch (t) { case Int: return (0 | e) === e; case Float: return "number" == typeof e; case Bool: return "boolean" == typeof e; case String: return "string" == typeof e; case Array: return e instanceof Array && null == e.__enum__; case Dynamic: return !0; default: if (null == e) return !1; if ("function" == typeof t) { if (e instanceof t) return !0; if (js_Boot.__interfLoop(js_Boot.getClass(e), t)) return !0 } else if ("object" == typeof t && js_Boot.__isNativeObj(t) && e instanceof t) return !0; return t == Class && null != e.__name__ || (t == Enum && null != e.__ename__ || e.__enum__ == t) } } , js_Boot.__cast = function(e, t) { if (js_Boot.__instanceof(e, t)) return e; throw new js__$Boot_HaxeError("Cannot cast " + Std.string(e) + " to " + Std.string(t)) } , js_Boot.__nativeClassName = function(e) { var t = js_Boot.__toStr.call(e).slice(8, -1); return "Object" == t || "Function" == t || "Math" == t || "JSON" == t ? null : t } , js_Boot.__isNativeObj = function(e) { return null != js_Boot.__nativeClassName(e) } , js_Boot.__resolveNativeClass = function(e) { return $global[e] } ; var js_Browser = function() {}; $hxClasses["js.Browser"] = js_Browser, js_Browser.__name__ = ["js", "Browser"], js_Browser.getLocalStorage = function() { try { var e = window.game_uptap.localStorage; return e.getItem(""), e } catch (e) { return e instanceof js__$Boot_HaxeError && (e = e.val), null } } ; var js_html__$CanvasElement_CanvasUtil = function() {}; $hxClasses["js.html._CanvasElement.CanvasUtil"] = js_html__$CanvasElement_CanvasUtil, js_html__$CanvasElement_CanvasUtil.__name__ = ["js", "html", "_CanvasElement", "CanvasUtil"], js_html__$CanvasElement_CanvasUtil.getContextWebGL = function(e, t) { for (var n = 0, i = ["webgl", "experimental-webgl"]; n < i.length; ) { var l = i[n]; ++n; var a = e.getContext(l, t); if (null != a) return a } return null } ; var js_html_compat_ArrayBuffer = function(e) { if (e instanceof Array && null == e.__enum__) this.a = e, this.byteLength = e.length; else { var t = e; this.a = []; for (var n = 0; n < t; ) { var i = n++; this.a[i] = 0 } this.byteLength = t } }; $hxClasses["js.html.compat.ArrayBuffer"] = js_html_compat_ArrayBuffer, js_html_compat_ArrayBuffer.__name__ = ["js", "html", "compat", "ArrayBuffer"], js_html_compat_ArrayBuffer.sliceImpl = function(e, t) { var n = new Uint8Array(this,e,null == t ? null : t - e) , i = new ArrayBuffer(n.byteLength); return new Uint8Array(i).set(n), i } , js_html_compat_ArrayBuffer.prototype = { byteLength: null, a: null, slice: function(e, t) { return new js_html_compat_ArrayBuffer(this.a.slice(e, t)) }, __class__: js_html_compat_ArrayBuffer }; var js_html_compat_DataView = function(e, t, n) { if (this.buf = e, this.offset = null == t ? 0 : t, this.length = null == n ? e.byteLength - this.offset : n, this.offset < 0 || this.length < 0 || this.offset + this.length > e.byteLength) throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds) }; $hxClasses["js.html.compat.DataView"] = js_html_compat_DataView, js_html_compat_DataView.__name__ = ["js", "html", "compat", "DataView"], js_html_compat_DataView.prototype = { buf: null, offset: null, length: null, getInt8: function(e) { var t = this.buf.a[this.offset + e]; return t >= 128 ? t - 256 : t }, getUint8: function(e) { return this.buf.a[this.offset + e] }, getInt16: function(e, t) { var n = this.getUint16(e, t); return n >= 32768 ? n - 65536 : n }, getUint16: function(e, t) { return t ? this.buf.a[this.offset + e] | this.buf.a[this.offset + e + 1] << 8 : this.buf.a[this.offset + e] << 8 | this.buf.a[this.offset + e + 1] }, getInt32: function(e, t) { var n = this.offset + e , i = this.buf.a[n++] , l = this.buf.a[n++] , a = this.buf.a[n++] , s = this.buf.a[n++]; return t ? i | l << 8 | a << 16 | s << 24 : s | a << 8 | l << 16 | i << 24 }, getUint32: function(e, t) { var n = this.getInt32(e, t); return n < 0 ? n + 4294967296 : n }, getFloat32: function(e, t) { return haxe_io_FPHelper.i32ToFloat(this.getInt32(e, t)) }, getFloat64: function(e, t) { var n = this.getInt32(e, t) , i = this.getInt32(e + 4, t); return haxe_io_FPHelper.i64ToDouble(t ? n : i, t ? i : n) }, setInt8: function(e, t) { this.buf.a[e + this.offset] = t < 0 ? t + 128 & 255 : 255 & t }, setUint8: function(e, t) { this.buf.a[e + this.offset] = 255 & t }, setInt16: function(e, t, n) { this.setUint16(e, t < 0 ? t + 65536 : t, n) }, setUint16: function(e, t, n) { var i = e + this.offset; n ? (this.buf.a[i] = 255 & t, this.buf.a[i++] = t >> 8 & 255) : (this.buf.a[i++] = t >> 8 & 255, this.buf.a[i] = 255 & t) }, setInt32: function(e, t, n) { this.setUint32(e, t, n) }, setUint32: function(e, t, n) { var i = e + this.offset; n ? (this.buf.a[i++] = 255 & t, this.buf.a[i++] = t >> 8 & 255, this.buf.a[i++] = t >> 16 & 255, this.buf.a[i++] = t >>> 24) : (this.buf.a[i++] = t >>> 24, this.buf.a[i++] = t >> 16 & 255, this.buf.a[i++] = t >> 8 & 255, this.buf.a[i++] = 255 & t) }, setFloat32: function(e, t, n) { this.setUint32(e, haxe_io_FPHelper.floatToI32(t), n) }, setFloat64: function(e, t, n) { var i = haxe_io_FPHelper.doubleToI64(t); n ? (this.setUint32(e, i.low), this.setUint32(e, i.high)) : (this.setUint32(e, i.high), this.setUint32(e, i.low)) }, __class__: js_html_compat_DataView }; var js_html_compat_Uint8Array = function() {}; $hxClasses["js.html.compat.Uint8Array"] = js_html_compat_Uint8Array, js_html_compat_Uint8Array.__name__ = ["js", "html", "compat", "Uint8Array"], js_html_compat_Uint8Array._new = function(e, t, n) { var i; if ("number" == typeof e) { i = []; for (var l = 0; l < e; ) { i[l++] = 0 } i.byteLength = i.length, i.byteOffset = 0, i.buffer = new js_html_compat_ArrayBuffer(i) } else if (js_Boot.__instanceof(e, js_html_compat_ArrayBuffer)) { var a = e; null == t && (t = 0), null == n && (n = a.byteLength - t), (i = 0 == t ? a.a : a.a.slice(t, t + n)).byteLength = i.length, i.byteOffset = t, i.buffer = a } else { if (!(e instanceof Array && null == e.__enum__)) throw new js__$Boot_HaxeError("TODO " + Std.string(e)); (i = e.slice()).byteLength = i.length, i.byteOffset = 0, i.buffer = new js_html_compat_ArrayBuffer(i) } return i.subarray = js_html_compat_Uint8Array._subarray, i.set = js_html_compat_Uint8Array._set, i } , js_html_compat_Uint8Array._set = function(e, t) { var n = this; if (js_Boot.__instanceof(e.buffer, js_html_compat_ArrayBuffer)) { var i = e; if (e.byteLength + t > n.byteLength) throw new js__$Boot_HaxeError("set() outside of range"); for (var l = 0, a = e.byteLength; l < a; ) { var s = l++; n[s + t] = i[s] } } else { if (!(e instanceof Array && null == e.__enum__)) throw new js__$Boot_HaxeError("TODO"); var r = e; if (r.length + t > n.byteLength) throw new js__$Boot_HaxeError("set() outside of range"); for (var _ = 0, o = r.length; _ < o; ) { var p = _++; n[p + t] = r[p] } } } , js_html_compat_Uint8Array._subarray = function(e, t) { var n = js_html_compat_Uint8Array._new(this.slice(e, t)); return n.byteOffset = e, n } ; var lime__$backend_html5_HTML5Application = function(e) { this.gameDeviceCache = new haxe_ds_IntMap, this.parent = e, this.currentUpdate = 0, this.lastUpdate = 0, this.nextUpdate = 0, this.framePeriod = -1, lime_media_AudioManager.init() }; $hxClasses["lime._backend.html5.HTML5Application"] = lime__$backend_html5_HTML5Application, lime__$backend_html5_HTML5Application.__name__ = ["lime", "_backend", "html5", "HTML5Application"], lime__$backend_html5_HTML5Application.prototype = { gameDeviceCache: null, currentUpdate: null, deltaTime: null, framePeriod: null, lastUpdate: null, nextUpdate: null, parent: null, convertKeyCode: function(e) { if (e >= 65 && e <= 90) return e + 32; switch (e) { case 16: return 1073742049; case 17: return 1073742048; case 18: return 1073742050; case 20: return 1073741881; case 33: return 1073741899; case 34: return 1073741902; case 35: return 1073741901; case 36: return 1073741898; case 37: return 1073741904; case 38: return 1073741906; case 39: return 1073741903; case 40: return 1073741905; case 45: return 1073741897; case 46: return 127; case 96: return 1073741922; case 97: return 1073741913; case 98: return 1073741914; case 99: return 1073741915; case 100: return 1073741916; case 101: return 1073741917; case 102: return 1073741918; case 103: return 1073741919; case 104: return 1073741920; case 105: return 1073741921; case 106: return 1073741909; case 107: return 1073741911; case 109: return 1073741910; case 110: return 1073741923; case 111: return 1073741908; case 112: return 1073741882; case 113: return 1073741883; case 114: return 1073741884; case 115: return 1073741885; case 116: return 1073741886; case 117: return 1073741887; case 118: return 1073741888; case 119: return 1073741889; case 120: return 1073741890; case 121: return 1073741891; case 122: return 1073741892; case 123: return 1073741893; case 124: return 1073741928; case 125: return 1073741929; case 126: return 1073741930; case 144: return 1073741907; case 186: return 59; case 187: return 61; case 188: return 44; case 189: return 45; case 190: return 46; case 191: return 47; case 192: return 96; case 219: return 91; case 220: return 92; case 221: return 93; case 222: return 39 } return e }, create: function(e) {}, exec: function() { window.addEventListener("keydown", $bind(this, this.handleKeyEvent), !1), window.addEventListener("keyup", $bind(this, this.handleKeyEvent), !1), window.addEventListener("focus", $bind(this, this.handleWindowEvent), !1), window.addEventListener("blur", $bind(this, this.handleWindowEvent), !1), window.addEventListener("resize", $bind(this, this.handleWindowEvent), !1), window.addEventListener("beforeunload", $bind(this, this.handleWindowEvent), !1), CanvasRenderingContext2D.prototype.isPointInStroke || (CanvasRenderingContext2D.prototype.isPointInStroke = function(e, t, n) { return !1 } ), CanvasRenderingContext2D.prototype.isPointInPath || (CanvasRenderingContext2D.prototype.isPointInPath = function(e, t, n) { return !1 } ); for (var e = 0, t = ["ms", "moz", "webkit", "o"], n = 0; n < t.length && !window.requestAnimationFrame; ++n) window.requestAnimationFrame = window[t[n] + "RequestAnimationFrame"], window.cancelAnimationFrame = window[t[n] + "CancelAnimationFrame"] || window[t[n] + "CancelRequestAnimationFrame"]; return window.requestAnimationFrame || (window.requestAnimationFrame = function(t, n) { var i = (new Date).getTime() , l = Math.max(0, 16 - (i - e)) , a = window.setTimeout(function() { t(i + l) }, l); return e = i + l, a } ), window.cancelAnimationFrame || (window.cancelAnimationFrame = function(e) { clearTimeout(e) } ), window.requestAnimFrame = window.requestAnimationFrame, this.lastUpdate = (new Date).getTime(), this.handleApplicationEvent(), 0 }, exit: function() {}, getFrameRate: function() { return this.framePeriod < 0 ? 60 : 1e3 == this.framePeriod ? 0 : 1e3 / this.framePeriod }, handleApplicationEvent: function(e) { this.updateGameDevices(), this.currentUpdate = (new Date).getTime(), this.currentUpdate >= this.nextUpdate && (this.deltaTime = this.currentUpdate - this.lastUpdate, this.parent.onUpdate.dispatch(0 | this.deltaTime), null != this.parent.__renderers[0] && (this.parent.__renderers[0].onRender.dispatch(), this.parent.__renderers[0].flip()), this.framePeriod < 0 ? (this.nextUpdate = this.currentUpdate, this.nextUpdate = this.currentUpdate) : this.nextUpdate = this.currentUpdate + this.framePeriod, this.lastUpdate = this.currentUpdate), window.requestAnimationFrame($bind(this, this.handleApplicationEvent)) }, handleKeyEvent: function(e) { if (null != this.parent.__windows[0]) { var t, n = this.convertKeyCode(null != e.keyCode ? e.keyCode : e.which); t = (e.shiftKey ? 3 : 0) | (e.ctrlKey ? 192 : 0) | (e.altKey ? 768 : 0) | (e.metaKey ? 3072 : 0), "keydown" == e.type ? (this.parent.__windows[0].onKeyDown.dispatch(n, t), this.parent.__windows[0].onKeyDown.canceled && e.preventDefault()) : (this.parent.__windows[0].onKeyUp.dispatch(n, t), this.parent.__windows[0].onKeyUp.canceled && e.preventDefault()) } }, handleWindowEvent: function(e) { if (null != this.parent.__windows[0]) switch (e.type) { case "focus": this.parent.__windows[0].onFocusIn.dispatch(), this.parent.__windows[0].onActivate.dispatch(); break; case "blur": this.parent.__windows[0].onFocusOut.dispatch(), this.parent.__windows[0].onDeactivate.dispatch(); break; case "resize": var t = this.parent.__windows[0].__width , n = this.parent.__windows[0].__height; this.parent.__windows[0].backend.handleResize(), this.parent.__windows[0].__width == t && this.parent.__windows[0].__height == n || this.parent.__windows[0].onResize.dispatch(this.parent.__windows[0].__width, this.parent.__windows[0].__height); break; case "beforeunload": this.parent.__windows[0].onClose.dispatch() } }, setFrameRate: function(e) { return this.framePeriod = e >= 60 ? -1 : e > 0 ? 1e3 / e : 1e3, e }, updateGameDevices: function() { var e = lime_ui_Joystick.__getDeviceData(); if (null != e) for (var t, n, i, l, a, s = 0, r = e.length; s < r; ) { if (null != (l = e[t = s++])) { if (!this.gameDeviceCache.h.hasOwnProperty(t)) { (a = new lime__$backend_html5_GameDeviceData).id = t, a.connected = l.connected; for (var _ = 0, o = l.buttons.length; _ < o; ) { var p = _++; a.buttons.push(l.buttons[p].value) } for (var h = 0, d = l.axes.length; h < d; ) { var u = h++; a.axes.push(l.axes[u]) } "standard" == l.mapping && (a.isGamepad = !0), this.gameDeviceCache.h[t] = a, l.connected && (lime_ui_Joystick.__connect(t), a.isGamepad && lime_ui_Gamepad.__connect(t)) } if (a = this.gameDeviceCache.h[t], i = lime_ui_Joystick.devices.h[t], n = lime_ui_Gamepad.devices.h[t], l.connected) { for (var c, m, U = 0, Q = l.buttons.length; U < Q; ) { var N = U++; if ((m = l.buttons[N].value) != a.buttons[N]) { if (6 == N) i.onAxisMove.dispatch(l.axes.length, m), null != n && n.onAxisMove.dispatch(4, m); else if (7 == N) i.onAxisMove.dispatch(l.axes.length + 1, m), null != n && n.onAxisMove.dispatch(5, m); else if (m > 0 ? i.onButtonDown.dispatch(N) : i.onButtonUp.dispatch(N), null != n) { switch (N) { case 0: c = 0; break; case 1: c = 1; break; case 2: c = 2; break; case 3: c = 3; break; case 4: c = 9; break; case 5: c = 10; break; case 8: c = 4; break; case 9: c = 6; break; case 10: c = 7; break; case 11: c = 8; break; case 12: c = 11; break; case 13: c = 12; break; case 14: c = 13; break; case 15: c = 14; break; case 16: c = 5; break; default: continue } m > 0 ? n.onButtonDown.dispatch(c) : n.onButtonUp.dispatch(c) } a.buttons[N] = m } } for (var F = 0, Z = l.axes.length; F < Z; ) { var f = F++; l.axes[f] != a.axes[f] && (i.onAxisMove.dispatch(f, l.axes[f]), null != n && n.onAxisMove.dispatch(f, l.axes[f]), a.axes[f] = l.axes[f]) } } else a.connected && (a.connected = !1, lime_ui_Joystick.__disconnect(t), lime_ui_Gamepad.__disconnect(t)) } } }, __class__: lime__$backend_html5_HTML5Application }; var lime__$backend_html5_GameDeviceData = function() { this.connected = !0, this.buttons = [], this.axes = [] }; $hxClasses["lime._backend.html5.GameDeviceData"] = lime__$backend_html5_GameDeviceData, lime__$backend_html5_GameDeviceData.__name__ = ["lime", "_backend", "html5", "GameDeviceData"], lime__$backend_html5_GameDeviceData.prototype = { connected: null, id: null, isGamepad: null, buttons: null, axes: null, __class__: lime__$backend_html5_GameDeviceData }; var lime__$backend_html5_HTML5AudioSource = function() {}; $hxClasses["lime._backend.html5.HTML5AudioSource"] = lime__$backend_html5_HTML5AudioSource, lime__$backend_html5_HTML5AudioSource.__name__ = ["lime", "_backend", "html5", "HTML5AudioSource"], lime__$backend_html5_HTML5AudioSource.prototype = { completed: null, gain: null, id: null, length: null, loops: null, parent: null, playing: null, position: null, dispose: function() {}, play: function() { if (!this.playing && null != this.parent.buffer) { this.playing = !0; var e = this.getCurrentTime(); this.completed = !1; var t = this.parent.buffer.__srcHowl._volume; this.parent.buffer.__srcHowl._volume = this.parent.get_gain(), this.id = this.parent.buffer.__srcHowl.play(), this.parent.buffer.__srcHowl._volume = t, this.setPosition(this.parent.get_position()), this.parent.buffer.__srcHowl.on("end", $bind(this, this.howl_onEnd), this.id), this.setCurrentTime(e) } }, stop: function() { this.playing = !1, this.parent.buffer.__srcHowl.stop(this.id) }, howl_onEnd: function() { if (this.playing = !1, this.loops > 0) return this.loops--, this.stop(), void this.play(); this.parent.buffer.__srcHowl.stop(this.id), this.completed = !0, this.parent.onComplete.dispatch() }, getCurrentTime: function() { if (-1 == this.id) return 0; if (this.completed) return this.getLength(); var e = Std.int(1e3 * this.parent.buffer.__srcHowl.seek(this.id)) - this.parent.offset; return e < 0 ? 0 : e }, setCurrentTime: function(e) { if (null != this.parent.buffer) { var t = (e + this.parent.offset) / 1e3; t < 0 && (t = 0), this.parent.buffer.__srcHowl.seek(t, this.id) } return e }, getGain: function() { return this.gain }, setGain: function(e) { return null != this.parent.buffer && this.parent.buffer.__srcHowl.volume(e, this.id), this.gain = e }, getLength: function() { return 0 != this.length ? this.length : Std.int(1e3 * this.parent.buffer.__srcHowl.duration()) }, getPosition: function() { return this.position }, setPosition: function(e) { return this.position.x = e.x, this.position.y = e.y, this.position.z = e.z, this.position.w = e.w, this.position }, __class__: lime__$backend_html5_HTML5AudioSource }; var lime__$backend_html5_HTML5HTTPRequest = function() {}; $hxClasses["lime._backend.html5.HTML5HTTPRequest"] = lime__$backend_html5_HTML5HTTPRequest, lime__$backend_html5_HTML5HTTPRequest.__name__ = ["lime", "_backend", "html5", "HTML5HTTPRequest"], lime__$backend_html5_HTML5HTTPRequest.prototype = { binary: null, parent: null, request: null, init: function(e) { this.parent = e }, load: function(e, t, n) { this.request = new XMLHttpRequest, this.request.addEventListener("progress", t, !1), this.request.onreadystatechange = n; var i = ""; if (null == this.parent.data) { for (var l = this.parent.formData.keys(); l.hasNext(); ) { var a = l.next(); i.length > 0 && (i += "&"), i += encodeURIComponent(a) + "=" + StringTools.urlEncode(Std.string(this.parent.formData.get(a))) } "GET" == this.parent.method && "" != i && (e.indexOf("?") > -1 ? e += "&" + i : e += "?" + i, i = "") } this.request.open(Std.string(this.parent.method), e, !0), this.parent.timeout > 0 && (this.request.timeout = this.parent.timeout), this.binary && (this.request.responseType = "arraybuffer"); for (var s = !1, r = 0, _ = this.parent.headers; r < _.length; ) { var o = _[r]; ++r, "Content-Type" == o.name && (s = !0), this.request.setRequestHeader(o.name, o.value) } s || this.request.setRequestHeader("Content-Type", this.parent.contentType), null != this.parent.data ? this.request.send(this.parent.data.b.bufferValue) : this.request.send(i) }, loadData: function(e) { var t = this , n = new lime_app_Promise; return this.binary = !0, this.load(e, function(e) { n.progress(e.loaded, e.total) }, function(e) { if (4 == t.request.readyState) { var i; null != t.request.status && t.request.status >= 200 && t.request.status <= 400 ? (i = "" == t.request.responseType ? haxe_io_Bytes.ofString(t.request.responseText) : haxe_io_Bytes.ofData(t.request.response), t.processResponse(), n.complete(i)) : (t.processResponse(), n.error(t.request.status)), t.request = null } }), n.future }, processResponse: function() { if (this.parent.enableResponseHeaders) { var e, t; this.parent.responseHeaders = []; for (var n = 0, i = this.request.getAllResponseHeaders().split("\n"); n < i.length; ) { var l = i[n]; ++n, e = StringTools.trim((void 0, s = l.indexOf(":"), HxOverrides.substr(l, 0, s))), t = StringTools.trim((void 0, a = l.indexOf(":") + 1, HxOverrides.substr(l, a, null))), "" != e && this.parent.responseHeaders.push(new lime_net_HTTPRequestHeader(e,t)) } } var a, s; this.parent.responseStatus = this.request.status }, __class__: lime__$backend_html5_HTML5HTTPRequest }; var lime__$backend_html5_HTML5Mouse = function() {}; $hxClasses["lime._backend.html5.HTML5Mouse"] = lime__$backend_html5_HTML5Mouse, lime__$backend_html5_HTML5Mouse.__name__ = ["lime", "_backend", "html5", "HTML5Mouse"], lime__$backend_html5_HTML5Mouse.set_cursor = function(e) { if (lime__$backend_html5_HTML5Mouse.__cursor != e) { if (!lime__$backend_html5_HTML5Mouse.__hidden) for (var t = 0, n = lime_app_Application.current.__windows; t < n.length; ) { var i = n[t]; switch (++t, e[1]) { case 0: i.backend.element.style.cursor = "default"; break; case 1: i.backend.element.style.cursor = "crosshair"; break; case 3: i.backend.element.style.cursor = "move"; break; case 4: i.backend.element.style.cursor = "pointer"; break; case 5: i.backend.element.style.cursor = "nesw-resize"; break; case 6: i.backend.element.style.cursor = "ns-resize"; break; case 7: i.backend.element.style.cursor = "nwse-resize"; break; case 8: i.backend.element.style.cursor = "ew-resize"; break; case 9: i.backend.element.style.cursor = "text"; break; case 10: case 11: i.backend.element.style.cursor = "wait"; break; default: i.backend.element.style.cursor = "auto" } } lime__$backend_html5_HTML5Mouse.__cursor = e } return lime__$backend_html5_HTML5Mouse.__cursor } ; var lime__$backend_html5_HTML5Renderer = function(e) { this.parent = e }; $hxClasses["lime._backend.html5.HTML5Renderer"] = lime__$backend_html5_HTML5Renderer, lime__$backend_html5_HTML5Renderer.__name__ = ["lime", "_backend", "html5", "HTML5Renderer"], lime__$backend_html5_HTML5Renderer.prototype = { parent: null, create: function() { switch (this.createContext(), this.parent.context[1]) { case 0: this.parent.window.backend.canvas.addEventListener("webglcontextlost", $bind(this, this.handleEvent), !1), this.parent.window.backend.canvas.addEventListener("webglcontextrestored", $bind(this, this.handleEvent), !1) } }, createContext: function() { if (null != this.parent.window.backend.div) this.parent.context = lime_graphics_RenderContext.DOM(this.parent.window.backend.div), this.parent.type = lime_graphics_RendererType.DOM; else if (null != this.parent.window.backend.canvas) { this.parent.context = lime_graphics_RenderContext.CANVAS(this.parent.window.backend.canvas.getContext("2d")), this.parent.type = lime_graphics_RendererType.CANVAS } }, flip: function() {}, handleEvent: function(e) { switch (e.type) { case "webglcontextlost": e.preventDefault(), this.parent.context = null, this.parent.onContextLost.dispatch(); break; case "webglcontextrestored": this.createContext(), this.parent.onContextRestored.dispatch(this.parent.context) } }, __class__: lime__$backend_html5_HTML5Renderer }; var lime__$backend_html5_HTML5Window = function(e) { this.unusedTouchesPool = new List, this.scale = 1, this.currentTouches = new haxe_ds_IntMap, this.parent = e, null != e.config && Object.prototype.hasOwnProperty.call(e.config, "element") && (this.element = e.config.element), null != e.config && Object.prototype.hasOwnProperty.call(e.config, "allowHighDPI") && e.config.allowHighDPI && (this.scale = window.devicePixelRatio), e.__scale = this.scale, this.cacheMouseX = 0, this.cacheMouseY = 0 }; $hxClasses["lime._backend.html5.HTML5Window"] = lime__$backend_html5_HTML5Window, lime__$backend_html5_HTML5Window.__name__ = ["lime", "_backend", "html5", "HTML5Window"], lime__$backend_html5_HTML5Window.prototype = { canvas: null, div: null, element: null, cacheMouseX: null, cacheMouseY: null, currentTouches: null, enableTextEvents: null, parent: null, primaryTouch: null, scale: null, setHeight: null, setWidth: null, unusedTouchesPool: null, close: function() { this.parent.application.removeWindow(this.parent) }, create: function(e) { if (this.setWidth = this.parent.__width, this.setHeight = this.parent.__height, this.parent.id = lime__$backend_html5_HTML5Window.windowID++, js_Boot.__instanceof(this.element, HTMLCanvasElement) ? this.canvas = this.element : this.canvas = window.document.createElement("canvas"), null != this.canvas) { var t = this.canvas.style; t.setProperty("-webkit-transform", "translateZ(0)", null), t.setProperty("transform", "translateZ(0)", null) } else if (null != this.div) { var n = this.div.style; n.setProperty("-webkit-transform", "translate3D(0,0,0)", null), n.setProperty("transform", "translate3D(0,0,0)", null), n.position = "relative", n.overflow = "hidden", n.setProperty("-webkit-user-select", "none", null), n.setProperty("-moz-user-select", "none", null), n.setProperty("-ms-user-select", "none", null), n.setProperty("-o-user-select", "none", null) } if (0 == this.parent.__width && 0 == this.parent.__height && (null != this.element ? (this.parent.set_width(this.element.clientWidth), this.parent.set_height(this.element.clientHeight)) : (this.parent.set_width(window.innerWidth), this.parent.set_height(window.innerHeight)), this.parent.set_fullscreen(!0)), null != this.canvas ? (this.canvas.width = Math.round(this.parent.__width * this.scale), this.canvas.height = Math.round(this.parent.__height * this.scale), this.canvas.style.width = this.parent.__width + "px", this.canvas.style.height = this.parent.__height + "px") : (this.div.style.width = this.parent.__width + "px", this.div.style.height = this.parent.__height + "px"), this.handleResize(), null != this.element) { null != this.canvas ? this.element != this.canvas && this.element.appendChild(this.canvas) : this.element.appendChild(this.div); for (var i = ["mousedown", "mouseenter", "mouseleave", "mousemove", "mouseup", "wheel"], l = 0; l < i.length; ) { var a = i[l]; ++l, this.element.addEventListener(a, $bind(this, this.handleMouseEvent), !0) } window.document.addEventListener("dragstart", function(e) { return "img" != e.target.nodeName.toLowerCase() || (e.preventDefault(), !1) }, !1), this.element.addEventListener("contextmenu", $bind(this, this.handleContextMenuEvent), !0), this.element.addEventListener("touchstart", $bind(this, this.handleTouchEvent), !0), this.element.addEventListener("touchmove", $bind(this, this.handleTouchEvent), !0), this.element.addEventListener("touchend", $bind(this, this.handleTouchEvent), !0), this.element.addEventListener("gamepadconnected", $bind(this, this.handleGamepadEvent), !0), this.element.addEventListener("gamepaddisconnected", $bind(this, this.handleGamepadEvent), !0) } }, handleContextMenuEvent: function(e) { this.parent.onMouseUp.canceled && e.preventDefault() }, handleFocusEvent: function(e) { this.enableTextEvents && haxe_Timer.delay(function() { lime__$backend_html5_HTML5Window.textInput.focus() }, 20) }, handleGamepadEvent: function(e) { switch (e.type) { case "gamepadconnected": lime_ui_Joystick.__connect(e.gamepad.index), "standard" == e.gamepad.mapping && lime_ui_Gamepad.__connect(e.gamepad.index); break; case "gamepaddisconnected": lime_ui_Joystick.__disconnect(e.gamepad.index), lime_ui_Gamepad.__disconnect(e.gamepad.index) } }, handleCutOrCopyEvent: function(e) { e.clipboardData.setData("text/plain", lime_system_Clipboard.get_text()), e.preventDefault() }, handlePasteEvent: function(e) { if (e.clipboardData.types.indexOf("text/plain") > -1) { var t = lime_system_Clipboard.set_text(e.clipboardData.getData("text/plain")); this.parent.onTextInput.dispatch(t), e.preventDefault() } }, handleInputEvent: function(e) { lime__$backend_html5_HTML5Window.textInput.value != lime__$backend_html5_HTML5Window.dummyCharacter && (lime__$backend_html5_HTML5Window.textInput.value.charAt(0) == lime__$backend_html5_HTML5Window.dummyCharacter ? this.parent.onTextInput.dispatch(HxOverrides.substr(lime__$backend_html5_HTML5Window.textInput.value, 1, null)) : this.parent.onTextInput.dispatch(lime__$backend_html5_HTML5Window.textInput.value), lime__$backend_html5_HTML5Window.textInput.value = lime__$backend_html5_HTML5Window.dummyCharacter) }, handleMouseEvent: function(e) { var t = 0 , n = 0; if ("wheel" != e.type) { if (null != this.element) if (null != this.canvas) { var i = this.canvas.getBoundingClientRect(); t = (e.clientX - i.left) * (this.parent.__width / i.width), n = (e.clientY - i.top) * (this.parent.__height / i.height) } else if (null != this.div) { var l = this.div.getBoundingClientRect(); t = e.clientX - l.left, n = e.clientY - l.top } else { var a = this.element.getBoundingClientRect(); t = (e.clientX - a.left) * (this.parent.__width / a.width), n = (e.clientY - a.top) * (this.parent.__height / a.height) } else t = e.clientX, n = e.clientY; switch (e.type) { case "mousedown": this.parent.onMouseDown.dispatch(t, n, e.button), this.parent.onMouseDown.canceled && e.preventDefault(); break; case "mouseenter": e.target == this.element && (this.parent.onEnter.dispatch(), this.parent.onEnter.canceled && e.preventDefault()); break; case "mouseleave": e.target == this.element && (this.parent.onLeave.dispatch(), this.parent.onLeave.canceled && e.preventDefault()); break; case "mouseup": this.parent.onMouseUp.dispatch(t, n, e.button), this.parent.onMouseUp.canceled && e.preventDefault(); break; case "mousemove": t == this.cacheMouseX && n == this.cacheMouseY || (this.parent.onMouseMove.dispatch(t, n), this.parent.onMouseMoveRelative.dispatch(t - this.cacheMouseX, n - this.cacheMouseY), (this.parent.onMouseMove.canceled || this.parent.onMouseMoveRelative.canceled) && e.preventDefault()) } this.cacheMouseX = t, this.cacheMouseY = n } else this.parent.onMouseWheel.dispatch(e.deltaX, -e.deltaY), this.parent.onMouseWheel.canceled && e.preventDefault() }, handleResize: function() { this.primaryTouch = null; var e = this.parent.__fullscreen || 0 == this.setWidth && 0 == this.setHeight; if (null != this.element && (null == this.div || null != this.div && e)) if (e) this.parent.__width == this.element.clientWidth && this.parent.__height == this.element.clientHeight || (this.parent.set_width(this.element.clientWidth), this.parent.set_height(this.element.clientHeight), null != this.canvas ? this.element != this.canvas && (this.canvas.width = Math.round(this.element.clientWidth * this.scale), this.canvas.height = Math.round(this.element.clientHeight * this.scale), this.canvas.style.width = this.element.clientWidth + "px", this.canvas.style.height = this.element.clientHeight + "px") : (this.div.style.width = this.element.clientWidth + "px", this.div.style.height = this.element.clientHeight + "px")); else { var t, n; t = 0 != this.setWidth ? this.element.clientWidth / this.setWidth : 1, n = 0 != this.setHeight ? this.element.clientHeight / this.setHeight : 1; var i = this.element.clientWidth , l = this.element.clientHeight , a = 0 , s = 0; t < n ? (l = Math.floor(this.setHeight * t), s = Math.floor((this.element.clientHeight - l) / 2)) : (i = Math.floor(this.setWidth * n), a = Math.floor((this.element.clientWidth - i) / 2)), null != this.canvas ? this.element != this.canvas && (this.canvas.style.width = i + "px", this.canvas.style.height = l + "px", this.canvas.style.marginLeft = a + "px", this.canvas.style.marginTop = s + "px") : (this.div.style.width = i + "px", this.div.style.height = l + "px", this.div.style.marginLeft = a + "px", this.div.style.marginTop = s + "px") } }, handleTouchEvent: function(e) { e.preventDefault(); var t = null; null != this.element && (t = null != this.canvas ? this.canvas.getBoundingClientRect() : null != this.div ? this.div.getBoundingClientRect() : this.element.getBoundingClientRect()); var n = this.setWidth , i = this.setHeight; 0 != n && 0 != i || (null != t ? (n = t.width, i = t.height) : (n = 1, i = 1)); for (var l = 0, a = e.changedTouches; l < a.length; ) { var s = a[l]; ++l; var r = 0 , _ = 0; switch (null != t ? (r = (s.clientX - t.left) * (n / t.width), _ = (s.clientY - t.top) * (i / t.height)) : (r = s.clientX, _ = s.clientY), e.type) { case "touchstart": var o = this.unusedTouchesPool.pop(); null == o ? o = new lime_ui_Touch(r / n,_ / i,s.identifier,0,0,s.force,this.parent.id) : (o.x = r / n, o.y = _ / i, o.id = s.identifier, o.dx = 0, o.dy = 0, o.pressure = s.force, o.device = this.parent.id), this.currentTouches.h[s.identifier] = o, lime_ui_Touch.onStart.dispatch(o), null == this.primaryTouch && (this.primaryTouch = o), o == this.primaryTouch && this.parent.onMouseDown.dispatch(r, _, 0); break; case "touchend": var p = this.currentTouches.h[s.identifier]; if (null != p) { var h = p.x , d = p.y; p.x = r / n, p.y = _ / i, p.dx = p.x - h, p.dy = p.y - d, p.pressure = s.force, lime_ui_Touch.onEnd.dispatch(p), this.currentTouches.remove(s.identifier), this.unusedTouchesPool.add(p), p == this.primaryTouch && (this.parent.onMouseUp.dispatch(r, _, 0), this.primaryTouch = null) } break; case "touchmove": var u = this.currentTouches.h[s.identifier]; if (null != u) { var c = u.x , m = u.y; u.x = r / n, u.y = _ / i, u.dx = u.x - c, u.dy = u.y - m, u.pressure = s.force, lime_ui_Touch.onMove.dispatch(u), u == this.primaryTouch && this.parent.onMouseMove.dispatch(r, _) } } } }, resize: function(e, t) {}, setClipboard: function(e) { if (window.document.queryCommandEnabled("copy")) { var t = this.enableTextEvents; this.setEnableTextEvents(!0), this.setEnableTextEvents(!1); var n = lime__$backend_html5_HTML5Window.textInput.value; lime__$backend_html5_HTML5Window.textInput.value = e, window.document.execCommand("copy"), lime__$backend_html5_HTML5Window.textInput.value = n, this.setEnableTextEvents(t) } }, setEnableTextEvents: function(e) { return e ? (null == lime__$backend_html5_HTML5Window.textInput && (lime__$backend_html5_HTML5Window.textInput = window.document.createElement("input"), lime__$backend_html5_HTML5Window.textInput.type = "text", lime__$backend_html5_HTML5Window.textInput.style.position = "absolute", lime__$backend_html5_HTML5Window.textInput.style.opacity = "0", lime__$backend_html5_HTML5Window.textInput.style.color = "transparent", lime__$backend_html5_HTML5Window.textInput.value = lime__$backend_html5_HTML5Window.dummyCharacter, lime__$backend_html5_HTML5Window.textInput.autocapitalize = "off", lime__$backend_html5_HTML5Window.textInput.autocorrect = "off", lime__$backend_html5_HTML5Window.textInput.autocomplete = "off", lime__$backend_html5_HTML5Window.textInput.style.left = "0px", lime__$backend_html5_HTML5Window.textInput.style.top = "50%", new EReg("(iPad|iPhone|iPod).*OS 8_","gi").match(window.navigator.userAgent) ? (lime__$backend_html5_HTML5Window.textInput.style.fontSize = "0px", lime__$backend_html5_HTML5Window.textInput.style.width = "0px", lime__$backend_html5_HTML5Window.textInput.style.height = "0px") : (lime__$backend_html5_HTML5Window.textInput.style.width = "1px", lime__$backend_html5_HTML5Window.textInput.style.height = "1px"), lime__$backend_html5_HTML5Window.textInput.style.pointerEvents = "none", lime__$backend_html5_HTML5Window.textInput.style.zIndex = "-10000000", window.document.body.appendChild(lime__$backend_html5_HTML5Window.textInput)), this.enableTextEvents || (lime__$backend_html5_HTML5Window.textInput.addEventListener("input", $bind(this, this.handleInputEvent), !0), lime__$backend_html5_HTML5Window.textInput.addEventListener("blur", $bind(this, this.handleFocusEvent), !0), lime__$backend_html5_HTML5Window.textInput.addEventListener("cut", $bind(this, this.handleCutOrCopyEvent), !0), lime__$backend_html5_HTML5Window.textInput.addEventListener("copy", $bind(this, this.handleCutOrCopyEvent), !0), lime__$backend_html5_HTML5Window.textInput.addEventListener("paste", $bind(this, this.handlePasteEvent), !0)), lime__$backend_html5_HTML5Window.textInput.focus(), lime__$backend_html5_HTML5Window.textInput.select()) : null != lime__$backend_html5_HTML5Window.textInput && (lime__$backend_html5_HTML5Window.textInput.removeEventListener("input", $bind(this, this.handleInputEvent), !0), lime__$backend_html5_HTML5Window.textInput.removeEventListener("blur", $bind(this, this.handleFocusEvent), !0), lime__$backend_html5_HTML5Window.textInput.removeEventListener("cut", $bind(this, this.handleCutOrCopyEvent), !0), lime__$backend_html5_HTML5Window.textInput.removeEventListener("copy", $bind(this, this.handleCutOrCopyEvent), !0), lime__$backend_html5_HTML5Window.textInput.removeEventListener("paste", $bind(this, this.handlePasteEvent), !0), lime__$backend_html5_HTML5Window.textInput.blur()), this.enableTextEvents = e }, setFullscreen: function(e) { return !1 }, __class__: lime__$backend_html5_HTML5Window }; var lime_app_IModule = function() {}; $hxClasses["lime.app.IModule"] = lime_app_IModule, lime_app_IModule.__name__ = ["lime", "app", "IModule"], lime_app_IModule.prototype = { addRenderer: null, addWindow: null, registerModule: null, setPreloader: null, __class__: lime_app_IModule }; var lime_app_Module = function() { this.onExit = new lime_app__$Event_$Int_$Void, this.__renderers = [], this.__windows = [] }; $hxClasses["lime.app.Module"] = lime_app_Module, lime_app_Module.__name__ = ["lime", "app", "Module"], lime_app_Module.__interfaces__ = [lime_app_IModule], lime_app_Module.prototype = { onExit: null, __application: null, __preloader: null, __renderers: null, __windows: null, addRenderer: function(e) { var t, n, i, l, a, s; e.onRender.add((t = $bind(this, this.render), n = e, function() { t(n) } )), e.onContextLost.add((i = $bind(this, this.onRenderContextLost), l = e, function() { i(l) } )), e.onContextRestored.add((a = $bind(this, this.onRenderContextRestored), s = e, function(e) { a(s, e) } )), this.__renderers.push(e) }, addWindow: function(e) { var t, n, i, l, a, s, r, _, o, p, h, d, u, c, m, U, Q, N, F, Z, f, S, g, B, b, v, W, T, V, R, y, D, x, J, z, k, E, P, M, w, $, C, G, O, I, H; e.onActivate.add((t = $bind(this, this.onWindowActivate), n = e, function() { t(n) } )), e.onClose.add((i = $bind(this, this.__onWindowClose), l = e, function() { i(l) } ), !1, -1e4), e.onCreate.add((a = $bind(this, this.onWindowCreate), s = e, function() { a(s) } )), e.onDeactivate.add((r = $bind(this, this.onWindowDeactivate), _ = e, function() { r(_) } )), e.onDropFile.add((o = $bind(this, this.onWindowDropFile), p = e, function(e) { o(p, e) } )), e.onEnter.add((h = $bind(this, this.onWindowEnter), d = e, function() { h(d) } )), e.onFocusIn.add((u = $bind(this, this.onWindowFocusIn), c = e, function() { u(c) } )), e.onFocusOut.add((m = $bind(this, this.onWindowFocusOut), U = e, function() { m(U) } )), e.onFullscreen.add((Q = $bind(this, this.onWindowFullscreen), N = e, function() { Q(N) } )), e.onKeyDown.add((F = $bind(this, this.onKeyDown), Z = e, function(e, t) { F(Z, e, t) } )), e.onKeyUp.add((f = $bind(this, this.onKeyUp), S = e, function(e, t) { f(S, e, t) } )), e.onLeave.add((g = $bind(this, this.onWindowLeave), B = e, function() { g(B) } )), e.onMinimize.add((b = $bind(this, this.onWindowMinimize), v = e, function() { b(v) } )), e.onMouseDown.add((W = $bind(this, this.onMouseDown), T = e, function(e, t, n) { W(T, e, t, n) } )), e.onMouseMove.add((V = $bind(this, this.onMouseMove), R = e, function(e, t) { V(R, e, t) } )), e.onMouseMoveRelative.add((y = $bind(this, this.onMouseMoveRelative), D = e, function(e, t) { y(D, e, t) } )), e.onMouseUp.add((x = $bind(this, this.onMouseUp), J = e, function(e, t, n) { x(J, e, t, n) } )), e.onMouseWheel.add((z = $bind(this, this.onMouseWheel), k = e, function(e, t) { z(k, e, t) } )), e.onMove.add((E = $bind(this, this.onWindowMove), P = e, function(e, t) { E(P, e, t) } )), e.onResize.add((M = $bind(this, this.onWindowResize), w = e, function(e, t) { M(w, e, t) } )), e.onRestore.add(($ = $bind(this, this.onWindowRestore), C = e, function() { $(C) } )), e.onTextEdit.add((G = $bind(this, this.onTextEdit), O = e, function(e, t, n) { G(O, e, t, n) } )), e.onTextInput.add((I = $bind(this, this.onTextInput), H = e, function(e) { I(H, e) } )), e.id > -1 && this.onWindowCreate(e), this.__windows.push(e) }, registerModule: function(e) { this.__application = e, e.onExit.add($bind(this, this.onModuleExit), !1, 0), e.onUpdate.add($bind(this, this.update)); for (var t = lime_ui_Gamepad.devices.iterator(); t.hasNext(); ) { var n = t.next(); this.__onGamepadConnect(n) } lime_ui_Gamepad.onConnect.add($bind(this, this.__onGamepadConnect)); for (var i = lime_ui_Joystick.devices.iterator(); i.hasNext(); ) { var l = i.next(); this.__onJoystickConnect(l) } lime_ui_Joystick.onConnect.add($bind(this, this.__onJoystickConnect)), lime_ui_Touch.onStart.add($bind(this, this.onTouchStart)), lime_ui_Touch.onMove.add($bind(this, this.onTouchMove)), lime_ui_Touch.onEnd.add($bind(this, this.onTouchEnd)) }, removeRenderer: function(e) { null != e && HxOverrides.indexOf(this.__renderers, e, 0) > -1 && HxOverrides.remove(this.__renderers, e) }, setPreloader: function(e) { null != this.__preloader && (this.__preloader.onProgress.remove($bind(this, this.onPreloadProgress)), this.__preloader.onComplete.remove($bind(this, this.onPreloadComplete))), this.__preloader = e, null == e || e.complete ? this.onPreloadComplete() : (e.onProgress.add($bind(this, this.onPreloadProgress)), e.onComplete.add($bind(this, this.onPreloadComplete))) }, onGamepadAxisMove: function(e, t, n) {}, onGamepadButtonDown: function(e, t) {}, onGamepadButtonUp: function(e, t) {}, onGamepadConnect: function(e) {}, onGamepadDisconnect: function(e) {}, onJoystickAxisMove: function(e, t, n) {}, onJoystickButtonDown: function(e, t) {}, onJoystickButtonUp: function(e, t) {}, onJoystickConnect: function(e) {}, onJoystickDisconnect: function(e) {}, onJoystickHatMove: function(e, t, n) {}, onJoystickTrackballMove: function(e, t, n) {}, onKeyDown: function(e, t, n) {}, onKeyUp: function(e, t, n) {}, onModuleExit: function(e) {}, onMouseDown: function(e, t, n, i) {}, onMouseMove: function(e, t, n) {}, onMouseMoveRelative: function(e, t, n) {}, onMouseUp: function(e, t, n, i) {}, onMouseWheel: function(e, t, n) {}, onPreloadComplete: function() {}, onPreloadProgress: function(e, t) {}, onRenderContextLost: function(e) {}, onRenderContextRestored: function(e, t) {}, onTextEdit: function(e, t, n, i) {}, onTextInput: function(e, t) {}, onTouchEnd: function(e) {}, onTouchMove: function(e) {}, onTouchStart: function(e) {}, onWindowActivate: function(e) {}, onWindowClose: function(e) {}, onWindowCreate: function(e) {}, onWindowDeactivate: function(e) {}, onWindowDropFile: function(e, t) {}, onWindowEnter: function(e) {}, onWindowFocusIn: function(e) {}, onWindowFocusOut: function(e) {}, onWindowFullscreen: function(e) {}, onWindowLeave: function(e) {}, onWindowMove: function(e, t, n) {}, onWindowMinimize: function(e) {}, onWindowResize: function(e, t, n) {}, onWindowRestore: function(e) {}, render: function(e) {}, update: function(e) {}, __onGamepadConnect: function(e) { var t, n, i, l, a, s, r, _; this.onGamepadConnect(e), e.onAxisMove.add((t = $bind(this, this.onGamepadAxisMove), n = e, function(e, i) { t(n, e, i) } )), e.onButtonDown.add((i = $bind(this, this.onGamepadButtonDown), l = e, function(e) { i(l, e) } )), e.onButtonUp.add((a = $bind(this, this.onGamepadButtonUp), s = e, function(e) { a(s, e) } )), e.onDisconnect.add((r = $bind(this, this.onGamepadDisconnect), _ = e, function() { r(_) } )) }, __onJoystickConnect: function(e) { var t, n, i, l, a, s, r, _, o, p, h, d; this.onJoystickConnect(e), e.onAxisMove.add((t = $bind(this, this.onJoystickAxisMove), n = e, function(e, i) { t(n, e, i) } )), e.onButtonDown.add((i = $bind(this, this.onJoystickButtonDown), l = e, function(e) { i(l, e) } )), e.onButtonUp.add((a = $bind(this, this.onJoystickButtonUp), s = e, function(e) { a(s, e) } )), e.onDisconnect.add((r = $bind(this, this.onJoystickDisconnect), _ = e, function() { r(_) } )), e.onHatMove.add((o = $bind(this, this.onJoystickHatMove), p = e, function(e, t) { o(p, e, t) } )), e.onTrackballMove.add((h = $bind(this, this.onJoystickTrackballMove), d = e, function(e, t) { h(d, e, t) } )) }, __onWindowClose: function(e) { this.onWindowClose(e), HxOverrides.remove(this.__windows, e) }, __class__: lime_app_Module }; var lime_app_Application = function() { this.onUpdate = new lime_app__$Event_$Int_$Void, lime_app_Module.call(this), null == lime_app_Application.current && (lime_app_Application.current = this), this.modules = [], this.windowByID = new haxe_ds_IntMap, this.backend = new lime__$backend_html5_HTML5Application(this), this.registerModule(this) }; $hxClasses["lime.app.Application"] = lime_app_Application, lime_app_Application.__name__ = ["lime", "app", "Application"], lime_app_Application.__super__ = lime_app_Module, lime_app_Application.prototype = $extend(lime_app_Module.prototype, { config: null, modules: null, onUpdate: null, window: null, backend: null, windowByID: null, addModule: function(e) { if (e.registerModule(this), this.modules.push(e), this.__renderers.length > 0) for (var t = 0, n = this.__renderers; t < n.length; ) { var i = n[t]; ++t, e.addRenderer(i) } if (this.__windows.length > 0) for (var l = 0, a = this.__windows; l < a.length; ) { var s = a[l]; ++l, e.addWindow(s) } e.setPreloader(this.__preloader) }, addRenderer: function(e) { lime_app_Module.prototype.addRenderer.call(this, e); for (var t = 0, n = this.modules; t < n.length; ) { var i = n[t]; ++t, i.addRenderer(e) } }, createWindow: function(e) { lime_app_Module.prototype.addWindow.call(this, e); for (var t = 0, n = this.modules; t < n.length; ) { var i = n[t]; ++t, i.addWindow(e) } if (null == e.renderer) { var l = new lime_graphics_Renderer(e); this.addRenderer(l) } e.create(this), this.windowByID.h[e.id] = e, e.onCreate.dispatch() }, exec: function() { return lime_app_Application.current = this, this.backend.exec() }, onModuleExit: function(e) { this.backend.exit() }, onWindowClose: function(e) { this.removeWindow(e) }, removeWindow: function(e) { null != e && this.windowByID.h.hasOwnProperty(e.id) && (HxOverrides.remove(this.__windows, e), this.windowByID.remove(e.id), e.close(), null != e.renderer && this.removeRenderer(e.renderer), this.__windows[0] == e && (this.window = null), 0 == this.__windows.length && lime_system_System.exit(0)) }, setPreloader: function(e) { lime_app_Module.prototype.setPreloader.call(this, e); for (var t = 0, n = this.modules; t < n.length; ) { var i = n[t]; ++t, i.setPreloader(e) } }, __class__: lime_app_Application }); var lime_app_Future = function(e, t) { if (null == t && (t = !1), null != e) if (t) { var n = new lime_app_Promise; n.future = this, lime_app__$Future_FutureWork.queue({ promise: n, work: e }) } else try { this.value = e(), this.isComplete = !0 } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.error = e, this.isError = !0 } }; $hxClasses["lime.app.Future"] = lime_app_Future, lime_app_Future.__name__ = ["lime", "app", "Future"], lime_app_Future.withError = function(e) { var t = new lime_app_Future; return t.isError = !0, t.error = e, t } , lime_app_Future.withValue = function(e) { var t = new lime_app_Future; return t.isComplete = !0, t.value = e, t } , lime_app_Future.prototype = { error: null, isComplete: null, isError: null, value: null, __completeListeners: null, __errorListeners: null, __progressListeners: null, onComplete: function(e) { return null != e && (this.isComplete ? e(this.value) : this.isError || (null == this.__completeListeners && (this.__completeListeners = []), this.__completeListeners.push(e))), this }, onError: function(e) { return null != e && (this.isError ? e(this.error) : this.isComplete || (null == this.__errorListeners && (this.__errorListeners = []), this.__errorListeners.push(e))), this }, onProgress: function(e) { return null != e && (null == this.__progressListeners && (this.__progressListeners = []), this.__progressListeners.push(e)), this }, then: function(e) { if (this.isComplete) return e(this.value); if (this.isError) { var t = new lime_app_Future; return t.onError(this.error), t } var n = new lime_app_Promise; return this.onError($bind(n, n.error)), this.onProgress($bind(n, n.progress)), this.onComplete(function(t) { var i = e(t); i.onError($bind(n, n.error)), i.onComplete($bind(n, n.complete)) }), n.future }, __class__: lime_app_Future }; var lime_app__$Future_FutureWork = function() {}; $hxClasses["lime.app._Future.FutureWork"] = lime_app__$Future_FutureWork, lime_app__$Future_FutureWork.__name__ = ["lime", "app", "_Future", "FutureWork"], lime_app__$Future_FutureWork.queue = function(e) { null == lime_app__$Future_FutureWork.threadPool && (lime_app__$Future_FutureWork.threadPool = new lime_system_ThreadPool, lime_app__$Future_FutureWork.threadPool.doWork.add(lime_app__$Future_FutureWork.threadPool_doWork), lime_app__$Future_FutureWork.threadPool.onComplete.add(lime_app__$Future_FutureWork.threadPool_onComplete), lime_app__$Future_FutureWork.threadPool.onError.add(lime_app__$Future_FutureWork.threadPool_onError)), lime_app__$Future_FutureWork.threadPool.queue(e) } , lime_app__$Future_FutureWork.threadPool_doWork = function(e) { try { var t = e.work(); lime_app__$Future_FutureWork.threadPool.sendComplete({ promise: e.promise, result: t }) } catch (t) { t instanceof js__$Boot_HaxeError && (t = t.val), lime_app__$Future_FutureWork.threadPool.sendError({ promise: e.promise, error: t }) } } , lime_app__$Future_FutureWork.threadPool_onComplete = function(e) { e.promise.complete(e.result) } , lime_app__$Future_FutureWork.threadPool_onError = function(e) { e.promise.error(e.error) } ; var lime_app_Preloader = function() { this.bytesTotalCache = new haxe_ds_StringMap, this.bytesLoadedCache2 = new haxe_ds_StringMap, this.bytesLoadedCache = new haxe_ds_ObjectMap, this.onProgress = new lime_app__$Event_$Int_$Int_$Void, this.onComplete = new lime_app__$Event_$Void_$Void, this.bytesLoaded = 0, this.bytesTotal = 0, this.libraries = [], this.libraryNames = [], this.onProgress.add($bind(this, this.update)) }; $hxClasses["lime.app.Preloader"] = lime_app_Preloader, lime_app_Preloader.__name__ = ["lime", "app", "Preloader"], lime_app_Preloader.prototype = { complete: null, onComplete: null, onProgress: null, bytesLoaded: null, bytesLoadedCache: null, bytesLoadedCache2: null, bytesTotal: null, bytesTotalCache: null, initLibraryNames: null, libraries: null, libraryNames: null, loadedLibraries: null, simulateProgress: null, addLibrary: function(e) { this.libraries.push(e) }, create: function(e) {}, load: function() { for (var e = this, t = 0, n = this.libraries; t < n.length; ) { var i = n[t]; ++t, this.bytesTotal += i.bytesTotal } this.loadedLibraries = -1; for (var l = 0, a = this.libraries; l < a.length; ) { var s = [a[l]]; ++l, s[0].load().onProgress(function(t) { return function(n, i) { null == e.bytesLoadedCache.h.__keys__[t[0].__id__] ? e.bytesLoaded += n : e.bytesLoaded += n - e.bytesLoadedCache.h[t[0].__id__], e.bytesLoadedCache.set(t[0], n), e.simulateProgress || e.onProgress.dispatch(e.bytesLoaded, e.bytesTotal) } }(s)).onComplete(function(t) { return function(n) { null == e.bytesLoadedCache.h.__keys__[t[0].__id__] ? e.bytesLoaded += t[0].bytesTotal : e.bytesLoaded += t[0].bytesTotal - e.bytesLoadedCache.h[t[0].__id__], e.loadedLibraries++, e.updateProgress() } }(s)).onError(function(e) { console.log(e) }) } for (var r = 0, _ = this.libraryNames; r < _.length; ) { _[r]; ++r, this.bytesTotal += 200 } this.loadedLibraries++, this.updateProgress() }, start: function() { if(window.HideLoading){ window['uptap'].HideLoading(); window['uptap'].Login(function(t) { console.log("uptap_login_end && data = ", t) console.log("登录成功"); }); window.HideLoading = false; } this.complete || (this.complete = !0, this.onComplete.dispatch()) }, update: function(e, t) {}, updateProgress: function() { var e = this; if (this.simulateProgress || this.onProgress.dispatch(this.bytesLoaded, this.bytesTotal), this.loadedLibraries == this.libraries.length && !this.initLibraryNames) { this.initLibraryNames = !0; for (var t = 0, n = this.libraryNames; t < n.length; ) { var i = [n[t]]; ++t, lime_utils_Assets.loadLibrary(i[0]).onProgress(function(t) { return function(n, i) { i > 0 && (e.bytesTotalCache.exists(t[0]) || (e.bytesTotalCache.set(t[0], i), e.bytesTotal += i - 200), n > i && (n = i), e.bytesLoadedCache2.exists(t[0]) ? e.bytesLoaded += n - e.bytesLoadedCache2.get(t[0]) : e.bytesLoaded += n, e.bytesLoadedCache2.set(t[0], n), e.simulateProgress || e.onProgress.dispatch(e.bytesLoaded, e.bytesTotal)) } }(i)).onComplete(function(t) { return function(n) { var i = 200; e.bytesTotalCache.exists(t[0]) && (i = e.bytesTotalCache.get(t[0])), e.bytesLoadedCache2.exists(t[0]) ? e.bytesLoaded += i - e.bytesLoadedCache2.get(t[0]) : e.bytesLoaded += i, e.loadedLibraries++, e.updateProgress() } }(i)).onError(function(e) { console.log(e) }) } } this.simulateProgress || this.loadedLibraries != this.libraries.length + this.libraryNames.length || this.start() }, __class__: lime_app_Preloader }; var lime_app_Promise = function() { this.future = new lime_app_Future }; $hxClasses["lime.app.Promise"] = lime_app_Promise, lime_app_Promise.__name__ = ["lime", "app", "Promise"], lime_app_Promise.prototype = { future: null, complete: function(e) { if (!this.future.isError && (this.future.isComplete = !0, this.future.value = e, null != this.future.__completeListeners)) { for (var t = 0, n = this.future.__completeListeners; t < n.length; ) { var i = n[t]; ++t, i(e) } this.future.__completeListeners = null } return this }, completeWith: function(e) { return e.onComplete($bind(this, this.complete)), e.onError($bind(this, this.error)), e.onProgress($bind(this, this.progress)), this }, error: function(e) { if (!this.future.isComplete && (this.future.isError = !0, this.future.error = e, null != this.future.__errorListeners)) { for (var t = 0, n = this.future.__errorListeners; t < n.length; ) { var i = n[t]; ++t, i(e) } this.future.__errorListeners = null } return this }, progress: function(e, t) { if (!this.future.isError && !this.future.isComplete && null != this.future.__progressListeners) for (var n = 0, i = this.future.__progressListeners; n < i.length; ) { var l = i[n]; ++n, l(e, t) } return this }, __class__: lime_app_Promise }; var lime_app__$Event_$Dynamic_$Void = function() { this.canceled = !1, this.__listeners = [], this.__priorities = [], this.__repeat = [] }; $hxClasses["lime.app._Event_Dynamic_Void"] = lime_app__$Event_$Dynamic_$Void, lime_app__$Event_$Dynamic_$Void.__name__ = ["lime", "app", "_Event_Dynamic_Void"], lime_app__$Event_$Dynamic_$Void.prototype = { canceled: null, __repeat: null, __priorities: null, add: function(e, t, n) { null == n && (n = 0), null == t && (t = !1); for (var i = 0, l = this.__priorities.length; i < l; ) { var a = i++; if (n > this.__priorities[a]) return this.__listeners.splice(a, 0, e), this.__priorities.splice(a, 0, n), void this.__repeat.splice(a, 0, !t) } this.__listeners.push(e), this.__priorities.push(n), this.__repeat.push(!t) }, remove: function(e) { for (var t = this.__listeners.length; --t >= 0; ) Reflect.compareMethods(this.__listeners[t], e) && (this.__listeners.splice(t, 1), this.__priorities.splice(t, 1), this.__repeat.splice(t, 1)) }, __listeners: null, dispatch: function(e) { this.canceled = !1; for (var t = this.__listeners, n = this.__repeat, i = 0; i < t.length && (t[i](e), n[i] ? i++ : this.remove(t[i]), !this.canceled); ) ; }, __class__: lime_app__$Event_$Dynamic_$Void }; var lime_app__$Event_$Float_$Float_$Int_$Void = function() { this.canceled = !1, this.__listeners = [], this.__priorities = [], this.__repeat = [] }; $hxClasses["lime.app._Event_Float_Float_Int_Void"] = lime_app__$Event_$Float_$Float_$Int_$Void, lime_app__$Event_$Float_$Float_$Int_$Void.__name__ = ["lime", "app", "_Event_Float_Float_Int_Void"], lime_app__$Event_$Float_$Float_$Int_$Void.prototype = { canceled: null, __repeat: null, __priorities: null, add: function(e, t, n) { null == n && (n = 0), null == t && (t = !1); for (var i = 0, l = this.__priorities.length; i < l; ) { var a = i++; if (n > this.__priorities[a]) return this.__listeners.splice(a, 0, e), this.__priorities.splice(a, 0, n), void this.__repeat.splice(a, 0, !t) } this.__listeners.push(e), this.__priorities.push(n), this.__repeat.push(!t) }, cancel: function() { this.canceled = !0 }, remove: function(e) { for (var t = this.__listeners.length; --t >= 0; ) Reflect.compareMethods(this.__listeners[t], e) && (this.__listeners.splice(t, 1), this.__priorities.splice(t, 1), this.__repeat.splice(t, 1)) }, __listeners: null, dispatch: function(e, t, n) { this.canceled = !1; for (var i = this.__listeners, l = this.__repeat, a = 0; a < i.length && (i[a](e, t, n), l[a] ? a++ : this.remove(i[a]), !this.canceled); ) ; }, __class__: lime_app__$Event_$Float_$Float_$Int_$Void }; var lime_app__$Event_$Float_$Float_$Void = function() { this.canceled = !1, this.__listeners = [], this.__priorities = [], this.__repeat = [] }; $hxClasses["lime.app._Event_Float_Float_Void"] = lime_app__$Event_$Float_$Float_$Void, lime_app__$Event_$Float_$Float_$Void.__name__ = ["lime", "app", "_Event_Float_Float_Void"], lime_app__$Event_$Float_$Float_$Void.prototype = { canceled: null, __repeat: null, __priorities: null, add: function(e, t, n) { null == n && (n = 0), null == t && (t = !1); for (var i = 0, l = this.__priorities.length; i < l; ) { var a = i++; if (n > this.__priorities[a]) return this.__listeners.splice(a, 0, e), this.__priorities.splice(a, 0, n), void this.__repeat.splice(a, 0, !t) } this.__listeners.push(e), this.__priorities.push(n), this.__repeat.push(!t) }, remove: function(e) { for (var t = this.__listeners.length; --t >= 0; ) Reflect.compareMethods(this.__listeners[t], e) && (this.__listeners.splice(t, 1), this.__priorities.splice(t, 1), this.__repeat.splice(t, 1)) }, __listeners: null, dispatch: function(e, t) { this.canceled = !1; for (var n = this.__listeners, i = this.__repeat, l = 0; l < n.length && (n[l](e, t), i[l] ? l++ : this.remove(n[l]), !this.canceled); ) ; }, __class__: lime_app__$Event_$Float_$Float_$Void }; var lime_app__$Event_$Int_$Float_$Void = function() { this.canceled = !1, this.__listeners = [], this.__priorities = [], this.__repeat = [] }; $hxClasses["lime.app._Event_Int_Float_Void"] = lime_app__$Event_$Int_$Float_$Void, lime_app__$Event_$Int_$Float_$Void.__name__ = ["lime", "app", "_Event_Int_Float_Void"], lime_app__$Event_$Int_$Float_$Void.prototype = { canceled: null, __repeat: null, __priorities: null, add: function(e, t, n) { null == n && (n = 0), null == t && (t = !1); for (var i = 0, l = this.__priorities.length; i < l; ) { var a = i++; if (n > this.__priorities[a]) return this.__listeners.splice(a, 0, e), this.__priorities.splice(a, 0, n), void this.__repeat.splice(a, 0, !t) } this.__listeners.push(e), this.__priorities.push(n), this.__repeat.push(!t) }, remove: function(e) { for (var t = this.__listeners.length; --t >= 0; ) Reflect.compareMethods(this.__listeners[t], e) && (this.__listeners.splice(t, 1), this.__priorities.splice(t, 1), this.__repeat.splice(t, 1)) }, __listeners: null, dispatch: function(e, t) { this.canceled = !1; for (var n = this.__listeners, i = this.__repeat, l = 0; l < n.length && (n[l](e, t), i[l] ? l++ : this.remove(n[l]), !this.canceled); ) ; }, __class__: lime_app__$Event_$Int_$Float_$Void }; var lime_app__$Event_$Int_$Int_$Void = function() { this.canceled = !1, this.__listeners = [], this.__priorities = [], this.__repeat = [] }; $hxClasses["lime.app._Event_Int_Int_Void"] = lime_app__$Event_$Int_$Int_$Void, lime_app__$Event_$Int_$Int_$Void.__name__ = ["lime", "app", "_Event_Int_Int_Void"], lime_app__$Event_$Int_$Int_$Void.prototype = { canceled: null, __repeat: null, __priorities: null, add: function(e, t, n) { null == n && (n = 0), null == t && (t = !1); for (var i = 0, l = this.__priorities.length; i < l; ) { var a = i++; if (n > this.__priorities[a]) return this.__listeners.splice(a, 0, e), this.__priorities.splice(a, 0, n), void this.__repeat.splice(a, 0, !t) } this.__listeners.push(e), this.__priorities.push(n), this.__repeat.push(!t) }, remove: function(e) { for (var t = this.__listeners.length; --t >= 0; ) Reflect.compareMethods(this.__listeners[t], e) && (this.__listeners.splice(t, 1), this.__priorities.splice(t, 1), this.__repeat.splice(t, 1)) }, __listeners: null, dispatch: function(e, t) { this.canceled = !1; for (var n = this.__listeners, i = this.__repeat, l = 0; l < n.length && (n[l](e, t), i[l] ? l++ : this.remove(n[l]), !this.canceled); ) ; }, __class__: lime_app__$Event_$Int_$Int_$Void }; var lime_app__$Event_$Int_$Void = function() { this.canceled = !1, this.__listeners = [], this.__priorities = [], this.__repeat = [] }; $hxClasses["lime.app._Event_Int_Void"] = lime_app__$Event_$Int_$Void, lime_app__$Event_$Int_$Void.__name__ = ["lime", "app", "_Event_Int_Void"], lime_app__$Event_$Int_$Void.prototype = { canceled: null, __repeat: null, __priorities: null, add: function(e, t, n) { null == n && (n = 0), null == t && (t = !1); for (var i = 0, l = this.__priorities.length; i < l; ) { var a = i++; if (n > this.__priorities[a]) return this.__listeners.splice(a, 0, e), this.__priorities.splice(a, 0, n), void this.__repeat.splice(a, 0, !t) } this.__listeners.push(e), this.__priorities.push(n), this.__repeat.push(!t) }, remove: function(e) { for (var t = this.__listeners.length; --t >= 0; ) Reflect.compareMethods(this.__listeners[t], e) && (this.__listeners.splice(t, 1), this.__priorities.splice(t, 1), this.__repeat.splice(t, 1)) }, __listeners: null, dispatch: function(e) { this.canceled = !1; for (var t = this.__listeners, n = this.__repeat, i = 0; i < t.length && (t[i](e), n[i] ? i++ : this.remove(t[i]), !this.canceled); ) ; }, __class__: lime_app__$Event_$Int_$Void }; var lime_app__$Event_$Int_$lime_$ui_$JoystickHatPosition_$Void = function() { this.canceled = !1, this.__listeners = [], this.__priorities = [], this.__repeat = [] }; $hxClasses["lime.app._Event_Int_lime_ui_JoystickHatPosition_Void"] = lime_app__$Event_$Int_$lime_$ui_$JoystickHatPosition_$Void, lime_app__$Event_$Int_$lime_$ui_$JoystickHatPosition_$Void.__name__ = ["lime", "app", "_Event_Int_lime_ui_JoystickHatPosition_Void"], lime_app__$Event_$Int_$lime_$ui_$JoystickHatPosition_$Void.prototype = { canceled: null, __repeat: null, __priorities: null, add: function(e, t, n) { null == n && (n = 0), null == t && (t = !1); for (var i = 0, l = this.__priorities.length; i < l; ) { var a = i++; if (n > this.__priorities[a]) return this.__listeners.splice(a, 0, e), this.__priorities.splice(a, 0, n), void this.__repeat.splice(a, 0, !t) } this.__listeners.push(e), this.__priorities.push(n), this.__repeat.push(!t) }, __listeners: null, __class__: lime_app__$Event_$Int_$lime_$ui_$JoystickHatPosition_$Void }; var lime_app__$Event_$String_$Int_$Int_$Void = function() { this.canceled = !1, this.__listeners = [], this.__priorities = [], this.__repeat = [] }; $hxClasses["lime.app._Event_String_Int_Int_Void"] = lime_app__$Event_$String_$Int_$Int_$Void, lime_app__$Event_$String_$Int_$Int_$Void.__name__ = ["lime", "app", "_Event_String_Int_Int_Void"], lime_app__$Event_$String_$Int_$Int_$Void.prototype = { canceled: null, __repeat: null, __priorities: null, add: function(e, t, n) { null == n && (n = 0), null == t && (t = !1); for (var i = 0, l = this.__priorities.length; i < l; ) { var a = i++; if (n > this.__priorities[a]) return this.__listeners.splice(a, 0, e), this.__priorities.splice(a, 0, n), void this.__repeat.splice(a, 0, !t) } this.__listeners.push(e), this.__priorities.push(n), this.__repeat.push(!t) }, __listeners: null, __class__: lime_app__$Event_$String_$Int_$Int_$Void }; var lime_app__$Event_$String_$Void = function() { this.canceled = !1, this.__listeners = [], this.__priorities = [], this.__repeat = [] }; $hxClasses["lime.app._Event_String_Void"] = lime_app__$Event_$String_$Void, lime_app__$Event_$String_$Void.__name__ = ["lime", "app", "_Event_String_Void"], lime_app__$Event_$String_$Void.prototype = { canceled: null, __repeat: null, __priorities: null, add: function(e, t, n) { null == n && (n = 0), null == t && (t = !1); for (var i = 0, l = this.__priorities.length; i < l; ) { var a = i++; if (n > this.__priorities[a]) return this.__listeners.splice(a, 0, e), this.__priorities.splice(a, 0, n), void this.__repeat.splice(a, 0, !t) } this.__listeners.push(e), this.__priorities.push(n), this.__repeat.push(!t) }, has: function(e) { for (var t = 0, n = this.__listeners; t < n.length; ) { var i = n[t]; if (++t, Reflect.compareMethods(i, e)) return !0 } return !1 }, remove: function(e) { for (var t = this.__listeners.length; --t >= 0; ) Reflect.compareMethods(this.__listeners[t], e) && (this.__listeners.splice(t, 1), this.__priorities.splice(t, 1), this.__repeat.splice(t, 1)) }, __listeners: null, dispatch: function(e) { this.canceled = !1; for (var t = this.__listeners, n = this.__repeat, i = 0; i < t.length && (t[i](e), n[i] ? i++ : this.remove(t[i]), !this.canceled); ) ; }, __class__: lime_app__$Event_$String_$Void }; var lime_app__$Event_$Void_$Void = function() { this.canceled = !1, this.__listeners = [], this.__priorities = [], this.__repeat = [] }; $hxClasses["lime.app._Event_Void_Void"] = lime_app__$Event_$Void_$Void, lime_app__$Event_$Void_$Void.__name__ = ["lime", "app", "_Event_Void_Void"], lime_app__$Event_$Void_$Void.prototype = { canceled: null, __repeat: null, __priorities: null, add: function(e, t, n) { null == n && (n = 0), null == t && (t = !1); for (var i = 0, l = this.__priorities.length; i < l; ) { var a = i++; if (n > this.__priorities[a]) return this.__listeners.splice(a, 0, e), this.__priorities.splice(a, 0, n), void this.__repeat.splice(a, 0, !t) } this.__listeners.push(e), this.__priorities.push(n), this.__repeat.push(!t) }, remove: function(e) { for (var t = this.__listeners.length; --t >= 0; ) Reflect.compareMethods(this.__listeners[t], e) && (this.__listeners.splice(t, 1), this.__priorities.splice(t, 1), this.__repeat.splice(t, 1)) }, __listeners: null, dispatch: function() { this.canceled = !1; for (var e = this.__listeners, t = this.__repeat, n = 0; n < e.length && (e[n](), t[n] ? n++ : this.remove(e[n]), !this.canceled); ) ; }, __class__: lime_app__$Event_$Void_$Void }; var lime_app__$Event_$lime_$graphics_$RenderContext_$Void = function() { this.canceled = !1, this.__listeners = [], this.__priorities = [], this.__repeat = [] }; $hxClasses["lime.app._Event_lime_graphics_RenderContext_Void"] = lime_app__$Event_$lime_$graphics_$RenderContext_$Void, lime_app__$Event_$lime_$graphics_$RenderContext_$Void.__name__ = ["lime", "app", "_Event_lime_graphics_RenderContext_Void"], lime_app__$Event_$lime_$graphics_$RenderContext_$Void.prototype = { canceled: null, __repeat: null, __priorities: null, add: function(e, t, n) { null == n && (n = 0), null == t && (t = !1); for (var i = 0, l = this.__priorities.length; i < l; ) { var a = i++; if (n > this.__priorities[a]) return this.__listeners.splice(a, 0, e), this.__priorities.splice(a, 0, n), void this.__repeat.splice(a, 0, !t) } this.__listeners.push(e), this.__priorities.push(n), this.__repeat.push(!t) }, remove: function(e) { for (var t = this.__listeners.length; --t >= 0; ) Reflect.compareMethods(this.__listeners[t], e) && (this.__listeners.splice(t, 1), this.__priorities.splice(t, 1), this.__repeat.splice(t, 1)) }, __listeners: null, dispatch: function(e) { this.canceled = !1; for (var t = this.__listeners, n = this.__repeat, i = 0; i < t.length && (t[i](e), n[i] ? i++ : this.remove(t[i]), !this.canceled); ) ; }, __class__: lime_app__$Event_$lime_$graphics_$RenderContext_$Void }; var lime_app__$Event_$lime_$ui_$GamepadAxis_$Float_$Void = function() { this.canceled = !1, this.__listeners = [], this.__priorities = [], this.__repeat = [] }; $hxClasses["lime.app._Event_lime_ui_GamepadAxis_Float_Void"] = lime_app__$Event_$lime_$ui_$GamepadAxis_$Float_$Void, lime_app__$Event_$lime_$ui_$GamepadAxis_$Float_$Void.__name__ = ["lime", "app", "_Event_lime_ui_GamepadAxis_Float_Void"], lime_app__$Event_$lime_$ui_$GamepadAxis_$Float_$Void.prototype = { canceled: null, __repeat: null, __priorities: null, add: function(e, t, n) { null == n && (n = 0), null == t && (t = !1); for (var i = 0, l = this.__priorities.length; i < l; ) { var a = i++; if (n > this.__priorities[a]) return this.__listeners.splice(a, 0, e), this.__priorities.splice(a, 0, n), void this.__repeat.splice(a, 0, !t) } this.__listeners.push(e), this.__priorities.push(n), this.__repeat.push(!t) }, remove: function(e) { for (var t = this.__listeners.length; --t >= 0; ) Reflect.compareMethods(this.__listeners[t], e) && (this.__listeners.splice(t, 1), this.__priorities.splice(t, 1), this.__repeat.splice(t, 1)) }, __listeners: null, dispatch: function(e, t) { this.canceled = !1; for (var n = this.__listeners, i = this.__repeat, l = 0; l < n.length && (n[l](e, t), i[l] ? l++ : this.remove(n[l]), !this.canceled); ) ; }, __class__: lime_app__$Event_$lime_$ui_$GamepadAxis_$Float_$Void }; var lime_app__$Event_$lime_$ui_$GamepadButton_$Void = function() { this.canceled = !1, this.__listeners = [], this.__priorities = [], this.__repeat = [] }; $hxClasses["lime.app._Event_lime_ui_GamepadButton_Void"] = lime_app__$Event_$lime_$ui_$GamepadButton_$Void, lime_app__$Event_$lime_$ui_$GamepadButton_$Void.__name__ = ["lime", "app", "_Event_lime_ui_GamepadButton_Void"], lime_app__$Event_$lime_$ui_$GamepadButton_$Void.prototype = { canceled: null, __repeat: null, __priorities: null, add: function(e, t, n) { null == n && (n = 0), null == t && (t = !1); for (var i = 0, l = this.__priorities.length; i < l; ) { var a = i++; if (n > this.__priorities[a]) return this.__listeners.splice(a, 0, e), this.__priorities.splice(a, 0, n), void this.__repeat.splice(a, 0, !t) } this.__listeners.push(e), this.__priorities.push(n), this.__repeat.push(!t) }, remove: function(e) { for (var t = this.__listeners.length; --t >= 0; ) Reflect.compareMethods(this.__listeners[t], e) && (this.__listeners.splice(t, 1), this.__priorities.splice(t, 1), this.__repeat.splice(t, 1)) }, __listeners: null, dispatch: function(e) { this.canceled = !1; for (var t = this.__listeners, n = this.__repeat, i = 0; i < t.length && (t[i](e), n[i] ? i++ : this.remove(t[i]), !this.canceled); ) ; }, __class__: lime_app__$Event_$lime_$ui_$GamepadButton_$Void }; var lime_app__$Event_$lime_$ui_$Gamepad_$Void = function() { this.canceled = !1, this.__listeners = [], this.__priorities = [], this.__repeat = [] }; $hxClasses["lime.app._Event_lime_ui_Gamepad_Void"] = lime_app__$Event_$lime_$ui_$Gamepad_$Void, lime_app__$Event_$lime_$ui_$Gamepad_$Void.__name__ = ["lime", "app", "_Event_lime_ui_Gamepad_Void"], lime_app__$Event_$lime_$ui_$Gamepad_$Void.prototype = { canceled: null, __repeat: null, __priorities: null, add: function(e, t, n) { null == n && (n = 0), null == t && (t = !1); for (var i = 0, l = this.__priorities.length; i < l; ) { var a = i++; if (n > this.__priorities[a]) return this.__listeners.splice(a, 0, e), this.__priorities.splice(a, 0, n), void this.__repeat.splice(a, 0, !t) } this.__listeners.push(e), this.__priorities.push(n), this.__repeat.push(!t) }, remove: function(e) { for (var t = this.__listeners.length; --t >= 0; ) Reflect.compareMethods(this.__listeners[t], e) && (this.__listeners.splice(t, 1), this.__priorities.splice(t, 1), this.__repeat.splice(t, 1)) }, __listeners: null, dispatch: function(e) { this.canceled = !1; for (var t = this.__listeners, n = this.__repeat, i = 0; i < t.length && (t[i](e), n[i] ? i++ : this.remove(t[i]), !this.canceled); ) ; }, __class__: lime_app__$Event_$lime_$ui_$Gamepad_$Void }; var lime_app__$Event_$lime_$ui_$Joystick_$Void = function() { this.canceled = !1, this.__listeners = [], this.__priorities = [], this.__repeat = [] }; $hxClasses["lime.app._Event_lime_ui_Joystick_Void"] = lime_app__$Event_$lime_$ui_$Joystick_$Void, lime_app__$Event_$lime_$ui_$Joystick_$Void.__name__ = ["lime", "app", "_Event_lime_ui_Joystick_Void"], lime_app__$Event_$lime_$ui_$Joystick_$Void.prototype = { canceled: null, __repeat: null, __priorities: null, add: function(e, t, n) { null == n && (n = 0), null == t && (t = !1); for (var i = 0, l = this.__priorities.length; i < l; ) { var a = i++; if (n > this.__priorities[a]) return this.__listeners.splice(a, 0, e), this.__priorities.splice(a, 0, n), void this.__repeat.splice(a, 0, !t) } this.__listeners.push(e), this.__priorities.push(n), this.__repeat.push(!t) }, remove: function(e) { for (var t = this.__listeners.length; --t >= 0; ) Reflect.compareMethods(this.__listeners[t], e) && (this.__listeners.splice(t, 1), this.__priorities.splice(t, 1), this.__repeat.splice(t, 1)) }, __listeners: null, dispatch: function(e) { this.canceled = !1; for (var t = this.__listeners, n = this.__repeat, i = 0; i < t.length && (t[i](e), n[i] ? i++ : this.remove(t[i]), !this.canceled); ) ; }, __class__: lime_app__$Event_$lime_$ui_$Joystick_$Void }; var lime_app__$Event_$lime_$ui_$KeyCode_$lime_$ui_$KeyModifier_$Void = function() { this.canceled = !1, this.__listeners = [], this.__priorities = [], this.__repeat = [] }; $hxClasses["lime.app._Event_lime_ui_KeyCode_lime_ui_KeyModifier_Void"] = lime_app__$Event_$lime_$ui_$KeyCode_$lime_$ui_$KeyModifier_$Void, lime_app__$Event_$lime_$ui_$KeyCode_$lime_$ui_$KeyModifier_$Void.__name__ = ["lime", "app", "_Event_lime_ui_KeyCode_lime_ui_KeyModifier_Void"], lime_app__$Event_$lime_$ui_$KeyCode_$lime_$ui_$KeyModifier_$Void.prototype = { canceled: null, __repeat: null, __priorities: null, add: function(e, t, n) { null == n && (n = 0), null == t && (t = !1); for (var i = 0, l = this.__priorities.length; i < l; ) { var a = i++; if (n > this.__priorities[a]) return this.__listeners.splice(a, 0, e), this.__priorities.splice(a, 0, n), void this.__repeat.splice(a, 0, !t) } this.__listeners.push(e), this.__priorities.push(n), this.__repeat.push(!t) }, cancel: function() { this.canceled = !0 }, remove: function(e) { for (var t = this.__listeners.length; --t >= 0; ) Reflect.compareMethods(this.__listeners[t], e) && (this.__listeners.splice(t, 1), this.__priorities.splice(t, 1), this.__repeat.splice(t, 1)) }, __listeners: null, dispatch: function(e, t) { this.canceled = !1; for (var n = this.__listeners, i = this.__repeat, l = 0; l < n.length && (n[l](e, t), i[l] ? l++ : this.remove(n[l]), !this.canceled); ) ; }, __class__: lime_app__$Event_$lime_$ui_$KeyCode_$lime_$ui_$KeyModifier_$Void }; var lime_app__$Event_$lime_$ui_$Touch_$Void = function() { this.canceled = !1, this.__listeners = [], this.__priorities = [], this.__repeat = [] }; $hxClasses["lime.app._Event_lime_ui_Touch_Void"] = lime_app__$Event_$lime_$ui_$Touch_$Void, lime_app__$Event_$lime_$ui_$Touch_$Void.__name__ = ["lime", "app", "_Event_lime_ui_Touch_Void"], lime_app__$Event_$lime_$ui_$Touch_$Void.prototype = { canceled: null, __repeat: null, __priorities: null, add: function(e, t, n) { null == n && (n = 0), null == t && (t = !1); for (var i = 0, l = this.__priorities.length; i < l; ) { var a = i++; if (n > this.__priorities[a]) return this.__listeners.splice(a, 0, e), this.__priorities.splice(a, 0, n), void this.__repeat.splice(a, 0, !t) } this.__listeners.push(e), this.__priorities.push(n), this.__repeat.push(!t) }, remove: function(e) { for (var t = this.__listeners.length; --t >= 0; ) Reflect.compareMethods(this.__listeners[t], e) && (this.__listeners.splice(t, 1), this.__priorities.splice(t, 1), this.__repeat.splice(t, 1)) }, __listeners: null, dispatch: function(e) { this.canceled = !1; for (var t = this.__listeners, n = this.__repeat, i = 0; i < t.length && (t[i](e), n[i] ? i++ : this.remove(t[i]), !this.canceled); ) ; }, __class__: lime_app__$Event_$lime_$ui_$Touch_$Void }; var lime_graphics_Image = function(e, t, n, i, l, a, s) { var r; if (null == l && (l = -1), null == i && (i = -1), null == n && (n = 0), null == t && (t = 0), this.offsetX = t, this.offsetY = n, this.width = i, this.height = l, this.version = 0, null == s) if (null != lime_app_Application.current && null != lime_app_Application.current.__renderers[0]) switch (lime_app_Application.current.__renderers[0].context[1]) { case 2: case 1: this.type = lime_graphics_ImageType.CANVAS; break; case 3: this.type = lime_graphics_ImageType.FLASH; break; default: this.type = lime_graphics_ImageType.DATA } else this.type = lime_graphics_ImageType.DATA; else this.type = s; if (null == e) { if (i > 0 && l > 0) switch (this.type[1]) { case 0: this.buffer = new lime_graphics_ImageBuffer(null,i,l), lime_graphics_utils_ImageCanvasUtil.createCanvas(this, i, l), null != a && this.fillRect(new lime_math_Rectangle(0,0,i,l), a); break; case 1: this.buffer = new lime_graphics_ImageBuffer(null != (r = i * l * 4) ? new Uint8Array(r) : null,i,l), null != a && this.fillRect(new lime_math_Rectangle(0,0,i,l), a) } } else this.__fromImageBuffer(e) }; $hxClasses["lime.graphics.Image"] = lime_graphics_Image, lime_graphics_Image.__name__ = ["lime", "graphics", "Image"], lime_graphics_Image.fromBase64 = function(e, t, n) { if (null == e) return null; var i = new lime_graphics_Image; return i.__fromBase64(e, t, n), i } , lime_graphics_Image.fromBitmapData = function(e) { return null == e ? null : e.image } , lime_graphics_Image.fromCanvas = function(e) { if (null == e) return null; var t = new lime_graphics_ImageBuffer(null,e.width,e.height); t.set_src(e); var n = new lime_graphics_Image(t); return n.type = lime_graphics_ImageType.CANVAS, n } , lime_graphics_Image.fromFile = function(e, t, n) { if (null == e) return null; var i = new lime_graphics_Image; return i.__fromFile(e, t, n), i } , lime_graphics_Image.loadFromFile = function(e) { if (null == e) return lime_app_Future.withValue(null); var t = new lime_app_Promise , n = new Image; return n.crossOrigin = "Anonymous", n.addEventListener("load", function(e) { var i = new lime_graphics_ImageBuffer(null,n.width,n.height); i.__srcImage = n, t.complete(new lime_graphics_Image(i)) }, !1), n.addEventListener("progress", function(e) { t.progress(e.loaded, e.total) }, !1), n.addEventListener("error", function(e) { t.error(e.detail) }, !1), n.src = e, t.future } , lime_graphics_Image.prototype = { buffer: null, dirty: null, height: null, offsetX: null, offsetY: null, type: null, version: null, width: null, clone: function() { if (null != this.buffer) { this.type == lime_graphics_ImageType.CANVAS ? lime_graphics_utils_ImageCanvasUtil.convertToCanvas(this) : lime_graphics_utils_ImageCanvasUtil.convertToData(this); var e = new lime_graphics_Image(this.buffer.clone(),this.offsetX,this.offsetY,this.width,this.height,null,this.type); return e.version = this.version, e } return new lime_graphics_Image(null,this.offsetX,this.offsetY,this.width,this.height,null,this.type) }, colorTransform: function(e, t) { if (e = this.__clipRect(e), null != this.buffer && null != e) switch (this.type[1]) { case 0: lime_graphics_utils_ImageCanvasUtil.colorTransform(this, e, t); break; case 1: lime_graphics_utils_ImageCanvasUtil.convertToData(this), lime_graphics_utils_ImageDataUtil.colorTransform(this, e, t); break; case 2: e.offset(this.offsetX, this.offsetY), this.buffer.__srcBitmapData.colorTransform(e.__toFlashRectangle(), lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__toFlashColorTransform(t)) } }, copyChannel: function(e, t, n, i, l) { if ((t = this.__clipRect(t), null != this.buffer && null != t) && ((l != lime_graphics_ImageChannel.ALPHA || this.get_transparent()) && !(t.width <= 0 || t.height <= 0))) switch (t.x + t.width > e.width && (t.width = e.width - t.x), t.y + t.height > e.height && (t.height = e.height - t.y), this.type[1]) { case 0: lime_graphics_utils_ImageCanvasUtil.copyChannel(this, e, t, n, i, l); break; case 1: lime_graphics_utils_ImageCanvasUtil.convertToData(this), lime_graphics_utils_ImageCanvasUtil.convertToData(e), lime_graphics_utils_ImageDataUtil.copyChannel(this, e, t, n, i, l); break; case 2: var a, s; switch (i[1]) { case 0: a = 1; break; case 1: a = 2; break; case 2: a = 4; break; case 3: a = 8 } switch (l[1]) { case 0: s = 1; break; case 1: s = 2; break; case 2: s = 4; break; case 3: s = 8 } t.offset(e.offsetX, e.offsetY), n.offset(this.offsetX, this.offsetY), this.buffer.__srcBitmapData.copyChannel(e.buffer.get_src(), t.__toFlashRectangle(), n.__toFlashPoint(), a, s) } }, copyPixels: function(e, t, n, i, l, a) { if ((null == a && (a = !1), null != this.buffer && null != e) && !(t.width <= 0 || t.height <= 0 || this.width <= 0 || this.height <= 0)) switch (t.x + t.width > e.width && (t.width = e.width - t.x), t.y + t.height > e.height && (t.height = e.height - t.y), t.x < 0 && (t.width += t.x, t.x = 0), t.y < 0 && (t.height += t.y, t.y = 0), n.x + t.width > this.width && (t.width = this.width - n.x), n.y + t.height > this.height && (t.height = this.height - n.y), n.x < 0 && (t.width += n.x, t.x -= n.x, n.x = 0), n.y < 0 && (t.height += n.y, t.y -= n.y, n.y = 0), e == this && (e = this.clone()), this.type[1]) { case 0: lime_graphics_utils_ImageCanvasUtil.convertToCanvas(this), lime_graphics_utils_ImageCanvasUtil.copyPixels(this, e, t, n, i, l, a); break; case 1: lime_graphics_utils_ImageCanvasUtil.convertToData(this), lime_graphics_utils_ImageCanvasUtil.convertToData(e), lime_graphics_utils_ImageDataUtil.copyPixels(this, e, t, n, i, l, a); break; case 2: t.offset(e.offsetX, e.offsetY), n.offset(this.offsetX, this.offsetY), null != i && null != l && l.offset(i.offsetX, i.offsetY), this.buffer.__srcBitmapData.copyPixels(e.buffer.__srcBitmapData, t.__toFlashRectangle(), n.__toFlashPoint(), null != i ? i.buffer.get_src() : null, null != l ? l.__toFlashPoint() : null, a) } }, fillRect: function(e, t, n) { if (e = this.__clipRect(e), null != this.buffer && null != e) switch (this.type[1]) { case 0: lime_graphics_utils_ImageCanvasUtil.fillRect(this, e, t, n); break; case 1: if (lime_graphics_utils_ImageCanvasUtil.convertToData(this), 0 == this.buffer.data.length) return; lime_graphics_utils_ImageDataUtil.fillRect(this, e, t, n); break; case 2: var i; if (e.offset(this.offsetX, this.offsetY), null != n) switch (n) { case 1: i = t; break; case 2: i = (255 & t) << 24 | (255 & t >> 8) << 16 | (255 & t >> 16) << 8 | 255 & t >> 24; break; default: i = (255 & t) << 24 | (255 & t >> 24) << 16 | (255 & t >> 16) << 8 | 255 & t >> 8 } else { i = (255 & t) << 24 | (255 & t >> 24) << 16 | (255 & t >> 16) << 8 | 255 & t >> 8 } this.buffer.__srcBitmapData.fillRect(e.__toFlashRectangle(), i) } }, getPixel32: function(e, t, n) { if (null == this.buffer || e < 0 || t < 0 || e >= this.width || t >= this.height) return 0; switch (this.type[1]) { case 0: return lime_graphics_utils_ImageCanvasUtil.getPixel32(this, e, t, n); case 1: return lime_graphics_utils_ImageCanvasUtil.convertToData(this), lime_graphics_utils_ImageDataUtil.getPixel32(this, e, t, n); case 2: var i = this.buffer.__srcBitmapData.getPixel32(e + this.offsetX, t + this.offsetY); if (null == n) { return (255 & i >> 16) << 24 | (255 & i >> 8) << 16 | (255 & i) << 8 | 255 & i >> 24 } switch (n) { case 1: return i; case 2: return (255 & i) << 24 | (255 & i >> 8) << 16 | (255 & i >> 16) << 8 | 255 & i >> 24; default: return (255 & i >> 16) << 24 | (255 & i >> 8) << 16 | (255 & i) << 8 | 255 & i >> 24 } break; default: return 0 } }, setPixel32: function(e, t, n, i) { if (!(null == this.buffer || e < 0 || t < 0 || e >= this.width || t >= this.height)) switch (this.type[1]) { case 0: lime_graphics_utils_ImageCanvasUtil.setPixel32(this, e, t, n, i); break; case 1: lime_graphics_utils_ImageCanvasUtil.convertToData(this), lime_graphics_utils_ImageDataUtil.setPixel32(this, e, t, n, i); break; case 2: var l; if (null != i) switch (i) { case 1: l = n; break; case 2: l = (255 & n) << 24 | (255 & n >> 8) << 16 | (255 & n >> 16) << 8 | 255 & n >> 24; break; default: l = (255 & n) << 24 | (255 & n >> 24) << 16 | (255 & n >> 16) << 8 | 255 & n >> 8 } else { l = (255 & n) << 24 | (255 & n >> 24) << 16 | (255 & n >> 16) << 8 | 255 & n >> 8 } this.buffer.__srcBitmapData.setPixel32(e + this.offsetX, t + this.offsetY, l) } }, __clipRect: function(e) { return null == e ? null : e.x < 0 && (e.width -= -e.x, e.x = 0, e.x + e.width <= 0) ? null : e.y < 0 && (e.height -= -e.y, e.y = 0, e.y + e.height <= 0) ? null : e.x + e.width >= this.width && (e.width -= e.x + e.width - this.width, e.width <= 0) ? null : e.y + e.height >= this.height && (e.height -= e.y + e.height - this.height, e.height <= 0) ? null : e }, __fromBase64: function(e, t, n) { var i = this , l = new Image; l.addEventListener("load", function(e) { i.buffer = new lime_graphics_ImageBuffer(null,l.width,l.height), i.buffer.__srcImage = l, i.offsetX = 0, i.offsetY = 0, i.width = i.buffer.width, i.height = i.buffer.height, null != n && n(i) }, !1), l.src = "data:" + t + ";base64," + e }, __fromFile: function(e, t, n) { var i = this , l = new Image; l.crossOrigin = "Anonymous", l.onload = function(e) { i.buffer = new lime_graphics_ImageBuffer(null,l.width,l.height), i.buffer.__srcImage = l, i.width = l.width, i.height = l.height, null != t && t(i) } , l.onerror = function(e) { null != n && n() } , l.src = e, l.complete }, __fromImageBuffer: function(e) { this.buffer = e, null != e && (-1 == this.width && (this.width = e.width), -1 == this.height && (this.height = e.height)) }, get_data: function() { return null == this.buffer.data && this.buffer.width > 0 && this.buffer.height > 0 && lime_graphics_utils_ImageCanvasUtil.convertToData(this), this.buffer.data }, get_format: function() { return this.buffer.format }, set_format: function(e) { if (this.buffer.format != e) switch (this.type[1]) { case 1: lime_graphics_utils_ImageDataUtil.setFormat(this, e) } return this.buffer.format = e }, get_premultiplied: function() { return this.buffer.premultiplied }, set_premultiplied: function(e) { if (e && !this.buffer.premultiplied) switch (this.type[1]) { case 0: case 1: lime_graphics_utils_ImageCanvasUtil.convertToData(this), lime_graphics_utils_ImageDataUtil.multiplyAlpha(this) } else if (!e && this.buffer.premultiplied) { switch (this.type[1]) { case 1: lime_graphics_utils_ImageCanvasUtil.convertToData(this), lime_graphics_utils_ImageDataUtil.unmultiplyAlpha(this) } } return e }, get_rect: function() { return new lime_math_Rectangle(0,0,this.width,this.height) }, get_src: function() { return null == this.buffer.__srcCanvas && lime_graphics_utils_ImageCanvasUtil.convertToCanvas(this), this.buffer.get_src() }, get_transparent: function() { return null != this.buffer && this.buffer.transparent }, set_transparent: function(e) { return null != this.buffer && (this.buffer.transparent = e) }, __class__: lime_graphics_Image, __properties__: { get_rect: "get_rect", set_transparent: "set_transparent", get_transparent: "get_transparent", get_src: "get_src", set_premultiplied: "set_premultiplied", get_premultiplied: "get_premultiplied", set_format: "set_format", get_format: "get_format", get_data: "get_data" } }; var lime_graphics_ImageBuffer = function(e, t, n, i, l) { null == i && (i = 32), null == n && (n = 0), null == t && (t = 0), this.data = e, this.width = t, this.height = n, this.bitsPerPixel = i, this.format = null == l ? 0 : l, this.premultiplied = !1, this.transparent = !0 }; $hxClasses["lime.graphics.ImageBuffer"] = lime_graphics_ImageBuffer, lime_graphics_ImageBuffer.__name__ = ["lime", "graphics", "ImageBuffer"], lime_graphics_ImageBuffer.prototype = { bitsPerPixel: null, data: null, format: null, height: null, premultiplied: null, transparent: null, width: null, __srcBitmapData: null, __srcCanvas: null, __srcContext: null, __srcImage: null, __srcImageData: null, clone: function() { var e = new lime_graphics_ImageBuffer(this.data,this.width,this.height,this.bitsPerPixel); if (null != this.data) { var t, n, i = this.data.byteLength; t = null != i ? new Uint8Array(i) : null, e.data = t; var l = this.data; n = null != l ? new Uint8Array(l) : null, e.data.set(n) } else if (null != this.__srcImageData) { e.__srcCanvas = window.document.createElement("canvas"), e.__srcContext = e.__srcCanvas.getContext("2d"), e.__srcCanvas.width = this.__srcImageData.width, e.__srcCanvas.height = this.__srcImageData.height, e.__srcImageData = e.__srcContext.createImageData(this.__srcImageData.width, this.__srcImageData.height); var a = new Uint8ClampedArray(this.__srcImageData.data); e.__srcImageData.data.set(a) } else null != this.__srcCanvas ? (e.__srcCanvas = window.document.createElement("canvas"), e.__srcContext = e.__srcCanvas.getContext("2d"), e.__srcCanvas.width = this.__srcCanvas.width, e.__srcCanvas.height = this.__srcCanvas.height, e.__srcContext.drawImage(this.__srcCanvas, 0, 0)) : e.__srcImage = this.__srcImage; return e.bitsPerPixel = this.bitsPerPixel, e.format = this.format, e.premultiplied = this.premultiplied, e.transparent = this.transparent, e }, get_src: function() { return null != this.__srcImage ? this.__srcImage : this.__srcCanvas }, set_src: function(e) { return js_Boot.__instanceof(e, Image) ? this.__srcImage = e : js_Boot.__instanceof(e, HTMLCanvasElement) && (this.__srcCanvas = e, this.__srcContext = this.__srcCanvas.getContext("2d")), e }, get_stride: function() { return 4 * this.width }, __class__: lime_graphics_ImageBuffer, __properties__: { get_stride: "get_stride", set_src: "set_src", get_src: "get_src" } }; var lime_graphics_ImageChannel = $hxClasses["lime.graphics.ImageChannel"] = { __ename__: ["lime", "graphics", "ImageChannel"], __constructs__: ["RED", "GREEN", "BLUE", "ALPHA"] }; lime_graphics_ImageChannel.RED = ["RED", 0], lime_graphics_ImageChannel.RED.toString = $estr, lime_graphics_ImageChannel.RED.__enum__ = lime_graphics_ImageChannel, lime_graphics_ImageChannel.GREEN = ["GREEN", 1], lime_graphics_ImageChannel.GREEN.toString = $estr, lime_graphics_ImageChannel.GREEN.__enum__ = lime_graphics_ImageChannel, lime_graphics_ImageChannel.BLUE = ["BLUE", 2], lime_graphics_ImageChannel.BLUE.toString = $estr, lime_graphics_ImageChannel.BLUE.__enum__ = lime_graphics_ImageChannel, lime_graphics_ImageChannel.ALPHA = ["ALPHA", 3], lime_graphics_ImageChannel.ALPHA.toString = $estr, lime_graphics_ImageChannel.ALPHA.__enum__ = lime_graphics_ImageChannel; var lime_graphics_ImageType = $hxClasses["lime.graphics.ImageType"] = { __ename__: ["lime", "graphics", "ImageType"], __constructs__: ["CANVAS", "DATA", "FLASH", "CUSTOM"] }; lime_graphics_ImageType.CANVAS = ["CANVAS", 0], lime_graphics_ImageType.CANVAS.toString = $estr, lime_graphics_ImageType.CANVAS.__enum__ = lime_graphics_ImageType, lime_graphics_ImageType.DATA = ["DATA", 1], lime_graphics_ImageType.DATA.toString = $estr, lime_graphics_ImageType.DATA.__enum__ = lime_graphics_ImageType, lime_graphics_ImageType.FLASH = ["FLASH", 2], lime_graphics_ImageType.FLASH.toString = $estr, lime_graphics_ImageType.FLASH.__enum__ = lime_graphics_ImageType, lime_graphics_ImageType.CUSTOM = ["CUSTOM", 3], lime_graphics_ImageType.CUSTOM.toString = $estr, lime_graphics_ImageType.CUSTOM.__enum__ = lime_graphics_ImageType; var lime_graphics_RenderContext = $hxClasses["lime.graphics.RenderContext"] = { __ename__: ["lime", "graphics", "RenderContext"], __constructs__: ["OPENGL", "CANVAS", "DOM", "FLASH", "CAIRO", "CONSOLE", "CUSTOM", "NONE"] }; lime_graphics_RenderContext.OPENGL = function(e) { var t = ["OPENGL", 0, e]; return t.__enum__ = lime_graphics_RenderContext, t.toString = $estr, t } , lime_graphics_RenderContext.CANVAS = function(e) { var t = ["CANVAS", 1, e]; return t.__enum__ = lime_graphics_RenderContext, t.toString = $estr, t } , lime_graphics_RenderContext.DOM = function(e) { var t = ["DOM", 2, e]; return t.__enum__ = lime_graphics_RenderContext, t.toString = $estr, t } , lime_graphics_RenderContext.FLASH = function(e) { var t = ["FLASH", 3, e]; return t.__enum__ = lime_graphics_RenderContext, t.toString = $estr, t } , lime_graphics_RenderContext.CAIRO = function(e) { var t = ["CAIRO", 4, e]; return t.__enum__ = lime_graphics_RenderContext, t.toString = $estr, t } , lime_graphics_RenderContext.CONSOLE = function(e) { var t = ["CONSOLE", 5, e]; return t.__enum__ = lime_graphics_RenderContext, t.toString = $estr, t } , lime_graphics_RenderContext.CUSTOM = function(e) { var t = ["CUSTOM", 6, e]; return t.__enum__ = lime_graphics_RenderContext, t.toString = $estr, t } , lime_graphics_RenderContext.NONE = ["NONE", 7], lime_graphics_RenderContext.NONE.toString = $estr, lime_graphics_RenderContext.NONE.__enum__ = lime_graphics_RenderContext; var lime_graphics_Renderer = function(e) { this.onRender = new lime_app__$Event_$Void_$Void, this.onContextRestored = new lime_app__$Event_$lime_$graphics_$RenderContext_$Void, this.onContextLost = new lime_app__$Event_$Void_$Void, this.window = e, this.backend = new lime__$backend_html5_HTML5Renderer(this), this.window.renderer = this }; $hxClasses["lime.graphics.Renderer"] = lime_graphics_Renderer, lime_graphics_Renderer.__name__ = ["lime", "graphics", "Renderer"], lime_graphics_Renderer.prototype = { context: null, onContextLost: null, onContextRestored: null, onRender: null, type: null, window: null, backend: null, create: function() { this.backend.create() }, flip: function() { this.backend.flip() }, __class__: lime_graphics_Renderer }; var lime_graphics_RendererType = $hxClasses["lime.graphics.RendererType"] = { __ename__: ["lime", "graphics", "RendererType"], __constructs__: ["OPENGL", "CANVAS", "DOM", "FLASH", "CAIRO", "CONSOLE", "CUSTOM"] }; lime_graphics_RendererType.OPENGL = ["OPENGL", 0], lime_graphics_RendererType.OPENGL.toString = $estr, lime_graphics_RendererType.OPENGL.__enum__ = lime_graphics_RendererType, lime_graphics_RendererType.CANVAS = ["CANVAS", 1], lime_graphics_RendererType.CANVAS.toString = $estr, lime_graphics_RendererType.CANVAS.__enum__ = lime_graphics_RendererType, lime_graphics_RendererType.DOM = ["DOM", 2], lime_graphics_RendererType.DOM.toString = $estr, lime_graphics_RendererType.DOM.__enum__ = lime_graphics_RendererType, lime_graphics_RendererType.FLASH = ["FLASH", 3], lime_graphics_RendererType.FLASH.toString = $estr, lime_graphics_RendererType.FLASH.__enum__ = lime_graphics_RendererType, lime_graphics_RendererType.CAIRO = ["CAIRO", 4], lime_graphics_RendererType.CAIRO.toString = $estr, lime_graphics_RendererType.CAIRO.__enum__ = lime_graphics_RendererType, lime_graphics_RendererType.CONSOLE = ["CONSOLE", 5], lime_graphics_RendererType.CONSOLE.toString = $estr, lime_graphics_RendererType.CONSOLE.__enum__ = lime_graphics_RendererType, lime_graphics_RendererType.CUSTOM = ["CUSTOM", 6], lime_graphics_RendererType.CUSTOM.toString = $estr, lime_graphics_RendererType.CUSTOM.__enum__ = lime_graphics_RendererType; var lime_graphics_cairo_Cairo = function() {}; $hxClasses["lime.graphics.cairo.Cairo"] = lime_graphics_cairo_Cairo, lime_graphics_cairo_Cairo.__name__ = ["lime", "graphics", "cairo", "Cairo"], lime_graphics_cairo_Cairo.prototype = { __class__: lime_graphics_cairo_Cairo }; var lime_graphics_cairo__$CairoSurface_CairoSurface_$Impl_$ = {}; $hxClasses["lime.graphics.cairo._CairoSurface.CairoSurface_Impl_"] = lime_graphics_cairo__$CairoSurface_CairoSurface_$Impl_$, lime_graphics_cairo__$CairoSurface_CairoSurface_$Impl_$.__name__ = ["lime", "graphics", "cairo", "_CairoSurface", "CairoSurface_Impl_"], lime_graphics_cairo__$CairoSurface_CairoSurface_$Impl_$.flush = function(e) {} ; var lime_graphics_opengl_ExtensionAnisotropicFiltering = function() {}; $hxClasses["lime.graphics.opengl.ExtensionAnisotropicFiltering"] = lime_graphics_opengl_ExtensionAnisotropicFiltering, lime_graphics_opengl_ExtensionAnisotropicFiltering.__name__ = ["lime", "graphics", "opengl", "ExtensionAnisotropicFiltering"]; var lime_graphics_opengl_GL = function() {}; $hxClasses["lime.graphics.opengl.GL"] = lime_graphics_opengl_GL, lime_graphics_opengl_GL.__name__ = ["lime", "graphics", "opengl", "GL"], lime_graphics_opengl_GL.useProgram = function(e) { lime_graphics_opengl_GL.__currentProgram = e, lime_graphics_opengl_GL.context.useProgram(e) } ; var lime_graphics_utils_ImageCanvasUtil = function() {}; $hxClasses["lime.graphics.utils.ImageCanvasUtil"] = lime_graphics_utils_ImageCanvasUtil, lime_graphics_utils_ImageCanvasUtil.__name__ = ["lime", "graphics", "utils", "ImageCanvasUtil"], lime_graphics_utils_ImageCanvasUtil.colorTransform = function(e, t, n) { lime_graphics_utils_ImageCanvasUtil.convertToData(e), lime_graphics_utils_ImageDataUtil.colorTransform(e, t, n) } , lime_graphics_utils_ImageCanvasUtil.convertToCanvas = function(e, t) { null == t && (t = !1); var n = e.buffer; null != n.__srcImage ? (null == n.__srcCanvas && (lime_graphics_utils_ImageCanvasUtil.createCanvas(e, n.__srcImage.width, n.__srcImage.height), n.__srcContext.drawImage(n.__srcImage, 0, 0)), n.__srcImage = null) : null == n.__srcCanvas && null != n.data ? (e.set_transparent(!0), lime_graphics_utils_ImageCanvasUtil.createCanvas(e, n.width, n.height), lime_graphics_utils_ImageCanvasUtil.createImageData(e), n.__srcContext.putImageData(n.__srcImageData, 0, 0)) : e.type == lime_graphics_ImageType.DATA && null != n.__srcImageData && e.dirty && (n.__srcContext.putImageData(n.__srcImageData, 0, 0), e.dirty = !1), t ? (n.data = null, n.__srcImageData = null) : null == n.data && null != n.__srcImageData && (n.data = n.__srcImageData.data), e.type = lime_graphics_ImageType.CANVAS } , lime_graphics_utils_ImageCanvasUtil.convertToData = function(e, t) { null == t && (t = !1); var n = e.buffer; if (null != n.__srcImage && lime_graphics_utils_ImageCanvasUtil.convertToCanvas(e), null != n.__srcCanvas && null == n.data) lime_graphics_utils_ImageCanvasUtil.createImageData(e), e.type == lime_graphics_ImageType.CANVAS && (e.dirty = !1); else if (e.type == lime_graphics_ImageType.CANVAS && null != n.__srcCanvas && e.dirty) { if (null == n.__srcImageData) lime_graphics_utils_ImageCanvasUtil.createImageData(e); else { n.__srcImageData = n.__srcContext.getImageData(0, 0, n.width, n.height); var i, l = n.__srcImageData.data.buffer; i = null != l ? new Uint8Array(l) : null, n.data = i } e.dirty = !1 } t && (e.buffer.__srcCanvas = null, e.buffer.__srcContext = null), e.type = lime_graphics_ImageType.DATA } , lime_graphics_utils_ImageCanvasUtil.copyChannel = function(e, t, n, i, l, a) { lime_graphics_utils_ImageCanvasUtil.convertToData(t), lime_graphics_utils_ImageCanvasUtil.convertToData(e), lime_graphics_utils_ImageDataUtil.copyChannel(e, t, n, i, l, a) } , lime_graphics_utils_ImageCanvasUtil.copyPixels = function(e, t, n, i, l, a, s) { if (null == s && (s = !1), !(null == i || i.x >= e.width || i.y >= e.height || null == n || n.width < 1 || n.height < 1)) { if (null != l && l.get_transparent()) { null == a && (a = new lime_math_Vector2); var r = e.clone(); r.copyChannel(l, new lime_math_Rectangle(a.x,a.y,n.width,n.height), new lime_math_Vector2(n.x,n.y), lime_graphics_ImageChannel.ALPHA, lime_graphics_ImageChannel.ALPHA), t = r } lime_graphics_utils_ImageCanvasUtil.convertToCanvas(e, !0), s || e.get_transparent() && t.get_transparent() && e.buffer.__srcContext.clearRect(i.x + e.offsetX, i.y + e.offsetY, n.width + e.offsetX, n.height + e.offsetY), lime_graphics_utils_ImageCanvasUtil.convertToCanvas(t), null != t.buffer.get_src() && e.buffer.__srcContext.drawImage(t.buffer.get_src(), n.x + t.offsetX | 0, n.y + t.offsetY | 0, 0 | n.width, 0 | n.height, i.x + e.offsetX | 0, i.y + e.offsetY | 0, 0 | n.width, 0 | n.height), e.dirty = !0, e.version++ } } , lime_graphics_utils_ImageCanvasUtil.createCanvas = function(e, t, n) { var i = e.buffer; null == i.__srcCanvas && (i.__srcCanvas = window.document.createElement("canvas"), i.__srcCanvas.width = t, i.__srcCanvas.height = n, e.get_transparent() ? i.__srcContext = i.__srcCanvas.getContext("2d") : (e.get_transparent() || i.__srcCanvas.setAttribute("moz-opaque", "true"), i.__srcContext = i.__srcCanvas.getContext("2d", { alpha: !1 })), i.__srcContext.mozImageSmoothingEnabled = !1, i.__srcContext.msImageSmoothingEnabled = !1, i.__srcContext.imageSmoothingEnabled = !1) } , lime_graphics_utils_ImageCanvasUtil.createImageData = function(e) { var t = e.buffer; if (null == t.__srcImageData) { null == t.data ? t.__srcImageData = t.__srcContext.getImageData(0, 0, t.width, t.height) : (t.__srcImageData = t.__srcContext.createImageData(t.width, t.height), t.__srcImageData.data.set(t.data)); var n, i = t.__srcImageData.data.buffer; n = null != i ? new Uint8Array(i) : null, t.data = n } } , lime_graphics_utils_ImageCanvasUtil.fillRect = function(e, t, n, i) { var l, a, s, r; lime_graphics_utils_ImageCanvasUtil.convertToCanvas(e), 1 == i ? (l = n >> 16 & 255, a = n >> 8 & 255, s = 255 & n, r = e.get_transparent() ? n >> 24 & 255 : 255) : (l = n >> 24 & 255, a = n >> 16 & 255, s = n >> 8 & 255, r = e.get_transparent() ? 255 & n : 255), 0 == t.x && 0 == t.y && t.width == e.width && t.height == e.height && e.get_transparent() && 0 == r ? e.buffer.__srcCanvas.width = e.buffer.width : (e.buffer.__srcContext.fillStyle = "rgba(" + l + ", " + a + ", " + s + ", " + r / 255 + ")", e.buffer.__srcContext.fillRect(t.x + e.offsetX, t.y + e.offsetY, t.width + e.offsetX, t.height + e.offsetY), e.dirty = !0, e.version++) } , lime_graphics_utils_ImageCanvasUtil.getPixel32 = function(e, t, n, i) { return lime_graphics_utils_ImageCanvasUtil.convertToData(e), lime_graphics_utils_ImageDataUtil.getPixel32(e, t, n, i) } , lime_graphics_utils_ImageCanvasUtil.setPixel32 = function(e, t, n, i, l) { lime_graphics_utils_ImageCanvasUtil.convertToData(e), lime_graphics_utils_ImageDataUtil.setPixel32(e, t, n, i, l) } , lime_graphics_utils_ImageCanvasUtil.sync = function(e, t) { null != e && (e.type == lime_graphics_ImageType.CANVAS ? lime_graphics_utils_ImageCanvasUtil.convertToCanvas(e, t) : lime_graphics_utils_ImageCanvasUtil.convertToData(e, t)) } ; var lime_graphics_utils_ImageDataUtil = function() {}; $hxClasses["lime.graphics.utils.ImageDataUtil"] = lime_graphics_utils_ImageDataUtil, lime_graphics_utils_ImageDataUtil.__name__ = ["lime", "graphics", "utils", "ImageDataUtil"], lime_graphics_utils_ImageDataUtil.colorTransform = function(e, t, n) { var i = e.buffer.data; if (null != i) { for (var l, a, s, r = e.buffer.format, _ = e.buffer.premultiplied, o = new lime_graphics_utils__$ImageDataUtil_ImageDataView(e,t), p = lime_math__$ColorMatrix_ColorMatrix_$Impl_$.getAlphaTable(n), h = lime_math__$ColorMatrix_ColorMatrix_$Impl_$.getRedTable(n), d = lime_math__$ColorMatrix_ColorMatrix_$Impl_$.getGreenTable(n), u = lime_math__$ColorMatrix_ColorMatrix_$Impl_$.getBlueTable(n), c = 0, m = o.height; c < m; ) { var U = c++; l = o.offset + o.stride * U; for (var Q = 0, N = o.width; Q < N; ) { switch (a = l + 4 * Q++, r) { case 2: s = (255 & i[a + 2]) << 24 | (255 & i[a + 1]) << 16 | (255 & i[a]) << 8 | 255 & i[a + 3]; break; case 0: s = (255 & i[a]) << 24 | (255 & i[a + 1]) << 16 | (255 & i[a + 2]) << 8 | 255 & i[a + 3]; break; case 1: s = (255 & i[a + 1]) << 24 | (255 & i[a + 2]) << 16 | (255 & i[a + 3]) << 8 | 255 & i[a] } if (_ && 0 != (255 & s) && 255 != (255 & s)) { var F; lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255 / (255 & s); var Z, f = Math.round((s >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); F = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[f]; var S = Math.round((s >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); Z = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[S]; var g = Math.round((s >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); s = (255 & F) << 24 | (255 & Z) << 16 | (255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[g]) << 8 | 255 & s } switch (s = (255 & h[s >> 24 & 255]) << 24 | (255 & d[s >> 16 & 255]) << 16 | (255 & u[s >> 8 & 255]) << 8 | 255 & p[255 & s], _ && (0 == (255 & s) ? 0 != s && (s = 0) : 255 != (255 & s) && (lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[255 & s], s = ((s >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((s >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((s >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | 255 & s)), r) { case 2: i[a] = s >> 8 & 255, i[a + 1] = s >> 16 & 255, i[a + 2] = s >> 24 & 255, i[a + 3] = 255 & s; break; case 0: i[a] = s >> 24 & 255, i[a + 1] = s >> 16 & 255, i[a + 2] = s >> 8 & 255, i[a + 3] = 255 & s; break; case 1: i[a] = 255 & s, i[a + 1] = s >> 24 & 255, i[a + 2] = s >> 16 & 255, i[a + 3] = s >> 8 & 255 } } } e.dirty = !0, e.version++ } } , lime_graphics_utils_ImageDataUtil.copyChannel = function(e, t, n, i, l, a) { var s, r; switch (a[1]) { case 0: s = 0; break; case 1: s = 1; break; case 2: s = 2; break; case 3: s = 3 } switch (l[1]) { case 0: r = 0; break; case 1: r = 1; break; case 2: r = 2; break; case 3: r = 3 } var _ = t.buffer.data , o = e.buffer.data; if (null != _ && null != o) { for (var p, h, d, u, c = new lime_graphics_utils__$ImageDataUtil_ImageDataView(t,n), m = new lime_graphics_utils__$ImageDataUtil_ImageDataView(e,new lime_math_Rectangle(i.x,i.y,c.width,c.height)), U = t.buffer.format, Q = e.buffer.format, N = t.buffer.premultiplied, F = e.buffer.premultiplied, Z = 0, f = 0, S = m.height; f < S; ) { var g = f++; p = c.offset + c.stride * g, h = m.offset + m.stride * g; for (var B = 0, b = m.width; B < b; ) { B++; switch (U) { case 2: d = (255 & _[p + 2]) << 24 | (255 & _[p + 1]) << 16 | (255 & _[p]) << 8 | 255 & _[p + 3]; break; case 0: d = (255 & _[p]) << 24 | (255 & _[p + 1]) << 16 | (255 & _[p + 2]) << 8 | 255 & _[p + 3]; break; case 1: d = (255 & _[p + 1]) << 24 | (255 & _[p + 2]) << 16 | (255 & _[p + 3]) << 8 | 255 & _[p] } if (N && 0 != (255 & d) && 255 != (255 & d)) { var v; lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255 / (255 & d); var W, T = Math.round((d >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); v = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[T]; var V = Math.round((d >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); W = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[V]; var R = Math.round((d >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); d = (255 & v) << 24 | (255 & W) << 16 | (255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[R]) << 8 | 255 & d } switch (Q) { case 2: u = (255 & o[h + 2]) << 24 | (255 & o[h + 1]) << 16 | (255 & o[h]) << 8 | 255 & o[h + 3]; break; case 0: u = (255 & o[h]) << 24 | (255 & o[h + 1]) << 16 | (255 & o[h + 2]) << 8 | 255 & o[h + 3]; break; case 1: u = (255 & o[h + 1]) << 24 | (255 & o[h + 2]) << 16 | (255 & o[h + 3]) << 8 | 255 & o[h] } if (F && 0 != (255 & u) && 255 != (255 & u)) { var y; lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255 / (255 & u); var D, x = Math.round((u >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); y = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[x]; var J = Math.round((u >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); D = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[J]; var z = Math.round((u >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); u = (255 & y) << 24 | (255 & D) << 16 | (255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[z]) << 8 | 255 & u } switch (r) { case 0: Z = d >> 24 & 255; break; case 1: Z = d >> 16 & 255; break; case 2: Z = d >> 8 & 255; break; case 3: Z = 255 & d } switch (s) { case 0: u = (255 & Z) << 24 | (255 & u >> 16) << 16 | (255 & u >> 8) << 8 | 255 & u; break; case 1: u = (255 & u >> 24) << 24 | (255 & Z) << 16 | (255 & u >> 8) << 8 | 255 & u; break; case 2: u = (255 & u >> 24) << 24 | (255 & u >> 16) << 16 | (255 & Z) << 8 | 255 & u; break; case 3: u = (255 & u >> 24) << 24 | (255 & u >> 16) << 16 | (255 & u >> 8) << 8 | 255 & Z } switch (F && (0 == (255 & u) ? 0 != u && (u = 0) : 255 != (255 & u) && (lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[255 & u], u = ((u >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((u >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((u >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | 255 & u)), Q) { case 2: o[h] = u >> 8 & 255, o[h + 1] = u >> 16 & 255, o[h + 2] = u >> 24 & 255, o[h + 3] = 255 & u; break; case 0: o[h] = u >> 24 & 255, o[h + 1] = u >> 16 & 255, o[h + 2] = u >> 8 & 255, o[h + 3] = 255 & u; break; case 1: o[h] = 255 & u, o[h + 1] = u >> 24 & 255, o[h + 2] = u >> 16 & 255, o[h + 3] = u >> 8 & 255 } p += 4, h += 4 } } e.dirty = !0, e.version++ } } , lime_graphics_utils_ImageDataUtil.copyPixels = function(e, t, n, i, l, a, s) { null == s && (s = !1); var r = t.buffer.data , _ = e.buffer.data; if (null != r && null != _) { var o, p, h, d, u, c, m, U, Q = new lime_graphics_utils__$ImageDataUtil_ImageDataView(t,n), N = new lime_graphics_utils__$ImageDataUtil_ImageDataView(e,new lime_math_Rectangle(i.x,i.y,Q.width,Q.height)), F = t.buffer.format, Z = e.buffer.format, f = t.buffer.premultiplied, S = e.buffer.premultiplied; if (s && t.get_transparent()) if (null == l) for (var g = 0, B = N.height; g < B; ) { var b = g++; o = Q.offset + Q.stride * b, p = N.offset + N.stride * b; for (var v = 0, W = N.width; v < W; ) { v++; switch (F) { case 2: h = (255 & r[o + 2]) << 24 | (255 & r[o + 1]) << 16 | (255 & r[o]) << 8 | 255 & r[o + 3]; break; case 0: h = (255 & r[o]) << 24 | (255 & r[o + 1]) << 16 | (255 & r[o + 2]) << 8 | 255 & r[o + 3]; break; case 1: h = (255 & r[o + 1]) << 24 | (255 & r[o + 2]) << 16 | (255 & r[o + 3]) << 8 | 255 & r[o] } if (f && 0 != (255 & h) && 255 != (255 & h)) { var T; lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255 / (255 & h); var V, R = Math.round((h >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); T = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[R]; var y = Math.round((h >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); V = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[y]; var D = Math.round((h >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); h = (255 & T) << 24 | (255 & V) << 16 | (255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[D]) << 8 | 255 & h } switch (Z) { case 2: U = (255 & _[p + 2]) << 24 | (255 & _[p + 1]) << 16 | (255 & _[p]) << 8 | 255 & _[p + 3]; break; case 0: U = (255 & _[p]) << 24 | (255 & _[p + 1]) << 16 | (255 & _[p + 2]) << 8 | 255 & _[p + 3]; break; case 1: U = (255 & _[p + 1]) << 24 | (255 & _[p + 2]) << 16 | (255 & _[p + 3]) << 8 | 255 & _[p] } if (S && 0 != (255 & U) && 255 != (255 & U)) { var x; lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255 / (255 & U); var J, z = Math.round((U >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); x = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[z]; var k = Math.round((U >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); J = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[k]; var E = Math.round((U >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); U = (255 & x) << 24 | (255 & J) << 16 | (255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[E]) << 8 | 255 & U } if (0 == (m = (d = (255 & h) / 255) + (u = (255 & U) / 255) * (c = 1 - d))) U = 0; else { var P = Math.round(((h >> 24 & 255) * d + (U >> 24 & 255) * u * c) / m); U = (255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[P]) << 24 | (255 & U >> 16) << 16 | (255 & U >> 8) << 8 | 255 & U; var M = Math.round(((h >> 16 & 255) * d + (U >> 16 & 255) * u * c) / m); U = (255 & U >> 24) << 24 | (255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[M]) << 16 | (255 & U >> 8) << 8 | 255 & U; var w = Math.round(((h >> 8 & 255) * d + (U >> 8 & 255) * u * c) / m); U = (255 & U >> 24) << 24 | (255 & U >> 16) << 16 | (255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[w]) << 8 | 255 & U; var $ = Math.round(255 * m); U = (255 & U >> 24) << 24 | (255 & U >> 16) << 16 | (255 & U >> 8) << 8 | 255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[$] } switch (S && (0 == (255 & U) ? 0 != U && (U = 0) : 255 != (255 & U) && (lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[255 & U], U = ((U >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((U >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((U >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | 255 & U)), Z) { case 2: _[p] = U >> 8 & 255, _[p + 1] = U >> 16 & 255, _[p + 2] = U >> 24 & 255, _[p + 3] = 255 & U; break; case 0: _[p] = U >> 24 & 255, _[p + 1] = U >> 16 & 255, _[p + 2] = U >> 8 & 255, _[p + 3] = 255 & U; break; case 1: _[p] = 255 & U, _[p + 1] = U >> 24 & 255, _[p + 2] = U >> 16 & 255, _[p + 3] = U >> 8 & 255 } o += 4, p += 4 } } else { null == a && (a = new lime_math_Vector2); for (var C, G, O = l.buffer.data, I = l.buffer.format, H = l.buffer.premultiplied, Y = new lime_graphics_utils__$ImageDataUtil_ImageDataView(l,new lime_math_Rectangle(a.x,a.y,N.width,N.height)), A = 0, L = Y.height; A < L; ) { var X = A++; o = Q.offset + Q.stride * X, p = N.offset + N.stride * X, C = Y.offset + Y.stride * X; for (var j = 0, K = Y.width; j < K; ) { j++; switch (F) { case 2: h = (255 & r[o + 2]) << 24 | (255 & r[o + 1]) << 16 | (255 & r[o]) << 8 | 255 & r[o + 3]; break; case 0: h = (255 & r[o]) << 24 | (255 & r[o + 1]) << 16 | (255 & r[o + 2]) << 8 | 255 & r[o + 3]; break; case 1: h = (255 & r[o + 1]) << 24 | (255 & r[o + 2]) << 16 | (255 & r[o + 3]) << 8 | 255 & r[o] } if (f && 0 != (255 & h) && 255 != (255 & h)) { var q; lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255 / (255 & h); var ee, te = Math.round((h >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); q = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[te]; var ne = Math.round((h >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); ee = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[ne]; var ie = Math.round((h >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); h = (255 & q) << 24 | (255 & ee) << 16 | (255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[ie]) << 8 | 255 & h } switch (Z) { case 2: U = (255 & _[p + 2]) << 24 | (255 & _[p + 1]) << 16 | (255 & _[p]) << 8 | 255 & _[p + 3]; break; case 0: U = (255 & _[p]) << 24 | (255 & _[p + 1]) << 16 | (255 & _[p + 2]) << 8 | 255 & _[p + 3]; break; case 1: U = (255 & _[p + 1]) << 24 | (255 & _[p + 2]) << 16 | (255 & _[p + 3]) << 8 | 255 & _[p] } if (S && 0 != (255 & U) && 255 != (255 & U)) { var le; lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255 / (255 & U); var ae, se = Math.round((U >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); le = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[se]; var re = Math.round((U >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); ae = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[re]; var _e = Math.round((U >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); U = (255 & le) << 24 | (255 & ae) << 16 | (255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[_e]) << 8 | 255 & U } switch (I) { case 2: G = (255 & O[C + 2]) << 24 | (255 & O[C + 1]) << 16 | (255 & O[C]) << 8 | 255 & O[C + 3]; break; case 0: G = (255 & O[C]) << 24 | (255 & O[C + 1]) << 16 | (255 & O[C + 2]) << 8 | 255 & O[C + 3]; break; case 1: G = (255 & O[C + 1]) << 24 | (255 & O[C + 2]) << 16 | (255 & O[C + 3]) << 8 | 255 & O[C] } if (H && 0 != (255 & G) && 255 != (255 & G)) { var oe; lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255 / (255 & G); var pe, he = Math.round((G >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); oe = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[he]; var de = Math.round((G >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); pe = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[de]; var ue = Math.round((G >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); G = (255 & oe) << 24 | (255 & pe) << 16 | (255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[ue]) << 8 | 255 & G } if (0 == (m = (d = (255 & G) / 255) + (u = (255 & U) / 255) * (c = 1 - d))) U = 0; else { var ce = Math.round(((h >> 24 & 255) * d + (U >> 24 & 255) * u * c) / m); U = (255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[ce]) << 24 | (255 & U >> 16) << 16 | (255 & U >> 8) << 8 | 255 & U; var me = Math.round(((h >> 16 & 255) * d + (U >> 16 & 255) * u * c) / m); U = (255 & U >> 24) << 24 | (255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[me]) << 16 | (255 & U >> 8) << 8 | 255 & U; var Ue = Math.round(((h >> 8 & 255) * d + (U >> 8 & 255) * u * c) / m); U = (255 & U >> 24) << 24 | (255 & U >> 16) << 16 | (255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Ue]) << 8 | 255 & U; var Qe = Math.round(255 * m); U = (255 & U >> 24) << 24 | (255 & U >> 16) << 16 | (255 & U >> 8) << 8 | 255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Qe] } switch (S && (0 == (255 & U) ? 0 != U && (U = 0) : 255 != (255 & U) && (lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[255 & U], U = ((U >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((U >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((U >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | 255 & U)), Z) { case 2: _[p] = U >> 8 & 255, _[p + 1] = U >> 16 & 255, _[p + 2] = U >> 24 & 255, _[p + 3] = 255 & U; break; case 0: _[p] = U >> 24 & 255, _[p + 1] = U >> 16 & 255, _[p + 2] = U >> 8 & 255, _[p + 3] = 255 & U; break; case 1: _[p] = 255 & U, _[p + 1] = U >> 24 & 255, _[p + 2] = U >> 16 & 255, _[p + 3] = U >> 8 & 255 } o += 4, p += 4 } } } else for (var Ne = 0, Fe = N.height; Ne < Fe; ) { var Ze = Ne++; o = Q.offset + Q.stride * Ze, p = N.offset + N.stride * Ze; for (var fe = 0, Se = N.width; fe < Se; ) { fe++; switch (F) { case 2: h = (255 & r[o + 2]) << 24 | (255 & r[o + 1]) << 16 | (255 & r[o]) << 8 | 255 & r[o + 3]; break; case 0: h = (255 & r[o]) << 24 | (255 & r[o + 1]) << 16 | (255 & r[o + 2]) << 8 | 255 & r[o + 3]; break; case 1: h = (255 & r[o + 1]) << 24 | (255 & r[o + 2]) << 16 | (255 & r[o + 3]) << 8 | 255 & r[o] } if (f && 0 != (255 & h) && 255 != (255 & h)) { var ge; lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255 / (255 & h); var Be, be = Math.round((h >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); ge = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[be]; var ve = Math.round((h >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); Be = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[ve]; var We = Math.round((h >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); h = (255 & ge) << 24 | (255 & Be) << 16 | (255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[We]) << 8 | 255 & h } switch (S && (0 == (255 & h) ? 0 != h && (h = 0) : 255 != (255 & h) && (lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[255 & h], h = ((h >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((h >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((h >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | 255 & h)), Z) { case 2: _[p] = h >> 8 & 255, _[p + 1] = h >> 16 & 255, _[p + 2] = h >> 24 & 255, _[p + 3] = 255 & h; break; case 0: _[p] = h >> 24 & 255, _[p + 1] = h >> 16 & 255, _[p + 2] = h >> 8 & 255, _[p + 3] = 255 & h; break; case 1: _[p] = 255 & h, _[p + 1] = h >> 24 & 255, _[p + 2] = h >> 16 & 255, _[p + 3] = h >> 8 & 255 } o += 4, p += 4 } } e.dirty = !0, e.version++ } } , lime_graphics_utils_ImageDataUtil.fillRect = function(e, t, n, i) { var l; switch (i) { case 1: l = (255 & n >> 16) << 24 | (255 & n >> 8) << 16 | (255 & n) << 8 | 255 & n >> 24; break; case 2: l = (255 & n >> 8) << 24 | (255 & n >> 16) << 16 | (255 & n >> 24) << 8 | 255 & n; break; default: l = n } e.get_transparent() || (l = (255 & l >> 24) << 24 | (255 & l >> 16) << 16 | (255 & l >> 8) << 8 | 255); var a = e.buffer.data; if (null != a) { var s = e.buffer.format; e.buffer.premultiplied && (0 == (255 & l) ? 0 != l && (l = 0) : 255 != (255 & l) && (lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[255 & l], l = ((l >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((l >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((l >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | 255 & l)); for (var r, _ = new lime_graphics_utils__$ImageDataUtil_ImageDataView(e,t), o = 0, p = _.height; o < p; ) { var h = o++; r = _.offset + _.stride * h; for (var d = 0, u = _.width; d < u; ) { var c = r + 4 * d++; switch (s) { case 2: a[c] = l >> 8 & 255, a[c + 1] = l >> 16 & 255, a[c + 2] = l >> 24 & 255, a[c + 3] = 255 & l; break; case 0: a[c] = l >> 24 & 255, a[c + 1] = l >> 16 & 255, a[c + 2] = l >> 8 & 255, a[c + 3] = 255 & l; break; case 1: a[c] = 255 & l, a[c + 1] = l >> 24 & 255, a[c + 2] = l >> 16 & 255, a[c + 3] = l >> 8 & 255 } } } e.dirty = !0, e.version++ } } , lime_graphics_utils_ImageDataUtil.getPixel32 = function(e, t, n, i) { var l, a = e.buffer.data, s = 4 * (n + e.offsetY) * e.buffer.width + 4 * (t + e.offsetX); switch (e.buffer.format) { case 2: l = (255 & a[s + 2]) << 24 | (255 & a[s + 1]) << 16 | (255 & a[s]) << 8 | 255 & a[s + 3]; break; case 0: l = (255 & a[s]) << 24 | (255 & a[s + 1]) << 16 | (255 & a[s + 2]) << 8 | 255 & a[s + 3]; break; case 1: l = (255 & a[s + 1]) << 24 | (255 & a[s + 2]) << 16 | (255 & a[s + 3]) << 8 | 255 & a[s] } if (e.buffer.premultiplied && 0 != (255 & l) && 255 != (255 & l)) { var r; lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255 / (255 & l); var _, o = Math.round((l >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); r = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[o]; var p, h = Math.round((l >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); _ = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[h]; var d = Math.round((l >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); p = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[d], l = (255 & r) << 24 | (255 & _) << 16 | (255 & p) << 8 | 255 & l } switch (i) { case 1: return (255 & l) << 24 | (255 & l >> 24) << 16 | (255 & l >> 16) << 8 | 255 & l >> 8; case 2: return (255 & l >> 8) << 24 | (255 & l >> 16) << 16 | (255 & l >> 24) << 8 | 255 & l; default: return l } } , lime_graphics_utils_ImageDataUtil.multiplyAlpha = function(e) { var t = e.buffer.data; if (null != t && e.buffer.transparent) { for (var n, i = e.buffer.format, l = t.length / 4 | 0, a = 0; a < l; ) { var s = a++ , r = 4 * s; switch (i) { case 2: n = (255 & t[r + 2]) << 24 | (255 & t[r + 1]) << 16 | (255 & t[r]) << 8 | 255 & t[r + 3]; break; case 0: n = (255 & t[r]) << 24 | (255 & t[r + 1]) << 16 | (255 & t[r + 2]) << 8 | 255 & t[r + 3]; break; case 1: n = (255 & t[r + 1]) << 24 | (255 & t[r + 2]) << 16 | (255 & t[r + 3]) << 8 | 255 & t[r] } var _ = 4 * s; switch (0 == (255 & n) ? 0 != n && (n = 0) : 255 != (255 & n) && (lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[255 & n], n = ((n >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((n >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((n >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | 255 & n), i) { case 2: t[_] = n >> 8 & 255, t[_ + 1] = n >> 16 & 255, t[_ + 2] = n >> 24 & 255, t[_ + 3] = 255 & n; break; case 0: t[_] = n >> 24 & 255, t[_ + 1] = n >> 16 & 255, t[_ + 2] = n >> 8 & 255, t[_ + 3] = 255 & n; break; case 1: t[_] = 255 & n, t[_ + 1] = n >> 24 & 255, t[_ + 2] = n >> 16 & 255, t[_ + 3] = n >> 8 & 255 } } e.buffer.premultiplied = !0, e.dirty = !0, e.version++ } } , lime_graphics_utils_ImageDataUtil.setFormat = function(e, t) { var n = e.buffer.data; if (null != n) { var i, l, a, s, r, _, o, p, h, d, u, c, m, U = n.length / 4 | 0; switch (e.get_format()) { case 0: l = 0, a = 1, s = 2, r = 3; break; case 1: l = 1, a = 2, s = 3, r = 0; break; case 2: l = 2, a = 1, s = 0, r = 3 } switch (t) { case 0: _ = 0, o = 1, p = 2, h = 3; break; case 1: _ = 1, o = 2, p = 3, h = 0; break; case 2: _ = 2, o = 1, p = 0, h = 3 } for (var Q = 0; Q < U; ) { d = n[(i = 4 * Q++) + l], u = n[i + a], c = n[i + s], m = n[i + r], n[i + _] = d, n[i + o] = u, n[i + p] = c, n[i + h] = m } e.buffer.format = t, e.dirty = !0, e.version++ } } , lime_graphics_utils_ImageDataUtil.setPixel32 = function(e, t, n, i, l) { var a; switch (l) { case 1: a = (255 & i >> 16) << 24 | (255 & i >> 8) << 16 | (255 & i) << 8 | 255 & i >> 24; break; case 2: a = (255 & i >> 8) << 24 | (255 & i >> 16) << 16 | (255 & i >> 24) << 8 | 255 & i; break; default: a = i } e.get_transparent() || (a = (255 & a >> 24) << 24 | (255 & a >> 16) << 16 | (255 & a >> 8) << 8 | 255); var s = e.buffer.data , r = 4 * (n + e.offsetY) * e.buffer.width + 4 * (t + e.offsetX); switch (e.buffer.premultiplied && (0 == (255 & a) ? 0 != a && (a = 0) : 255 != (255 & a) && (lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[255 & a], a = ((a >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((a >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((a >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | 255 & a)), e.buffer.format) { case 2: s[r] = a >> 8 & 255, s[r + 1] = a >> 16 & 255, s[r + 2] = a >> 24 & 255, s[r + 3] = 255 & a; break; case 0: s[r] = a >> 24 & 255, s[r + 1] = a >> 16 & 255, s[r + 2] = a >> 8 & 255, s[r + 3] = 255 & a; break; case 1: s[r] = 255 & a, s[r + 1] = a >> 24 & 255, s[r + 2] = a >> 16 & 255, s[r + 3] = a >> 8 & 255 } e.dirty = !0, e.version++ } , lime_graphics_utils_ImageDataUtil.unmultiplyAlpha = function(e) { var t = e.buffer.data; if (null != t) { for (var n, i = e.buffer.format, l = t.length / 4 | 0, a = 0; a < l; ) { var s = a++ , r = 4 * s; switch (i) { case 2: n = (255 & t[r + 2]) << 24 | (255 & t[r + 1]) << 16 | (255 & t[r]) << 8 | 255 & t[r + 3]; break; case 0: n = (255 & t[r]) << 24 | (255 & t[r + 1]) << 16 | (255 & t[r + 2]) << 8 | 255 & t[r + 3]; break; case 1: n = (255 & t[r + 1]) << 24 | (255 & t[r + 2]) << 16 | (255 & t[r + 3]) << 8 | 255 & t[r] } if (0 != (255 & n) && 255 != (255 & n)) { var _; lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255 / (255 & n); var o, p = Math.round((n >> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); _ = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[p]; var h = Math.round((n >> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); o = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[h]; var d = Math.round((n >> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult); n = (255 & _) << 24 | (255 & o) << 16 | (255 & lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[d]) << 8 | 255 & n } var u = 4 * s; switch (i) { case 2: t[u] = n >> 8 & 255, t[u + 1] = n >> 16 & 255, t[u + 2] = n >> 24 & 255, t[u + 3] = 255 & n; break; case 0: t[u] = n >> 24 & 255, t[u + 1] = n >> 16 & 255, t[u + 2] = n >> 8 & 255, t[u + 3] = 255 & n; break; case 1: t[u] = 255 & n, t[u + 1] = n >> 24 & 255, t[u + 2] = n >> 16 & 255, t[u + 3] = n >> 8 & 255 } } e.buffer.premultiplied = !1, e.dirty = !0, e.version++ } } ; var lime_graphics_utils__$ImageDataUtil_ImageDataView = function(e, t) { this.image = e, null == t ? this.rect = e.get_rect() : (t.x < 0 && (t.x = 0), t.y < 0 && (t.y = 0), t.x + t.width > e.width && (t.width = e.width - t.x), t.y + t.height > e.height && (t.height = e.height - t.y), t.width < 0 && (t.width = 0), t.height < 0 && (t.height = 0), this.rect = t), this.stride = e.buffer.get_stride(), this.x = Math.ceil(this.rect.x), this.y = Math.ceil(this.rect.y), this.width = Math.floor(this.rect.width), this.height = Math.floor(this.rect.height), this.offset = this.stride * (this.y + e.offsetY) + 4 * (this.x + e.offsetX) }; $hxClasses["lime.graphics.utils._ImageDataUtil.ImageDataView"] = lime_graphics_utils__$ImageDataUtil_ImageDataView, lime_graphics_utils__$ImageDataUtil_ImageDataView.__name__ = ["lime", "graphics", "utils", "_ImageDataUtil", "ImageDataView"], lime_graphics_utils__$ImageDataUtil_ImageDataView.prototype = { x: null, y: null, height: null, width: null, image: null, offset: null, rect: null, stride: null, __class__: lime_graphics_utils__$ImageDataUtil_ImageDataView }; var lime_math__$ColorMatrix_ColorMatrix_$Impl_$ = {}; $hxClasses["lime.math._ColorMatrix.ColorMatrix_Impl_"] = lime_math__$ColorMatrix_ColorMatrix_$Impl_$, lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__name__ = ["lime", "math", "_ColorMatrix", "ColorMatrix_Impl_"], lime_math__$ColorMatrix_ColorMatrix_$Impl_$.getAlphaTable = function(e) { var t, n; null == lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__alphaTable && (t = new Uint8Array(256), lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__alphaTable = t); lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__alphaTable[0] = 0; for (var i = 1; i < 256; ) { var l = i++; (n = Math.floor(l * e[18] + 255 * e[19])) > 255 && (n = 255), n < 0 && (n = 0), lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__alphaTable[l] = n } return lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__alphaTable } , lime_math__$ColorMatrix_ColorMatrix_$Impl_$.getBlueTable = function(e) { var t, n; null == lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__blueTable && (t = new Uint8Array(256), lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__blueTable = t); for (var i = 0; i < 256; ) { var l = i++; (n = Math.floor(l * e[12] + 255 * e[14])) > 255 && (n = 255), n < 0 && (n = 0), lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__blueTable[l] = n } return lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__blueTable } , lime_math__$ColorMatrix_ColorMatrix_$Impl_$.getGreenTable = function(e) { var t, n; null == lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__greenTable && (t = new Uint8Array(256), lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__greenTable = t); for (var i = 0; i < 256; ) { var l = i++; (n = Math.floor(l * e[6] + 255 * e[9])) > 255 && (n = 255), n < 0 && (n = 0), lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__greenTable[l] = n } return lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__greenTable } , lime_math__$ColorMatrix_ColorMatrix_$Impl_$.getRedTable = function(e) { var t, n; null == lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__redTable && (t = new Uint8Array(256), lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__redTable = t); for (var i = 0; i < 256; ) { var l = i++; (n = Math.floor(l * e[0] + 255 * e[4])) > 255 && (n = 255), n < 0 && (n = 0), lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__redTable[l] = n } return lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__redTable } , lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__toFlashColorTransform = function(e) { return null } ; var lime_math_Matrix3 = function() {}; $hxClasses["lime.math.Matrix3"] = lime_math_Matrix3, lime_math_Matrix3.__name__ = ["lime", "math", "Matrix3"]; var lime_math__$Matrix4_Matrix4_$Impl_$ = {}; $hxClasses["lime.math._Matrix4.Matrix4_Impl_"] = lime_math__$Matrix4_Matrix4_$Impl_$, lime_math__$Matrix4_Matrix4_$Impl_$.__name__ = ["lime", "math", "_Matrix4", "Matrix4_Impl_"], lime_math__$Matrix4_Matrix4_$Impl_$._new = function(e) { var t; if (null != e && 16 == e.length) t = e; else { var n = lime_math__$Matrix4_Matrix4_$Impl_$.__identity; t = null != n ? new Float32Array(n) : null } return t } , lime_math__$Matrix4_Matrix4_$Impl_$.append = function(e, t) { var n = e[0] , i = e[4] , l = e[8] , a = e[12] , s = e[1] , r = e[5] , _ = e[9] , o = e[13] , p = e[2] , h = e[6] , d = e[10] , u = e[14] , c = e[3] , m = e[7] , U = e[11] , Q = e[15] , N = lime_math__$Matrix4_Matrix4_$Impl_$.get(t, 0) , F = lime_math__$Matrix4_Matrix4_$Impl_$.get(t, 4) , Z = lime_math__$Matrix4_Matrix4_$Impl_$.get(t, 8) , f = lime_math__$Matrix4_Matrix4_$Impl_$.get(t, 12) , S = lime_math__$Matrix4_Matrix4_$Impl_$.get(t, 1) , g = lime_math__$Matrix4_Matrix4_$Impl_$.get(t, 5) , B = lime_math__$Matrix4_Matrix4_$Impl_$.get(t, 9) , b = lime_math__$Matrix4_Matrix4_$Impl_$.get(t, 13) , v = lime_math__$Matrix4_Matrix4_$Impl_$.get(t, 2) , W = lime_math__$Matrix4_Matrix4_$Impl_$.get(t, 6) , T = lime_math__$Matrix4_Matrix4_$Impl_$.get(t, 10) , V = lime_math__$Matrix4_Matrix4_$Impl_$.get(t, 14) , R = lime_math__$Matrix4_Matrix4_$Impl_$.get(t, 3) , y = lime_math__$Matrix4_Matrix4_$Impl_$.get(t, 7) , D = lime_math__$Matrix4_Matrix4_$Impl_$.get(t, 11) , x = lime_math__$Matrix4_Matrix4_$Impl_$.get(t, 15); e[0] = n * N + s * F + p * Z + c * f, e[1] = n * S + s * g + p * B + c * b, e[2] = n * v + s * W + p * T + c * V, e[3] = n * R + s * y + p * D + c * x, e[4] = i * N + r * F + h * Z + m * f, e[5] = i * S + r * g + h * B + m * b, e[6] = i * v + r * W + h * T + m * V, e[7] = i * R + r * y + h * D + m * x, e[8] = l * N + _ * F + d * Z + U * f, e[9] = l * S + _ * g + d * B + U * b, e[10] = l * v + _ * W + d * T + U * V, e[11] = l * R + _ * y + d * D + U * x, e[12] = a * N + o * F + u * Z + Q * f, e[13] = a * S + o * g + u * B + Q * b, e[14] = a * v + o * W + u * T + Q * V, e[15] = a * R + o * y + u * D + Q * x } , lime_math__$Matrix4_Matrix4_$Impl_$.createOrtho = function(e, t, n, i, l, a) { var s, r = 1 / (t - e), _ = 1 / (i - n), o = 1 / (a - l); return lime_math__$Matrix4_Matrix4_$Impl_$._new(null != (s = [2 * r, 0, 0, 0, 0, 2 * _, 0, 0, 0, 0, -2 * o, 0, -(e + t) * r, -(n + i) * _, -(l + a) * o, 1]) ? new Float32Array(s) : null) } , lime_math__$Matrix4_Matrix4_$Impl_$.identity = function(e) { e[0] = 1, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 0, e[5] = 1, e[6] = 0, e[7] = 0, e[8] = 0, e[9] = 0, e[10] = 1, e[11] = 0, e[12] = 0, e[13] = 0, e[14] = 0, e[15] = 1 } , lime_math__$Matrix4_Matrix4_$Impl_$.get = function(e, t) { return e[t] } , lime_math__$Matrix4_Matrix4_$Impl_$.set = function(e, t, n) { return e[t] = n, n } ; var lime_math_Rectangle = function(e, t, n, i) { null == i && (i = 0), null == n && (n = 0), null == t && (t = 0), null == e && (e = 0), this.x = e, this.y = t, this.width = n, this.height = i }; $hxClasses["lime.math.Rectangle"] = lime_math_Rectangle, lime_math_Rectangle.__name__ = ["lime", "math", "Rectangle"], lime_math_Rectangle.prototype = { height: null, width: null, x: null, y: null, offset: function(e, t) { this.x += e, this.y += t }, setTo: function(e, t, n, i) { this.x = e, this.y = t, this.width = n, this.height = i }, __toFlashRectangle: function() { return null }, __class__: lime_math_Rectangle }; var lime_math_Vector2 = function(e, t) { null == t && (t = 0), null == e && (e = 0), this.x = e, this.y = t }; $hxClasses["lime.math.Vector2"] = lime_math_Vector2, lime_math_Vector2.__name__ = ["lime", "math", "Vector2"], lime_math_Vector2.prototype = { x: null, y: null, offset: function(e, t) { this.x += e, this.y += t }, setTo: function(e, t) { this.x = e, this.y = t }, __toFlashPoint: function() { return null }, __class__: lime_math_Vector2 }; var lime_math_Vector4 = function() {}; $hxClasses["lime.math.Vector4"] = lime_math_Vector4, lime_math_Vector4.__name__ = ["lime", "math", "Vector4"], lime_math_Vector4.prototype = { w: null, x: null, y: null, z: null, __class__: lime_math_Vector4 }; var lime_math_color__$RGBA_RGBA_$Impl_$ = {}; $hxClasses["lime.math.color._RGBA.RGBA_Impl_"] = lime_math_color__$RGBA_RGBA_$Impl_$, lime_math_color__$RGBA_RGBA_$Impl_$.__name__ = ["lime", "math", "color", "_RGBA", "RGBA_Impl_"]; var lime_media_ALAudioContext = function() {}; $hxClasses["lime.media.ALAudioContext"] = lime_media_ALAudioContext, lime_media_ALAudioContext.__name__ = ["lime", "media", "ALAudioContext"]; var lime_media_ALCAudioContext = function() {}; $hxClasses["lime.media.ALCAudioContext"] = lime_media_ALCAudioContext, lime_media_ALCAudioContext.__name__ = ["lime", "media", "ALCAudioContext"]; var lime_media_AudioBuffer = function() {}; $hxClasses["lime.media.AudioBuffer"] = lime_media_AudioBuffer, lime_media_AudioBuffer.__name__ = ["lime", "media", "AudioBuffer"], lime_media_AudioBuffer.fromBytes = function(e) { return null } , lime_media_AudioBuffer.fromFile = function(e) { if (null == e) return null; var t = new lime_media_AudioBuffer; return t.__srcHowl = new Howl({ src: [e] }), t } , lime_media_AudioBuffer.fromFiles = function(e) { var t = new lime_media_AudioBuffer; return t.__srcHowl = new Howl({ src: e }), t } , lime_media_AudioBuffer.loadFromFile = function(e) { var t = new lime_app_Promise , n = lime_media_AudioBuffer.fromFile(e); return null != n ? null != n && (n.__srcHowl.on("load", function() { t.complete(n) }), n.__srcHowl.on("loaderror", function() { t.error(null) }), n.__srcHowl.load()) : t.error(null), t.future } , lime_media_AudioBuffer.loadFromFiles = function(e) { var t = new lime_app_Promise , n = lime_media_AudioBuffer.fromFiles(e); return null != n ? (n.__srcHowl.on("load", function() { t.complete(n) }), n.__srcHowl.on("loaderror", function() { t.error(null) }), n.__srcHowl.load()) : t.error(null), t.future } , lime_media_AudioBuffer.prototype = { __srcHowl: null, __class__: lime_media_AudioBuffer }; var lime_media_AudioContext = $hxClasses["lime.media.AudioContext"] = { __ename__: ["lime", "media", "AudioContext"], __constructs__: ["OPENAL", "HTML5", "WEB", "FLASH", "CUSTOM"] }; lime_media_AudioContext.OPENAL = function(e, t) { var n = ["OPENAL", 0, e, t]; return n.__enum__ = lime_media_AudioContext, n.toString = $estr, n } , lime_media_AudioContext.HTML5 = function(e) { var t = ["HTML5", 1, e]; return t.__enum__ = lime_media_AudioContext, t.toString = $estr, t } , lime_media_AudioContext.WEB = function(e) { var t = ["WEB", 2, e]; return t.__enum__ = lime_media_AudioContext, t.toString = $estr, t } , lime_media_AudioContext.FLASH = function(e) { var t = ["FLASH", 3, e]; return t.__enum__ = lime_media_AudioContext, t.toString = $estr, t } , lime_media_AudioContext.CUSTOM = function(e) { var t = ["CUSTOM", 4, e]; return t.__enum__ = lime_media_AudioContext, t.toString = $estr, t } ; var lime_media_AudioManager = function() {}; $hxClasses["lime.media.AudioManager"] = lime_media_AudioManager, lime_media_AudioManager.__name__ = ["lime", "media", "AudioManager"], lime_media_AudioManager.init = function(e) { if (null == lime_media_AudioManager.context) if (null == e) try { window.AudioContext = window.AudioContext || window.webkitAudioContext, lime_media_AudioManager.context = lime_media_AudioContext.WEB(new AudioContext) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), lime_media_AudioManager.context = lime_media_AudioContext.HTML5(new lime_media_HTML5AudioContext) } else lime_media_AudioManager.context = e } ; var lime_media_AudioSource = function() { this.onComplete = new lime_app__$Event_$Void_$Void }; $hxClasses["lime.media.AudioSource"] = lime_media_AudioSource, lime_media_AudioSource.__name__ = ["lime", "media", "AudioSource"], lime_media_AudioSource.prototype = { onComplete: null, buffer: null, offset: null, backend: null, dispose: function() { this.backend.dispose() }, play: function() { this.backend.play() }, stop: function() { this.backend.stop() }, get_currentTime: function() { return this.backend.getCurrentTime() }, set_currentTime: function(e) { return this.backend.setCurrentTime(e) }, get_gain: function() { return this.backend.getGain() }, set_gain: function(e) { return this.backend.setGain(e) }, get_position: function() { return this.backend.getPosition() }, set_position: function(e) { return this.backend.setPosition(e) }, __class__: lime_media_AudioSource, __properties__: { set_position: "set_position", get_position: "get_position", set_gain: "set_gain", get_gain: "get_gain", set_currentTime: "set_currentTime", get_currentTime: "get_currentTime" } }; var lime_media_FlashAudioContext = function() {}; $hxClasses["lime.media.FlashAudioContext"] = lime_media_FlashAudioContext, lime_media_FlashAudioContext.__name__ = ["lime", "media", "FlashAudioContext"]; var lime_media_HTML5AudioContext = function() {}; $hxClasses["lime.media.HTML5AudioContext"] = lime_media_HTML5AudioContext, lime_media_HTML5AudioContext.__name__ = ["lime", "media", "HTML5AudioContext"], lime_media_HTML5AudioContext.prototype = { __class__: lime_media_HTML5AudioContext }; var lime_net__$IHTTPRequest = function() {}; $hxClasses["lime.net._IHTTPRequest"] = lime_net__$IHTTPRequest, lime_net__$IHTTPRequest.__name__ = ["lime", "net", "_IHTTPRequest"], lime_net__$IHTTPRequest.prototype = { contentType: null, data: null, enableResponseHeaders: null, formData: null, headers: null, method: null, responseHeaders: null, responseStatus: null, timeout: null, __class__: lime_net__$IHTTPRequest }; var lime_net__$HTTPRequest_AbstractHTTPRequest = function(e) { this.uri = e, this.contentType = "application/x-www-form-urlencoded", this.followRedirects = !0, this.formData = new haxe_ds_StringMap, this.headers = [], this.method = "GET", this.timeout = 3e4, this.backend = new lime__$backend_html5_HTML5HTTPRequest, this.backend.init(this) }; $hxClasses["lime.net._HTTPRequest.AbstractHTTPRequest"] = lime_net__$HTTPRequest_AbstractHTTPRequest, lime_net__$HTTPRequest_AbstractHTTPRequest.__name__ = ["lime", "net", "_HTTPRequest", "AbstractHTTPRequest"], lime_net__$HTTPRequest_AbstractHTTPRequest.__interfaces__ = [lime_net__$IHTTPRequest], lime_net__$HTTPRequest_AbstractHTTPRequest.prototype = { contentType: null, data: null, enableResponseHeaders: null, followRedirects: null, formData: null, headers: null, method: null, responseData: null, responseHeaders: null, responseStatus: null, timeout: null, uri: null, backend: null, __class__: lime_net__$HTTPRequest_AbstractHTTPRequest }; var lime_net__$HTTPRequest_$Bytes = function(e) { lime_net__$HTTPRequest_AbstractHTTPRequest.call(this, e) }; $hxClasses["lime.net._HTTPRequest_Bytes"] = lime_net__$HTTPRequest_$Bytes, lime_net__$HTTPRequest_$Bytes.__name__ = ["lime", "net", "_HTTPRequest_Bytes"], lime_net__$HTTPRequest_$Bytes.__super__ = lime_net__$HTTPRequest_AbstractHTTPRequest, lime_net__$HTTPRequest_$Bytes.prototype = $extend(lime_net__$HTTPRequest_AbstractHTTPRequest.prototype, { fromBytes: function(e) { return e }, load: function(e) { var t = this; null != e && (this.uri = e); var n = new lime_app_Promise , i = this.backend.loadData(this.uri); return i.onProgress($bind(n, n.progress)), i.onError($bind(n, n.error)), i.onComplete(function(e) { t.responseData = t.fromBytes(e), n.complete(t.responseData) }), n.future }, __class__: lime_net__$HTTPRequest_$Bytes }); var lime_net_HTTPRequestHeader = function(e, t) { null == t && (t = ""), this.name = e, this.value = t }; $hxClasses["lime.net.HTTPRequestHeader"] = lime_net_HTTPRequestHeader, lime_net_HTTPRequestHeader.__name__ = ["lime", "net", "HTTPRequestHeader"], lime_net_HTTPRequestHeader.prototype = { name: null, value: null, __class__: lime_net_HTTPRequestHeader }; var lime_net__$HTTPRequest_$lime_$utils_$Bytes = function(e) { lime_net__$HTTPRequest_$Bytes.call(this, e) }; $hxClasses["lime.net._HTTPRequest_lime_utils_Bytes"] = lime_net__$HTTPRequest_$lime_$utils_$Bytes, lime_net__$HTTPRequest_$lime_$utils_$Bytes.__name__ = ["lime", "net", "_HTTPRequest_lime_utils_Bytes"], lime_net__$HTTPRequest_$lime_$utils_$Bytes.__super__ = lime_net__$HTTPRequest_$Bytes, lime_net__$HTTPRequest_$lime_$utils_$Bytes.prototype = $extend(lime_net__$HTTPRequest_$Bytes.prototype, { fromBytes: function(e) { return lime_utils__$Bytes_Bytes_$Impl_$.fromBytes(e) }, __class__: lime_net__$HTTPRequest_$lime_$utils_$Bytes }); var lime_system_Clipboard = function() {}; $hxClasses["lime.system.Clipboard"] = lime_system_Clipboard, lime_system_Clipboard.__name__ = ["lime", "system", "Clipboard"], lime_system_Clipboard.__properties__ = { set_text: "set_text", get_text: "get_text" }, lime_system_Clipboard.get_text = function() { return lime_system_Clipboard._text } , lime_system_Clipboard.set_text = function(e) { lime_system_Clipboard._text = e; var t = lime_app_Application.current.__windows[0]; return null != t && t.backend.setClipboard(e), e } ; var lime_system_System = function() {}; $hxClasses["lime.system.System"] = lime_system_System, lime_system_System.__name__ = ["lime", "system", "System"], lime_system_System.exit = function(e) {} , lime_system_System.getTimer = function() { return (new Date).getTime() } , lime_system_System.openURL = function(e, t) { null == t && (t = "_blank"), null != e && window.open(e, t) } ; var lime_system_ThreadPool = function(e, t) { null == t && (t = 1), null == e && (e = 0), this.onError = new lime_app__$Event_$Dynamic_$Void, this.onComplete = new lime_app__$Event_$Dynamic_$Void, this.doWork = new lime_app__$Event_$Dynamic_$Void, this.minThreads = e, this.maxThreads = t, this.currentThreads = 0 }; $hxClasses["lime.system.ThreadPool"] = lime_system_ThreadPool, lime_system_ThreadPool.__name__ = ["lime", "system", "ThreadPool"], lime_system_ThreadPool.prototype = { currentThreads: null, doWork: null, maxThreads: null, minThreads: null, onComplete: null, onError: null, queue: function(e) { this.doWork.dispatch(e) }, sendComplete: function(e) { this.onComplete.dispatch(e) }, sendError: function(e) { this.onError.dispatch(e) }, __class__: lime_system_ThreadPool }; var lime_text_Font = function(e) { null != e && (this.name = e), null != this.__fontPath && this.__fromFile(this.__fontPath) }; $hxClasses["lime.text.Font"] = lime_text_Font, lime_text_Font.__name__ = ["lime", "text", "Font"], lime_text_Font.fromFile = function(e) { if (null == e) return null; var t = new lime_text_Font; return t.__fromFile(e), t } , lime_text_Font.loadFromName = function(e) { return (new lime_text_Font).__loadFromName(e) } , lime_text_Font.__makeLoaderNode = function(e) { var t = window.document.createElement("span"); t.innerHTML = "giItT1WQy@!-/#"; var n = t.style; return n.position = "absolute", n.left = "-10000px", n.top = "-10000px", n.fontSize = "300px", n.fontFamily = e, n.fontVariant = "normal", n.fontStyle = "normal", n.fontWeight = "normal", n.letterSpacing = "0", window.document.body.appendChild(t), t } , lime_text_Font.prototype = { name: null, __fontPath: null, __fromFile: function(e) { this.__fontPath = e }, __loadFromName: function(e) { var t = this , n = new lime_app_Promise; this.name = e; var i = e , l = window.navigator.userAgent.toLowerCase(); if (l.indexOf(" safari/") >= 0 && l.indexOf(" chrome/") < 0 || !window.document.fonts || !$bind($_ = window.document.fonts, $_.load)) { var a = lime_text_Font.__makeLoaderNode("sans-serif") , s = lime_text_Font.__makeLoaderNode("serif") , r = a.offsetWidth , _ = s.offsetWidth; a.style.fontFamily = "'" + e + "', sans-serif", s.style.fontFamily = "'" + e + "', serif"; var o = null , p = !1 , h = function() { return (a.offsetWidth != r || s.offsetWidth != _) && (p ? (null != o && window.clearInterval(o), a.parentNode.removeChild(a), s.parentNode.removeChild(s), a = null, s = null, n.complete(t), !0) : (p = !0, !1)) }; h() || (o = window.setInterval(h, 50)) } else window.document.fonts.load("1em '" + i + "'").then(function(e) { n.complete(t) }); return n.future }, __class__: lime_text_Font }; var lime_ui_Gamepad = function(e) { this.onDisconnect = new lime_app__$Event_$Void_$Void, this.onButtonUp = new lime_app__$Event_$lime_$ui_$GamepadButton_$Void, this.onButtonDown = new lime_app__$Event_$lime_$ui_$GamepadButton_$Void, this.onAxisMove = new lime_app__$Event_$lime_$ui_$GamepadAxis_$Float_$Void, this.id = e, this.connected = !0 }; $hxClasses["lime.ui.Gamepad"] = lime_ui_Gamepad, lime_ui_Gamepad.__name__ = ["lime", "ui", "Gamepad"], lime_ui_Gamepad.__connect = function(e) { if (!lime_ui_Gamepad.devices.h.hasOwnProperty(e)) { var t = new lime_ui_Gamepad(e); lime_ui_Gamepad.devices.h[e] = t, lime_ui_Gamepad.onConnect.dispatch(t) } } , lime_ui_Gamepad.__disconnect = function(e) { var t = lime_ui_Gamepad.devices.h[e]; null != t && (t.connected = !1), lime_ui_Gamepad.devices.remove(e), null != t && t.onDisconnect.dispatch() } , lime_ui_Gamepad.prototype = { connected: null, id: null, onAxisMove: null, onButtonDown: null, onButtonUp: null, onDisconnect: null, get_guid: function() { return lime_ui_Joystick.__getDeviceData()[this.id].id }, get_name: function() { return lime_ui_Joystick.__getDeviceData()[this.id].id }, __class__: lime_ui_Gamepad, __properties__: { get_name: "get_name", get_guid: "get_guid" } }; var lime_ui_Joystick = function(e) { this.onTrackballMove = new lime_app__$Event_$Int_$Float_$Void, this.onHatMove = new lime_app__$Event_$Int_$lime_$ui_$JoystickHatPosition_$Void, this.onDisconnect = new lime_app__$Event_$Void_$Void, this.onButtonUp = new lime_app__$Event_$Int_$Void, this.onButtonDown = new lime_app__$Event_$Int_$Void, this.onAxisMove = new lime_app__$Event_$Int_$Float_$Void, this.id = e, this.connected = !0 }; $hxClasses["lime.ui.Joystick"] = lime_ui_Joystick, lime_ui_Joystick.__name__ = ["lime", "ui", "Joystick"], lime_ui_Joystick.__connect = function(e) { if (!lime_ui_Joystick.devices.h.hasOwnProperty(e)) { var t = new lime_ui_Joystick(e); lime_ui_Joystick.devices.h[e] = t, lime_ui_Joystick.onConnect.dispatch(t) } } , lime_ui_Joystick.__disconnect = function(e) { var t = lime_ui_Joystick.devices.h[e]; null != t && (t.connected = !1), lime_ui_Joystick.devices.remove(e), null != t && t.onDisconnect.dispatch() } , lime_ui_Joystick.__getDeviceData = function() { return navigator.getGamepads ? navigator.getGamepads() : navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : null } , lime_ui_Joystick.prototype = { connected: null, id: null, onAxisMove: null, onButtonDown: null, onButtonUp: null, onDisconnect: null, onHatMove: null, onTrackballMove: null, __class__: lime_ui_Joystick }; var lime_ui__$KeyModifier_KeyModifier_$Impl_$ = {}; $hxClasses["lime.ui._KeyModifier.KeyModifier_Impl_"] = lime_ui__$KeyModifier_KeyModifier_$Impl_$, lime_ui__$KeyModifier_KeyModifier_$Impl_$.__name__ = ["lime", "ui", "_KeyModifier", "KeyModifier_Impl_"], lime_ui__$KeyModifier_KeyModifier_$Impl_$.__properties__ = { get_shiftKey: "get_shiftKey", get_metaKey: "get_metaKey", get_ctrlKey: "get_ctrlKey", get_altKey: "get_altKey" }, lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_altKey = function(e) { return (256 & e) > 0 || (512 & e) > 0 } , lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_ctrlKey = function(e) { return (64 & e) > 0 || (128 & e) > 0 } , lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey = function(e) { return (1024 & e) > 0 || (2048 & e) > 0 } , lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey = function(e) { return (1 & e) > 0 || (2 & e) > 0 } ; var lime_ui_Mouse = function() {}; $hxClasses["lime.ui.Mouse"] = lime_ui_Mouse, lime_ui_Mouse.__name__ = ["lime", "ui", "Mouse"], lime_ui_Mouse.__properties__ = { set_cursor: "set_cursor" }, lime_ui_Mouse.set_cursor = function(e) { return lime__$backend_html5_HTML5Mouse.set_cursor(e) } ; var lime_ui_MouseCursor = $hxClasses["lime.ui.MouseCursor"] = { __ename__: ["lime", "ui", "MouseCursor"], __constructs__: ["ARROW", "CROSSHAIR", "DEFAULT", "MOVE", "POINTER", "RESIZE_NESW", "RESIZE_NS", "RESIZE_NWSE", "RESIZE_WE", "TEXT", "WAIT", "WAIT_ARROW", "CUSTOM"] }; lime_ui_MouseCursor.ARROW = ["ARROW", 0], lime_ui_MouseCursor.ARROW.toString = $estr, lime_ui_MouseCursor.ARROW.__enum__ = lime_ui_MouseCursor, lime_ui_MouseCursor.CROSSHAIR = ["CROSSHAIR", 1], lime_ui_MouseCursor.CROSSHAIR.toString = $estr, lime_ui_MouseCursor.CROSSHAIR.__enum__ = lime_ui_MouseCursor, lime_ui_MouseCursor.DEFAULT = ["DEFAULT", 2], lime_ui_MouseCursor.DEFAULT.toString = $estr, lime_ui_MouseCursor.DEFAULT.__enum__ = lime_ui_MouseCursor, lime_ui_MouseCursor.MOVE = ["MOVE", 3], lime_ui_MouseCursor.MOVE.toString = $estr, lime_ui_MouseCursor.MOVE.__enum__ = lime_ui_MouseCursor, lime_ui_MouseCursor.POINTER = ["POINTER", 4], lime_ui_MouseCursor.POINTER.toString = $estr, lime_ui_MouseCursor.POINTER.__enum__ = lime_ui_MouseCursor, lime_ui_MouseCursor.RESIZE_NESW = ["RESIZE_NESW", 5], lime_ui_MouseCursor.RESIZE_NESW.toString = $estr, lime_ui_MouseCursor.RESIZE_NESW.__enum__ = lime_ui_MouseCursor, lime_ui_MouseCursor.RESIZE_NS = ["RESIZE_NS", 6], lime_ui_MouseCursor.RESIZE_NS.toString = $estr, lime_ui_MouseCursor.RESIZE_NS.__enum__ = lime_ui_MouseCursor, lime_ui_MouseCursor.RESIZE_NWSE = ["RESIZE_NWSE", 7], lime_ui_MouseCursor.RESIZE_NWSE.toString = $estr, lime_ui_MouseCursor.RESIZE_NWSE.__enum__ = lime_ui_MouseCursor, lime_ui_MouseCursor.RESIZE_WE = ["RESIZE_WE", 8], lime_ui_MouseCursor.RESIZE_WE.toString = $estr, lime_ui_MouseCursor.RESIZE_WE.__enum__ = lime_ui_MouseCursor, lime_ui_MouseCursor.TEXT = ["TEXT", 9], lime_ui_MouseCursor.TEXT.toString = $estr, lime_ui_MouseCursor.TEXT.__enum__ = lime_ui_MouseCursor, lime_ui_MouseCursor.WAIT = ["WAIT", 10], lime_ui_MouseCursor.WAIT.toString = $estr, lime_ui_MouseCursor.WAIT.__enum__ = lime_ui_MouseCursor, lime_ui_MouseCursor.WAIT_ARROW = ["WAIT_ARROW", 11], lime_ui_MouseCursor.WAIT_ARROW.toString = $estr, lime_ui_MouseCursor.WAIT_ARROW.__enum__ = lime_ui_MouseCursor, lime_ui_MouseCursor.CUSTOM = ["CUSTOM", 12], lime_ui_MouseCursor.CUSTOM.toString = $estr, lime_ui_MouseCursor.CUSTOM.__enum__ = lime_ui_MouseCursor; var lime_ui_Touch = function(e, t, n, i, l, a, s) { this.x = e, this.y = t, this.id = n, this.dx = i, this.dy = l, this.pressure = a, this.device = s }; $hxClasses["lime.ui.Touch"] = lime_ui_Touch, lime_ui_Touch.__name__ = ["lime", "ui", "Touch"], lime_ui_Touch.prototype = { device: null, dx: null, dy: null, id: null, pressure: null, x: null, y: null, __class__: lime_ui_Touch }; var lime_ui_Window = function(e) { this.onTextInput = new lime_app__$Event_$String_$Void, this.onTextEdit = new lime_app__$Event_$String_$Int_$Int_$Void, this.onRestore = new lime_app__$Event_$Void_$Void, this.onResize = new lime_app__$Event_$Int_$Int_$Void, this.onMove = new lime_app__$Event_$Float_$Float_$Void, this.onMouseWheel = new lime_app__$Event_$Float_$Float_$Void, this.onMouseUp = new lime_app__$Event_$Float_$Float_$Int_$Void, this.onMouseMoveRelative = new lime_app__$Event_$Float_$Float_$Void, this.onMouseMove = new lime_app__$Event_$Float_$Float_$Void, this.onMouseDown = new lime_app__$Event_$Float_$Float_$Int_$Void, this.onMinimize = new lime_app__$Event_$Void_$Void, this.onLeave = new lime_app__$Event_$Void_$Void, this.onKeyUp = new lime_app__$Event_$lime_$ui_$KeyCode_$lime_$ui_$KeyModifier_$Void, this.onKeyDown = new lime_app__$Event_$lime_$ui_$KeyCode_$lime_$ui_$KeyModifier_$Void, this.onFullscreen = new lime_app__$Event_$Void_$Void, this.onFocusOut = new lime_app__$Event_$Void_$Void, this.onFocusIn = new lime_app__$Event_$Void_$Void, this.onEnter = new lime_app__$Event_$Void_$Void, this.onDropFile = new lime_app__$Event_$String_$Void, this.onDeactivate = new lime_app__$Event_$Void_$Void, this.onCreate = new lime_app__$Event_$Void_$Void, this.onClose = new lime_app__$Event_$Void_$Void, this.onActivate = new lime_app__$Event_$Void_$Void, this.config = e, this.__width = 0, this.__height = 0, this.__fullscreen = !1, this.__scale = 1, this.__x = 0, this.__y = 0, this.__title = "", this.id = -1, null != e && (Object.prototype.hasOwnProperty.call(e, "width") && (this.__width = e.width), Object.prototype.hasOwnProperty.call(e, "height") && (this.__height = e.height), Object.prototype.hasOwnProperty.call(e, "x") && (this.__x = e.x), Object.prototype.hasOwnProperty.call(e, "y") && (this.__y = e.y), Object.prototype.hasOwnProperty.call(e, "fullscreen") && (this.__fullscreen = e.fullscreen), Object.prototype.hasOwnProperty.call(e, "borderless") && (this.__borderless = e.borderless), Object.prototype.hasOwnProperty.call(e, "resizable") && (this.__resizable = e.resizable), Object.prototype.hasOwnProperty.call(e, "title") && (this.__title = e.title)), this.backend = new lime__$backend_html5_HTML5Window(this) }; $hxClasses["lime.ui.Window"] = lime_ui_Window, lime_ui_Window.__name__ = ["lime", "ui", "Window"], lime_ui_Window.prototype = { application: null, config: null, id: null, onActivate: null, onClose: null, onCreate: null, onDeactivate: null, onDropFile: null, onEnter: null, onFocusIn: null, onFocusOut: null, onFullscreen: null, onKeyDown: null, onKeyUp: null, onLeave: null, onMinimize: null, onMouseDown: null, onMouseMove: null, onMouseMoveRelative: null, onMouseUp: null, onMouseWheel: null, onMove: null, onResize: null, onRestore: null, onTextEdit: null, onTextInput: null, renderer: null, stage: null, backend: null, __borderless: null, __fullscreen: null, __height: null, __resizable: null, __scale: null, __title: null, __width: null, __x: null, __y: null, close: function() { this.backend.close() }, create: function(e) { this.application = e, this.backend.create(e), null != this.renderer && this.renderer.create() }, resize: function(e, t) { this.backend.resize(e, t), this.__width = e, this.__height = t }, set_fullscreen: function(e) { return this.__fullscreen = this.backend.setFullscreen(e) }, set_height: function(e) { return this.resize(this.__width, e), this.__height }, set_width: function(e) { return this.resize(e, this.__height), this.__width }, __class__: lime_ui_Window, __properties__: { set_width: "set_width", set_height: "set_height", set_fullscreen: "set_fullscreen" } }; var lime_utils_AssetCache = function() { this.enabled = !0, this.audio = new haxe_ds_StringMap, this.font = new haxe_ds_StringMap, this.image = new haxe_ds_StringMap, this.version = 568152 }; $hxClasses["lime.utils.AssetCache"] = lime_utils_AssetCache, lime_utils_AssetCache.__name__ = ["lime", "utils", "AssetCache"], lime_utils_AssetCache.prototype = { audio: null, enabled: null, image: null, font: null, version: null, set: function(e, t, n) { switch (t) { case "FONT": var i = n; this.font.set(e, i); break; case "IMAGE": if (!js_Boot.__instanceof(n, lime_graphics_Image)) throw new js__$Boot_HaxeError("Cannot cache non-Image asset: " + Std.string(n) + " as Image"); var l = n; this.image.set(e, l); break; case "SOUND": case "MUSIC": if (!js_Boot.__instanceof(n, lime_media_AudioBuffer)) throw new js__$Boot_HaxeError("Cannot cache non-AudioBuffer asset: " + Std.string(n) + " as AudioBuffer"); var a = n; this.audio.set(e, a); break; default: throw new js__$Boot_HaxeError(t + " assets are not cachable") } }, clear: function(e) { if (null == e) this.audio = new haxe_ds_StringMap, this.font = new haxe_ds_StringMap, this.image = new haxe_ds_StringMap; else { for (var t = this.audio.keys(); t.hasNext(); ) { var n = t.next(); StringTools.startsWith(n, e) && this.audio.remove(n) } for (var i = this.font.keys(); i.hasNext(); ) { var l = i.next(); StringTools.startsWith(l, e) && this.font.remove(l) } for (var a = this.image.keys(); a.hasNext(); ) { var s = a.next(); StringTools.startsWith(s, e) && this.image.remove(s) } } }, __class__: lime_utils_AssetCache }; var lime_utils_AssetManifest = function() { this.assets = [], this.basePath = "", this.libraryArgs = [], this.version = 2 }; $hxClasses["lime.utils.AssetManifest"] = lime_utils_AssetManifest, lime_utils_AssetManifest.__name__ = ["lime", "utils", "AssetManifest"], lime_utils_AssetManifest.fromBytes = function(e) { return null != e ? lime_utils_AssetManifest.parse(e.getString(0, e.length)) : null } , lime_utils_AssetManifest.fromFile = function(e) { return lime_utils_AssetManifest.fromBytes(lime_utils__$Bytes_Bytes_$Impl_$.fromFile(e)) } , lime_utils_AssetManifest.parse = function(e) { if (null == e || "" == e) return null; var t = JSON.parse(e) , n = new lime_utils_AssetManifest; return n.name = t.name, n.libraryType = t.libraryType, n.libraryArgs = t.libraryArgs, n.assets = haxe_Unserializer.run(t.assets), n } , lime_utils_AssetManifest.prototype = { assets: null, basePath: null, libraryArgs: null, libraryType: null, name: null, version: null, __class__: lime_utils_AssetManifest }; var lime_utils_Assets = function() {}; $hxClasses["lime.utils.Assets"] = lime_utils_Assets, lime_utils_Assets.__name__ = ["lime", "utils", "Assets"], lime_utils_Assets.exists = function(e, t) { null == t && (t = "BINARY"); var n = new lime_utils__$Assets_LibrarySymbol(e); return null != n.library && n.library.exists(n.symbolName, t) } , lime_utils_Assets.getAsset = function(e, t, n) { if (n && lime_utils_Assets.cache.enabled) switch (t) { case "BINARY": case "TEXT": n = !1; break; case "FONT": var i = lime_utils_Assets.cache.font.get(e); if (null != i) return i; break; case "IMAGE": var l = lime_utils_Assets.cache.image.get(e); if (lime_utils_Assets.isValidImage(l)) return l; break; case "MUSIC": case "SOUND": var a = lime_utils_Assets.cache.audio.get(e); if (lime_utils_Assets.isValidAudio(a)) return a; break; case "TEMPLATE": throw new js__$Boot_HaxeError("Not sure how to get template: " + e) } var s = new lime_utils__$Assets_LibrarySymbol(e); if (null != s.library) if (s.library.exists(s.symbolName, t)) { if (s.library.isLocal(s.symbolName, t)) { var r = s.library.getAsset(s.symbolName, t); return n && lime_utils_Assets.cache.enabled && lime_utils_Assets.cache.set(e, t, r), r } lime_utils_Log.info(t + ' asset "' + e + '" exists, but only asynchronously', { fileName: "Assets.hx", lineNumber: 154, className: "lime.utils.Assets", methodName: "getAsset" }) } else lime_utils_Log.info("There is no " + t + ' asset with an ID of "' + e + '"', { fileName: "Assets.hx", lineNumber: 160, className: "lime.utils.Assets", methodName: "getAsset" }); else lime_utils_Log.info('There is no asset library named "' + s.libraryName + '"', { fileName: "Assets.hx", lineNumber: 166, className: "lime.utils.Assets", methodName: "getAsset" }); return null } , lime_utils_Assets.getImage = function(e, t) { return null == t && (t = !0), lime_utils_Assets.getAsset(e, "IMAGE", t) } , lime_utils_Assets.getLibrary = function(e) { return null != e && "" != e || (e = "default"), lime_utils_Assets.libraries.get(e) } , lime_utils_Assets.getText = function(e) { return lime_utils_Assets.getAsset(e, "TEXT", !1) } , lime_utils_Assets.isValidAudio = function(e) { return null != e } , lime_utils_Assets.isValidImage = function(e) { return null != e && null != e.buffer } , lime_utils_Assets.loadAsset = function(e, t, n) { if (n && lime_utils_Assets.cache.enabled) switch (t) { case "BINARY": case "TEXT": n = !1; break; case "FONT": var i = lime_utils_Assets.cache.font.get(e); if (null != i) return lime_app_Future.withValue(i); break; case "IMAGE": var l = lime_utils_Assets.cache.image.get(e); if (lime_utils_Assets.isValidImage(l)) return lime_app_Future.withValue(l); break; case "MUSIC": case "SOUND": var a = lime_utils_Assets.cache.audio.get(e); if (lime_utils_Assets.isValidAudio(a)) return lime_app_Future.withValue(a); break; case "TEMPLATE": throw new js__$Boot_HaxeError("Not sure how to get template: " + e) } var s = new lime_utils__$Assets_LibrarySymbol(e); if (null != s.library) { if (s.library.exists(s.symbolName, t)) { var r = s.library.loadAsset(s.symbolName, t); return n && lime_utils_Assets.cache.enabled && r.onComplete(function(n) { lime_utils_Assets.cache.set(e, t, n) }), r } return lime_app_Future.withError("[Assets] There is no " + t + ' asset with an ID of "' + e + '"') } return lime_app_Future.withError('[Assets] There is no asset library named "' + s.libraryName + '"') } , lime_utils_Assets.loadLibrary = function(e) { var t = new lime_app_Promise; return lime_utils_Assets.loadText("libraries/" + e + ".json").onComplete(function(n) { var i = lime_utils_AssetManifest.parse(n); if (null != i) { var l = lime_utils_AssetLibrary.fromManifest(i); null == l ? t.error('[Assets] Cannot open library "' + e + '"') : (lime_utils_Assets.libraries.set(e, l), l.onChange.add($bind($_ = lime_utils_Assets.onChange, $_.dispatch)), t.completeWith(l.load())) } else t.error('[Assets] Cannot parse asset manifest for library "' + e + '"') }).onError(function(n) { t.error('[Assets] There is no asset library named "' + e + '"') }), t.future } , lime_utils_Assets.loadText = function(e) { return lime_utils_Assets.loadAsset(e, "TEXT", !1) } , lime_utils_Assets.registerLibrary = function(e, t) { if (lime_utils_Assets.libraries.exists(e)) { if (lime_utils_Assets.libraries.get(e) == t) return; lime_utils_Assets.unloadLibrary(e) } null != t && t.onChange.add(lime_utils_Assets.library_onChange), lime_utils_Assets.libraries.set(e, t) } , lime_utils_Assets.unloadLibrary = function(e) { var t = lime_utils_Assets.libraries.get(e); null != t && (lime_utils_Assets.cache.clear(e + ":"), t.onChange.remove(lime_utils_Assets.library_onChange), t.unload()), lime_utils_Assets.libraries.remove(e) } , lime_utils_Assets.library_onChange = function() { lime_utils_Assets.cache.clear(), lime_utils_Assets.onChange.dispatch() } ; var lime_utils__$Assets_LibrarySymbol = function(e) { var t = e.indexOf(":"); this.libraryName = e.substring(0, t), this.symbolName = e.substring(t + 1), this.library = lime_utils_Assets.getLibrary(this.libraryName) }; $hxClasses["lime.utils._Assets.LibrarySymbol"] = lime_utils__$Assets_LibrarySymbol, lime_utils__$Assets_LibrarySymbol.__name__ = ["lime", "utils", "_Assets", "LibrarySymbol"], lime_utils__$Assets_LibrarySymbol.prototype = { library: null, libraryName: null, symbolName: null, __class__: lime_utils__$Assets_LibrarySymbol }; var lime_utils__$Bytes_Bytes_$Impl_$ = {}; $hxClasses["lime.utils._Bytes.Bytes_Impl_"] = lime_utils__$Bytes_Bytes_$Impl_$, lime_utils__$Bytes_Bytes_$Impl_$.__name__ = ["lime", "utils", "_Bytes", "Bytes_Impl_"], lime_utils__$Bytes_Bytes_$Impl_$._new = function(e, t) { return new haxe_io_Bytes(t) } , lime_utils__$Bytes_Bytes_$Impl_$.fromBytes = function(e) { return null == e ? null : lime_utils__$Bytes_Bytes_$Impl_$._new(e.length, e.b.bufferValue) } , lime_utils__$Bytes_Bytes_$Impl_$.fromFile = function(e) { return null } , lime_utils__$Bytes_Bytes_$Impl_$.loadFromFile = function(e) { return (new lime_net__$HTTPRequest_$lime_$utils_$Bytes).load(e) } , lime_utils__$Bytes_Bytes_$Impl_$.ofString = function(e) { var t = haxe_io_Bytes.ofString(e); return lime_utils__$Bytes_Bytes_$Impl_$._new(t.length, t.b.bufferValue) } ; var lime_utils_GLUtils = function() {}; $hxClasses["lime.utils.GLUtils"] = lime_utils_GLUtils, lime_utils_GLUtils.__name__ = ["lime", "utils", "GLUtils"], lime_utils_GLUtils.compileShader = function(e, t) { var n = lime_graphics_opengl_GL.context.createShader(t); if (lime_graphics_opengl_GL.context.shaderSource(n, e), lime_graphics_opengl_GL.context.compileShader(n), 0 == lime_graphics_opengl_GL.context.getShaderParameter(n, 35713)) { var i; switch (t) { case 35633: i = "Error compiling vertex shader"; break; case 35632: i = "Error compiling fragment shader"; break; default: i = "Error compiling unknown shader type" } i += "\n" + lime_graphics_opengl_GL.context.getShaderInfoLog(n), lime_utils_Log.error(i, { fileName: "GLUtils.hx", lineNumber: 35, className: "lime.utils.GLUtils", methodName: "compileShader" }) } return n } , lime_utils_GLUtils.createProgram = function(e, t) { var n = lime_utils_GLUtils.compileShader(e, 35633) , i = lime_utils_GLUtils.compileShader(t, 35632) , l = lime_graphics_opengl_GL.context.createProgram(); return lime_graphics_opengl_GL.context.attachShader(l, n), lime_graphics_opengl_GL.context.attachShader(l, i), lime_graphics_opengl_GL.context.linkProgram(l), 0 == lime_graphics_opengl_GL.context.getProgramParameter(l, 35714) && lime_utils_Log.error("Unable to initialize the shader program", { fileName: "GLUtils.hx", lineNumber: 56, className: "lime.utils.GLUtils", methodName: "createProgram" }), l } ; var lime_utils_Log = function() {}; $hxClasses["lime.utils.Log"] = lime_utils_Log, lime_utils_Log.__name__ = ["lime", "utils", "Log"], lime_utils_Log.error = function(e, t) { lime_utils_Log.level >= 1 && console.log("[" + t.className + "] ERROR: " + e) } , lime_utils_Log.info = function(e, t) { lime_utils_Log.level >= 3 && console.log("[" + t.className + "] " + e) } , lime_utils_Log.warn = function(e, t) { lime_utils_Log.level >= 2 && console.log("[" + t.className + "] WARNING: " + e) } ; var motion_actuators_IGenericActuator = function() {}; $hxClasses["motion.actuators.IGenericActuator"] = motion_actuators_IGenericActuator, motion_actuators_IGenericActuator.__name__ = ["motion", "actuators", "IGenericActuator"], motion_actuators_IGenericActuator.prototype = { onComplete: null, pause: null, resume: null, stop: null, __class__: motion_actuators_IGenericActuator }; var motion_actuators_GenericActuator = function(e, t, n) { this._autoVisible = !0, this._delay = 0, this._reflect = !1, this._repeat = 0, this._reverse = !1, this._smartRotation = !1, this._snapping = !1, this.special = !1, this.target = e, this.properties = n, this.duration = t, this._ease = motion_Actuate.defaultEase }; $hxClasses["motion.actuators.GenericActuator"] = motion_actuators_GenericActuator, motion_actuators_GenericActuator.__name__ = ["motion", "actuators", "GenericActuator"], motion_actuators_GenericActuator.__interfaces__ = [motion_actuators_IGenericActuator], motion_actuators_GenericActuator.prototype = { duration: null, id: null, properties: null, target: null, _autoVisible: null, _delay: null, _ease: null, _onComplete: null, _onCompleteParams: null, _onRepeat: null, _onRepeatParams: null, _onUpdate: null, _onUpdateParams: null, _onResume: null, _onResumeParams: null, _onPause: null, _onPauseParams: null, _reflect: null, _repeat: null, _reverse: null, _smartRotation: null, _snapping: null, special: null, apply: function() { for (var e = 0, t = Reflect.fields(this.properties); e < t.length; ) { var n = t[e]; ++e, Object.prototype.hasOwnProperty.call(this.target, n) ? Reflect.setField(this.target, n, Reflect.field(this.properties, n)) : Reflect.setProperty(this.target, n, Reflect.field(this.properties, n)) } }, autoVisible: function(e) { return null == e && (e = !0), this._autoVisible = e, this }, callMethod: function(e, t) { return null == t && (t = []), Reflect.callMethod(e, e, t) }, change: function() { null != this._onUpdate && this.callMethod(this._onUpdate, this._onUpdateParams) }, complete: function(e) { null == e && (e = !0), e && (this.change(), null != this._onComplete && this.callMethod(this._onComplete, this._onCompleteParams)), motion_Actuate.unload(this) }, delay: function(e) { return this._delay = e, this }, ease: function(e) { return this._ease = e, this }, move: function() {}, onComplete: function(e, t) { return this._onComplete = e, this._onCompleteParams = null == t ? [] : t, 0 == this.duration && this.complete(), this }, onRepeat: function(e, t) { return this._onRepeat = e, this._onRepeatParams = null == t ? [] : t, this }, onUpdate: function(e, t) { return this._onUpdate = e, this._onUpdateParams = null == t ? [] : t, this }, onPause: function(e, t) { return this._onPause = e, this._onPauseParams = null == t ? [] : t, this }, onResume: function(e, t) { return this._onResume = e, this._onResumeParams = null == t ? [] : t, this }, pause: function() { null != this._onPause && this.callMethod(this._onPause, this._onPauseParams) }, reflect: function(e) { return null == e && (e = !0), this._reflect = e, this.special = !0, this }, repeat: function(e) { return null == e && (e = -1), this._repeat = e, this }, resume: function() { null != this._onResume && this.callMethod(this._onResume, this._onResumeParams) }, reverse: function(e) { return null == e && (e = !0), this._reverse = e, this.special = !0, this }, smartRotation: function(e) { return null == e && (e = !0), this._smartRotation = e, this.special = !0, this }, snapping: function(e) { return null == e && (e = !0), this._snapping = e, this.special = !0, this }, stop: function(e, t, n) {}, __class__: motion_actuators_GenericActuator }; var motion_actuators_SimpleActuator = function(e, t, n) { this.active = !0, this.propertyDetails = [], this.sendChange = !1, this.paused = !1, this.cacheVisible = !1, this.initialized = !1, this.setVisible = !1, this.toggleVisible = !1, this.startTime = openfl_Lib.getTimer() / 1e3, motion_actuators_GenericActuator.call(this, e, t, n), motion_actuators_SimpleActuator.addedEvent || (motion_actuators_SimpleActuator.addedEvent = !0, openfl_Lib.current.stage.addEventListener("enterFrame", motion_actuators_SimpleActuator.stage_onEnterFrame)) }; $hxClasses["motion.actuators.SimpleActuator"] = motion_actuators_SimpleActuator, motion_actuators_SimpleActuator.__name__ = ["motion", "actuators", "SimpleActuator"], motion_actuators_SimpleActuator.stage_onEnterFrame = function(e) { for (var t, n = openfl_Lib.getTimer() / 1e3, i = 0, l = 0, a = motion_actuators_SimpleActuator.actuatorsLength; l < a; ) { l++; null != (t = motion_actuators_SimpleActuator.actuators[i]) && t.active ? (n >= t.timeOffset && t.update(n), i++) : (motion_actuators_SimpleActuator.actuators.splice(i, 1), --motion_actuators_SimpleActuator.actuatorsLength) } } , motion_actuators_SimpleActuator.__super__ = motion_actuators_GenericActuator, motion_actuators_SimpleActuator.prototype = $extend(motion_actuators_GenericActuator.prototype, { setField_openfl_geom_Transform: function(e, t, n) { Object.prototype.hasOwnProperty.call(e, t) ? e[t] = n : Reflect.setProperty(e, t, n) }, setField_motion_actuators_TransformActuator_T: function(e, t, n) { Object.prototype.hasOwnProperty.call(e, t) ? e[t] = n : Reflect.setProperty(e, t, n) }, setField_motion_actuators_MotionPathActuator_T: function(e, t, n) { Object.prototype.hasOwnProperty.call(e, t) ? e[t] = n : Reflect.setProperty(e, t, n) }, setField_openfl_display_DisplayObject: function(e, t, n) { Object.prototype.hasOwnProperty.call(e, t) ? e[t] = n : Reflect.setProperty(e, t, n) }, setField_motion_actuators_SimpleActuator_T: function(e, t, n) { Object.prototype.hasOwnProperty.call(e, t) ? e[t] = n : Reflect.setProperty(e, t, n) }, timeOffset: null, active: null, cacheVisible: null, detailsLength: null, initialized: null, paused: null, pauseTime: null, propertyDetails: null, sendChange: null, setVisible: null, startTime: null, toggleVisible: null, autoVisible: function(e) { return null == e && (e = !0), this._autoVisible = e, e || (this.toggleVisible = !1, this.setVisible && this.setField_motion_actuators_SimpleActuator_T(this.target, "visible", this.cacheVisible)), this }, delay: function(e) { return this._delay = e, this.timeOffset = this.startTime + e, this }, getField: function(e, t) { return Object.prototype.hasOwnProperty.call(e, t) ? Reflect.field(e, t) : Reflect.getProperty(e, t) }, initialize: function() { for (var e, t, n = 0, i = Reflect.fields(this.properties); n < i.length; ) { var l = i[n]; ++n; var a = !0; if (!Object.prototype.hasOwnProperty.call(this.target, l) || this.target.__properties__ && this.target.__properties__["set_" + l] ? (a = !1, t = Reflect.getProperty(this.target, l)) : t = Reflect.field(this.target, l), "number" == typeof t) { var s = this.getField(this.properties, l); null == t && (t = 0), null == s && (s = 0), e = new motion_actuators_PropertyDetails(this.target,l,t,s - t,a), this.propertyDetails.push(e) } } this.detailsLength = this.propertyDetails.length, this.initialized = !0 }, move: function() { this.toggleVisible = Object.prototype.hasOwnProperty.call(this.properties, "alpha") && js_Boot.__instanceof(this.target, openfl_display_DisplayObject), this.toggleVisible && 0 != this.properties.alpha && !this.getField(this.target, "visible") && (this.setVisible = !0, this.cacheVisible = this.getField(this.target, "visible"), this.setField_motion_actuators_SimpleActuator_T(this.target, "visible", !0)), this.timeOffset = this.startTime, motion_actuators_SimpleActuator.actuators.push(this), ++motion_actuators_SimpleActuator.actuatorsLength }, onUpdate: function(e, t) { return this._onUpdate = e, this._onUpdateParams = null == t ? [] : t, this.sendChange = !0, this }, pause: function() { this.paused || (this.paused = !0, motion_actuators_GenericActuator.prototype.pause.call(this), this.pauseTime = openfl_Lib.getTimer()) }, resume: function() { this.paused && (this.paused = !1, this.timeOffset += (openfl_Lib.getTimer() - this.pauseTime) / 1e3, motion_actuators_GenericActuator.prototype.resume.call(this)) }, setProperty: function(e, t) { e.isField ? e.target[e.propertyName] = t : Reflect.setProperty(e.target, e.propertyName, t) }, stop: function(e, t, n) { if (this.active) { if (null == e) return this.active = !1, t && this.apply(), void this.complete(n); for (var i = 0, l = Reflect.fields(e); i < l.length; ) { var a = l[i]; if (++i, Object.prototype.hasOwnProperty.call(this.properties, a)) return this.active = !1, t && this.apply(), void this.complete(n) } } }, update: function(e) { if (!this.paused) { var t, n, i = (e - this.timeOffset) / this.duration; if (i > 1 && (i = 1), this.initialized || this.initialize(), this.special) { var l; n = this._reverse ? this._ease.calculate(1 - i) : this._ease.calculate(i); for (var a = 0, s = this.detailsLength; a < s; ) { var r = a++; if (t = this.propertyDetails[r], !this._smartRotation || "rotation" != t.propertyName && "rotationX" != t.propertyName && "rotationY" != t.propertyName && "rotationZ" != t.propertyName) l = t.start + t.change * n; else { var _ = t.change % 360; _ > 180 ? _ -= 360 : _ < -180 && (_ += 360), l = t.start + _ * n } this._snapping ? this.setProperty(t, Math.round(l)) : t.isField ? t.target[t.propertyName] = l : Reflect.setProperty(t.target, t.propertyName, l) } } else { n = this._ease.calculate(i); for (var o = 0, p = this.detailsLength; o < p; ) { var h = o++; t = this.propertyDetails[h], this.setProperty(t, t.start + t.change * n) } } if (1 == i) { if (0 == this._repeat) return this.active = !1, this.toggleVisible && 0 == this.getField(this.target, "alpha") && this.setField_motion_actuators_SimpleActuator_T(this.target, "visible", !1), void this.complete(!0); null != this._onRepeat && this.callMethod(this._onRepeat, this._onRepeatParams), this._reflect && (this._reverse = !this._reverse), this.startTime = e, this.timeOffset = this.startTime + this._delay, this._repeat > 0 && this._repeat-- } this.sendChange && this.change() } }, __class__: motion_actuators_SimpleActuator }); var motion_easing_Expo = function() {}; $hxClasses["motion.easing.Expo"] = motion_easing_Expo, motion_easing_Expo.__name__ = ["motion", "easing", "Expo"], motion_easing_Expo.__properties__ = { get_easeOut: "get_easeOut" }, motion_easing_Expo.get_easeOut = function() { return new motion_easing_ExpoEaseOut } ; var motion_easing_ExpoEaseOut = function() {}; $hxClasses["motion.easing.ExpoEaseOut"] = motion_easing_ExpoEaseOut, motion_easing_ExpoEaseOut.__name__ = ["motion", "easing", "ExpoEaseOut"], motion_easing_ExpoEaseOut.__interfaces__ = [motion_easing_IEasing], motion_easing_ExpoEaseOut.prototype = { calculate: function(e) { return 1 == e ? 1 : 1 - Math.pow(2, -10 * e) }, __class__: motion_easing_ExpoEaseOut }; var motion_Actuate = function() {}; $hxClasses["motion.Actuate"] = motion_Actuate, motion_Actuate.__name__ = ["motion", "Actuate"], motion_Actuate.apply = function(e, t, n) { motion_Actuate.stop(e, t), null == n && (n = motion_Actuate.defaultActuator); var i = Type.createInstance(n, [e, 0, t]); return i.apply(), i } , motion_Actuate.getLibrary = function(e, t) { return null == t && (t = !0), null == motion_Actuate.targetLibraries.h.__keys__[e.__id__] && t && motion_Actuate.targetLibraries.set(e, []), motion_Actuate.targetLibraries.h[e.__id__] } , motion_Actuate.motionPath = function(e, t, n, i) { return null == i && (i = !0), motion_Actuate.tween(e, t, n, i, motion_actuators_MotionPathActuator) } , motion_Actuate.pauseAll = function() { for (var e = motion_Actuate.targetLibraries.iterator(); e.hasNext(); ) for (var t = e.next(), n = 0; n < t.length; ) { var i = t[n]; ++n, i.pause() } } , motion_Actuate.resumeAll = function() { for (var e = motion_Actuate.targetLibraries.iterator(); e.hasNext(); ) for (var t = e.next(), n = 0; n < t.length; ) { var i = t[n]; ++n, i.resume() } } , motion_Actuate.stop = function(e, t, n, i) { if (null == i && (i = !0), null == n && (n = !1), null != e) if (js_Boot.__instanceof(e, motion_actuators_IGenericActuator)) { e.stop(null, n, i) } else { var l = motion_Actuate.getLibrary(e, !1); if (null != l) { if ("string" == typeof t) { var a = {}; Reflect.setField(a, t, null), t = a } else if (t instanceof Array && null == t.__enum__) { var s, r = {}, _ = 0; for (s = js_Boot.__cast(t, Array); _ < s.length; ) { var o = s[_]; ++_, Reflect.setField(r, o, null) } t = r } for (var p = l.length - 1; p >= 0; ) l[p].stop(t, n, i), p-- } } } , motion_Actuate.timer = function(e, t) { return motion_Actuate.tween(new motion__$Actuate_TweenTimer(0), e, new motion__$Actuate_TweenTimer(1), !1, t) } , motion_Actuate.tween = function(e, t, n, i, l) { if (null == i && (i = !0), null != e) { if (t > 0) { null == l && (l = motion_Actuate.defaultActuator); var a = Type.createInstance(l, [e, t, n]) , s = motion_Actuate.getLibrary(a.target); if (i) { for (var r = s.length - 1; r >= 0; ) s[r].stop(a.properties, !1, !1), r--; s = motion_Actuate.getLibrary(a.target) } return s.push(a), a.move(), a } return motion_Actuate.apply(e, n, l) } return null } , motion_Actuate.unload = function(e) { var t = e.target; null != motion_Actuate.targetLibraries.h.__keys__[t.__id__] && (HxOverrides.remove(motion_Actuate.targetLibraries.h[t.__id__], e), 0 == motion_Actuate.targetLibraries.h[t.__id__].length && motion_Actuate.targetLibraries.remove(t)) } , motion_Actuate.update = function(e, t, n, i, l) { null == l && (l = !0); var a = { start: n, end: i }; return motion_Actuate.tween(e, t, a, l, motion_actuators_MethodActuator) } ; var motion__$Actuate_TweenTimer = function(e) { this.progress = e }; $hxClasses["motion._Actuate.TweenTimer"] = motion__$Actuate_TweenTimer, motion__$Actuate_TweenTimer.__name__ = ["motion", "_Actuate", "TweenTimer"], motion__$Actuate_TweenTimer.prototype = { progress: null, __class__: motion__$Actuate_TweenTimer }; var motion_MotionPath = function() { this._x = new motion_ComponentPath, this._y = new motion_ComponentPath, this._rotation = null }; $hxClasses["motion.MotionPath"] = motion_MotionPath, motion_MotionPath.__name__ = ["motion", "MotionPath"], motion_MotionPath.prototype = { _rotation: null, _x: null, _y: null, bezier: function(e, t, n, i, l) { return null == l && (l = 1), this._x.addPath(new motion_BezierPath(e,n,l)), this._y.addPath(new motion_BezierPath(t,i,l)), this }, get_x: function() { return this._x }, get_y: function() { return this._y }, __class__: motion_MotionPath, __properties__: { get_y: "get_y", get_x: "get_x" } }; var motion_IComponentPath = function() {}; $hxClasses["motion.IComponentPath"] = motion_IComponentPath, motion_IComponentPath.__name__ = ["motion", "IComponentPath"], motion_IComponentPath.prototype = { get_end: null, start: null, calculate: null, __class__: motion_IComponentPath, __properties__: { get_end: "get_end" } }; var motion_ComponentPath = function() { this.paths = [], this.start = 0, this.totalStrength = 0 }; $hxClasses["motion.ComponentPath"] = motion_ComponentPath, motion_ComponentPath.__name__ = ["motion", "ComponentPath"], motion_ComponentPath.__interfaces__ = [motion_IComponentPath], motion_ComponentPath.prototype = { start: null, paths: null, totalStrength: null, addPath: function(e) { this.paths.push(e), this.totalStrength += e.strength }, calculate: function(e) { if (1 == this.paths.length) return this.paths[0].calculate(this.start, e); for (var t = e * this.totalStrength, n = this.start, i = 0, l = this.paths; i < l.length; ) { var a = l[i]; if (++i, !(t > a.strength)) return a.calculate(n, t / a.strength); t -= a.strength, n = a.end } return 0 }, get_end: function() { return this.paths.length > 0 ? this.paths[this.paths.length - 1].end : this.start }, __class__: motion_ComponentPath, __properties__: { get_end: "get_end" } }; var motion_BezierPath = function(e, t, n) { this.end = e, this.control = t, this.strength = n }; $hxClasses["motion.BezierPath"] = motion_BezierPath, motion_BezierPath.__name__ = ["motion", "BezierPath"], motion_BezierPath.prototype = { control: null, end: null, strength: null, calculate: function(e, t) { return (1 - t) * (1 - t) * e + 2 * (1 - t) * t * this.control + t * t * this.end }, __class__: motion_BezierPath }; var motion_RotationPath = function() { this.step = .01 }; $hxClasses["motion.RotationPath"] = motion_RotationPath, motion_RotationPath.__name__ = ["motion", "RotationPath"], motion_RotationPath.__interfaces__ = [motion_IComponentPath], motion_RotationPath.prototype = { offset: null, start: null, step: null, _x: null, _y: null, calculate: function(e) { var t = this._x.calculate(e) - this._x.calculate(e + this.step) , n = this._y.calculate(e) - this._y.calculate(e + this.step) , i = Math.atan2(n, t) * (180 / Math.PI); return i = (i + this.offset) % 360 }, get_end: function() { return this.calculate(1) }, __class__: motion_RotationPath, __properties__: { get_end: "get_end" } }; var motion_actuators_FilterActuator = function(e, t, n) { if (this.filterIndex = -1, motion_actuators_SimpleActuator.call(this, e, t, n), js_Boot.__instanceof(n.filter, Class)) { this.filterClass = n.filter, 0 == e.get_filters().length && e.set_filters([Type.createInstance(this.filterClass, [])]); for (var i = 0, l = e.get_filters(); i < l.length; ) { var a = l[i]; ++i, js_Boot.__instanceof(a, this.filterClass) && (this.filter = a) } } else this.filterIndex = n.filter, this.filter = e.get_filters()[this.filterIndex] }; $hxClasses["motion.actuators.FilterActuator"] = motion_actuators_FilterActuator, motion_actuators_FilterActuator.__name__ = ["motion", "actuators", "FilterActuator"], motion_actuators_FilterActuator.__super__ = motion_actuators_SimpleActuator, motion_actuators_FilterActuator.prototype = $extend(motion_actuators_SimpleActuator.prototype, { filter: null, filterClass: null, filterIndex: null, apply: function() { for (var e = 0, t = Reflect.fields(this.properties); e < t.length; ) { var n = t[e]; ++e, "filter" != n && Reflect.setField(this.filter, n, Reflect.field(this.properties, n)) } var i = this.getField(this.target, "filters"); Reflect.setField(i, this.properties.filter, this.filter), this.setField_openfl_display_DisplayObject(this.target, "filters", i) }, initialize: function() { for (var e, t, n = 0, i = Reflect.fields(this.properties); n < i.length; ) { var l = i[n]; ++n, "filter" != l && (t = this.getField(this.filter, l), e = new motion_actuators_PropertyDetails(this.filter,l,t,Reflect.field(this.properties, l) - t), this.propertyDetails.push(e)) } this.detailsLength = this.propertyDetails.length, this.initialized = !0 }, update: function(e) { motion_actuators_SimpleActuator.prototype.update.call(this, e); var t = this.target.get_filters(); if (this.filterIndex > -1) Reflect.setField(t, this.properties.filter, this.filter); else for (var n = 0, i = t.length; n < i; ) { var l = n++; js_Boot.__instanceof(t[l], this.filterClass) && (t[l] = this.filter) } this.setField_openfl_display_DisplayObject(this.target, "filters", t) }, __class__: motion_actuators_FilterActuator }); var motion_actuators_MethodActuator = function(e, t, n) { this.currentParameters = [], this.tweenProperties = {}, motion_actuators_SimpleActuator.call(this, e, t, n), Object.prototype.hasOwnProperty.call(n, "start") || (this.properties.start = []), Object.prototype.hasOwnProperty.call(n, "end") || (this.properties.end = this.properties.start); for (var i = 0, l = this.properties.start.length; i < l; ) { var a = i++; this.currentParameters.push(this.properties.start[a]) } }; $hxClasses["motion.actuators.MethodActuator"] = motion_actuators_MethodActuator, motion_actuators_MethodActuator.__name__ = ["motion", "actuators", "MethodActuator"], motion_actuators_MethodActuator.__super__ = motion_actuators_SimpleActuator, motion_actuators_MethodActuator.prototype = $extend(motion_actuators_SimpleActuator.prototype, { currentParameters: null, tweenProperties: null, apply: function() { this.callMethod(this.target, this.properties.end) }, complete: function(e) { null == e && (e = !0); for (var t = 0, n = this.properties.start.length; t < n; ) { var i = t++; this.currentParameters[i] = Reflect.field(this.tweenProperties, "param" + i) } this.callMethod(this.target, this.currentParameters), motion_actuators_SimpleActuator.prototype.complete.call(this, e) }, initialize: function() { for (var e, t, n, i = 0, l = this.properties.start.length; i < l; ) { var a = i++; t = "param" + a, n = this.properties.start[a], this.tweenProperties[t] = n, "number" != typeof n && (0 | n) !== n || (e = new motion_actuators_PropertyDetails(this.tweenProperties,t,n,this.properties.end[a] - n), this.propertyDetails.push(e)) } this.detailsLength = this.propertyDetails.length, this.initialized = !0 }, update: function(e) { if (motion_actuators_SimpleActuator.prototype.update.call(this, e), this.active && !this.paused) { for (var t = 0, n = this.properties.start.length; t < n; ) { var i = t++; this.currentParameters[i] = Reflect.field(this.tweenProperties, "param" + i) } this.callMethod(this.target, this.currentParameters) } }, __class__: motion_actuators_MethodActuator }); var motion_actuators_MotionPathActuator = function(e, t, n) { motion_actuators_SimpleActuator.call(this, e, t, n) }; $hxClasses["motion.actuators.MotionPathActuator"] = motion_actuators_MotionPathActuator, motion_actuators_MotionPathActuator.__name__ = ["motion", "actuators", "MotionPathActuator"], motion_actuators_MotionPathActuator.__super__ = motion_actuators_SimpleActuator, motion_actuators_MotionPathActuator.prototype = $extend(motion_actuators_SimpleActuator.prototype, { apply: function() { for (var e = 0, t = Reflect.fields(this.properties); e < t.length; ) { var n = t[e]; ++e, Object.prototype.hasOwnProperty.call(this.target, n) ? Reflect.setField(this.target, n, js_Boot.__cast(Reflect.field(this.properties, n), motion_IComponentPath).get_end()) : Reflect.setProperty(this.target, n, js_Boot.__cast(Reflect.field(this.properties, n), motion_IComponentPath).get_end()) } }, initialize: function() { for (var e, t, n = 0, i = Reflect.fields(this.properties); n < i.length; ) { var l = i[n]; if (++n, null != (t = js_Boot.__cast(Reflect.field(this.properties, l), motion_IComponentPath))) { var a = !0; Object.prototype.hasOwnProperty.call(this.target, l) ? t.start = Reflect.field(this.target, l) : (a = !1, t.start = Reflect.getProperty(this.target, l)), e = new motion_actuators_PropertyPathDetails(this.target,l,t,a), this.propertyDetails.push(e) } } this.detailsLength = this.propertyDetails.length, this.initialized = !0 }, update: function(e) { if (!this.paused) { var t, n = (e - this.timeOffset) / this.duration; if (n > 1 && (n = 1), this.initialized || this.initialize(), this.special) { t = this._reverse ? this._ease.calculate(1 - n) : this._ease.calculate(n); for (var i = 0, l = this.propertyDetails; i < l.length; ) { var a = l[i]; ++i, this._snapping ? a.isField ? Reflect.setField(a.target, a.propertyName, Math.round(js_Boot.__cast(a, motion_actuators_PropertyPathDetails).path.calculate(t))) : Reflect.setProperty(a.target, a.propertyName, Math.round(js_Boot.__cast(a, motion_actuators_PropertyPathDetails).path.calculate(t))) : a.isField ? Reflect.setField(a.target, a.propertyName, js_Boot.__cast(a, motion_actuators_PropertyPathDetails).path.calculate(t)) : Reflect.setProperty(a.target, a.propertyName, js_Boot.__cast(a, motion_actuators_PropertyPathDetails).path.calculate(t)) } } else { t = this._ease.calculate(n); for (var s = 0, r = this.propertyDetails; s < r.length; ) { var _ = r[s]; ++s, _.isField ? Reflect.setField(_.target, _.propertyName, js_Boot.__cast(_, motion_actuators_PropertyPathDetails).path.calculate(t)) : Reflect.setProperty(_.target, _.propertyName, js_Boot.__cast(_, motion_actuators_PropertyPathDetails).path.calculate(t)) } } if (1 == n) { if (0 == this._repeat) return this.active = !1, this.toggleVisible && 0 == this.getField(this.target, "alpha") && this.setField_motion_actuators_MotionPathActuator_T(this.target, "visible", !1), void this.complete(!0); null != this._onRepeat && this.callMethod(this._onRepeat, this._onRepeatParams), this._reflect && (this._reverse = !this._reverse), this.startTime = e, this.timeOffset = this.startTime + this._delay, this._repeat > 0 && this._repeat-- } this.sendChange && this.change() } }, __class__: motion_actuators_MotionPathActuator }); var motion_actuators_PropertyDetails = function(e, t, n, i, l) { null == l && (l = !0), this.target = e, this.propertyName = t, this.start = n, this.change = i, this.isField = l }; $hxClasses["motion.actuators.PropertyDetails"] = motion_actuators_PropertyDetails, motion_actuators_PropertyDetails.__name__ = ["motion", "actuators", "PropertyDetails"], motion_actuators_PropertyDetails.prototype = { change: null, isField: null, propertyName: null, start: null, target: null, __class__: motion_actuators_PropertyDetails }; var motion_actuators_PropertyPathDetails = function(e, t, n, i) { null == i && (i = !0), motion_actuators_PropertyDetails.call(this, e, t, 0, 0, i), this.path = n }; $hxClasses["motion.actuators.PropertyPathDetails"] = motion_actuators_PropertyPathDetails, motion_actuators_PropertyPathDetails.__name__ = ["motion", "actuators", "PropertyPathDetails"], motion_actuators_PropertyPathDetails.__super__ = motion_actuators_PropertyDetails, motion_actuators_PropertyPathDetails.prototype = $extend(motion_actuators_PropertyDetails.prototype, { path: null, __class__: motion_actuators_PropertyPathDetails }); var motion_actuators_TransformActuator = function(e, t, n) { motion_actuators_SimpleActuator.call(this, e, t, n) }; $hxClasses["motion.actuators.TransformActuator"] = motion_actuators_TransformActuator, motion_actuators_TransformActuator.__name__ = ["motion", "actuators", "TransformActuator"], motion_actuators_TransformActuator.__super__ = motion_actuators_SimpleActuator, motion_actuators_TransformActuator.prototype = $extend(motion_actuators_SimpleActuator.prototype, { endColorTransform: null, endSoundTransform: null, tweenColorTransform: null, tweenSoundTransform: null, apply: function() { if (this.initialize(), null != this.endColorTransform) { var e = this.getField(this.target, "transform"); this.setField_openfl_geom_Transform(e, "colorTransform", this.endColorTransform) } null != this.endSoundTransform && this.setField_motion_actuators_TransformActuator_T(this.target, "soundTransform", this.endSoundTransform) }, initialize: function() { Object.prototype.hasOwnProperty.call(this.properties, "colorValue") && js_Boot.__instanceof(this.target, openfl_display_DisplayObject) && this.initializeColor(), (Object.prototype.hasOwnProperty.call(this.properties, "soundVolume") || Object.prototype.hasOwnProperty.call(this.properties, "soundPan")) && this.initializeSound(), this.detailsLength = this.propertyDetails.length, this.initialized = !0 }, initializeColor: function() { this.endColorTransform = new openfl_geom_ColorTransform; var e, t, n = this.properties.colorValue, i = this.properties.colorStrength; i < 1 ? (i < .5 ? (e = 1, t = 2 * i) : (e = 1 - 2 * (i - .5), t = 1), this.endColorTransform.redMultiplier = e, this.endColorTransform.greenMultiplier = e, this.endColorTransform.blueMultiplier = e, this.endColorTransform.redOffset = t * (n >> 16 & 255), this.endColorTransform.greenOffset = t * (n >> 8 & 255), this.endColorTransform.blueOffset = t * (255 & n)) : (this.endColorTransform.redMultiplier = 0, this.endColorTransform.greenMultiplier = 0, this.endColorTransform.blueMultiplier = 0, this.endColorTransform.redOffset = n >> 16 & 255, this.endColorTransform.greenOffset = n >> 8 & 255, this.endColorTransform.blueOffset = 255 & n); var l = ["redMultiplier", "greenMultiplier", "blueMultiplier", "redOffset", "greenOffset", "blueOffset"]; Object.prototype.hasOwnProperty.call(this.properties, "colorAlpha") ? (this.endColorTransform.alphaMultiplier = this.properties.colorAlpha, l.push("alphaMultiplier")) : this.endColorTransform.alphaMultiplier = this.getField(this.target, "alpha"); var a, s, r = this.getField(this.target, "transform"), _ = this.getField(r, "colorTransform"); this.tweenColorTransform = new openfl_geom_ColorTransform; for (var o = 0; o < l.length; ) { var p = l[o]; ++o, s = this.getField(_, p), a = new motion_actuators_PropertyDetails(this.tweenColorTransform,p,s,this.getField(this.endColorTransform, p) - s), this.propertyDetails.push(a) } }, initializeSound: function() { null == this.getField(this.target, "soundTransform") && this.setField_motion_actuators_TransformActuator_T(this.target, "soundTransform", new openfl_media_SoundTransform); var e = this.getField(this.target, "soundTransform"); this.endSoundTransform = this.getField(this.target, "soundTransform"), this.tweenSoundTransform = new openfl_media_SoundTransform, Object.prototype.hasOwnProperty.call(this.properties, "soundVolume") && (this.endSoundTransform.volume = this.properties.soundVolume, this.propertyDetails.push(new motion_actuators_PropertyDetails(this.tweenSoundTransform,"volume",e.volume,this.endSoundTransform.volume - e.volume))), Object.prototype.hasOwnProperty.call(this.properties, "soundPan") && (this.endSoundTransform.pan = this.properties.soundPan, this.propertyDetails.push(new motion_actuators_PropertyDetails(this.tweenSoundTransform,"pan",e.pan,this.endSoundTransform.pan - e.pan))) }, update: function(e) { if (motion_actuators_SimpleActuator.prototype.update.call(this, e), null != this.endColorTransform) { var t = this.getField(this.target, "transform"); this.setField_openfl_geom_Transform(t, "colorTransform", this.tweenColorTransform) } null != this.endSoundTransform && this.setField_motion_actuators_TransformActuator_T(this.target, "soundTransform", this.tweenSoundTransform) }, __class__: motion_actuators_TransformActuator }); var motion_easing_Back = function() {}; $hxClasses["motion.easing.Back"] = motion_easing_Back, motion_easing_Back.__name__ = ["motion", "easing", "Back"], motion_easing_Back.__properties__ = { get_easeOut: "get_easeOut", get_easeIn: "get_easeIn" }, motion_easing_Back.get_easeIn = function() { return new motion_easing_BackEaseIn(1.70158) } , motion_easing_Back.get_easeOut = function() { return new motion_easing_BackEaseOut(1.70158) } ; var motion_easing_BackEaseIn = function(e) { this.s = e }; $hxClasses["motion.easing.BackEaseIn"] = motion_easing_BackEaseIn, motion_easing_BackEaseIn.__name__ = ["motion", "easing", "BackEaseIn"], motion_easing_BackEaseIn.__interfaces__ = [motion_easing_IEasing], motion_easing_BackEaseIn.prototype = { s: null, calculate: function(e) { return e * e * ((this.s + 1) * e - this.s) }, __class__: motion_easing_BackEaseIn }; var motion_easing_BackEaseOut = function(e) { this.s = e }; $hxClasses["motion.easing.BackEaseOut"] = motion_easing_BackEaseOut, motion_easing_BackEaseOut.__name__ = ["motion", "easing", "BackEaseOut"], motion_easing_BackEaseOut.__interfaces__ = [motion_easing_IEasing], motion_easing_BackEaseOut.prototype = { s: null, calculate: function(e) { return (e -= 1) * e * ((this.s + 1) * e + this.s) + 1 }, __class__: motion_easing_BackEaseOut }; var motion_easing_Linear = function() {}; $hxClasses["motion.easing.Linear"] = motion_easing_Linear, motion_easing_Linear.__name__ = ["motion", "easing", "Linear"], motion_easing_Linear.__properties__ = { get_easeNone: "get_easeNone" }, motion_easing_Linear.get_easeNone = function() { return new motion_easing_LinearEaseNone } ; var motion_easing_LinearEaseNone = function() {}; $hxClasses["motion.easing.LinearEaseNone"] = motion_easing_LinearEaseNone, motion_easing_LinearEaseNone.__name__ = ["motion", "easing", "LinearEaseNone"], motion_easing_LinearEaseNone.__interfaces__ = [motion_easing_IEasing], motion_easing_LinearEaseNone.prototype = { calculate: function(e) { return e }, __class__: motion_easing_LinearEaseNone }; var motion_easing_Quad = function() {}; $hxClasses["motion.easing.Quad"] = motion_easing_Quad, motion_easing_Quad.__name__ = ["motion", "easing", "Quad"], motion_easing_Quad.__properties__ = { get_easeOut: "get_easeOut", get_easeInOut: "get_easeInOut", get_easeIn: "get_easeIn" }, motion_easing_Quad.get_easeIn = function() { return new motion_easing_QuadEaseIn } , motion_easing_Quad.get_easeInOut = function() { return new motion_easing_QuadEaseInOut } , motion_easing_Quad.get_easeOut = function() { return new motion_easing_QuadEaseOut } ; var motion_easing_QuadEaseIn = function() {}; $hxClasses["motion.easing.QuadEaseIn"] = motion_easing_QuadEaseIn, motion_easing_QuadEaseIn.__name__ = ["motion", "easing", "QuadEaseIn"], motion_easing_QuadEaseIn.__interfaces__ = [motion_easing_IEasing], motion_easing_QuadEaseIn.prototype = { calculate: function(e) { return e * e }, __class__: motion_easing_QuadEaseIn }; var motion_easing_QuadEaseInOut = function() {}; $hxClasses["motion.easing.QuadEaseInOut"] = motion_easing_QuadEaseInOut, motion_easing_QuadEaseInOut.__name__ = ["motion", "easing", "QuadEaseInOut"], motion_easing_QuadEaseInOut.__interfaces__ = [motion_easing_IEasing], motion_easing_QuadEaseInOut.prototype = { calculate: function(e) { return (e *= 2) < 1 ? .5 * e * e : -.5 * ((e - 1) * (e - 3) - 1) }, __class__: motion_easing_QuadEaseInOut }; var motion_easing_QuadEaseOut = function() {}; $hxClasses["motion.easing.QuadEaseOut"] = motion_easing_QuadEaseOut, motion_easing_QuadEaseOut.__name__ = ["motion", "easing", "QuadEaseOut"], motion_easing_QuadEaseOut.__interfaces__ = [motion_easing_IEasing], motion_easing_QuadEaseOut.prototype = { calculate: function(e) { return -e * (e - 2) }, __class__: motion_easing_QuadEaseOut }; var motion_easing_Sine = function() {}; $hxClasses["motion.easing.Sine"] = motion_easing_Sine, motion_easing_Sine.__name__ = ["motion", "easing", "Sine"], motion_easing_Sine.__properties__ = { get_easeOut: "get_easeOut", get_easeInOut: "get_easeInOut", get_easeIn: "get_easeIn" }, motion_easing_Sine.get_easeIn = function() { return new motion_easing_SineEaseIn } , motion_easing_Sine.get_easeInOut = function() { return new motion_easing_SineEaseInOut } , motion_easing_Sine.get_easeOut = function() { return new motion_easing_SineEaseOut } ; var motion_easing_SineEaseIn = function() {}; $hxClasses["motion.easing.SineEaseIn"] = motion_easing_SineEaseIn, motion_easing_SineEaseIn.__name__ = ["motion", "easing", "SineEaseIn"], motion_easing_SineEaseIn.__interfaces__ = [motion_easing_IEasing], motion_easing_SineEaseIn.prototype = { calculate: function(e) { return 1 - Math.cos(e * (Math.PI / 2)) }, __class__: motion_easing_SineEaseIn }; var motion_easing_SineEaseInOut = function() {}; $hxClasses["motion.easing.SineEaseInOut"] = motion_easing_SineEaseInOut, motion_easing_SineEaseInOut.__name__ = ["motion", "easing", "SineEaseInOut"], motion_easing_SineEaseInOut.__interfaces__ = [motion_easing_IEasing], motion_easing_SineEaseInOut.prototype = { calculate: function(e) { return -(Math.cos(Math.PI * e) - 1) / 2 }, __class__: motion_easing_SineEaseInOut }; var motion_easing_SineEaseOut = function() {}; $hxClasses["motion.easing.SineEaseOut"] = motion_easing_SineEaseOut, motion_easing_SineEaseOut.__name__ = ["motion", "easing", "SineEaseOut"], motion_easing_SineEaseOut.__interfaces__ = [motion_easing_IEasing], motion_easing_SineEaseOut.prototype = { calculate: function(e) { return Math.sin(e * (Math.PI / 2)) }, __class__: motion_easing_SineEaseOut }; var nape_Config = function() {}; $hxClasses["nape.Config"] = nape_Config, nape_Config.__name__ = ["nape", "Config"]; var nape_callbacks_Callback = function() { this.zpp_inner = null }; $hxClasses["nape.callbacks.Callback"] = nape_callbacks_Callback, nape_callbacks_Callback.__name__ = ["nape", "callbacks", "Callback"], nape_callbacks_Callback.prototype = { zpp_inner: null, toString: function() { return "" }, __class__: nape_callbacks_Callback }; var nape_callbacks_BodyCallback = function() { nape_callbacks_Callback.call(this) }; $hxClasses["nape.callbacks.BodyCallback"] = nape_callbacks_BodyCallback, nape_callbacks_BodyCallback.__name__ = ["nape", "callbacks", "BodyCallback"], nape_callbacks_BodyCallback.__super__ = nape_callbacks_Callback, nape_callbacks_BodyCallback.prototype = $extend(nape_callbacks_Callback.prototype, { toString: function() { var e = "Cb:"; return e += ["WAKE", "SLEEP"][this.zpp_inner.event - 2], e += ":" + this.zpp_inner.body.outer.toString(), e += " : listener: " + Std.string(this.zpp_inner.listener.outer) }, __class__: nape_callbacks_BodyCallback }); var nape_callbacks_Listener = function() { this.zpp_inner = null }; $hxClasses["nape.callbacks.Listener"] = nape_callbacks_Listener, nape_callbacks_Listener.__name__ = ["nape", "callbacks", "Listener"], nape_callbacks_Listener.prototype = { zpp_inner: null, set_space: function(e) { return (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) != e && (null != this.zpp_inner.space && this.zpp_inner.space.outer.zpp_inner.wrap_listeners.remove(this), null != e ? e.zpp_inner.wrap_listeners.add(this) : this.zpp_inner.space = null), null == this.zpp_inner.space ? null : this.zpp_inner.space.outer }, toString: function() { var e = ["BEGIN", "END", "WAKE", "SLEEP", "BREAK", "PRE", "ONGOING"][this.zpp_inner.event]; if (0 == this.zpp_inner.type) { var t = this.zpp_inner.body; return "BodyListener{" + e + "::" + Std.string(t.outer_zn.zpp_inner_zn.options.outer) + "}" } if (1 == this.zpp_inner.type) { var n = this.zpp_inner.constraint; return "ConstraintListener{" + e + "::" + Std.string(n.outer_zn.zpp_inner_zn.options.outer) + "}" } var i, l = this.zpp_inner.interaction; switch (l.itype) { case 1: i = "COLLISION"; break; case 2: i = "SENSOR"; break; case 4: i = "FLUID"; break; default: i = "ALL" } return (2 == this.zpp_inner.type ? "InteractionListener{" + e + "#" + i + "::" + Std.string(l.outer_zni.zpp_inner_zn.options1.outer) + ":" + Std.string(l.outer_zni.zpp_inner_zn.options2.outer) + "}" : "PreListener{" + i + "::" + Std.string(l.outer_znp.zpp_inner_zn.options1.outer) + ":" + Std.string(l.outer_znp.zpp_inner_zn.options2.outer) + "}") + " precedence=" + this.zpp_inner.precedence }, __class__: nape_callbacks_Listener, __properties__: { set_space: "set_space" } }; var nape_callbacks_BodyListener = function() { this.zpp_inner_zn = null }; $hxClasses["nape.callbacks.BodyListener"] = nape_callbacks_BodyListener, nape_callbacks_BodyListener.__name__ = ["nape", "callbacks", "BodyListener"], nape_callbacks_BodyListener.__super__ = nape_callbacks_Listener, nape_callbacks_BodyListener.prototype = $extend(nape_callbacks_Listener.prototype, { zpp_inner_zn: null, __class__: nape_callbacks_BodyListener }); var nape_callbacks_CbEvent = function() {}; $hxClasses["nape.callbacks.CbEvent"] = nape_callbacks_CbEvent, nape_callbacks_CbEvent.__name__ = ["nape", "callbacks", "CbEvent"], nape_callbacks_CbEvent.prototype = { toString: function() { return this == (null == zpp_$nape_util_ZPP_$Flags.CbEvent_PRE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.CbEvent_PRE = new nape_callbacks_CbEvent, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.CbEvent_PRE) ? "PRE" : this == (null == zpp_$nape_util_ZPP_$Flags.CbEvent_BEGIN && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.CbEvent_BEGIN = new nape_callbacks_CbEvent, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.CbEvent_BEGIN) ? "BEGIN" : this == (null == zpp_$nape_util_ZPP_$Flags.CbEvent_ONGOING && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.CbEvent_ONGOING = new nape_callbacks_CbEvent, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.CbEvent_ONGOING) ? "ONGOING" : this == (null == zpp_$nape_util_ZPP_$Flags.CbEvent_END && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.CbEvent_END = new nape_callbacks_CbEvent, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.CbEvent_END) ? "END" : this == (null == zpp_$nape_util_ZPP_$Flags.CbEvent_WAKE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.CbEvent_WAKE = new nape_callbacks_CbEvent, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.CbEvent_WAKE) ? "WAKE" : this == (null == zpp_$nape_util_ZPP_$Flags.CbEvent_SLEEP && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.CbEvent_SLEEP = new nape_callbacks_CbEvent, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.CbEvent_SLEEP) ? "SLEEP" : this == (null == zpp_$nape_util_ZPP_$Flags.CbEvent_BREAK && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.CbEvent_BREAK = new nape_callbacks_CbEvent, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.CbEvent_BREAK) ? "BREAK" : "" }, __class__: nape_callbacks_CbEvent }; var nape_callbacks_CbTypeIterator = function() { this.zpp_next = null, this.zpp_critical = !1, this.zpp_i = 0, this.zpp_inner = null }; $hxClasses["nape.callbacks.CbTypeIterator"] = nape_callbacks_CbTypeIterator, nape_callbacks_CbTypeIterator.__name__ = ["nape", "callbacks", "CbTypeIterator"], nape_callbacks_CbTypeIterator.get = function(e) { var t; if (null == nape_callbacks_CbTypeIterator.zpp_pool) { zpp_$nape_util_ZPP_$CbTypeList.internal = !0; var n = new nape_callbacks_CbTypeIterator; zpp_$nape_util_ZPP_$CbTypeList.internal = !1, t = n } else { var i = nape_callbacks_CbTypeIterator.zpp_pool; nape_callbacks_CbTypeIterator.zpp_pool = i.zpp_next, t = i } return t.zpp_i = 0, t.zpp_inner = e, t.zpp_critical = !1, t } , nape_callbacks_CbTypeIterator.prototype = { zpp_inner: null, zpp_i: null, zpp_critical: null, zpp_next: null, hasNext: function() { this.zpp_inner.zpp_inner.valmod(); var e = this.zpp_inner.get_length(); return this.zpp_critical = !0, this.zpp_i < e || (this.zpp_next = nape_callbacks_CbTypeIterator.zpp_pool, nape_callbacks_CbTypeIterator.zpp_pool = this, this.zpp_inner = null, !1) }, next: function() { return this.zpp_critical = !1, this.zpp_inner.at(this.zpp_i++) }, __class__: nape_callbacks_CbTypeIterator }; var nape_callbacks_CbTypeList = function() { this.zpp_inner = null, this.zpp_inner = new zpp_$nape_util_ZPP_$CbTypeList, this.zpp_inner.outer = this }; $hxClasses["nape.callbacks.CbTypeList"] = nape_callbacks_CbTypeList, nape_callbacks_CbTypeList.__name__ = ["nape", "callbacks", "CbTypeList"], nape_callbacks_CbTypeList.prototype = { zpp_inner: null, get_length: function() { return this.zpp_inner.valmod(), this.zpp_inner.zip_length && (this.zpp_inner.zip_length = !1, this.zpp_inner.user_length = this.zpp_inner.inner.length), this.zpp_inner.user_length }, has: function(e) { return this.zpp_inner.valmod(), this.zpp_inner.inner.has(e.zpp_inner) }, at: function(e) { if (this.zpp_inner.valmod(), this.zpp_inner.reverse_flag && (e = this.get_length() - 1 - e), e < this.zpp_inner.at_index || null == this.zpp_inner.at_ite) this.zpp_inner.at_index = e, this.zpp_inner.at_ite = this.zpp_inner.inner.iterator_at(e); else for (; this.zpp_inner.at_index != e; ) this.zpp_inner.at_index++, this.zpp_inner.at_ite = this.zpp_inner.at_ite.next; return this.zpp_inner.at_ite.elt.outer }, push: function(e) { var t; return this.zpp_inner.modify_test(), this.zpp_inner.valmod(), (t = null == this.zpp_inner.adder || this.zpp_inner.adder(e)) && (this.zpp_inner.reverse_flag ? this.zpp_inner.inner.add(e.zpp_inner) : (null == this.zpp_inner.push_ite && (null == this.zpp_inner.inner.head ? this.zpp_inner.push_ite = null : this.zpp_inner.push_ite = this.zpp_inner.inner.iterator_at(this.get_length() - 1)), this.zpp_inner.push_ite = this.zpp_inner.inner.insert(this.zpp_inner.push_ite, e.zpp_inner)), this.zpp_inner.invalidate(), null != this.zpp_inner.post_adder && this.zpp_inner.post_adder(e)), t }, unshift: function(e) { var t; return this.zpp_inner.modify_test(), this.zpp_inner.valmod(), (t = null == this.zpp_inner.adder || this.zpp_inner.adder(e)) && (this.zpp_inner.reverse_flag ? (null == this.zpp_inner.push_ite && (null == this.zpp_inner.inner.head ? this.zpp_inner.push_ite = null : this.zpp_inner.push_ite = this.zpp_inner.inner.iterator_at(this.get_length() - 1)), this.zpp_inner.push_ite = this.zpp_inner.inner.insert(this.zpp_inner.push_ite, e.zpp_inner)) : this.zpp_inner.inner.add(e.zpp_inner), this.zpp_inner.invalidate(), null != this.zpp_inner.post_adder && this.zpp_inner.post_adder(e)), t }, add: function(e) { return this.zpp_inner.reverse_flag ? this.push(e) : this.unshift(e) }, toString: function() { var e, t = "[", n = !0; for (this.zpp_inner.valmod(), e = nape_callbacks_CbTypeIterator.get(this); e.hasNext(); ) { var i; e.zpp_critical = !1, i = e.zpp_inner.at(e.zpp_i++), n || (t += ","), t += null == i ? "NULL" : i.toString(), n = !1 } return t + "]" }, __class__: nape_callbacks_CbTypeList, __properties__: { get_length: "get_length" } }; var nape_callbacks_ConstraintCallback = function() { nape_callbacks_Callback.call(this) }; $hxClasses["nape.callbacks.ConstraintCallback"] = nape_callbacks_ConstraintCallback, nape_callbacks_ConstraintCallback.__name__ = ["nape", "callbacks", "ConstraintCallback"], nape_callbacks_ConstraintCallback.__super__ = nape_callbacks_Callback, nape_callbacks_ConstraintCallback.prototype = $extend(nape_callbacks_Callback.prototype, { toString: function() { var e = "Cb:"; return e += ["WAKE", "SLEEP", "BREAK"][this.zpp_inner.event - 2], e += ":" + this.zpp_inner.constraint.outer.toString(), e += " : listener: " + Std.string(this.zpp_inner.listener.outer) }, __class__: nape_callbacks_ConstraintCallback }); var nape_callbacks_ConstraintListener = function() { this.zpp_inner_zn = null }; $hxClasses["nape.callbacks.ConstraintListener"] = nape_callbacks_ConstraintListener, nape_callbacks_ConstraintListener.__name__ = ["nape", "callbacks", "ConstraintListener"], nape_callbacks_ConstraintListener.__super__ = nape_callbacks_Listener, nape_callbacks_ConstraintListener.prototype = $extend(nape_callbacks_Listener.prototype, { zpp_inner_zn: null, __class__: nape_callbacks_ConstraintListener }); var nape_callbacks_InteractionCallback = function() { nape_callbacks_Callback.call(this) }; $hxClasses["nape.callbacks.InteractionCallback"] = nape_callbacks_InteractionCallback, nape_callbacks_InteractionCallback.__name__ = ["nape", "callbacks", "InteractionCallback"], nape_callbacks_InteractionCallback.__super__ = nape_callbacks_Callback, nape_callbacks_InteractionCallback.prototype = $extend(nape_callbacks_Callback.prototype, { toString: function() { var e = "Cb:"; return e += ["BEGIN", "END", "", "", "", "", "ONGOING"][this.zpp_inner.event], e += ":" + this.zpp_inner.int1.outer_i.toString() + "/" + this.zpp_inner.int2.outer_i.toString(), e += " : " + this.zpp_inner.wrap_arbiters.toString(), e += " : listener: " + Std.string(this.zpp_inner.listener.outer) }, __class__: nape_callbacks_InteractionCallback }); var nape_callbacks_InteractionListener = function() { this.zpp_inner_zn = null }; $hxClasses["nape.callbacks.InteractionListener"] = nape_callbacks_InteractionListener, nape_callbacks_InteractionListener.__name__ = ["nape", "callbacks", "InteractionListener"], nape_callbacks_InteractionListener.__super__ = nape_callbacks_Listener, nape_callbacks_InteractionListener.prototype = $extend(nape_callbacks_Listener.prototype, { zpp_inner_zn: null, __class__: nape_callbacks_InteractionListener }); var nape_callbacks_InteractionType = function() {}; $hxClasses["nape.callbacks.InteractionType"] = nape_callbacks_InteractionType, nape_callbacks_InteractionType.__name__ = ["nape", "callbacks", "InteractionType"], nape_callbacks_InteractionType.prototype = { toString: function() { return this == (null == zpp_$nape_util_ZPP_$Flags.InteractionType_COLLISION && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.InteractionType_COLLISION = new nape_callbacks_InteractionType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.InteractionType_COLLISION) ? "COLLISION" : this == (null == zpp_$nape_util_ZPP_$Flags.InteractionType_SENSOR && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.InteractionType_SENSOR = new nape_callbacks_InteractionType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.InteractionType_SENSOR) ? "SENSOR" : this == (null == zpp_$nape_util_ZPP_$Flags.InteractionType_FLUID && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.InteractionType_FLUID = new nape_callbacks_InteractionType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.InteractionType_FLUID) ? "FLUID" : this == (null == zpp_$nape_util_ZPP_$Flags.InteractionType_ANY && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.InteractionType_ANY = new nape_callbacks_InteractionType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.InteractionType_ANY) ? "ANY" : "" }, __class__: nape_callbacks_InteractionType }; var nape_callbacks_ListenerIterator = function() { this.zpp_next = null, this.zpp_critical = !1, this.zpp_i = 0, this.zpp_inner = null }; $hxClasses["nape.callbacks.ListenerIterator"] = nape_callbacks_ListenerIterator, nape_callbacks_ListenerIterator.__name__ = ["nape", "callbacks", "ListenerIterator"], nape_callbacks_ListenerIterator.get = function(e) { var t; if (null == nape_callbacks_ListenerIterator.zpp_pool) { zpp_$nape_util_ZPP_$ListenerList.internal = !0; var n = new nape_callbacks_ListenerIterator; zpp_$nape_util_ZPP_$ListenerList.internal = !1, t = n } else { var i = nape_callbacks_ListenerIterator.zpp_pool; nape_callbacks_ListenerIterator.zpp_pool = i.zpp_next, t = i } return t.zpp_i = 0, t.zpp_inner = e, t.zpp_critical = !1, t } , nape_callbacks_ListenerIterator.prototype = { zpp_inner: null, zpp_i: null, zpp_critical: null, zpp_next: null, hasNext: function() { this.zpp_inner.zpp_inner.valmod(); var e = this.zpp_inner.get_length(); return this.zpp_critical = !0, this.zpp_i < e || (this.zpp_next = nape_callbacks_ListenerIterator.zpp_pool, nape_callbacks_ListenerIterator.zpp_pool = this, this.zpp_inner = null, !1) }, next: function() { return this.zpp_critical = !1, this.zpp_inner.at(this.zpp_i++) }, __class__: nape_callbacks_ListenerIterator }; var nape_callbacks_ListenerList = function() { this.zpp_inner = null, this.zpp_inner = new zpp_$nape_util_ZPP_$ListenerList, this.zpp_inner.outer = this }; $hxClasses["nape.callbacks.ListenerList"] = nape_callbacks_ListenerList, nape_callbacks_ListenerList.__name__ = ["nape", "callbacks", "ListenerList"], nape_callbacks_ListenerList.prototype = { zpp_inner: null, get_length: function() { return this.zpp_inner.valmod(), this.zpp_inner.zip_length && (this.zpp_inner.zip_length = !1, this.zpp_inner.user_length = this.zpp_inner.inner.length), this.zpp_inner.user_length }, at: function(e) { if (this.zpp_inner.valmod(), this.zpp_inner.reverse_flag && (e = this.get_length() - 1 - e), e < this.zpp_inner.at_index || null == this.zpp_inner.at_ite) this.zpp_inner.at_index = e, this.zpp_inner.at_ite = this.zpp_inner.inner.iterator_at(e); else for (; this.zpp_inner.at_index != e; ) this.zpp_inner.at_index++, this.zpp_inner.at_ite = this.zpp_inner.at_ite.next; return this.zpp_inner.at_ite.elt.outer }, push: function(e) { var t; return this.zpp_inner.modify_test(), this.zpp_inner.valmod(), (t = null == this.zpp_inner.adder || this.zpp_inner.adder(e)) && (this.zpp_inner.reverse_flag ? this.zpp_inner.inner.add(e.zpp_inner) : (null == this.zpp_inner.push_ite && (null == this.zpp_inner.inner.head ? this.zpp_inner.push_ite = null : this.zpp_inner.push_ite = this.zpp_inner.inner.iterator_at(this.get_length() - 1)), this.zpp_inner.push_ite = this.zpp_inner.inner.insert(this.zpp_inner.push_ite, e.zpp_inner)), this.zpp_inner.invalidate(), null != this.zpp_inner.post_adder && this.zpp_inner.post_adder(e)), t }, unshift: function(e) { var t; return this.zpp_inner.modify_test(), this.zpp_inner.valmod(), (t = null == this.zpp_inner.adder || this.zpp_inner.adder(e)) && (this.zpp_inner.reverse_flag ? (null == this.zpp_inner.push_ite && (null == this.zpp_inner.inner.head ? this.zpp_inner.push_ite = null : this.zpp_inner.push_ite = this.zpp_inner.inner.iterator_at(this.get_length() - 1)), this.zpp_inner.push_ite = this.zpp_inner.inner.insert(this.zpp_inner.push_ite, e.zpp_inner)) : this.zpp_inner.inner.add(e.zpp_inner), this.zpp_inner.invalidate(), null != this.zpp_inner.post_adder && this.zpp_inner.post_adder(e)), t }, add: function(e) { return this.zpp_inner.reverse_flag ? this.push(e) : this.unshift(e) }, remove: function(e) { var t; this.zpp_inner.modify_test(), this.zpp_inner.valmod(), t = !1; for (var n = this.zpp_inner.inner.head; null != n; ) { if (n.elt == e.zpp_inner) { t = !0; break } n = n.next } return t && (null != this.zpp_inner.subber && this.zpp_inner.subber(e), this.zpp_inner.dontremove || this.zpp_inner.inner.remove(e.zpp_inner), this.zpp_inner.invalidate()), t }, toString: function() { var e, t = "[", n = !0; for (this.zpp_inner.valmod(), e = nape_callbacks_ListenerIterator.get(this); e.hasNext(); ) { var i; e.zpp_critical = !1, i = e.zpp_inner.at(e.zpp_i++), n || (t += ","), t += null == i ? "NULL" : i.toString(), n = !1 } return t + "]" }, __class__: nape_callbacks_ListenerList, __properties__: { get_length: "get_length" } }; var nape_callbacks_ListenerType = function() {}; $hxClasses["nape.callbacks.ListenerType"] = nape_callbacks_ListenerType, nape_callbacks_ListenerType.__name__ = ["nape", "callbacks", "ListenerType"], nape_callbacks_ListenerType.prototype = { toString: function() { return this == (null == zpp_$nape_util_ZPP_$Flags.ListenerType_BODY && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.ListenerType_BODY = new nape_callbacks_ListenerType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.ListenerType_BODY) ? "BODY" : this == (null == zpp_$nape_util_ZPP_$Flags.ListenerType_CONSTRAINT && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.ListenerType_CONSTRAINT = new nape_callbacks_ListenerType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.ListenerType_CONSTRAINT) ? "CONSTRAINT" : this == (null == zpp_$nape_util_ZPP_$Flags.ListenerType_INTERACTION && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.ListenerType_INTERACTION = new nape_callbacks_ListenerType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.ListenerType_INTERACTION) ? "INTERACTION" : this == (null == zpp_$nape_util_ZPP_$Flags.ListenerType_PRE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.ListenerType_PRE = new nape_callbacks_ListenerType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.ListenerType_PRE) ? "PRE" : "" }, __class__: nape_callbacks_ListenerType }; var nape_callbacks_OptionType = function(e, t) { this.zpp_inner = null, this.zpp_inner = new zpp_$nape_callbacks_ZPP_$OptionType, this.zpp_inner.outer = this, null != e && this.including(e), null != t && this.excluding(t) }; $hxClasses["nape.callbacks.OptionType"] = nape_callbacks_OptionType, nape_callbacks_OptionType.__name__ = ["nape", "callbacks", "OptionType"], nape_callbacks_OptionType.prototype = { zpp_inner: null, including: function(e) { return this.zpp_inner.append(this.zpp_inner.includes, e), this }, excluding: function(e) { return this.zpp_inner.append(this.zpp_inner.excludes, e), this }, toString: function() { var e; return "@{" + (e = this, null == e.zpp_inner.wrap_includes && e.zpp_inner.setup_includes(), e.zpp_inner.wrap_includes).toString() + " excluding " + function(e) { return null == e.zpp_inner.wrap_excludes && e.zpp_inner.setup_excludes(), e.zpp_inner.wrap_excludes }(this).toString() + "}" }, __class__: nape_callbacks_OptionType }; var nape_callbacks_PreCallback = function() { nape_callbacks_Callback.call(this) }; $hxClasses["nape.callbacks.PreCallback"] = nape_callbacks_PreCallback, nape_callbacks_PreCallback.__name__ = ["nape", "callbacks", "PreCallback"], nape_callbacks_PreCallback.__super__ = nape_callbacks_Callback, nape_callbacks_PreCallback.prototype = $extend(nape_callbacks_Callback.prototype, { toString: function() { var e = "Cb:PRE:"; return e += ":" + this.zpp_inner.int1.outer_i.toString() + "/" + this.zpp_inner.int2.outer_i.toString(), e += " : " + this.zpp_inner.pre_arbiter.wrapper().toString(), e += " : listnener: " + Std.string(this.zpp_inner.listener.outer) }, __class__: nape_callbacks_PreCallback }); var nape_callbacks_PreFlag = function() {}; $hxClasses["nape.callbacks.PreFlag"] = nape_callbacks_PreFlag, nape_callbacks_PreFlag.__name__ = ["nape", "callbacks", "PreFlag"], nape_callbacks_PreFlag.prototype = { toString: function() { return this == (null == zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT) ? "ACCEPT" : this == (null == zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE) ? "IGNORE" : this == (null == zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT_ONCE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT_ONCE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT_ONCE) ? "ACCEPT_ONCE" : this == (null == zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE_ONCE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE_ONCE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE_ONCE) ? "IGNORE_ONCE" : "" }, __class__: nape_callbacks_PreFlag }; var nape_callbacks_PreListener = function(e, t, n, i, l, a) { null == a && (a = !1), null == l && (l = 0), this.zpp_inner_zn = null, nape_callbacks_Listener.call(this), this.zpp_inner_zn = new zpp_$nape_callbacks_ZPP_$InteractionListener(zpp_$nape_callbacks_ZPP_$OptionType.argument(t),zpp_$nape_callbacks_ZPP_$OptionType.argument(n),5,3), this.zpp_inner = this.zpp_inner_zn, this.zpp_inner.outer = this, this.zpp_inner_zn.outer_znp = this, this.zpp_inner.precedence = l, this.zpp_inner_zn.pure = a, this.zpp_inner_zn.handlerp = i, this.set_interactionType(e) }; $hxClasses["nape.callbacks.PreListener"] = nape_callbacks_PreListener, nape_callbacks_PreListener.__name__ = ["nape", "callbacks", "PreListener"], nape_callbacks_PreListener.__super__ = nape_callbacks_Listener, nape_callbacks_PreListener.prototype = $extend(nape_callbacks_Listener.prototype, { zpp_inner_zn: null, get_interactionType: function() { var e = this.zpp_inner_zn.itype; return 1 == e ? (null == zpp_$nape_util_ZPP_$Flags.InteractionType_COLLISION && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.InteractionType_COLLISION = new nape_callbacks_InteractionType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.InteractionType_COLLISION) : 2 == e ? (null == zpp_$nape_util_ZPP_$Flags.InteractionType_SENSOR && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.InteractionType_SENSOR = new nape_callbacks_InteractionType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.InteractionType_SENSOR) : 4 == e ? (null == zpp_$nape_util_ZPP_$Flags.InteractionType_FLUID && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.InteractionType_FLUID = new nape_callbacks_InteractionType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.InteractionType_FLUID) : 7 == e ? (null == zpp_$nape_util_ZPP_$Flags.InteractionType_ANY && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.InteractionType_ANY = new nape_callbacks_InteractionType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.InteractionType_ANY) : null }, set_interactionType: function(e) { var t; this.get_interactionType() != e && (t = e == (null == zpp_$nape_util_ZPP_$Flags.InteractionType_COLLISION && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.InteractionType_COLLISION = new nape_callbacks_InteractionType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.InteractionType_COLLISION) ? 1 : e == (null == zpp_$nape_util_ZPP_$Flags.InteractionType_SENSOR && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.InteractionType_SENSOR = new nape_callbacks_InteractionType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.InteractionType_SENSOR) ? 2 : e == (null == zpp_$nape_util_ZPP_$Flags.InteractionType_FLUID && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.InteractionType_FLUID = new nape_callbacks_InteractionType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.InteractionType_FLUID) ? 4 : 7, this.zpp_inner_zn.itype = t); return this.get_interactionType() }, __class__: nape_callbacks_PreListener, __properties__: $extend(nape_callbacks_Listener.prototype.__properties__, { set_interactionType: "set_interactionType", get_interactionType: "get_interactionType" }) }); var nape_constraint_Constraint = function() { this.zpp_inner.insert_cbtype(zpp_$nape_callbacks_ZPP_$CbType.ANY_CONSTRAINT.zpp_inner) }; $hxClasses["nape.constraint.Constraint"] = nape_constraint_Constraint, nape_constraint_Constraint.__name__ = ["nape", "constraint", "Constraint"], nape_constraint_Constraint.prototype = { zpp_inner: null, set_space: function(e) { return (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) != e && (null != this.zpp_inner.component && (this.zpp_inner.component.woken = !1), this.zpp_inner.clearcache(), null != this.zpp_inner.space && this.zpp_inner.space.outer.zpp_inner.wrap_constraints.remove(this), null != e ? e.zpp_inner.wrap_constraints.add(this) : this.zpp_inner.space = null), null == this.zpp_inner.space ? null : this.zpp_inner.space.outer }, set_active: function(e) { return this.zpp_inner.active != e && (null != this.zpp_inner.component && (this.zpp_inner.component.woken = !1), this.zpp_inner.clearcache(), e ? (this.zpp_inner.active = e, this.zpp_inner.activate(), null != this.zpp_inner.space && (null != this.zpp_inner.component && (this.zpp_inner.component.sleeping = !0), this.zpp_inner.space.wake_constraint(this.zpp_inner, !0))) : (null != this.zpp_inner.space && (this.zpp_inner.wake(), this.zpp_inner.space.live_constraints.remove(this.zpp_inner)), this.zpp_inner.active = e, this.zpp_inner.deactivate())), this.zpp_inner.active }, set_ignore: function(e) { return this.zpp_inner.ignore != e && (this.zpp_inner.ignore = e, this.zpp_inner.wake()), this.zpp_inner.ignore }, set_stiff: function(e) { return this.zpp_inner.stiff != e && (this.zpp_inner.stiff = e, this.zpp_inner.wake()), this.zpp_inner.stiff }, set_frequency: function(e) { return this.zpp_inner.frequency != e && (this.zpp_inner.frequency = e, this.zpp_inner.stiff || this.zpp_inner.wake()), this.zpp_inner.frequency }, set_damping: function(e) { return this.zpp_inner.damping != e && (this.zpp_inner.damping = e, this.zpp_inner.stiff || this.zpp_inner.wake()), this.zpp_inner.damping }, set_maxForce: function(e) { return this.zpp_inner.maxForce != e && (this.zpp_inner.maxForce = e, this.zpp_inner.wake()), this.zpp_inner.maxForce }, set_maxError: function(e) { return this.zpp_inner.maxError != e && (this.zpp_inner.maxError = e, this.zpp_inner.wake()), this.zpp_inner.maxError }, set_breakUnderForce: function(e) { return this.zpp_inner.breakUnderForce != e && (this.zpp_inner.breakUnderForce = e, this.zpp_inner.wake()), this.zpp_inner.breakUnderForce }, set_breakUnderError: function(e) { return this.zpp_inner.breakUnderError != e && (this.zpp_inner.breakUnderError = e, this.zpp_inner.wake()), this.zpp_inner.breakUnderError }, set_removeOnBreak: function(e) { return this.zpp_inner.removeOnBreak = e, this.zpp_inner.removeOnBreak }, visitBodies: function(e) {}, toString: function() { return "{Constraint}" }, __class__: nape_constraint_Constraint, __properties__: { set_removeOnBreak: "set_removeOnBreak", set_breakUnderError: "set_breakUnderError", set_breakUnderForce: "set_breakUnderForce", set_maxError: "set_maxError", set_maxForce: "set_maxForce", set_damping: "set_damping", set_frequency: "set_frequency", set_stiff: "set_stiff", set_ignore: "set_ignore", set_active: "set_active", set_space: "set_space" } }; var nape_constraint_AngleJoint = function(e, t, n, i, l) { null == l && (l = 1), this.zpp_inner_zn = null, this.zpp_inner_zn = new zpp_$nape_constraint_ZPP_$AngleJoint, this.zpp_inner = this.zpp_inner_zn, this.zpp_inner.outer = this, this.zpp_inner_zn.outer_zn = this, nape_constraint_Constraint.call(this), this.set_body1(e), this.set_body2(t), this.zpp_inner.immutable_midstep("AngleJoint::jointMin"), this.zpp_inner_zn.jointMin != n && (this.zpp_inner_zn.jointMin = n, this.zpp_inner.wake()), this.zpp_inner_zn.jointMin, this.zpp_inner.immutable_midstep("AngleJoint::jointMax"), this.zpp_inner_zn.jointMax != i && (this.zpp_inner_zn.jointMax = i, this.zpp_inner.wake()), this.zpp_inner_zn.jointMax, this.zpp_inner.immutable_midstep("AngleJoint::ratio"), this.zpp_inner_zn.ratio != l && (this.zpp_inner_zn.ratio = l, this.zpp_inner.wake()), this.zpp_inner_zn.ratio }; $hxClasses["nape.constraint.AngleJoint"] = nape_constraint_AngleJoint, nape_constraint_AngleJoint.__name__ = ["nape", "constraint", "AngleJoint"], nape_constraint_AngleJoint.__super__ = nape_constraint_Constraint, nape_constraint_AngleJoint.prototype = $extend(nape_constraint_Constraint.prototype, { zpp_inner_zn: null, set_body1: function(e) { var t; return this.zpp_inner.immutable_midstep("Constraint::body1"), (t = null == e ? null : e.zpp_inner) != this.zpp_inner_zn.b1 && (null != this.zpp_inner_zn.b1 && (null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && this.zpp_inner_zn.b2 != this.zpp_inner_zn.b1 && null != this.zpp_inner_zn.b1 && this.zpp_inner_zn.b1.constraints.remove(this.zpp_inner), this.zpp_inner.active && null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && this.zpp_inner_zn.b1.wake()), this.zpp_inner_zn.b1 = t, null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && null != t && this.zpp_inner_zn.b2 != t && null != t && t.constraints.add(this.zpp_inner), this.zpp_inner.active && null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && (this.zpp_inner.wake(), null != t && t.wake())), null == this.zpp_inner_zn.b1 ? null : this.zpp_inner_zn.b1.outer }, set_body2: function(e) { var t; return this.zpp_inner.immutable_midstep("Constraint::body2"), (t = null == e ? null : e.zpp_inner) != this.zpp_inner_zn.b2 && (null != this.zpp_inner_zn.b2 && (null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && this.zpp_inner_zn.b1 != this.zpp_inner_zn.b2 && null != this.zpp_inner_zn.b2 && this.zpp_inner_zn.b2.constraints.remove(this.zpp_inner), this.zpp_inner.active && null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && this.zpp_inner_zn.b2.wake()), this.zpp_inner_zn.b2 = t, null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && null != t && this.zpp_inner_zn.b1 != t && null != t && t.constraints.add(this.zpp_inner), this.zpp_inner.active && null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && (this.zpp_inner.wake(), null != t && t.wake())), null == this.zpp_inner_zn.b2 ? null : this.zpp_inner_zn.b2.outer }, visitBodies: function(e) { null != (null == this.zpp_inner_zn.b1 ? null : this.zpp_inner_zn.b1.outer) && e(null == this.zpp_inner_zn.b1 ? null : this.zpp_inner_zn.b1.outer), null != (null == this.zpp_inner_zn.b2 ? null : this.zpp_inner_zn.b2.outer) && (null == this.zpp_inner_zn.b2 ? null : this.zpp_inner_zn.b2.outer) != (null == this.zpp_inner_zn.b1 ? null : this.zpp_inner_zn.b1.outer) && e(null == this.zpp_inner_zn.b2 ? null : this.zpp_inner_zn.b2.outer) }, __class__: nape_constraint_AngleJoint, __properties__: $extend(nape_constraint_Constraint.prototype.__properties__, { set_body2: "set_body2", set_body1: "set_body1" }) }); var nape_constraint_ConstraintIterator = function() { this.zpp_next = null, this.zpp_critical = !1, this.zpp_i = 0, this.zpp_inner = null }; $hxClasses["nape.constraint.ConstraintIterator"] = nape_constraint_ConstraintIterator, nape_constraint_ConstraintIterator.__name__ = ["nape", "constraint", "ConstraintIterator"], nape_constraint_ConstraintIterator.get = function(e) { var t; if (null == nape_constraint_ConstraintIterator.zpp_pool) { zpp_$nape_util_ZPP_$ConstraintList.internal = !0; var n = new nape_constraint_ConstraintIterator; zpp_$nape_util_ZPP_$ConstraintList.internal = !1, t = n } else { var i = nape_constraint_ConstraintIterator.zpp_pool; nape_constraint_ConstraintIterator.zpp_pool = i.zpp_next, t = i } return t.zpp_i = 0, t.zpp_inner = e, t.zpp_critical = !1, t } , nape_constraint_ConstraintIterator.prototype = { zpp_inner: null, zpp_i: null, zpp_critical: null, zpp_next: null, hasNext: function() { this.zpp_inner.zpp_inner.valmod(); var e = this.zpp_inner.get_length(); return this.zpp_critical = !0, this.zpp_i < e || (this.zpp_next = nape_constraint_ConstraintIterator.zpp_pool, nape_constraint_ConstraintIterator.zpp_pool = this, this.zpp_inner = null, !1) }, next: function() { return this.zpp_critical = !1, this.zpp_inner.at(this.zpp_i++) }, __class__: nape_constraint_ConstraintIterator }; var nape_constraint_ConstraintList = function() { this.zpp_inner = null, this.zpp_inner = new zpp_$nape_util_ZPP_$ConstraintList, this.zpp_inner.outer = this }; $hxClasses["nape.constraint.ConstraintList"] = nape_constraint_ConstraintList, nape_constraint_ConstraintList.__name__ = ["nape", "constraint", "ConstraintList"], nape_constraint_ConstraintList.prototype = { zpp_inner: null, get_length: function() { return this.zpp_inner.valmod(), this.zpp_inner.zip_length && (this.zpp_inner.zip_length = !1, this.zpp_inner.user_length = this.zpp_inner.inner.length), this.zpp_inner.user_length }, at: function(e) { if (this.zpp_inner.valmod(), this.zpp_inner.reverse_flag && (e = this.get_length() - 1 - e), e < this.zpp_inner.at_index || null == this.zpp_inner.at_ite) this.zpp_inner.at_index = e, this.zpp_inner.at_ite = this.zpp_inner.inner.iterator_at(e); else for (; this.zpp_inner.at_index != e; ) this.zpp_inner.at_index++, this.zpp_inner.at_ite = this.zpp_inner.at_ite.next; return this.zpp_inner.at_ite.elt.outer }, push: function(e) { var t; return this.zpp_inner.modify_test(), this.zpp_inner.valmod(), (t = null == this.zpp_inner.adder || this.zpp_inner.adder(e)) && (this.zpp_inner.reverse_flag ? this.zpp_inner.inner.add(e.zpp_inner) : (null == this.zpp_inner.push_ite && (null == this.zpp_inner.inner.head ? this.zpp_inner.push_ite = null : this.zpp_inner.push_ite = this.zpp_inner.inner.iterator_at(this.get_length() - 1)), this.zpp_inner.push_ite = this.zpp_inner.inner.insert(this.zpp_inner.push_ite, e.zpp_inner)), this.zpp_inner.invalidate(), null != this.zpp_inner.post_adder && this.zpp_inner.post_adder(e)), t }, unshift: function(e) { var t; return this.zpp_inner.modify_test(), this.zpp_inner.valmod(), (t = null == this.zpp_inner.adder || this.zpp_inner.adder(e)) && (this.zpp_inner.reverse_flag ? (null == this.zpp_inner.push_ite && (null == this.zpp_inner.inner.head ? this.zpp_inner.push_ite = null : this.zpp_inner.push_ite = this.zpp_inner.inner.iterator_at(this.get_length() - 1)), this.zpp_inner.push_ite = this.zpp_inner.inner.insert(this.zpp_inner.push_ite, e.zpp_inner)) : this.zpp_inner.inner.add(e.zpp_inner), this.zpp_inner.invalidate(), null != this.zpp_inner.post_adder && this.zpp_inner.post_adder(e)), t }, add: function(e) { return this.zpp_inner.reverse_flag ? this.push(e) : this.unshift(e) }, remove: function(e) { var t; this.zpp_inner.modify_test(), this.zpp_inner.valmod(), t = !1; for (var n = this.zpp_inner.inner.head; null != n; ) { if (n.elt == e.zpp_inner) { t = !0; break } n = n.next } return t && (null != this.zpp_inner.subber && this.zpp_inner.subber(e), this.zpp_inner.dontremove || this.zpp_inner.inner.remove(e.zpp_inner), this.zpp_inner.invalidate()), t }, iterator: function() { return this.zpp_inner.valmod(), nape_constraint_ConstraintIterator.get(this) }, toString: function() { var e, t = "[", n = !0; for (this.zpp_inner.valmod(), e = nape_constraint_ConstraintIterator.get(this); e.hasNext(); ) { var i; e.zpp_critical = !1, i = e.zpp_inner.at(e.zpp_i++), n || (t += ","), t += null == i ? "NULL" : i.toString(), n = !1 } return t + "]" }, __class__: nape_constraint_ConstraintList, __properties__: { get_length: "get_length" } }; var nape_constraint_PivotJoint = function(e, t, n, i) { var l; this.zpp_inner_zn = null, this.zpp_inner_zn = new zpp_$nape_constraint_ZPP_$PivotJoint, this.zpp_inner = this.zpp_inner_zn, this.zpp_inner.outer = this, this.zpp_inner_zn.outer_zn = this, nape_constraint_Constraint.call(this), this.set_body1(e), this.set_body2(t), (l = this, null == l.zpp_inner_zn.wrap_a1 && l.zpp_inner_zn.setup_a1(), l.zpp_inner_zn.wrap_a1).set(n), null == this.zpp_inner_zn.wrap_a1 && this.zpp_inner_zn.setup_a1(), this.zpp_inner_zn.wrap_a1, function(e) { return null == e.zpp_inner_zn.wrap_a2 && e.zpp_inner_zn.setup_a2(), e.zpp_inner_zn.wrap_a2 }(this).set(i), null == this.zpp_inner_zn.wrap_a2 && this.zpp_inner_zn.setup_a2(), this.zpp_inner_zn.wrap_a2 }; $hxClasses["nape.constraint.PivotJoint"] = nape_constraint_PivotJoint, nape_constraint_PivotJoint.__name__ = ["nape", "constraint", "PivotJoint"], nape_constraint_PivotJoint.__super__ = nape_constraint_Constraint, nape_constraint_PivotJoint.prototype = $extend(nape_constraint_Constraint.prototype, { zpp_inner_zn: null, set_body1: function(e) { var t; return this.zpp_inner.immutable_midstep("Constraint::body1"), (t = null == e ? null : e.zpp_inner) != this.zpp_inner_zn.b1 && (null != this.zpp_inner_zn.b1 && (null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && this.zpp_inner_zn.b2 != this.zpp_inner_zn.b1 && null != this.zpp_inner_zn.b1 && this.zpp_inner_zn.b1.constraints.remove(this.zpp_inner), this.zpp_inner.active && null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && this.zpp_inner_zn.b1.wake()), this.zpp_inner_zn.b1 = t, null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && null != t && this.zpp_inner_zn.b2 != t && null != t && t.constraints.add(this.zpp_inner), this.zpp_inner.active && null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && (this.zpp_inner.wake(), null != t && t.wake())), null == this.zpp_inner_zn.b1 ? null : this.zpp_inner_zn.b1.outer }, set_body2: function(e) { var t; return this.zpp_inner.immutable_midstep("Constraint::body2"), (t = null == e ? null : e.zpp_inner) != this.zpp_inner_zn.b2 && (null != this.zpp_inner_zn.b2 && (null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && this.zpp_inner_zn.b1 != this.zpp_inner_zn.b2 && null != this.zpp_inner_zn.b2 && this.zpp_inner_zn.b2.constraints.remove(this.zpp_inner), this.zpp_inner.active && null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && this.zpp_inner_zn.b2.wake()), this.zpp_inner_zn.b2 = t, null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && null != t && this.zpp_inner_zn.b1 != t && null != t && t.constraints.add(this.zpp_inner), this.zpp_inner.active && null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && (this.zpp_inner.wake(), null != t && t.wake())), null == this.zpp_inner_zn.b2 ? null : this.zpp_inner_zn.b2.outer }, visitBodies: function(e) { null != (null == this.zpp_inner_zn.b1 ? null : this.zpp_inner_zn.b1.outer) && e(null == this.zpp_inner_zn.b1 ? null : this.zpp_inner_zn.b1.outer), null != (null == this.zpp_inner_zn.b2 ? null : this.zpp_inner_zn.b2.outer) && (null == this.zpp_inner_zn.b2 ? null : this.zpp_inner_zn.b2.outer) != (null == this.zpp_inner_zn.b1 ? null : this.zpp_inner_zn.b1.outer) && e(null == this.zpp_inner_zn.b2 ? null : this.zpp_inner_zn.b2.outer) }, __class__: nape_constraint_PivotJoint, __properties__: $extend(nape_constraint_Constraint.prototype.__properties__, { set_body2: "set_body2", set_body1: "set_body1" }) }); var nape_constraint_WeldJoint = function(e, t, n, i, l) { var a; null == l && (l = 0), this.zpp_inner_zn = null, this.zpp_inner_zn = new zpp_$nape_constraint_ZPP_$WeldJoint, this.zpp_inner = this.zpp_inner_zn, this.zpp_inner.outer = this, this.zpp_inner_zn.outer_zn = this, nape_constraint_Constraint.call(this), this.set_body1(e), this.set_body2(t), (a = this, null == a.zpp_inner_zn.wrap_a1 && a.zpp_inner_zn.setup_a1(), a.zpp_inner_zn.wrap_a1).set(n), null == this.zpp_inner_zn.wrap_a1 && this.zpp_inner_zn.setup_a1(), this.zpp_inner_zn.wrap_a1, function(e) { return null == e.zpp_inner_zn.wrap_a2 && e.zpp_inner_zn.setup_a2(), e.zpp_inner_zn.wrap_a2 }(this).set(i), null == this.zpp_inner_zn.wrap_a2 && this.zpp_inner_zn.setup_a2(), this.zpp_inner_zn.wrap_a2, this.zpp_inner.immutable_midstep("WeldJoint::phase"), this.zpp_inner_zn.phase != l && (this.zpp_inner_zn.phase = l, this.zpp_inner.wake()), this.zpp_inner_zn.phase }; $hxClasses["nape.constraint.WeldJoint"] = nape_constraint_WeldJoint, nape_constraint_WeldJoint.__name__ = ["nape", "constraint", "WeldJoint"], nape_constraint_WeldJoint.__super__ = nape_constraint_Constraint, nape_constraint_WeldJoint.prototype = $extend(nape_constraint_Constraint.prototype, { zpp_inner_zn: null, set_body1: function(e) { var t; return this.zpp_inner.immutable_midstep("Constraint::body1"), (t = null == e ? null : e.zpp_inner) != this.zpp_inner_zn.b1 && (null != this.zpp_inner_zn.b1 && (null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && this.zpp_inner_zn.b2 != this.zpp_inner_zn.b1 && null != this.zpp_inner_zn.b1 && this.zpp_inner_zn.b1.constraints.remove(this.zpp_inner), this.zpp_inner.active && null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && this.zpp_inner_zn.b1.wake()), this.zpp_inner_zn.b1 = t, null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && null != t && this.zpp_inner_zn.b2 != t && null != t && t.constraints.add(this.zpp_inner), this.zpp_inner.active && null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && (this.zpp_inner.wake(), null != t && t.wake())), null == this.zpp_inner_zn.b1 ? null : this.zpp_inner_zn.b1.outer }, set_body2: function(e) { var t; return this.zpp_inner.immutable_midstep("Constraint::body2"), (t = null == e ? null : e.zpp_inner) != this.zpp_inner_zn.b2 && (null != this.zpp_inner_zn.b2 && (null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && this.zpp_inner_zn.b1 != this.zpp_inner_zn.b2 && null != this.zpp_inner_zn.b2 && this.zpp_inner_zn.b2.constraints.remove(this.zpp_inner), this.zpp_inner.active && null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && this.zpp_inner_zn.b2.wake()), this.zpp_inner_zn.b2 = t, null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && null != t && this.zpp_inner_zn.b1 != t && null != t && t.constraints.add(this.zpp_inner), this.zpp_inner.active && null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && (this.zpp_inner.wake(), null != t && t.wake())), null == this.zpp_inner_zn.b2 ? null : this.zpp_inner_zn.b2.outer }, set_anchor2: function(e) { var t; return (t = this, null == t.zpp_inner_zn.wrap_a2 && t.zpp_inner_zn.setup_a2(), t.zpp_inner_zn.wrap_a2).set(e), null == this.zpp_inner_zn.wrap_a2 && this.zpp_inner_zn.setup_a2(), this.zpp_inner_zn.wrap_a2 }, visitBodies: function(e) { null != (null == this.zpp_inner_zn.b1 ? null : this.zpp_inner_zn.b1.outer) && e(null == this.zpp_inner_zn.b1 ? null : this.zpp_inner_zn.b1.outer), null != (null == this.zpp_inner_zn.b2 ? null : this.zpp_inner_zn.b2.outer) && (null == this.zpp_inner_zn.b2 ? null : this.zpp_inner_zn.b2.outer) != (null == this.zpp_inner_zn.b1 ? null : this.zpp_inner_zn.b1.outer) && e(null == this.zpp_inner_zn.b2 ? null : this.zpp_inner_zn.b2.outer) }, __class__: nape_constraint_WeldJoint, __properties__: $extend(nape_constraint_Constraint.prototype.__properties__, { set_anchor2: "set_anchor2", set_body2: "set_body2", set_body1: "set_body1" }) }); var nape_dynamics_Arbiter = function() { this.zpp_inner = null, zpp_$nape_dynamics_ZPP_$Arbiter.internal }; $hxClasses["nape.dynamics.Arbiter"] = nape_dynamics_Arbiter, nape_dynamics_Arbiter.__name__ = ["nape", "dynamics", "Arbiter"], nape_dynamics_Arbiter.prototype = { zpp_inner: null, isSensorArbiter: function() { return this.zpp_inner.type == zpp_$nape_dynamics_ZPP_$Arbiter.SENSOR }, get_collisionArbiter: function() { return this.zpp_inner.type == zpp_$nape_dynamics_ZPP_$Arbiter.COL ? this.zpp_inner.colarb.outer_zn : null }, get_body1: function() { return this.zpp_inner.ws1.id > this.zpp_inner.ws2.id ? this.zpp_inner.b2.outer : this.zpp_inner.b1.outer }, get_body2: function() { return this.zpp_inner.ws1.id > this.zpp_inner.ws2.id ? this.zpp_inner.b1.outer : this.zpp_inner.b2.outer }, get_state: function() { var e = this.zpp_inner.immState; if (5 == e) return null == zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT; var t = e; switch (e) { case 1: return null == zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT_ONCE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT_ONCE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT_ONCE; default: return 6 == t ? (null == zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE) : (null == zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE_ONCE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE_ONCE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE_ONCE) } }, toString: function() { var e; return e = this.zpp_inner.type == zpp_$nape_dynamics_ZPP_$Arbiter.COL ? "CollisionArbiter" : this.zpp_inner.type == zpp_$nape_dynamics_ZPP_$Arbiter.FLUID ? "FluidArbiter" : "SensorArbiter", this.zpp_inner.cleared ? e + "(object-pooled)" : e + "(" + (this.zpp_inner.ws1.id > this.zpp_inner.ws2.id ? this.zpp_inner.ws2.outer : this.zpp_inner.ws1.outer).toString() + "|" + (this.zpp_inner.ws1.id > this.zpp_inner.ws2.id ? this.zpp_inner.ws1.outer : this.zpp_inner.ws2.outer).toString() + ")" + (this.zpp_inner.type == zpp_$nape_dynamics_ZPP_$Arbiter.COL ? "[" + ["SD", "DD"][this.zpp_inner.colarb.stat ? 0 : 1] + "]" : "") + "<-" + this.get_state().toString() }, __class__: nape_dynamics_Arbiter, __properties__: { get_state: "get_state", get_body2: "get_body2", get_body1: "get_body1", get_collisionArbiter: "get_collisionArbiter" } }; var nape_dynamics_ArbiterIterator = function() { this.zpp_next = null, this.zpp_critical = !1, this.zpp_i = 0, this.zpp_inner = null }; $hxClasses["nape.dynamics.ArbiterIterator"] = nape_dynamics_ArbiterIterator, nape_dynamics_ArbiterIterator.__name__ = ["nape", "dynamics", "ArbiterIterator"], nape_dynamics_ArbiterIterator.get = function(e) { var t; if (null == nape_dynamics_ArbiterIterator.zpp_pool) { zpp_$nape_util_ZPP_$ArbiterList.internal = !0; var n = new nape_dynamics_ArbiterIterator; zpp_$nape_util_ZPP_$ArbiterList.internal = !1, t = n } else { var i = nape_dynamics_ArbiterIterator.zpp_pool; nape_dynamics_ArbiterIterator.zpp_pool = i.zpp_next, t = i } return t.zpp_i = 0, t.zpp_inner = e, t.zpp_critical = !1, t } , nape_dynamics_ArbiterIterator.prototype = { zpp_inner: null, zpp_i: null, zpp_critical: null, zpp_next: null, hasNext: function() { this.zpp_inner.zpp_inner.valmod(); var e = this.zpp_inner.zpp_gl(); return this.zpp_critical = !0, this.zpp_i < e || (this.zpp_next = nape_dynamics_ArbiterIterator.zpp_pool, nape_dynamics_ArbiterIterator.zpp_pool = this, this.zpp_inner = null, !1) }, next: function() { return this.zpp_critical = !1, this.zpp_inner.at(this.zpp_i++) }, __class__: nape_dynamics_ArbiterIterator }; var nape_dynamics_ArbiterList = function() { this.zpp_inner = null, this.zpp_inner = new zpp_$nape_util_ZPP_$ArbiterList, this.zpp_inner.outer = this }; $hxClasses["nape.dynamics.ArbiterList"] = nape_dynamics_ArbiterList, nape_dynamics_ArbiterList.__name__ = ["nape", "dynamics", "ArbiterList"], nape_dynamics_ArbiterList.prototype = { zpp_inner: null, zpp_gl: function() { if (this.zpp_inner.valmod(), this.zpp_inner.zip_length) { this.zpp_inner.zip_length = !1, this.zpp_inner.user_length = 0; for (var e = this.zpp_inner.inner.head; null != e; ) { e.elt.active && this.zpp_inner.user_length++, e = e.next } } return this.zpp_inner.user_length }, zpp_vm: function() { this.zpp_inner.valmod() }, at: function(e) { if (this.zpp_vm(), this.zpp_inner.reverse_flag && (e = this.zpp_gl() - 1 - e), e < this.zpp_inner.at_index || null == this.zpp_inner.at_ite) for (this.zpp_inner.at_index = 0, this.zpp_inner.at_ite = this.zpp_inner.inner.head; ; ) { if (this.zpp_inner.at_ite.elt.active) break; this.zpp_inner.at_ite = this.zpp_inner.at_ite.next } for (; this.zpp_inner.at_index != e; ) for (this.zpp_inner.at_index++, this.zpp_inner.at_ite = this.zpp_inner.at_ite.next; ; ) { if (this.zpp_inner.at_ite.elt.active) break; this.zpp_inner.at_ite = this.zpp_inner.at_ite.next } return this.zpp_inner.at_ite.elt.wrapper() }, iterator: function() { return this.zpp_vm(), nape_dynamics_ArbiterIterator.get(this) }, toString: function() { for (var e = "[", t = !0, n = this.iterator(); n.hasNext(); ) { var i; n.zpp_critical = !1, i = n.zpp_inner.at(n.zpp_i++), t || (e += ","), e += null == i ? "NULL" : i.toString(), t = !1 } return e + "]" }, __class__: nape_dynamics_ArbiterList }; var nape_dynamics_ArbiterType = function() {}; $hxClasses["nape.dynamics.ArbiterType"] = nape_dynamics_ArbiterType, nape_dynamics_ArbiterType.__name__ = ["nape", "dynamics", "ArbiterType"], nape_dynamics_ArbiterType.prototype = { toString: function() { return this == (null == zpp_$nape_util_ZPP_$Flags.ArbiterType_COLLISION && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.ArbiterType_COLLISION = new nape_dynamics_ArbiterType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.ArbiterType_COLLISION) ? "COLLISION" : this == (null == zpp_$nape_util_ZPP_$Flags.ArbiterType_SENSOR && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.ArbiterType_SENSOR = new nape_dynamics_ArbiterType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.ArbiterType_SENSOR) ? "SENSOR" : this == (null == zpp_$nape_util_ZPP_$Flags.ArbiterType_FLUID && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.ArbiterType_FLUID = new nape_dynamics_ArbiterType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.ArbiterType_FLUID) ? "FLUID" : "" }, __class__: nape_dynamics_ArbiterType }; var nape_dynamics_CollisionArbiter = function() { nape_dynamics_Arbiter.call(this) }; $hxClasses["nape.dynamics.CollisionArbiter"] = nape_dynamics_CollisionArbiter, nape_dynamics_CollisionArbiter.__name__ = ["nape", "dynamics", "CollisionArbiter"], nape_dynamics_CollisionArbiter.__super__ = nape_dynamics_Arbiter, nape_dynamics_CollisionArbiter.prototype = $extend(nape_dynamics_Arbiter.prototype, { totalImpulse: function(e, t) { null == t && (t = !1); var n = 0 , i = 0 , l = 0 , a = this.zpp_inner.colarb; if (!t || a.oc1.fresh) { var s = a.oc1.wrapper().totalImpulse(e); n += 1 * (s.zpp_inner.validate(), s.zpp_inner.x), i += 1 * (s.zpp_inner.validate(), s.zpp_inner.y), l += 1 * (s.zpp_inner.validate(), s.zpp_inner.z), s.dispose() } if (a.hc2 && (!t || a.oc2.fresh)) { var r = a.oc2.wrapper().totalImpulse(e); n += 1 * (r.zpp_inner.validate(), r.zpp_inner.x), i += 1 * (r.zpp_inner.validate(), r.zpp_inner.y), l += 1 * (r.zpp_inner.validate(), r.zpp_inner.z), r.dispose() } return nape_geom_Vec3.get(n, i, l) }, __class__: nape_dynamics_CollisionArbiter }); var nape_dynamics_Contact = function() { this.zpp_inner = null }; $hxClasses["nape.dynamics.Contact"] = nape_dynamics_Contact, nape_dynamics_Contact.__name__ = ["nape", "dynamics", "Contact"], nape_dynamics_Contact.prototype = { zpp_inner: null, totalImpulse: function(e) { var t = this.zpp_inner.arbiter.colarb , n = this.zpp_inner.inner , i = n.jnAcc , l = n.jtAcc , a = t.jrAcc; if (null == e) return nape_geom_Vec3.get(t.nx * i - t.ny * l, t.ny * i + t.nx * l, a); var s = t.nx * i - t.ny * l , r = t.ny * i + t.nx * l; return e == t.b1.outer ? nape_geom_Vec3.get(-s, -r, -(r * n.r1x - s * n.r1y) - a) : nape_geom_Vec3.get(s, r, r * n.r2x - s * n.r2y + a) }, toString: function() { return null == this.zpp_inner.arbiter || this.zpp_inner.arbiter.cleared ? "{object-pooled}" : "{Contact}" }, __class__: nape_dynamics_Contact }; var nape_dynamics_ContactIterator = function() { this.zpp_next = null, this.zpp_critical = !1, this.zpp_i = 0, this.zpp_inner = null }; $hxClasses["nape.dynamics.ContactIterator"] = nape_dynamics_ContactIterator, nape_dynamics_ContactIterator.__name__ = ["nape", "dynamics", "ContactIterator"], nape_dynamics_ContactIterator.get = function(e) { var t; if (null == nape_dynamics_ContactIterator.zpp_pool) { zpp_$nape_util_ZPP_$ContactList.internal = !0; var n = new nape_dynamics_ContactIterator; zpp_$nape_util_ZPP_$ContactList.internal = !1, t = n } else { var i = nape_dynamics_ContactIterator.zpp_pool; nape_dynamics_ContactIterator.zpp_pool = i.zpp_next, t = i } return t.zpp_i = 0, t.zpp_inner = e, t.zpp_critical = !1, t } , nape_dynamics_ContactIterator.prototype = { zpp_inner: null, zpp_i: null, zpp_critical: null, zpp_next: null, hasNext: function() { this.zpp_inner.zpp_inner.valmod(); var e = this.zpp_inner.get_length(); return this.zpp_critical = !0, this.zpp_i < e || (this.zpp_next = nape_dynamics_ContactIterator.zpp_pool, nape_dynamics_ContactIterator.zpp_pool = this, this.zpp_inner = null, !1) }, next: function() { return this.zpp_critical = !1, this.zpp_inner.at(this.zpp_i++) }, __class__: nape_dynamics_ContactIterator }; var nape_dynamics_ContactList = function() { this.zpp_inner = null }; $hxClasses["nape.dynamics.ContactList"] = nape_dynamics_ContactList, nape_dynamics_ContactList.__name__ = ["nape", "dynamics", "ContactList"], nape_dynamics_ContactList.prototype = { zpp_inner: null, get_length: function() { if (this.zpp_inner.valmod(), this.zpp_inner.zip_length) { this.zpp_inner.zip_length = !1, this.zpp_inner.user_length = 0; for (var e = this.zpp_inner.inner.next; null != e; ) { var t = e; t.active && t.arbiter.active && this.zpp_inner.user_length++, e = e.next } } return this.zpp_inner.user_length }, at: function(e) { if (this.zpp_inner.valmod(), this.zpp_inner.reverse_flag && (e = this.get_length() - 1 - e), e < this.zpp_inner.at_index || null == this.zpp_inner.at_ite) for (this.zpp_inner.at_index = 0, this.zpp_inner.at_ite = this.zpp_inner.inner.next; ; ) { var t = this.zpp_inner.at_ite; if (t.active && t.arbiter.active) break; this.zpp_inner.at_ite = this.zpp_inner.at_ite.next } for (; this.zpp_inner.at_index != e; ) for (this.zpp_inner.at_index++, this.zpp_inner.at_ite = this.zpp_inner.at_ite.next; ; ) { var n = this.zpp_inner.at_ite; if (n.active && n.arbiter.active) break; this.zpp_inner.at_ite = this.zpp_inner.at_ite.next } return this.zpp_inner.at_ite.wrapper() }, toString: function() { var e, t = "[", n = !0; for (this.zpp_inner.valmod(), e = nape_dynamics_ContactIterator.get(this); e.hasNext(); ) { var i; e.zpp_critical = !1, i = e.zpp_inner.at(e.zpp_i++), n || (t += ","), t += null == i ? "NULL" : i.toString(), n = !1 } return t + "]" }, __class__: nape_dynamics_ContactList, __properties__: { get_length: "get_length" } }; var nape_dynamics_FluidArbiter = function() { nape_dynamics_Arbiter.call(this) }; $hxClasses["nape.dynamics.FluidArbiter"] = nape_dynamics_FluidArbiter, nape_dynamics_FluidArbiter.__name__ = ["nape", "dynamics", "FluidArbiter"], nape_dynamics_FluidArbiter.__super__ = nape_dynamics_Arbiter, nape_dynamics_FluidArbiter.prototype = $extend(nape_dynamics_Arbiter.prototype, { __class__: nape_dynamics_FluidArbiter }); var nape_dynamics_InteractionFilter = function(e, t, n, i, l, a) { null == a && (a = -1), null == l && (l = 1), null == i && (i = -1), null == n && (n = 1), null == t && (t = -1), null == e && (e = 1), this.zpp_inner = null, null == zpp_$nape_dynamics_ZPP_$InteractionFilter.zpp_pool ? this.zpp_inner = new zpp_$nape_dynamics_ZPP_$InteractionFilter : (this.zpp_inner = zpp_$nape_dynamics_ZPP_$InteractionFilter.zpp_pool, zpp_$nape_dynamics_ZPP_$InteractionFilter.zpp_pool = this.zpp_inner.next, this.zpp_inner.next = null), this.zpp_inner.outer = this, this.zpp_inner.collisionGroup != e && (this.zpp_inner.collisionGroup = e, this.zpp_inner.invalidate()), this.zpp_inner.collisionGroup, this.zpp_inner.collisionMask != t && (this.zpp_inner.collisionMask = t, this.zpp_inner.invalidate()), this.zpp_inner.collisionMask, this.zpp_inner.sensorGroup != n && (this.zpp_inner.sensorGroup = n, this.zpp_inner.invalidate()), this.zpp_inner.sensorGroup, this.zpp_inner.sensorMask != i && (this.zpp_inner.sensorMask = i, this.zpp_inner.invalidate()), this.zpp_inner.sensorMask, this.zpp_inner.fluidGroup != l && (this.zpp_inner.fluidGroup = l, this.zpp_inner.invalidate()), this.zpp_inner.fluidGroup, this.zpp_inner.fluidMask != a && (this.zpp_inner.fluidMask = a, this.zpp_inner.invalidate()), this.zpp_inner.fluidMask }; $hxClasses["nape.dynamics.InteractionFilter"] = nape_dynamics_InteractionFilter, nape_dynamics_InteractionFilter.__name__ = ["nape", "dynamics", "InteractionFilter"], nape_dynamics_InteractionFilter.prototype = { zpp_inner: null, set_collisionGroup: function(e) { return this.zpp_inner.collisionGroup != e && (this.zpp_inner.collisionGroup = e, this.zpp_inner.invalidate()), this.zpp_inner.collisionGroup }, set_collisionMask: function(e) { return this.zpp_inner.collisionMask != e && (this.zpp_inner.collisionMask = e, this.zpp_inner.invalidate()), this.zpp_inner.collisionMask }, __class__: nape_dynamics_InteractionFilter, __properties__: { set_collisionMask: "set_collisionMask", set_collisionGroup: "set_collisionGroup" } }; var nape_dynamics_InteractionGroupIterator = function() { this.zpp_next = null, this.zpp_critical = !1, this.zpp_i = 0, this.zpp_inner = null }; $hxClasses["nape.dynamics.InteractionGroupIterator"] = nape_dynamics_InteractionGroupIterator, nape_dynamics_InteractionGroupIterator.__name__ = ["nape", "dynamics", "InteractionGroupIterator"], nape_dynamics_InteractionGroupIterator.get = function(e) { var t; if (null == nape_dynamics_InteractionGroupIterator.zpp_pool) { zpp_$nape_util_ZPP_$InteractionGroupList.internal = !0; var n = new nape_dynamics_InteractionGroupIterator; zpp_$nape_util_ZPP_$InteractionGroupList.internal = !1, t = n } else { var i = nape_dynamics_InteractionGroupIterator.zpp_pool; nape_dynamics_InteractionGroupIterator.zpp_pool = i.zpp_next, t = i } return t.zpp_i = 0, t.zpp_inner = e, t.zpp_critical = !1, t } , nape_dynamics_InteractionGroupIterator.prototype = { zpp_inner: null, zpp_i: null, zpp_critical: null, zpp_next: null, hasNext: function() { this.zpp_inner.zpp_inner.valmod(); var e = this.zpp_inner.get_length(); return this.zpp_critical = !0, this.zpp_i < e || (this.zpp_next = nape_dynamics_InteractionGroupIterator.zpp_pool, nape_dynamics_InteractionGroupIterator.zpp_pool = this, this.zpp_inner = null, !1) }, next: function() { return this.zpp_critical = !1, this.zpp_inner.at(this.zpp_i++) }, __class__: nape_dynamics_InteractionGroupIterator }; var nape_dynamics_InteractionGroupList = function() { this.zpp_inner = null }; $hxClasses["nape.dynamics.InteractionGroupList"] = nape_dynamics_InteractionGroupList, nape_dynamics_InteractionGroupList.__name__ = ["nape", "dynamics", "InteractionGroupList"], nape_dynamics_InteractionGroupList.prototype = { zpp_inner: null, get_length: function() { return this.zpp_inner.valmod(), this.zpp_inner.zip_length && (this.zpp_inner.zip_length = !1, this.zpp_inner.user_length = this.zpp_inner.inner.length), this.zpp_inner.user_length }, at: function(e) { if (this.zpp_inner.valmod(), this.zpp_inner.reverse_flag && (e = this.get_length() - 1 - e), e < this.zpp_inner.at_index || null == this.zpp_inner.at_ite) this.zpp_inner.at_index = e, this.zpp_inner.at_ite = this.zpp_inner.inner.iterator_at(e); else for (; this.zpp_inner.at_index != e; ) this.zpp_inner.at_index++, this.zpp_inner.at_ite = this.zpp_inner.at_ite.next; return this.zpp_inner.at_ite.elt.outer }, toString: function() { var e, t = "[", n = !0; for (this.zpp_inner.valmod(), e = nape_dynamics_InteractionGroupIterator.get(this); e.hasNext(); ) { var i; e.zpp_critical = !1, i = e.zpp_inner.at(e.zpp_i++), n || (t += ","), t += null == i ? "NULL" : i.toString(), n = !1 } return t + "]" }, __class__: nape_dynamics_InteractionGroupList, __properties__: { get_length: "get_length" } }; var nape_geom_AABB = function(e, t, n, i) { null == i && (i = 0), null == n && (n = 0), null == t && (t = 0), null == e && (e = 0), this.zpp_inner = null, this.zpp_inner = zpp_$nape_geom_ZPP_$AABB.get(e, t, e + n, t + i), this.zpp_inner.outer = this }; $hxClasses["nape.geom.AABB"] = nape_geom_AABB, nape_geom_AABB.__name__ = ["nape", "geom", "AABB"], nape_geom_AABB.prototype = { zpp_inner: null, set_width: function(e) { var t; return (t = this).zpp_inner.validate(), t.zpp_inner.width() != e && (this.zpp_inner.maxx = function(e) { return e.zpp_inner.validate(), e.zpp_inner.minx }(this) + e, this.zpp_inner.invalidate()), this.zpp_inner.validate(), this.zpp_inner.width() }, set_height: function(e) { var t; return (t = this).zpp_inner.validate(), t.zpp_inner.height() != e && (this.zpp_inner.maxy = function(e) { return e.zpp_inner.validate(), e.zpp_inner.miny }(this) + e, this.zpp_inner.invalidate()), this.zpp_inner.validate(), this.zpp_inner.height() }, toString: function() { return this.zpp_inner.validate(), this.zpp_inner.toString() }, __class__: nape_geom_AABB, __properties__: { set_height: "set_height", set_width: "set_width" } }; var nape_geom_ConvexResult = function() { this.zpp_inner = null }; $hxClasses["nape.geom.ConvexResult"] = nape_geom_ConvexResult, nape_geom_ConvexResult.__name__ = ["nape", "geom", "ConvexResult"], nape_geom_ConvexResult.prototype = { zpp_inner: null, toString: function() { return "{ shape: " + Std.string(this.zpp_inner.shape) + " toi: " + this.zpp_inner.toiDistance + " }" }, __class__: nape_geom_ConvexResult }; var nape_geom_ConvexResultIterator = function() { this.zpp_next = null, this.zpp_critical = !1, this.zpp_i = 0, this.zpp_inner = null }; $hxClasses["nape.geom.ConvexResultIterator"] = nape_geom_ConvexResultIterator, nape_geom_ConvexResultIterator.__name__ = ["nape", "geom", "ConvexResultIterator"], nape_geom_ConvexResultIterator.get = function(e) { var t; if (null == nape_geom_ConvexResultIterator.zpp_pool) { zpp_$nape_util_ZPP_$ConvexResultList.internal = !0; var n = new nape_geom_ConvexResultIterator; zpp_$nape_util_ZPP_$ConvexResultList.internal = !1, t = n } else { var i = nape_geom_ConvexResultIterator.zpp_pool; nape_geom_ConvexResultIterator.zpp_pool = i.zpp_next, t = i } return t.zpp_i = 0, t.zpp_inner = e, t.zpp_critical = !1, t } , nape_geom_ConvexResultIterator.prototype = { zpp_inner: null, zpp_i: null, zpp_critical: null, zpp_next: null, hasNext: function() { this.zpp_inner.zpp_inner.valmod(); var e = this.zpp_inner.get_length(); return this.zpp_critical = !0, this.zpp_i < e || (this.zpp_next = nape_geom_ConvexResultIterator.zpp_pool, nape_geom_ConvexResultIterator.zpp_pool = this, this.zpp_inner = null, !1) }, next: function() { return this.zpp_critical = !1, this.zpp_inner.at(this.zpp_i++) }, __class__: nape_geom_ConvexResultIterator }; var nape_geom_ConvexResultList = function() { this.zpp_inner = null }; $hxClasses["nape.geom.ConvexResultList"] = nape_geom_ConvexResultList, nape_geom_ConvexResultList.__name__ = ["nape", "geom", "ConvexResultList"], nape_geom_ConvexResultList.prototype = { zpp_inner: null, get_length: function() { return this.zpp_inner.valmod(), this.zpp_inner.zip_length && (this.zpp_inner.zip_length = !1, this.zpp_inner.user_length = this.zpp_inner.inner.length), this.zpp_inner.user_length }, at: function(e) { if (this.zpp_inner.valmod(), this.zpp_inner.reverse_flag && (e = this.get_length() - 1 - e), e < this.zpp_inner.at_index || null == this.zpp_inner.at_ite) this.zpp_inner.at_index = e, this.zpp_inner.at_ite = this.zpp_inner.inner.iterator_at(e); else for (; this.zpp_inner.at_index != e; ) this.zpp_inner.at_index++, this.zpp_inner.at_ite = this.zpp_inner.at_ite.next; return this.zpp_inner.at_ite.elt }, toString: function() { var e, t = "[", n = !0; for (this.zpp_inner.valmod(), e = nape_geom_ConvexResultIterator.get(this); e.hasNext(); ) { var i; e.zpp_critical = !1, i = e.zpp_inner.at(e.zpp_i++), n || (t += ","), t += null == i ? "NULL" : i.toString(), n = !1 } return t + "]" }, __class__: nape_geom_ConvexResultList, __properties__: { get_length: "get_length" } }; var nape_geom_Geom = function() {}; $hxClasses["nape.geom.Geom"] = nape_geom_Geom, nape_geom_Geom.__name__ = ["nape", "geom", "Geom"], nape_geom_Geom.distanceBody = function(e, t, n, i) { for (var l = e.zpp_inner.shapes.head; null != l; ) { var a = l.elt; zpp_$nape_geom_ZPP_$Geom.validateShape(a), l = l.next } for (var s = t.zpp_inner.shapes.head; null != s; ) { var r = s.elt; zpp_$nape_geom_ZPP_$Geom.validateShape(r), s = s.next } return zpp_$nape_geom_ZPP_$SweepDistance.distanceBody(e.zpp_inner, t.zpp_inner, n.zpp_inner, i.zpp_inner) } ; var nape_geom_GeomPoly = function(e) { if (this.zpp_inner = null, this.zpp_pool = null, this.zpp_inner = new zpp_$nape_geom_ZPP_$GeomPoly(this), null != e) { if (e instanceof Array && null == e.__enum__) for (var t = e, n = 0; n < t.length; ) { var i = t[n]; ++n; var l = i , a = zpp_$nape_geom_ZPP_$GeomVert.get((l.zpp_inner.validate(), l.zpp_inner.x), (l.zpp_inner.validate(), l.zpp_inner.y)); null == this.zpp_inner.vertices ? this.zpp_inner.vertices = a.prev = a.next = a : (a.prev = this.zpp_inner.vertices, a.next = this.zpp_inner.vertices.next, this.zpp_inner.vertices.next.prev = a, this.zpp_inner.vertices.next = a), this.zpp_inner.vertices = a } else if (js_Boot.__instanceof(e, nape_geom_Vec2List)) for (var s = e.iterator(); s.hasNext(); ) { var r; s.zpp_critical = !1, r = s.zpp_inner.at(s.zpp_i++); var _ = zpp_$nape_geom_ZPP_$GeomVert.get((r.zpp_inner.validate(), r.zpp_inner.x), (r.zpp_inner.validate(), r.zpp_inner.y)); null == this.zpp_inner.vertices ? this.zpp_inner.vertices = _.prev = _.next = _ : (_.prev = this.zpp_inner.vertices, _.next = this.zpp_inner.vertices.next, this.zpp_inner.vertices.next.prev = _, this.zpp_inner.vertices.next = _), this.zpp_inner.vertices = _ } else if (js_Boot.__instanceof(e, nape_geom_GeomPoly)) { var o = e.zpp_inner.vertices; if (null != o) { var p = o; do { var h = nape_geom_Vec2.get(p.x, p.y, null); p = p.next; var d = zpp_$nape_geom_ZPP_$GeomVert.get((h.zpp_inner.validate(), h.zpp_inner.x), (h.zpp_inner.validate(), h.zpp_inner.y)); null == this.zpp_inner.vertices ? this.zpp_inner.vertices = d.prev = d.next = d : (d.prev = this.zpp_inner.vertices, d.next = this.zpp_inner.vertices.next, this.zpp_inner.vertices.next.prev = d, this.zpp_inner.vertices.next = d), this.zpp_inner.vertices = d, h.dispose() } while (p != o) } } if (this.skipForward(1), e instanceof Array && null == e.__enum__) for (var u = e, c = 0; c < u.length; ) { var m = u[c]; !m.zpp_inner.weak || (m.dispose(), 0) ? c++ : u.splice(c, 1) } else if (js_Boot.__instanceof(e, nape_geom_Vec2List)) { var U = e; null != U.zpp_inner._validate && U.zpp_inner._validate(); for (var Q = U.zpp_inner.inner, N = null, F = Q.head; null != F; ) { var Z = F.elt; Z.outer.zpp_inner.weak ? (F = Q.erase(N), Z.outer.zpp_inner.weak && Z.outer.dispose()) : (N = F, F = F.next) } } } }; $hxClasses["nape.geom.GeomPoly"] = nape_geom_GeomPoly, nape_geom_GeomPoly.__name__ = ["nape", "geom", "GeomPoly"], nape_geom_GeomPoly.get = function(e) { var t; if (null == zpp_$nape_util_ZPP_$PubPool.poolGeomPoly ? t = new nape_geom_GeomPoly : (t = zpp_$nape_util_ZPP_$PubPool.poolGeomPoly, zpp_$nape_util_ZPP_$PubPool.poolGeomPoly = t.zpp_pool, t.zpp_pool = null), null != e) { if (e instanceof Array && null == e.__enum__) for (var n = e, i = 0; i < n.length; ) { var l = n[i]; ++i; var a = l , s = zpp_$nape_geom_ZPP_$GeomVert.get((a.zpp_inner.validate(), a.zpp_inner.x), (a.zpp_inner.validate(), a.zpp_inner.y)); null == t.zpp_inner.vertices ? t.zpp_inner.vertices = s.prev = s.next = s : (s.prev = t.zpp_inner.vertices, s.next = t.zpp_inner.vertices.next, t.zpp_inner.vertices.next.prev = s, t.zpp_inner.vertices.next = s), t.zpp_inner.vertices = s } else if (js_Boot.__instanceof(e, nape_geom_Vec2List)) for (var r = e.iterator(); r.hasNext(); ) { var _; r.zpp_critical = !1, _ = r.zpp_inner.at(r.zpp_i++); var o = zpp_$nape_geom_ZPP_$GeomVert.get((_.zpp_inner.validate(), _.zpp_inner.x), (_.zpp_inner.validate(), _.zpp_inner.y)); null == t.zpp_inner.vertices ? t.zpp_inner.vertices = o.prev = o.next = o : (o.prev = t.zpp_inner.vertices, o.next = t.zpp_inner.vertices.next, t.zpp_inner.vertices.next.prev = o, t.zpp_inner.vertices.next = o), t.zpp_inner.vertices = o } else if (js_Boot.__instanceof(e, nape_geom_GeomPoly)) { var p = e.zpp_inner.vertices; if (null != p) { var h = p; do { var d = nape_geom_Vec2.get(h.x, h.y, null); h = h.next; var u = zpp_$nape_geom_ZPP_$GeomVert.get((d.zpp_inner.validate(), d.zpp_inner.x), (d.zpp_inner.validate(), d.zpp_inner.y)); null == t.zpp_inner.vertices ? t.zpp_inner.vertices = u.prev = u.next = u : (u.prev = t.zpp_inner.vertices, u.next = t.zpp_inner.vertices.next, t.zpp_inner.vertices.next.prev = u, t.zpp_inner.vertices.next = u), t.zpp_inner.vertices = u, d.dispose() } while (h != p) } } if (t.skipForward(1), e instanceof Array && null == e.__enum__) for (var c = e, m = 0; m < c.length; ) { var U = c[m]; !U.zpp_inner.weak || (U.dispose(), 0) ? m++ : c.splice(m, 1) } else if (js_Boot.__instanceof(e, nape_geom_Vec2List)) { var Q = e; null != Q.zpp_inner._validate && Q.zpp_inner._validate(); for (var N = Q.zpp_inner.inner, F = null, Z = N.head; null != Z; ) { var f = Z.elt; f.outer.zpp_inner.weak ? (Z = N.erase(F), f.outer.zpp_inner.weak && f.outer.dispose()) : (F = Z, Z = Z.next) } } } return t } , nape_geom_GeomPoly.prototype = { zpp_pool: null, zpp_inner: null, skipForward: function(e) { if (null != this.zpp_inner.vertices) if (e > 0) for (; e-- > 0; ) this.zpp_inner.vertices = this.zpp_inner.vertices.next; else if (e < 0) for (; e++ < 0; ) this.zpp_inner.vertices = this.zpp_inner.vertices.prev; return this }, toString: function() { var e = "GeomPoly[" , t = this.zpp_inner.vertices , n = this.zpp_inner.vertices; if (null != t) { var i = t; do { var l = i; l != this.zpp_inner.vertices && (e += ","), e += "{" + l.x + "," + l.y + "}", i = i.next } while (i != n) } return e + "]" }, isConvex: function() { if (null == this.zpp_inner.vertices || null == this.zpp_inner.vertices.next || this.zpp_inner.vertices.prev == this.zpp_inner.vertices.next) return !0; var e = !1 , t = !1 , n = !0 , i = this.zpp_inner.vertices , l = this.zpp_inner.vertices; if (null != i) { var a = i; do { var s, r, _ = a, o = _.prev, p = _.next; s = p.x - _.x, r = p.y - _.y; var h; h = _.x - o.x; var d = (_.y - o.y) * s - h * r; if (d > 0 ? t = !0 : d < 0 && (e = !0), t && e) { n = !1; break } a = a.next } while (a != l) } return n }, convexDecomposition: function(e, t) { null == e && (e = !1); var n, i = zpp_$nape_geom_ZPP_$Monotone.decompose(this.zpp_inner.vertices, (null == zpp_$nape_geom_ZPP_$Monotone.sharedPPoly && (zpp_$nape_geom_ZPP_$Monotone.sharedPPoly = new zpp_$nape_geom_ZPP_$PartitionedPoly), zpp_$nape_geom_ZPP_$Monotone.sharedPPoly)).extract_partitions((null == zpp_$nape_geom_ZPP_$PartitionedPoly.sharedPPList && (zpp_$nape_geom_ZPP_$PartitionedPoly.sharedPPList = new zpp_$nape_util_ZNPList_$ZPP_$PartitionedPoly), zpp_$nape_geom_ZPP_$PartitionedPoly.sharedPPList)); for (n = null == t ? new nape_geom_GeomPolyList : t; null != i.head; ) { var l = i.pop_unsafe(); zpp_$nape_geom_ZPP_$Triangular.triangulate(l), e && zpp_$nape_geom_ZPP_$Triangular.optimise(l), zpp_$nape_geom_ZPP_$Convex.optimise(l); var a = l.extract((null == zpp_$nape_geom_ZPP_$PartitionedPoly.sharedGVList && (zpp_$nape_geom_ZPP_$PartitionedPoly.sharedGVList = new zpp_$nape_util_ZNPList_$ZPP_$GeomVert), zpp_$nape_geom_ZPP_$PartitionedPoly.sharedGVList)) , s = l; for (s.next = zpp_$nape_geom_ZPP_$PartitionedPoly.zpp_pool, zpp_$nape_geom_ZPP_$PartitionedPoly.zpp_pool = s; null != a.head; ) { var r = a.pop_unsafe() , _ = nape_geom_GeomPoly.get(); _.zpp_inner.vertices = r, n.zpp_inner.reverse_flag ? n.push(_) : n.unshift(_) } } return n }, transform: function(e) { var t = this.zpp_inner.vertices , n = this.zpp_inner.vertices; if (null != t) { var i = t; do { var l = i , a = e.zpp_inner.a * l.x + e.zpp_inner.b * l.y + e.zpp_inner.tx; l.y = e.zpp_inner.c * l.x + e.zpp_inner.d * l.y + e.zpp_inner.ty, l.x = a, i = i.next } while (i != n) } return this }, __class__: nape_geom_GeomPoly }; var nape_geom_GeomPolyIterator = function() { this.zpp_next = null, this.zpp_critical = !1, this.zpp_i = 0, this.zpp_inner = null }; $hxClasses["nape.geom.GeomPolyIterator"] = nape_geom_GeomPolyIterator, nape_geom_GeomPolyIterator.__name__ = ["nape", "geom", "GeomPolyIterator"], nape_geom_GeomPolyIterator.get = function(e) { var t; if (null == nape_geom_GeomPolyIterator.zpp_pool) { zpp_$nape_util_ZPP_$GeomPolyList.internal = !0; var n = new nape_geom_GeomPolyIterator; zpp_$nape_util_ZPP_$GeomPolyList.internal = !1, t = n } else { var i = nape_geom_GeomPolyIterator.zpp_pool; nape_geom_GeomPolyIterator.zpp_pool = i.zpp_next, t = i } return t.zpp_i = 0, t.zpp_inner = e, t.zpp_critical = !1, t } , nape_geom_GeomPolyIterator.prototype = { zpp_inner: null, zpp_i: null, zpp_critical: null, zpp_next: null, hasNext: function() { this.zpp_inner.zpp_inner.valmod(); var e = this.zpp_inner.get_length(); return this.zpp_critical = !0, this.zpp_i < e || (this.zpp_next = nape_geom_GeomPolyIterator.zpp_pool, nape_geom_GeomPolyIterator.zpp_pool = this, this.zpp_inner = null, !1) }, next: function() { return this.zpp_critical = !1, this.zpp_inner.at(this.zpp_i++) }, __class__: nape_geom_GeomPolyIterator }; var nape_geom_GeomPolyList = function() { this.zpp_inner = null, this.zpp_inner = new zpp_$nape_util_ZPP_$GeomPolyList, this.zpp_inner.outer = this }; $hxClasses["nape.geom.GeomPolyList"] = nape_geom_GeomPolyList, nape_geom_GeomPolyList.__name__ = ["nape", "geom", "GeomPolyList"], nape_geom_GeomPolyList.prototype = { zpp_inner: null, get_length: function() { return this.zpp_inner.valmod(), this.zpp_inner.zip_length && (this.zpp_inner.zip_length = !1, this.zpp_inner.user_length = this.zpp_inner.inner.length), this.zpp_inner.user_length }, at: function(e) { if (this.zpp_inner.valmod(), this.zpp_inner.reverse_flag && (e = this.get_length() - 1 - e), e < this.zpp_inner.at_index || null == this.zpp_inner.at_ite) this.zpp_inner.at_index = e, this.zpp_inner.at_ite = this.zpp_inner.inner.iterator_at(e); else for (; this.zpp_inner.at_index != e; ) this.zpp_inner.at_index++, this.zpp_inner.at_ite = this.zpp_inner.at_ite.next; return this.zpp_inner.at_ite.elt.outer }, push: function(e) { var t; return this.zpp_inner.modify_test(), this.zpp_inner.valmod(), (t = null == this.zpp_inner.adder || this.zpp_inner.adder(e)) && (this.zpp_inner.reverse_flag ? this.zpp_inner.inner.add(e.zpp_inner) : (null == this.zpp_inner.push_ite && (null == this.zpp_inner.inner.head ? this.zpp_inner.push_ite = null : this.zpp_inner.push_ite = this.zpp_inner.inner.iterator_at(this.get_length() - 1)), this.zpp_inner.push_ite = this.zpp_inner.inner.insert(this.zpp_inner.push_ite, e.zpp_inner)), this.zpp_inner.invalidate(), null != this.zpp_inner.post_adder && this.zpp_inner.post_adder(e)), t }, unshift: function(e) { var t; return this.zpp_inner.modify_test(), this.zpp_inner.valmod(), (t = null == this.zpp_inner.adder || this.zpp_inner.adder(e)) && (this.zpp_inner.reverse_flag ? (null == this.zpp_inner.push_ite && (null == this.zpp_inner.inner.head ? this.zpp_inner.push_ite = null : this.zpp_inner.push_ite = this.zpp_inner.inner.iterator_at(this.get_length() - 1)), this.zpp_inner.push_ite = this.zpp_inner.inner.insert(this.zpp_inner.push_ite, e.zpp_inner)) : this.zpp_inner.inner.add(e.zpp_inner), this.zpp_inner.invalidate(), null != this.zpp_inner.post_adder && this.zpp_inner.post_adder(e)), t }, toString: function() { var e, t = "[", n = !0; for (this.zpp_inner.valmod(), e = nape_geom_GeomPolyIterator.get(this); e.hasNext(); ) { var i; e.zpp_critical = !1, i = e.zpp_inner.at(e.zpp_i++), n || (t += ","), t += null == i ? "NULL" : i.toString(), n = !1 } return t + "]" }, __class__: nape_geom_GeomPolyList, __properties__: { get_length: "get_length" } }; var nape_geom_Mat23 = function(e, t, n, i, l, a) { null == a && (a = 0), null == l && (l = 0), null == i && (i = 1), null == n && (n = 0), null == t && (t = 0), null == e && (e = 1), this.zpp_inner = null, this.zpp_inner = zpp_$nape_geom_ZPP_$Mat23.get(), this.zpp_inner.outer = this, this.zpp_inner.a = e, this.zpp_inner.invalidate(), this.zpp_inner.a, this.zpp_inner.b = t, this.zpp_inner.invalidate(), this.zpp_inner.b, this.zpp_inner.tx = l, this.zpp_inner.invalidate(), this.zpp_inner.tx, this.zpp_inner.c = n, this.zpp_inner.invalidate(), this.zpp_inner.c, this.zpp_inner.d = i, this.zpp_inner.invalidate(), this.zpp_inner.d, this.zpp_inner.ty = a, this.zpp_inner.invalidate(), this.zpp_inner.ty }; $hxClasses["nape.geom.Mat23"] = nape_geom_Mat23, nape_geom_Mat23.__name__ = ["nape", "geom", "Mat23"], nape_geom_Mat23.prototype = { zpp_inner: null, set_a: function(e) { return this.zpp_inner.a = e, this.zpp_inner.invalidate(), this.zpp_inner.a }, set_b: function(e) { return this.zpp_inner.b = e, this.zpp_inner.invalidate(), this.zpp_inner.b }, set_c: function(e) { return this.zpp_inner.c = e, this.zpp_inner.invalidate(), this.zpp_inner.c }, set_d: function(e) { return this.zpp_inner.d = e, this.zpp_inner.invalidate(), this.zpp_inner.d }, set_tx: function(e) { return this.zpp_inner.tx = e, this.zpp_inner.invalidate(), this.zpp_inner.tx }, set_ty: function(e) { return this.zpp_inner.ty = e, this.zpp_inner.invalidate(), this.zpp_inner.ty }, singular: function() { var e = this.zpp_inner.a * this.zpp_inner.a + this.zpp_inner.b * this.zpp_inner.b + this.zpp_inner.c * this.zpp_inner.c + this.zpp_inner.d * this.zpp_inner.d , t = this.zpp_inner.a * this.zpp_inner.d - this.zpp_inner.b * this.zpp_inner.c; return t < 0 && (t = -t), e > nape_Config.illConditionedThreshold * t }, toString: function() { return "{ a: " + this.zpp_inner.a + " b: " + this.zpp_inner.b + " c: " + this.zpp_inner.c + " d: " + this.zpp_inner.d + " tx: " + this.zpp_inner.tx + " ty: " + this.zpp_inner.ty + " }" }, equiorthogonal: function() { if (this.singular()) return !1; var e = this.zpp_inner.a * this.zpp_inner.b + this.zpp_inner.c * this.zpp_inner.d; if (e * e < nape_Config.epsilon) { var t = this.zpp_inner.a * this.zpp_inner.a + this.zpp_inner.b * this.zpp_inner.b - this.zpp_inner.c * this.zpp_inner.c - this.zpp_inner.d * this.zpp_inner.d; return t * t < nape_Config.epsilon } return !1 }, __class__: nape_geom_Mat23, __properties__: { set_ty: "set_ty", set_tx: "set_tx", set_d: "set_d", set_c: "set_c", set_b: "set_b", set_a: "set_a" } }; var nape_geom_MatMN = function() { this.zpp_inner = null }; $hxClasses["nape.geom.MatMN"] = nape_geom_MatMN, nape_geom_MatMN.__name__ = ["nape", "geom", "MatMN"], nape_geom_MatMN.prototype = { zpp_inner: null, toString: function() { for (var e = "{ ", t = !0, n = 0, i = this.zpp_inner.m; n < i; ) { var l = n++; t || (e += "; "), t = !1; for (var a = 0, s = this.zpp_inner.n; a < s; ) { var r = a++; e += this.zpp_inner.x[l * this.zpp_inner.n + r] + " " } } return e += "}" }, __class__: nape_geom_MatMN }; var nape_geom_RayResult = function() { this.zpp_inner = null }; $hxClasses["nape.geom.RayResult"] = nape_geom_RayResult, nape_geom_RayResult.__name__ = ["nape", "geom", "RayResult"], nape_geom_RayResult.prototype = { zpp_inner: null, toString: function() { return "{ shape: " + Std.string(this.zpp_inner.shape) + " distance: " + this.zpp_inner.toiDistance + " ?inner: " + Std.string(this.zpp_inner.inner) + " }" }, __class__: nape_geom_RayResult }; var nape_geom_RayResultIterator = function() { this.zpp_next = null, this.zpp_critical = !1, this.zpp_i = 0, this.zpp_inner = null }; $hxClasses["nape.geom.RayResultIterator"] = nape_geom_RayResultIterator, nape_geom_RayResultIterator.__name__ = ["nape", "geom", "RayResultIterator"], nape_geom_RayResultIterator.get = function(e) { var t; if (null == nape_geom_RayResultIterator.zpp_pool) { zpp_$nape_util_ZPP_$RayResultList.internal = !0; var n = new nape_geom_RayResultIterator; zpp_$nape_util_ZPP_$RayResultList.internal = !1, t = n } else { var i = nape_geom_RayResultIterator.zpp_pool; nape_geom_RayResultIterator.zpp_pool = i.zpp_next, t = i } return t.zpp_i = 0, t.zpp_inner = e, t.zpp_critical = !1, t } , nape_geom_RayResultIterator.prototype = { zpp_inner: null, zpp_i: null, zpp_critical: null, zpp_next: null, hasNext: function() { this.zpp_inner.zpp_inner.valmod(); var e = this.zpp_inner.get_length(); return this.zpp_critical = !0, this.zpp_i < e || (this.zpp_next = nape_geom_RayResultIterator.zpp_pool, nape_geom_RayResultIterator.zpp_pool = this, this.zpp_inner = null, !1) }, next: function() { return this.zpp_critical = !1, this.zpp_inner.at(this.zpp_i++) }, __class__: nape_geom_RayResultIterator }; var nape_geom_RayResultList = function() { this.zpp_inner = null }; $hxClasses["nape.geom.RayResultList"] = nape_geom_RayResultList, nape_geom_RayResultList.__name__ = ["nape", "geom", "RayResultList"], nape_geom_RayResultList.prototype = { zpp_inner: null, get_length: function() { return this.zpp_inner.valmod(), this.zpp_inner.zip_length && (this.zpp_inner.zip_length = !1, this.zpp_inner.user_length = this.zpp_inner.inner.length), this.zpp_inner.user_length }, at: function(e) { if (this.zpp_inner.valmod(), this.zpp_inner.reverse_flag && (e = this.get_length() - 1 - e), e < this.zpp_inner.at_index || null == this.zpp_inner.at_ite) this.zpp_inner.at_index = e, this.zpp_inner.at_ite = this.zpp_inner.inner.iterator_at(e); else for (; this.zpp_inner.at_index != e; ) this.zpp_inner.at_index++, this.zpp_inner.at_ite = this.zpp_inner.at_ite.next; return this.zpp_inner.at_ite.elt }, toString: function() { var e, t = "[", n = !0; for (this.zpp_inner.valmod(), e = nape_geom_RayResultIterator.get(this); e.hasNext(); ) { var i; e.zpp_critical = !1, i = e.zpp_inner.at(e.zpp_i++), n || (t += ","), t += null == i ? "NULL" : i.toString(), n = !1 } return t + "]" }, __class__: nape_geom_RayResultList, __properties__: { get_length: "get_length" } }; var nape_geom_Vec2 = function(e, t) { null == t && (t = 0), null == e && (e = 0), this.zpp_pool = null, this.zpp_inner = null, this.zpp_inner = zpp_$nape_geom_ZPP_$Vec2.get(e, t, null), this.zpp_inner.outer = this }; $hxClasses["nape.geom.Vec2"] = nape_geom_Vec2, nape_geom_Vec2.__name__ = ["nape", "geom", "Vec2"], nape_geom_Vec2.weak = function(e, t) { return null == t && (t = 0), null == e && (e = 0), nape_geom_Vec2.get(e, t, !0) } , nape_geom_Vec2.get = function(e, t, n) { var i; return null == n && (n = !1), null == t && (t = 0), null == e && (e = 0), null == zpp_$nape_util_ZPP_$PubPool.poolVec2 ? i = new nape_geom_Vec2 : (i = zpp_$nape_util_ZPP_$PubPool.poolVec2, zpp_$nape_util_ZPP_$PubPool.poolVec2 = i.zpp_pool, i.zpp_pool = null), null == i.zpp_inner ? (i.zpp_inner = zpp_$nape_geom_ZPP_$Vec2.get(e, t, null), i.zpp_inner.outer = i) : (i.zpp_inner.validate(), (i.zpp_inner.x != e || (i.zpp_inner.validate(), i.zpp_inner.y != t)) && (i.zpp_inner.x = e, i.zpp_inner.y = t, i.zpp_inner.invalidate())), i.zpp_inner.weak = n, i } , nape_geom_Vec2.prototype = { zpp_inner: null, zpp_pool: null, dispose: function() { var e = this.zpp_inner; this.zpp_inner.outer = null, this.zpp_inner = null; this.zpp_pool = zpp_$nape_util_ZPP_$PubPool.poolVec2, zpp_$nape_util_ZPP_$PubPool.poolVec2 = this; var t = e; null != t.outer && (t.outer.zpp_inner = null, t.outer = null), t._isimmutable = null, t._validate = null, t._invalidate = null, t.next = zpp_$nape_geom_ZPP_$Vec2.zpp_pool, zpp_$nape_geom_ZPP_$Vec2.zpp_pool = t }, copy: function(e) { return null == e && (e = !1), nape_geom_Vec2.get(((t = this).zpp_inner.validate(), t.zpp_inner.x), function(e) { return e.zpp_inner.validate(), e.zpp_inner.y }(this), e); var t }, get_x: function() { return this.zpp_inner.validate(), this.zpp_inner.x }, set_x: function(e) { var t; return (t = this).zpp_inner.validate(), t.zpp_inner.x != e && (this.zpp_inner.x = e, this.zpp_inner.invalidate()), this.zpp_inner.validate(), this.zpp_inner.x }, get_y: function() { return this.zpp_inner.validate(), this.zpp_inner.y }, set_y: function(e) { var t; return (t = this).zpp_inner.validate(), t.zpp_inner.y != e && (this.zpp_inner.y = e, this.zpp_inner.invalidate()), this.zpp_inner.validate(), this.zpp_inner.y }, set: function(e) { var t = this.setxy((e.zpp_inner.validate(), e.zpp_inner.x), (e.zpp_inner.validate(), e.zpp_inner.y)); return e.zpp_inner.weak && e.dispose(), t }, setxy: function(e, t) { var n; return (n = this).zpp_inner.validate(), (n.zpp_inner.x != e || function(e) { return e.zpp_inner.validate(), e.zpp_inner.y }(this) != t) && (this.zpp_inner.x = e, this.zpp_inner.y = t, this.zpp_inner.invalidate()), this }, sub: function(e, t) { null == t && (t = !1); var n, i = nape_geom_Vec2.get(((n = this).zpp_inner.validate(), n.zpp_inner.x - (e.zpp_inner.validate(), e.zpp_inner.x)), function(e) { return e.zpp_inner.validate(), e.zpp_inner.y }(this) - (e.zpp_inner.validate(), e.zpp_inner.y), t); return e.zpp_inner.weak && e.dispose(), i }, mul: function(e, t) { return null == t && (t = !1), nape_geom_Vec2.get(((n = this).zpp_inner.validate(), n.zpp_inner.x * e), function(e) { return e.zpp_inner.validate(), e.zpp_inner.y }(this) * e, t); var n }, addeq: function(e) { var t; return this.setxy(((t = this).zpp_inner.validate(), t.zpp_inner.x + (e.zpp_inner.validate(), e.zpp_inner.x)), function(e) { return e.zpp_inner.validate(), e.zpp_inner.y }(this) + (e.zpp_inner.validate(), e.zpp_inner.y)), e.zpp_inner.weak && e.dispose(), this }, muleq: function(e) { return this.setxy(((t = this).zpp_inner.validate(), t.zpp_inner.x * e), function(e) { return e.zpp_inner.validate(), e.zpp_inner.y }(this) * e); var t }, toString: function() { return this.zpp_inner.validate(), this.zpp_inner.toString() }, __class__: nape_geom_Vec2, __properties__: { set_y: "set_y", get_y: "get_y", set_x: "set_x", get_x: "get_x" } }; var nape_geom_Vec2Iterator = function() { this.zpp_next = null, this.zpp_critical = !1, this.zpp_i = 0, this.zpp_inner = null }; $hxClasses["nape.geom.Vec2Iterator"] = nape_geom_Vec2Iterator, nape_geom_Vec2Iterator.__name__ = ["nape", "geom", "Vec2Iterator"], nape_geom_Vec2Iterator.get = function(e) { var t; if (null == nape_geom_Vec2Iterator.zpp_pool) { zpp_$nape_util_ZPP_$Vec2List.internal = !0; var n = new nape_geom_Vec2Iterator; zpp_$nape_util_ZPP_$Vec2List.internal = !1, t = n } else { var i = nape_geom_Vec2Iterator.zpp_pool; nape_geom_Vec2Iterator.zpp_pool = i.zpp_next, t = i } return t.zpp_i = 0, t.zpp_inner = e, t.zpp_critical = !1, t } , nape_geom_Vec2Iterator.prototype = { zpp_inner: null, zpp_i: null, zpp_critical: null, zpp_next: null, hasNext: function() { this.zpp_inner.zpp_inner.valmod(); var e = this.zpp_inner.zpp_gl(); return this.zpp_critical = !0, this.zpp_i < e || (this.zpp_next = nape_geom_Vec2Iterator.zpp_pool, nape_geom_Vec2Iterator.zpp_pool = this, this.zpp_inner = null, !1) }, next: function() { return this.zpp_critical = !1, this.zpp_inner.at(this.zpp_i++) }, __class__: nape_geom_Vec2Iterator }; var nape_geom_Vec2List = function() { this.zpp_inner = null, this.zpp_inner = new zpp_$nape_util_ZPP_$Vec2List, this.zpp_inner.outer = this }; $hxClasses["nape.geom.Vec2List"] = nape_geom_Vec2List, nape_geom_Vec2List.__name__ = ["nape", "geom", "Vec2List"], nape_geom_Vec2List.prototype = { zpp_inner: null, zpp_gl: function() { return this.zpp_inner.valmod(), this.zpp_inner.zip_length && (this.zpp_inner.zip_length = !1, this.zpp_inner.user_length = this.zpp_inner.inner.length), this.zpp_inner.user_length }, zpp_vm: function() { this.zpp_inner.valmod() }, at: function(e) { if (this.zpp_vm(), this.zpp_inner.reverse_flag && (e = this.zpp_gl() - 1 - e), e < this.zpp_inner.at_index || null == this.zpp_inner.at_ite) this.zpp_inner.at_index = e, this.zpp_inner.at_ite = this.zpp_inner.inner.iterator_at(e); else for (; this.zpp_inner.at_index != e; ) this.zpp_inner.at_index++, this.zpp_inner.at_ite = this.zpp_inner.at_ite.next; return this.zpp_inner.at_ite.elt.wrapper() }, push: function(e) { var t; return this.zpp_inner.modify_test(), this.zpp_vm(), (t = null == this.zpp_inner.adder || this.zpp_inner.adder(e)) && (this.zpp_inner.reverse_flag ? this.zpp_inner.inner.add(e.zpp_inner) : (null == this.zpp_inner.push_ite && (this.empty() ? this.zpp_inner.push_ite = null : this.zpp_inner.push_ite = this.zpp_inner.inner.iterator_at(this.zpp_gl() - 1)), this.zpp_inner.push_ite = this.zpp_inner.inner.insert(this.zpp_inner.push_ite, e.zpp_inner)), this.zpp_inner.invalidate(), null != this.zpp_inner.post_adder && this.zpp_inner.post_adder(e)), t }, empty: function() { return 0 == this.zpp_gl() }, iterator: function() { return this.zpp_vm(), nape_geom_Vec2Iterator.get(this) }, toString: function() { for (var e = "[", t = !0, n = this.iterator(); n.hasNext(); ) { var i; n.zpp_critical = !1, i = n.zpp_inner.at(n.zpp_i++), t || (e += ","), e += null == i ? "NULL" : i.toString(), t = !1 } return e + "]" }, __class__: nape_geom_Vec2List }; var nape_geom_Vec3 = function(e, t, n) { null == n && (n = 0), null == t && (t = 0), null == e && (e = 0), this.zpp_pool = null, this.zpp_inner = null, this.zpp_inner = new zpp_$nape_geom_ZPP_$Vec3, this.zpp_inner.outer = this, this.zpp_inner.x = e, this.zpp_inner.validate(), this.zpp_inner.x, this.zpp_inner.y = t, this.zpp_inner.validate(), this.zpp_inner.y, this.zpp_inner.z = n, this.zpp_inner.validate(), this.zpp_inner.z }; $hxClasses["nape.geom.Vec3"] = nape_geom_Vec3, nape_geom_Vec3.__name__ = ["nape", "geom", "Vec3"], nape_geom_Vec3.get = function(e, t, n) { var i; return null == n && (n = 0), null == t && (t = 0), null == e && (e = 0), null == zpp_$nape_util_ZPP_$PubPool.poolVec3 ? i = new nape_geom_Vec3 : (i = zpp_$nape_util_ZPP_$PubPool.poolVec3, zpp_$nape_util_ZPP_$PubPool.poolVec3 = i.zpp_pool, i.zpp_pool = null), i.setxyz(e, t, n), i.zpp_inner.immutable = !1, i.zpp_inner._validate = null, i } , nape_geom_Vec3.prototype = { zpp_inner: null, zpp_pool: null, dispose: function() { this.zpp_pool = zpp_$nape_util_ZPP_$PubPool.poolVec3, zpp_$nape_util_ZPP_$PubPool.poolVec3 = this }, setxyz: function(e, t, n) { return this.zpp_inner.x = e, this.zpp_inner.validate(), this.zpp_inner.x, this.zpp_inner.y = t, this.zpp_inner.validate(), this.zpp_inner.y, this.zpp_inner.z = n, this.zpp_inner.validate(), this.zpp_inner.z, this }, toString: function() { return "{ x: " + ((e = this).zpp_inner.validate(), e.zpp_inner.x) + " y: " + function(e) { return e.zpp_inner.validate(), e.zpp_inner.y }(this) + " z: " + function(e) { return e.zpp_inner.validate(), e.zpp_inner.z }(this) + " }"; var e }, __class__: nape_geom_Vec3 }; var nape_geom_Winding = function() {}; $hxClasses["nape.geom.Winding"] = nape_geom_Winding, nape_geom_Winding.__name__ = ["nape", "geom", "Winding"], nape_geom_Winding.prototype = { toString: function() { return this == (null == zpp_$nape_util_ZPP_$Flags.Winding_UNDEFINED && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.Winding_UNDEFINED = new nape_geom_Winding, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.Winding_UNDEFINED) ? "UNDEFINED" : this == (null == zpp_$nape_util_ZPP_$Flags.Winding_CLOCKWISE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.Winding_CLOCKWISE = new nape_geom_Winding, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.Winding_CLOCKWISE) ? "CLOCKWISE" : this == (null == zpp_$nape_util_ZPP_$Flags.Winding_ANTICLOCKWISE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.Winding_ANTICLOCKWISE = new nape_geom_Winding, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.Winding_ANTICLOCKWISE) ? "ANTICLOCKWISE" : "" }, __class__: nape_geom_Winding }; var nape_phys_Interactor = function() { this.zpp_inner_i = null }; $hxClasses["nape.phys.Interactor"] = nape_phys_Interactor, nape_phys_Interactor.__name__ = ["nape", "phys", "Interactor"], nape_phys_Interactor.prototype = { zpp_inner_i: null, get_userData: function() { return null == this.zpp_inner_i.userData && (this.zpp_inner_i.userData = {}), this.zpp_inner_i.userData }, get_castBody: function() { return null != this.zpp_inner_i.ibody ? this.zpp_inner_i.ibody.outer : null }, set_group: function(e) { return this.zpp_inner_i.immutable_midstep("Interactor::group"), this.zpp_inner_i.setGroup(null == e ? null : e.zpp_inner), null == this.zpp_inner_i.group ? null : this.zpp_inner_i.group.outer }, get_cbTypes: function() { return null == this.zpp_inner_i.wrap_cbTypes && this.zpp_inner_i.setupcbTypes(), this.zpp_inner_i.wrap_cbTypes }, toString: function() { return "" }, __class__: nape_phys_Interactor, __properties__: { get_cbTypes: "get_cbTypes", set_group: "set_group", get_castBody: "get_castBody", get_userData: "get_userData" } }; var nape_phys_Body = function(e, t) { this.zpp_inner = null, nape_phys_Interactor.call(this), this.zpp_inner = new zpp_$nape_phys_ZPP_$Body, this.zpp_inner.outer = this, this.zpp_inner.outer_i = this, this.zpp_inner_i = this.zpp_inner, null != t ? (t.zpp_inner.validate(), this.zpp_inner.posx = t.zpp_inner.x, t.zpp_inner.validate(), this.zpp_inner.posy = t.zpp_inner.y) : (this.zpp_inner.posx = 0, this.zpp_inner.posy = 0), this.set_type(null == e ? (null == zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC) : e), null != t && t.zpp_inner.weak && t.dispose(), this.zpp_inner_i.insert_cbtype(zpp_$nape_callbacks_ZPP_$CbType.ANY_BODY.zpp_inner) }; $hxClasses["nape.phys.Body"] = nape_phys_Body, nape_phys_Body.__name__ = ["nape", "phys", "Body"], nape_phys_Body.__super__ = nape_phys_Interactor, nape_phys_Body.prototype = $extend(nape_phys_Interactor.prototype, { zpp_inner: null, set_type: function(e) { var t; (this.zpp_inner.immutable_midstep("Body::type"), zpp_$nape_phys_ZPP_$Body.types[this.zpp_inner.type] != e) && (1 == (t = e == (null == zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC) ? 2 : e == (null == zpp_$nape_util_ZPP_$Flags.BodyType_KINEMATIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_KINEMATIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.BodyType_KINEMATIC) ? 3 : 1) && null != this.zpp_inner.space && (this.zpp_inner.velx = 0, this.zpp_inner.vely = 0, this.zpp_inner.angvel = 0), this.zpp_inner.invalidate_type(), null != this.zpp_inner.space ? this.zpp_inner.space.transmitType(this.zpp_inner, t) : this.zpp_inner.type = t); return zpp_$nape_phys_ZPP_$Body.types[this.zpp_inner.type] }, set_isBullet: function(e) { return this.zpp_inner.bulletEnabled = e, this.zpp_inner.bulletEnabled }, get_compound: function() { return null == this.zpp_inner.compound ? null : this.zpp_inner.compound.outer }, set_compound: function(e) { return (null == this.zpp_inner.compound ? null : this.zpp_inner.compound.outer) != e && (null != (null == this.zpp_inner.compound ? null : this.zpp_inner.compound.outer) && (null == this.zpp_inner.compound ? null : this.zpp_inner.compound.outer).zpp_inner.wrap_bodies.remove(this), null != e && e.zpp_inner.wrap_bodies.add(this)), null == this.zpp_inner.compound ? null : this.zpp_inner.compound.outer }, get_space: function() { return null == this.zpp_inner.space ? null : this.zpp_inner.space.outer }, set_space: function(e) { return this.zpp_inner.immutable_midstep("Body::space"), (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) != e && (null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && (this.zpp_inner.component.woken = !1), null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer).zpp_inner.wrap_bodies.remove(this), null != e && e.zpp_inner.wrap_bodies.add(this)), null == this.zpp_inner.space ? null : this.zpp_inner.space.outer }, get_arbiters: function() { return null == this.zpp_inner.wrap_arbiters && (this.zpp_inner.wrap_arbiters = zpp_$nape_util_ZPP_$ArbiterList.get(this.zpp_inner.arbiters, !0)), this.zpp_inner.wrap_arbiters }, get_constraints: function() { return null == this.zpp_inner.wrap_constraints && (this.zpp_inner.wrap_constraints = zpp_$nape_util_ZPP_$ConstraintList.get(this.zpp_inner.constraints, !0)), this.zpp_inner.wrap_constraints }, get_position: function() { return null == this.zpp_inner.wrap_pos && this.zpp_inner.setupPosition(), this.zpp_inner.wrap_pos }, get_velocity: function() { return null == this.zpp_inner.wrap_vel && this.zpp_inner.setupVelocity(), this.zpp_inner.wrap_vel }, set_rotation: function(e) { return this.zpp_inner.immutable_midstep("Body::rotation"), this.zpp_inner.rot != e && (this.zpp_inner.rot = e, this.zpp_inner.invalidate_rot(), this.zpp_inner.wake()), this.zpp_inner.rot }, set_angularVel: function(e) { return this.zpp_inner.angvel != e && (this.zpp_inner.angvel = e, this.zpp_inner.wake()), this.zpp_inner.angvel }, set_kinAngVel: function(e) { return this.zpp_inner.kinangvel != e && (this.zpp_inner.kinangvel = e, this.zpp_inner.wake()), this.zpp_inner.kinangvel }, set_allowMovement: function(e) { return this.zpp_inner.immutable_midstep("Body::" + (null == e ? "null" : "" + e)), !this.zpp_inner.nomove != e && (this.zpp_inner.nomove = !e, this.zpp_inner.invalidate_mass()), !this.zpp_inner.nomove }, set_allowRotation: function(e) { return this.zpp_inner.immutable_midstep("Body::" + (null == e ? "null" : "" + e)), !this.zpp_inner.norotate != e && (this.zpp_inner.norotate = !e, this.zpp_inner.invalidate_inertia()), !this.zpp_inner.norotate }, get_mass: function() { return this.zpp_inner.validate_mass(), this.zpp_inner.cmass }, set_gravMass: function(e) { return this.zpp_inner.immutable_midstep("Body::gravMass"), this.zpp_inner.gravMassMode = 1, this.zpp_inner.gravMass = e, this.zpp_inner.invalidate_gravMass(), this.zpp_inner.validate_gravMass(), this.zpp_inner.gravMass }, set_inertia: function(e) { return this.zpp_inner.immutable_midstep("Body::inertia"), this.zpp_inner.inertiaMode = 1, this.zpp_inner.cinertia = e, this.zpp_inner.invalidate_inertia(), this.zpp_inner.validate_inertia(), this.zpp_inner.cinertia }, localPointToWorld: function(e, t) { null == t && (t = !1), this.zpp_inner.validate_axis(); var n, i = 0; return n = this.zpp_inner.axisy * (e.zpp_inner.validate(), e.zpp_inner.x) - this.zpp_inner.axisx * (e.zpp_inner.validate(), e.zpp_inner.y), e.zpp_inner.validate(), i = e.zpp_inner.x * this.zpp_inner.axisx + (e.zpp_inner.validate(), e.zpp_inner.y * this.zpp_inner.axisy), e.zpp_inner.weak && e.dispose(), nape_geom_Vec2.get(n + this.zpp_inner.posx, i + this.zpp_inner.posy, t) }, worldPointToLocal: function(e, t) { null == t && (t = !1), this.zpp_inner.validate_axis(); var n, i, l = 0, a = 0; return e.zpp_inner.validate(), l = e.zpp_inner.x - this.zpp_inner.posx, e.zpp_inner.validate(), a = e.zpp_inner.y - this.zpp_inner.posy, n = l * this.zpp_inner.axisy + a * this.zpp_inner.axisx, i = a * this.zpp_inner.axisy - l * this.zpp_inner.axisx, e.zpp_inner.weak && e.dispose(), nape_geom_Vec2.get(n, i, t) }, applyImpulse: function(e, t, n) { if (null == n && (n = !1), n && this.zpp_inner.component.sleeping) return e.zpp_inner.weak && e.dispose(), null != t && t.zpp_inner.weak && t.dispose(), this; this.zpp_inner.validate_mass(); var i = this.zpp_inner.imass; if (this.zpp_inner.velx += (e.zpp_inner.validate(), e.zpp_inner.x * i), this.zpp_inner.vely += (e.zpp_inner.validate(), e.zpp_inner.y * i), null != t) { var l = 0 , a = 0; t.zpp_inner.validate(), l = t.zpp_inner.x - this.zpp_inner.posx, t.zpp_inner.validate(), a = t.zpp_inner.y - this.zpp_inner.posy, this.zpp_inner.validate_inertia(), this.zpp_inner.angvel += (e.zpp_inner.validate(), (e.zpp_inner.y * l - (e.zpp_inner.validate(), e.zpp_inner.x * a)) * this.zpp_inner.iinertia), t.zpp_inner.weak && t.dispose() } return n || 2 == this.zpp_inner.type && this.zpp_inner.wake(), e.zpp_inner.weak && e.dispose(), this }, applyAngularImpulse: function(e, t) { return null == t && (t = !1), t && this.zpp_inner.component.sleeping ? this : (this.zpp_inner.validate_inertia(), this.zpp_inner.angvel += e * this.zpp_inner.iinertia, t || 2 == this.zpp_inner.type && this.zpp_inner.wake(), this) }, transformShapes: function(e) { this.zpp_inner.immutable_midstep("Body::transformShapes()"); for (var t = this.zpp_inner.shapes.head; null != t; ) { t.elt.outer.transform(e), t = t.next } return this }, get_localCOM: function() { return null == this.zpp_inner.wrap_localCOM && (this.zpp_inner.wrap_localCOM = nape_geom_Vec2.get(this.zpp_inner.localCOMx, this.zpp_inner.localCOMy, null), this.zpp_inner.wrap_localCOM.zpp_inner._inuse = !0, this.zpp_inner.wrap_localCOM.zpp_inner._immutable = !0, this.zpp_inner.wrap_localCOM.zpp_inner._validate = $bind($_ = this.zpp_inner, $_.getlocalCOM)), this.zpp_inner.wrap_localCOM }, get_worldCOM: function() { return null == this.zpp_inner.wrap_worldCOM && (this.zpp_inner.wrap_worldCOM = nape_geom_Vec2.get(this.zpp_inner.worldCOMx, this.zpp_inner.worldCOMy, null), this.zpp_inner.wrap_worldCOM.zpp_inner._inuse = !0, this.zpp_inner.wrap_worldCOM.zpp_inner._immutable = !0, this.zpp_inner.wrap_worldCOM.zpp_inner._validate = $bind($_ = this.zpp_inner, $_.getworldCOM)), this.zpp_inner.wrap_worldCOM }, toString: function() { return (this.zpp_inner.world ? "(space::world" : "(" + (2 == this.zpp_inner.type ? "dynamic" : 1 == this.zpp_inner.type ? "static" : "kinematic")) + ")#" + this.zpp_inner_i.id }, __class__: nape_phys_Body, __properties__: $extend(nape_phys_Interactor.prototype.__properties__, { get_worldCOM: "get_worldCOM", get_localCOM: "get_localCOM", set_inertia: "set_inertia", set_gravMass: "set_gravMass", get_mass: "get_mass", set_allowRotation: "set_allowRotation", set_allowMovement: "set_allowMovement", set_kinAngVel: "set_kinAngVel", set_angularVel: "set_angularVel", set_rotation: "set_rotation", get_velocity: "get_velocity", get_position: "get_position", get_constraints: "get_constraints", get_arbiters: "get_arbiters", set_space: "set_space", get_space: "get_space", set_compound: "set_compound", get_compound: "get_compound", set_isBullet: "set_isBullet", set_type: "set_type" }) }); var nape_phys_BodyIterator = function() { this.zpp_next = null, this.zpp_critical = !1, this.zpp_i = 0, this.zpp_inner = null }; $hxClasses["nape.phys.BodyIterator"] = nape_phys_BodyIterator, nape_phys_BodyIterator.__name__ = ["nape", "phys", "BodyIterator"], nape_phys_BodyIterator.get = function(e) { var t; if (null == nape_phys_BodyIterator.zpp_pool) { zpp_$nape_util_ZPP_$BodyList.internal = !0; var n = new nape_phys_BodyIterator; zpp_$nape_util_ZPP_$BodyList.internal = !1, t = n } else { var i = nape_phys_BodyIterator.zpp_pool; nape_phys_BodyIterator.zpp_pool = i.zpp_next, t = i } return t.zpp_i = 0, t.zpp_inner = e, t.zpp_critical = !1, t } , nape_phys_BodyIterator.prototype = { zpp_inner: null, zpp_i: null, zpp_critical: null, zpp_next: null, hasNext: function() { this.zpp_inner.zpp_inner.valmod(); var e = this.zpp_inner.get_length(); return this.zpp_critical = !0, this.zpp_i < e || (this.zpp_next = nape_phys_BodyIterator.zpp_pool, nape_phys_BodyIterator.zpp_pool = this, this.zpp_inner = null, !1) }, next: function() { return this.zpp_critical = !1, this.zpp_inner.at(this.zpp_i++) }, __class__: nape_phys_BodyIterator }; var nape_phys_BodyList = function() { this.zpp_inner = null, this.zpp_inner = new zpp_$nape_util_ZPP_$BodyList, this.zpp_inner.outer = this }; $hxClasses["nape.phys.BodyList"] = nape_phys_BodyList, nape_phys_BodyList.__name__ = ["nape", "phys", "BodyList"], nape_phys_BodyList.prototype = { zpp_inner: null, get_length: function() { return this.zpp_inner.valmod(), this.zpp_inner.zip_length && (this.zpp_inner.zip_length = !1, this.zpp_inner.user_length = this.zpp_inner.inner.length), this.zpp_inner.user_length }, has: function(e) { return this.zpp_inner.valmod(), this.zpp_inner.inner.has(e.zpp_inner) }, at: function(e) { if (this.zpp_inner.valmod(), this.zpp_inner.reverse_flag && (e = this.get_length() - 1 - e), e < this.zpp_inner.at_index || null == this.zpp_inner.at_ite) this.zpp_inner.at_index = e, this.zpp_inner.at_ite = this.zpp_inner.inner.iterator_at(e); else for (; this.zpp_inner.at_index != e; ) this.zpp_inner.at_index++, this.zpp_inner.at_ite = this.zpp_inner.at_ite.next; return this.zpp_inner.at_ite.elt.outer }, push: function(e) { var t; return this.zpp_inner.modify_test(), this.zpp_inner.valmod(), (t = null == this.zpp_inner.adder || this.zpp_inner.adder(e)) && (this.zpp_inner.reverse_flag ? this.zpp_inner.inner.add(e.zpp_inner) : (null == this.zpp_inner.push_ite && (null == this.zpp_inner.inner.head ? this.zpp_inner.push_ite = null : this.zpp_inner.push_ite = this.zpp_inner.inner.iterator_at(this.get_length() - 1)), this.zpp_inner.push_ite = this.zpp_inner.inner.insert(this.zpp_inner.push_ite, e.zpp_inner)), this.zpp_inner.invalidate(), null != this.zpp_inner.post_adder && this.zpp_inner.post_adder(e)), t }, unshift: function(e) { var t; return this.zpp_inner.modify_test(), this.zpp_inner.valmod(), (t = null == this.zpp_inner.adder || this.zpp_inner.adder(e)) && (this.zpp_inner.reverse_flag ? (null == this.zpp_inner.push_ite && (null == this.zpp_inner.inner.head ? this.zpp_inner.push_ite = null : this.zpp_inner.push_ite = this.zpp_inner.inner.iterator_at(this.get_length() - 1)), this.zpp_inner.push_ite = this.zpp_inner.inner.insert(this.zpp_inner.push_ite, e.zpp_inner)) : this.zpp_inner.inner.add(e.zpp_inner), this.zpp_inner.invalidate(), null != this.zpp_inner.post_adder && this.zpp_inner.post_adder(e)), t }, pop: function() { this.zpp_inner.modify_test(), this.zpp_inner.valmod(); var e = null; if (this.zpp_inner.reverse_flag) { var t = (e = this.zpp_inner.inner.head.elt).outer; null != this.zpp_inner.subber && this.zpp_inner.subber(t), this.zpp_inner.dontremove || this.zpp_inner.inner.pop() } else { var n; null != this.zpp_inner.at_ite && null == this.zpp_inner.at_ite.next && (this.zpp_inner.at_ite = null); var i = (e = null == (n = 1 == this.get_length() ? null : this.zpp_inner.inner.iterator_at(this.get_length() - 2)) ? this.zpp_inner.inner.head.elt : n.next.elt).outer; null != this.zpp_inner.subber && this.zpp_inner.subber(i), this.zpp_inner.dontremove || this.zpp_inner.inner.erase(n) } return this.zpp_inner.invalidate(), e.outer }, shift: function() { this.zpp_inner.modify_test(), this.zpp_inner.valmod(); var e = null; if (this.zpp_inner.reverse_flag) { var t; null != this.zpp_inner.at_ite && null == this.zpp_inner.at_ite.next && (this.zpp_inner.at_ite = null); var n = (e = null == (t = 1 == this.get_length() ? null : this.zpp_inner.inner.iterator_at(this.get_length() - 2)) ? this.zpp_inner.inner.head.elt : t.next.elt).outer; null != this.zpp_inner.subber && this.zpp_inner.subber(n), this.zpp_inner.dontremove || this.zpp_inner.inner.erase(t) } else { var i = (e = this.zpp_inner.inner.head.elt).outer; null != this.zpp_inner.subber && this.zpp_inner.subber(i), this.zpp_inner.dontremove || this.zpp_inner.inner.pop() } return this.zpp_inner.invalidate(), e.outer }, add: function(e) { return this.zpp_inner.reverse_flag ? this.push(e) : this.unshift(e) }, remove: function(e) { var t; this.zpp_inner.modify_test(), this.zpp_inner.valmod(), t = !1; for (var n = this.zpp_inner.inner.head; null != n; ) { if (n.elt == e.zpp_inner) { t = !0; break } n = n.next } return t && (null != this.zpp_inner.subber && this.zpp_inner.subber(e), this.zpp_inner.dontremove || this.zpp_inner.inner.remove(e.zpp_inner), this.zpp_inner.invalidate()), t }, clear: function() { if (this.zpp_inner.reverse_flag) for (; null != this.zpp_inner.inner.head; ) this.pop(); else for (; null != this.zpp_inner.inner.head; ) this.shift() }, iterator: function() { return this.zpp_inner.valmod(), nape_phys_BodyIterator.get(this) }, toString: function() { var e, t = "[", n = !0; for (this.zpp_inner.valmod(), e = nape_phys_BodyIterator.get(this); e.hasNext(); ) { var i; e.zpp_critical = !1, i = e.zpp_inner.at(e.zpp_i++), n || (t += ","), t += null == i ? "NULL" : i.toString(), n = !1 } return t + "]" }, __class__: nape_phys_BodyList, __properties__: { get_length: "get_length" } }; var nape_phys_BodyType = function() {}; $hxClasses["nape.phys.BodyType"] = nape_phys_BodyType, nape_phys_BodyType.__name__ = ["nape", "phys", "BodyType"], nape_phys_BodyType.prototype = { toString: function() { return this == (null == zpp_$nape_util_ZPP_$Flags.BodyType_STATIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_STATIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.BodyType_STATIC) ? "STATIC" : this == (null == zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC) ? "DYNAMIC" : this == (null == zpp_$nape_util_ZPP_$Flags.BodyType_KINEMATIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_KINEMATIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.BodyType_KINEMATIC) ? "KINEMATIC" : "" }, __class__: nape_phys_BodyType }; var nape_phys_Compound = function() { this.zpp_inner = null, nape_phys_Interactor.call(this), this.zpp_inner = new zpp_$nape_phys_ZPP_$Compound, this.zpp_inner.outer = this, this.zpp_inner.outer_i = this, this.zpp_inner_i = this.zpp_inner, this.zpp_inner.insert_cbtype(zpp_$nape_callbacks_ZPP_$CbType.ANY_COMPOUND.zpp_inner) }; $hxClasses["nape.phys.Compound"] = nape_phys_Compound, nape_phys_Compound.__name__ = ["nape", "phys", "Compound"], nape_phys_Compound.__super__ = nape_phys_Interactor, nape_phys_Compound.prototype = $extend(nape_phys_Interactor.prototype, { zpp_inner: null, set_space: function(e) { return this.zpp_inner.immutable_midstep("Compound::space"), (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) != e && (null != (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer) && (null == this.zpp_inner.space ? null : this.zpp_inner.space.outer).zpp_inner.wrap_compounds.remove(this), null != e && e.zpp_inner.wrap_compounds.add(this)), null == this.zpp_inner.space ? null : this.zpp_inner.space.outer }, toString: function() { return "Compound" + this.zpp_inner_i.id }, visitBodies: function(e) { for (var t = this.zpp_inner.wrap_bodies.iterator(); t.hasNext(); ) { t.zpp_critical = !1, e(t.zpp_inner.at(t.zpp_i++)) } for (var n = this.zpp_inner.wrap_compounds.iterator(); n.hasNext(); ) { n.zpp_critical = !1, n.zpp_inner.at(n.zpp_i++).visitBodies(e) } }, translate: function(e) { var t = e.zpp_inner.weak; return e.zpp_inner.weak = !1, this.visitBodies(function(t) { (null == t.zpp_inner.wrap_pos && t.zpp_inner.setupPosition(), t.zpp_inner.wrap_pos).addeq(e) }), e.zpp_inner.weak = t, e.zpp_inner.weak && e.dispose(), this }, __class__: nape_phys_Compound, __properties__: $extend(nape_phys_Interactor.prototype.__properties__, { set_space: "set_space" }) }); var nape_phys_CompoundIterator = function() { this.zpp_next = null, this.zpp_critical = !1, this.zpp_i = 0, this.zpp_inner = null }; $hxClasses["nape.phys.CompoundIterator"] = nape_phys_CompoundIterator, nape_phys_CompoundIterator.__name__ = ["nape", "phys", "CompoundIterator"], nape_phys_CompoundIterator.get = function(e) { var t; if (null == nape_phys_CompoundIterator.zpp_pool) { zpp_$nape_util_ZPP_$CompoundList.internal = !0; var n = new nape_phys_CompoundIterator; zpp_$nape_util_ZPP_$CompoundList.internal = !1, t = n } else { var i = nape_phys_CompoundIterator.zpp_pool; nape_phys_CompoundIterator.zpp_pool = i.zpp_next, t = i } return t.zpp_i = 0, t.zpp_inner = e, t.zpp_critical = !1, t } , nape_phys_CompoundIterator.prototype = { zpp_inner: null, zpp_i: null, zpp_critical: null, zpp_next: null, hasNext: function() { this.zpp_inner.zpp_inner.valmod(); var e = this.zpp_inner.get_length(); return this.zpp_critical = !0, this.zpp_i < e || (this.zpp_next = nape_phys_CompoundIterator.zpp_pool, nape_phys_CompoundIterator.zpp_pool = this, this.zpp_inner = null, !1) }, next: function() { return this.zpp_critical = !1, this.zpp_inner.at(this.zpp_i++) }, __class__: nape_phys_CompoundIterator }; var nape_phys_CompoundList = function() { this.zpp_inner = null, this.zpp_inner = new zpp_$nape_util_ZPP_$CompoundList, this.zpp_inner.outer = this }; $hxClasses["nape.phys.CompoundList"] = nape_phys_CompoundList, nape_phys_CompoundList.__name__ = ["nape", "phys", "CompoundList"], nape_phys_CompoundList.prototype = { zpp_inner: null, get_length: function() { return this.zpp_inner.valmod(), this.zpp_inner.zip_length && (this.zpp_inner.zip_length = !1, this.zpp_inner.user_length = this.zpp_inner.inner.length), this.zpp_inner.user_length }, at: function(e) { if (this.zpp_inner.valmod(), this.zpp_inner.reverse_flag && (e = this.get_length() - 1 - e), e < this.zpp_inner.at_index || null == this.zpp_inner.at_ite) this.zpp_inner.at_index = e, this.zpp_inner.at_ite = this.zpp_inner.inner.iterator_at(e); else for (; this.zpp_inner.at_index != e; ) this.zpp_inner.at_index++, this.zpp_inner.at_ite = this.zpp_inner.at_ite.next; return this.zpp_inner.at_ite.elt.outer }, push: function(e) { var t; return this.zpp_inner.modify_test(), this.zpp_inner.valmod(), (t = null == this.zpp_inner.adder || this.zpp_inner.adder(e)) && (this.zpp_inner.reverse_flag ? this.zpp_inner.inner.add(e.zpp_inner) : (null == this.zpp_inner.push_ite && (null == this.zpp_inner.inner.head ? this.zpp_inner.push_ite = null : this.zpp_inner.push_ite = this.zpp_inner.inner.iterator_at(this.get_length() - 1)), this.zpp_inner.push_ite = this.zpp_inner.inner.insert(this.zpp_inner.push_ite, e.zpp_inner)), this.zpp_inner.invalidate(), null != this.zpp_inner.post_adder && this.zpp_inner.post_adder(e)), t }, unshift: function(e) { var t; return this.zpp_inner.modify_test(), this.zpp_inner.valmod(), (t = null == this.zpp_inner.adder || this.zpp_inner.adder(e)) && (this.zpp_inner.reverse_flag ? (null == this.zpp_inner.push_ite && (null == this.zpp_inner.inner.head ? this.zpp_inner.push_ite = null : this.zpp_inner.push_ite = this.zpp_inner.inner.iterator_at(this.get_length() - 1)), this.zpp_inner.push_ite = this.zpp_inner.inner.insert(this.zpp_inner.push_ite, e.zpp_inner)) : this.zpp_inner.inner.add(e.zpp_inner), this.zpp_inner.invalidate(), null != this.zpp_inner.post_adder && this.zpp_inner.post_adder(e)), t }, add: function(e) { return this.zpp_inner.reverse_flag ? this.push(e) : this.unshift(e) }, remove: function(e) { var t; this.zpp_inner.modify_test(), this.zpp_inner.valmod(), t = !1; for (var n = this.zpp_inner.inner.head; null != n; ) { if (n.elt == e.zpp_inner) { t = !0; break } n = n.next } return t && (null != this.zpp_inner.subber && this.zpp_inner.subber(e), this.zpp_inner.dontremove || this.zpp_inner.inner.remove(e.zpp_inner), this.zpp_inner.invalidate()), t }, iterator: function() { return this.zpp_inner.valmod(), nape_phys_CompoundIterator.get(this) }, toString: function() { var e, t = "[", n = !0; for (this.zpp_inner.valmod(), e = nape_phys_CompoundIterator.get(this); e.hasNext(); ) { var i; e.zpp_critical = !1, i = e.zpp_inner.at(e.zpp_i++), n || (t += ","), t += null == i ? "NULL" : i.toString(), n = !1 } return t + "]" }, __class__: nape_phys_CompoundList, __properties__: { get_length: "get_length" } }; var nape_phys_FluidProperties = function(e, t) { null == t && (t = 1), null == e && (e = 1), this.zpp_inner = null, null == zpp_$nape_phys_ZPP_$FluidProperties.zpp_pool ? this.zpp_inner = new zpp_$nape_phys_ZPP_$FluidProperties : (this.zpp_inner = zpp_$nape_phys_ZPP_$FluidProperties.zpp_pool, zpp_$nape_phys_ZPP_$FluidProperties.zpp_pool = this.zpp_inner.next, this.zpp_inner.next = null), this.zpp_inner.outer = this, e != 1e3 * this.zpp_inner.density && (this.zpp_inner.density = e / 1e3, this.zpp_inner.invalidate()), this.zpp_inner.density, t != this.zpp_inner.viscosity && (this.zpp_inner.viscosity = t / 1, this.zpp_inner.invalidate()), this.zpp_inner.viscosity }; $hxClasses["nape.phys.FluidProperties"] = nape_phys_FluidProperties, nape_phys_FluidProperties.__name__ = ["nape", "phys", "FluidProperties"], nape_phys_FluidProperties.prototype = { zpp_inner: null, toString: function() { return "{ density: " + 1e3 * this.zpp_inner.density + " viscosity: " + this.zpp_inner.viscosity + " gravity: " + Std.string(this.zpp_inner.wrap_gravity) + " }" }, __class__: nape_phys_FluidProperties }; var nape_phys_GravMassMode = function() {}; $hxClasses["nape.phys.GravMassMode"] = nape_phys_GravMassMode, nape_phys_GravMassMode.__name__ = ["nape", "phys", "GravMassMode"], nape_phys_GravMassMode.prototype = { toString: function() { return this == (null == zpp_$nape_util_ZPP_$Flags.GravMassMode_DEFAULT && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.GravMassMode_DEFAULT = new nape_phys_GravMassMode, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.GravMassMode_DEFAULT) ? "DEFAULT" : this == (null == zpp_$nape_util_ZPP_$Flags.GravMassMode_FIXED && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.GravMassMode_FIXED = new nape_phys_GravMassMode, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.GravMassMode_FIXED) ? "FIXED" : this == (null == zpp_$nape_util_ZPP_$Flags.GravMassMode_SCALED && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.GravMassMode_SCALED = new nape_phys_GravMassMode, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.GravMassMode_SCALED) ? "SCALED" : "" }, __class__: nape_phys_GravMassMode }; var nape_phys_InertiaMode = function() {}; $hxClasses["nape.phys.InertiaMode"] = nape_phys_InertiaMode, nape_phys_InertiaMode.__name__ = ["nape", "phys", "InertiaMode"], nape_phys_InertiaMode.prototype = { toString: function() { return this == (null == zpp_$nape_util_ZPP_$Flags.InertiaMode_DEFAULT && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.InertiaMode_DEFAULT = new nape_phys_InertiaMode, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.InertiaMode_DEFAULT) ? "DEFAULT" : this == (null == zpp_$nape_util_ZPP_$Flags.InertiaMode_FIXED && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.InertiaMode_FIXED = new nape_phys_InertiaMode, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.InertiaMode_FIXED) ? "FIXED" : "" }, __class__: nape_phys_InertiaMode }; var nape_phys_InteractorIterator = function() { this.zpp_next = null, this.zpp_critical = !1, this.zpp_i = 0, this.zpp_inner = null }; $hxClasses["nape.phys.InteractorIterator"] = nape_phys_InteractorIterator, nape_phys_InteractorIterator.__name__ = ["nape", "phys", "InteractorIterator"], nape_phys_InteractorIterator.get = function(e) { var t; if (null == nape_phys_InteractorIterator.zpp_pool) { zpp_$nape_util_ZPP_$InteractorList.internal = !0; var n = new nape_phys_InteractorIterator; zpp_$nape_util_ZPP_$InteractorList.internal = !1, t = n } else { var i = nape_phys_InteractorIterator.zpp_pool; nape_phys_InteractorIterator.zpp_pool = i.zpp_next, t = i } return t.zpp_i = 0, t.zpp_inner = e, t.zpp_critical = !1, t } , nape_phys_InteractorIterator.prototype = { zpp_inner: null, zpp_i: null, zpp_critical: null, zpp_next: null, hasNext: function() { this.zpp_inner.zpp_inner.valmod(); var e = this.zpp_inner.get_length(); return this.zpp_critical = !0, this.zpp_i < e || (this.zpp_next = nape_phys_InteractorIterator.zpp_pool, nape_phys_InteractorIterator.zpp_pool = this, this.zpp_inner = null, !1) }, next: function() { return this.zpp_critical = !1, this.zpp_inner.at(this.zpp_i++) }, __class__: nape_phys_InteractorIterator }; var nape_phys_InteractorList = function() { this.zpp_inner = null }; $hxClasses["nape.phys.InteractorList"] = nape_phys_InteractorList, nape_phys_InteractorList.__name__ = ["nape", "phys", "InteractorList"], nape_phys_InteractorList.prototype = { zpp_inner: null, get_length: function() { return this.zpp_inner.valmod(), this.zpp_inner.zip_length && (this.zpp_inner.zip_length = !1, this.zpp_inner.user_length = this.zpp_inner.inner.length), this.zpp_inner.user_length }, at: function(e) { if (this.zpp_inner.valmod(), this.zpp_inner.reverse_flag && (e = this.get_length() - 1 - e), e < this.zpp_inner.at_index || null == this.zpp_inner.at_ite) this.zpp_inner.at_index = e, this.zpp_inner.at_ite = this.zpp_inner.inner.iterator_at(e); else for (; this.zpp_inner.at_index != e; ) this.zpp_inner.at_index++, this.zpp_inner.at_ite = this.zpp_inner.at_ite.next; return this.zpp_inner.at_ite.elt.outer_i }, toString: function() { var e, t = "[", n = !0; for (this.zpp_inner.valmod(), e = nape_phys_InteractorIterator.get(this); e.hasNext(); ) { var i; e.zpp_critical = !1, i = e.zpp_inner.at(e.zpp_i++), n || (t += ","), t += null == i ? "NULL" : i.toString(), n = !1 } return t + "]" }, __class__: nape_phys_InteractorList, __properties__: { get_length: "get_length" } }; var nape_phys_MassMode = function() {}; $hxClasses["nape.phys.MassMode"] = nape_phys_MassMode, nape_phys_MassMode.__name__ = ["nape", "phys", "MassMode"], nape_phys_MassMode.prototype = { toString: function() { return this == (null == zpp_$nape_util_ZPP_$Flags.MassMode_DEFAULT && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.MassMode_DEFAULT = new nape_phys_MassMode, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.MassMode_DEFAULT) ? "DEFAULT" : this == (null == zpp_$nape_util_ZPP_$Flags.MassMode_FIXED && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.MassMode_FIXED = new nape_phys_MassMode, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.MassMode_FIXED) ? "FIXED" : "" }, __class__: nape_phys_MassMode }; var nape_phys_Material = function(e, t, n, i, l) { null == l && (l = .001), null == i && (i = 1), null == n && (n = 2), null == t && (t = 1), null == e && (e = 0), this.zpp_inner = null, null == zpp_$nape_phys_ZPP_$Material.zpp_pool ? this.zpp_inner = new zpp_$nape_phys_ZPP_$Material : (this.zpp_inner = zpp_$nape_phys_ZPP_$Material.zpp_pool, zpp_$nape_phys_ZPP_$Material.zpp_pool = this.zpp_inner.next, this.zpp_inner.next = null), this.zpp_inner.outer = this, e != this.zpp_inner.elasticity && (this.zpp_inner.elasticity = e / 1, this.zpp_inner.invalidate(zpp_$nape_phys_ZPP_$Material.WAKE | zpp_$nape_phys_ZPP_$Material.ARBITERS)), this.zpp_inner.elasticity, t != this.zpp_inner.dynamicFriction && (this.zpp_inner.dynamicFriction = t / 1, this.zpp_inner.invalidate(zpp_$nape_phys_ZPP_$Material.WAKE | zpp_$nape_phys_ZPP_$Material.ANGDRAG | zpp_$nape_phys_ZPP_$Material.ARBITERS)), this.zpp_inner.dynamicFriction, n != this.zpp_inner.staticFriction && (this.zpp_inner.staticFriction = n / 1, this.zpp_inner.invalidate(zpp_$nape_phys_ZPP_$Material.WAKE | zpp_$nape_phys_ZPP_$Material.ARBITERS)), this.zpp_inner.staticFriction, i != 1e3 * this.zpp_inner.density && (this.zpp_inner.density = i / 1e3, this.zpp_inner.invalidate(zpp_$nape_phys_ZPP_$Material.WAKE | zpp_$nape_phys_ZPP_$Material.PROPS)), this.zpp_inner.density, l != this.zpp_inner.rollingFriction && (this.zpp_inner.rollingFriction = l / 1, this.zpp_inner.invalidate(zpp_$nape_phys_ZPP_$Material.WAKE | zpp_$nape_phys_ZPP_$Material.ARBITERS)), this.zpp_inner.rollingFriction }; $hxClasses["nape.phys.Material"] = nape_phys_Material, nape_phys_Material.__name__ = ["nape", "phys", "Material"], nape_phys_Material.wood = function() { return new nape_phys_Material(.4,.2,.38,.7,.005) } , nape_phys_Material.steel = function() { return new nape_phys_Material(.2,.57,.74,7.8,.001) } , nape_phys_Material.ice = function() { return new nape_phys_Material(.3,.03,.1,.9,1e-4) } , nape_phys_Material.rubber = function() { return new nape_phys_Material(.8,1,1.4,1.5,.01) } , nape_phys_Material.glass = function() { return new nape_phys_Material(.4,.4,.94,2.6,.002) } , nape_phys_Material.sand = function() { return new nape_phys_Material(-1,.45,.6,1.6,16) } , nape_phys_Material.prototype = { zpp_inner: null, toString: function() { return "{ elasticity: " + this.zpp_inner.elasticity + " dynamicFriction: " + this.zpp_inner.dynamicFriction + " staticFriction: " + this.zpp_inner.staticFriction + " density: " + 1e3 * this.zpp_inner.density + " rollingFriction: " + this.zpp_inner.rollingFriction + " }" }, __class__: nape_phys_Material }; var nape_shape_Shape = function() { this.zpp_inner = null, nape_phys_Interactor.call(this) }; $hxClasses["nape.shape.Shape"] = nape_shape_Shape, nape_shape_Shape.__name__ = ["nape", "shape", "Shape"], nape_shape_Shape.__super__ = nape_phys_Interactor, nape_shape_Shape.prototype = $extend(nape_phys_Interactor.prototype, { zpp_inner: null, set_fluidProperties: function(e) { return this.zpp_inner.setFluid(e.zpp_inner), this.zpp_inner.immutable_midstep("Shape::fluidProperties"), null == this.zpp_inner.fluidProperties && this.zpp_inner.setFluid((new nape_phys_FluidProperties).zpp_inner), this.zpp_inner.fluidProperties.wrapper() }, set_fluidEnabled: function(e) { return this.zpp_inner.immutable_midstep("Shape::fluidEnabled"), this.zpp_inner.fluidEnabled = e, e && null == this.zpp_inner.fluidProperties && this.set_fluidProperties(new nape_phys_FluidProperties), this.zpp_inner.wake(), this.zpp_inner.fluidEnabled }, get_sensorEnabled: function() { return this.zpp_inner.sensorEnabled }, set_sensorEnabled: function(e) { return this.zpp_inner.immutable_midstep("Shape::sensorEnabled"), this.zpp_inner.sensorEnabled = e, this.zpp_inner.wake(), this.zpp_inner.sensorEnabled }, transform: function(e) { return this.zpp_inner.immutable_midstep("Shape::transform()"), 0 == this.zpp_inner.type ? e.equiorthogonal() && this.zpp_inner.circle.__transform(e) : this.zpp_inner.polygon.__transform(e), this }, toString: function() { return (0 == this.zpp_inner.type ? "Circle" : "Polygon") + "#" + this.zpp_inner_i.id }, __class__: nape_shape_Shape, __properties__: $extend(nape_phys_Interactor.prototype.__properties__, { set_sensorEnabled: "set_sensorEnabled", get_sensorEnabled: "get_sensorEnabled", set_fluidEnabled: "set_fluidEnabled", set_fluidProperties: "set_fluidProperties" }) }); var nape_shape_Circle = function(e, t, n, i) { this.zpp_inner_zn = null, nape_shape_Shape.call(this), this.zpp_inner_zn = new zpp_$nape_shape_ZPP_$Circle, this.zpp_inner_zn.outer = this, this.zpp_inner_zn.outer_zn = this, this.zpp_inner = this.zpp_inner_zn, this.zpp_inner_i = this.zpp_inner, this.zpp_inner_i.outer_i = this, this.zpp_inner.immutable_midstep("Circle::radius"), e != this.zpp_inner_zn.radius && (this.zpp_inner_zn.radius = e, this.zpp_inner_zn.invalidate_radius()), this.zpp_inner_zn.radius, null == t ? (this.zpp_inner.localCOMx = 0, this.zpp_inner.localCOMy = 0) : (t.zpp_inner.validate(), this.zpp_inner.localCOMx = t.zpp_inner.x, t.zpp_inner.validate(), this.zpp_inner.localCOMy = t.zpp_inner.y, t.zpp_inner.weak && t.dispose()), null == n ? null == zpp_$nape_phys_ZPP_$Material.zpp_pool ? this.zpp_inner.material = new zpp_$nape_phys_ZPP_$Material : (this.zpp_inner.material = zpp_$nape_phys_ZPP_$Material.zpp_pool, zpp_$nape_phys_ZPP_$Material.zpp_pool = this.zpp_inner.material.next, this.zpp_inner.material.next = null) : (this.zpp_inner.immutable_midstep("Shape::material"), this.zpp_inner.setMaterial(n.zpp_inner), this.zpp_inner.material.wrapper()), null == i ? null == zpp_$nape_dynamics_ZPP_$InteractionFilter.zpp_pool ? this.zpp_inner.filter = new zpp_$nape_dynamics_ZPP_$InteractionFilter : (this.zpp_inner.filter = zpp_$nape_dynamics_ZPP_$InteractionFilter.zpp_pool, zpp_$nape_dynamics_ZPP_$InteractionFilter.zpp_pool = this.zpp_inner.filter.next, this.zpp_inner.filter.next = null) : (this.zpp_inner.immutable_midstep("Shape::filter"), this.zpp_inner.setFilter(i.zpp_inner), this.zpp_inner.filter.wrapper()), this.zpp_inner_i.insert_cbtype(zpp_$nape_callbacks_ZPP_$CbType.ANY_SHAPE.zpp_inner) }; $hxClasses["nape.shape.Circle"] = nape_shape_Circle, nape_shape_Circle.__name__ = ["nape", "shape", "Circle"], nape_shape_Circle.__super__ = nape_shape_Shape, nape_shape_Circle.prototype = $extend(nape_shape_Shape.prototype, { zpp_inner_zn: null, __class__: nape_shape_Circle }); var nape_shape_Edge = function() { this.zpp_inner = null }; $hxClasses["nape.shape.Edge"] = nape_shape_Edge, nape_shape_Edge.__name__ = ["nape", "shape", "Edge"], nape_shape_Edge.prototype = { zpp_inner: null, toString: function() { return null == this.zpp_inner.polygon ? "Edge(object-pooled)" : null == this.zpp_inner.polygon.body ? (this.zpp_inner.polygon.validate_laxi(), "{ localNormal : { x: " + this.zpp_inner.lnormx + " y: " + this.zpp_inner.lnormy + " } }") : (this.zpp_inner.polygon.validate_gaxi(), "{ localNormal : { x: " + this.zpp_inner.lnormx + " y: " + this.zpp_inner.lnormy + " } worldNormal : { x: " + this.zpp_inner.gnormx + " y: " + this.zpp_inner.gnormy + " } }") }, __class__: nape_shape_Edge }; var nape_shape_EdgeIterator = function() { this.zpp_next = null, this.zpp_critical = !1, this.zpp_i = 0, this.zpp_inner = null }; $hxClasses["nape.shape.EdgeIterator"] = nape_shape_EdgeIterator, nape_shape_EdgeIterator.__name__ = ["nape", "shape", "EdgeIterator"], nape_shape_EdgeIterator.get = function(e) { var t; if (null == nape_shape_EdgeIterator.zpp_pool) { zpp_$nape_util_ZPP_$EdgeList.internal = !0; var n = new nape_shape_EdgeIterator; zpp_$nape_util_ZPP_$EdgeList.internal = !1, t = n } else { var i = nape_shape_EdgeIterator.zpp_pool; nape_shape_EdgeIterator.zpp_pool = i.zpp_next, t = i } return t.zpp_i = 0, t.zpp_inner = e, t.zpp_critical = !1, t } , nape_shape_EdgeIterator.prototype = { zpp_inner: null, zpp_i: null, zpp_critical: null, zpp_next: null, hasNext: function() { this.zpp_inner.zpp_inner.valmod(); var e = this.zpp_inner.get_length(); return this.zpp_critical = !0, this.zpp_i < e || (this.zpp_next = nape_shape_EdgeIterator.zpp_pool, nape_shape_EdgeIterator.zpp_pool = this, this.zpp_inner = null, !1) }, next: function() { return this.zpp_critical = !1, this.zpp_inner.at(this.zpp_i++) }, __class__: nape_shape_EdgeIterator }; var nape_shape_EdgeList = function() { this.zpp_inner = null }; $hxClasses["nape.shape.EdgeList"] = nape_shape_EdgeList, nape_shape_EdgeList.__name__ = ["nape", "shape", "EdgeList"], nape_shape_EdgeList.prototype = { zpp_inner: null, get_length: function() { return this.zpp_inner.valmod(), this.zpp_inner.zip_length && (this.zpp_inner.zip_length = !1, this.zpp_inner.user_length = this.zpp_inner.inner.length), this.zpp_inner.user_length }, at: function(e) { if (this.zpp_inner.valmod(), this.zpp_inner.reverse_flag && (e = e == this.get_length() - 1 ? e : this.get_length() - 2 - e), e < this.zpp_inner.at_index || null == this.zpp_inner.at_ite) this.zpp_inner.at_index = e, this.zpp_inner.at_ite = this.zpp_inner.inner.iterator_at(e); else for (; this.zpp_inner.at_index != e; ) this.zpp_inner.at_index++, this.zpp_inner.at_ite = this.zpp_inner.at_ite.next; return this.zpp_inner.at_ite.elt.wrapper() }, toString: function() { var e, t = "[", n = !0; for (this.zpp_inner.valmod(), e = nape_shape_EdgeIterator.get(this); e.hasNext(); ) { var i; e.zpp_critical = !1, i = e.zpp_inner.at(e.zpp_i++), n || (t += ","), t += null == i ? "NULL" : i.toString(), n = !1 } return t + "]" }, __class__: nape_shape_EdgeList, __properties__: { get_length: "get_length" } }; var nape_shape_Polygon = function(e, t, n) { if (this.zpp_inner_zn = null, nape_shape_Shape.call(this), this.zpp_inner_zn = new zpp_$nape_shape_ZPP_$Polygon, this.zpp_inner_zn.outer = this, this.zpp_inner_zn.outer_zn = this, this.zpp_inner = this.zpp_inner_zn, this.zpp_inner_i = this.zpp_inner, this.zpp_inner_i.outer_i = this, e instanceof Array && null == e.__enum__) for (var i = e, l = 0; l < i.length; ) { var a = i[l]; ++l; var s = a; (d = this, null == d.zpp_inner_zn.wrap_lverts && d.zpp_inner_zn.getlverts(), d.zpp_inner_zn.wrap_lverts).push(nape_geom_Vec2.get((s.zpp_inner.validate(), s.zpp_inner.x), (s.zpp_inner.validate(), s.zpp_inner.y), !1)) } else if (js_Boot.__instanceof(e, nape_geom_Vec2List)) for (var r = e.iterator(); r.hasNext(); ) { var _; r.zpp_critical = !1, _ = r.zpp_inner.at(r.zpp_i++), function(e) { return null == e.zpp_inner_zn.wrap_lverts && e.zpp_inner_zn.getlverts(), e.zpp_inner_zn.wrap_lverts }(this).push(nape_geom_Vec2.get((_.zpp_inner.validate(), _.zpp_inner.x), (_.zpp_inner.validate(), _.zpp_inner.y), !1)) } else if (js_Boot.__instanceof(e, nape_geom_GeomPoly)) { var o = e.zpp_inner.vertices; if (null != o) { var p = o; do { var h = nape_geom_Vec2.get(p.x, p.y, null); p = p.next, function(e) { return null == e.zpp_inner_zn.wrap_lverts && e.zpp_inner_zn.getlverts(), e.zpp_inner_zn.wrap_lverts }(this).push(nape_geom_Vec2.get((h.zpp_inner.validate(), h.zpp_inner.x), (h.zpp_inner.validate(), h.zpp_inner.y), !1)), h.dispose() } while (p != o) } } var d; if (e instanceof Array && null == e.__enum__) for (var u = e, c = 0; c < u.length; ) { var m = u[c]; !m.zpp_inner.weak || (m.dispose(), 0) ? c++ : u.splice(c, 1) } else if (js_Boot.__instanceof(e, nape_geom_Vec2List)) { var U = e; null != U.zpp_inner._validate && U.zpp_inner._validate(); for (var Q = U.zpp_inner.inner, N = null, F = Q.head; null != F; ) { var Z = F.elt; Z.outer.zpp_inner.weak ? (F = Q.erase(N), Z.outer.zpp_inner.weak && Z.outer.dispose()) : (N = F, F = F.next) } } null == t ? null == zpp_$nape_phys_ZPP_$Material.zpp_pool ? this.zpp_inner.material = new zpp_$nape_phys_ZPP_$Material : (this.zpp_inner.material = zpp_$nape_phys_ZPP_$Material.zpp_pool, zpp_$nape_phys_ZPP_$Material.zpp_pool = this.zpp_inner.material.next, this.zpp_inner.material.next = null) : (this.zpp_inner.immutable_midstep("Shape::material"), this.zpp_inner.setMaterial(t.zpp_inner), this.zpp_inner.material.wrapper()), null == n ? null == zpp_$nape_dynamics_ZPP_$InteractionFilter.zpp_pool ? this.zpp_inner.filter = new zpp_$nape_dynamics_ZPP_$InteractionFilter : (this.zpp_inner.filter = zpp_$nape_dynamics_ZPP_$InteractionFilter.zpp_pool, zpp_$nape_dynamics_ZPP_$InteractionFilter.zpp_pool = this.zpp_inner.filter.next, this.zpp_inner.filter.next = null) : (this.zpp_inner.immutable_midstep("Shape::filter"), this.zpp_inner.setFilter(n.zpp_inner), this.zpp_inner.filter.wrapper()), this.zpp_inner_i.insert_cbtype(zpp_$nape_callbacks_ZPP_$CbType.ANY_SHAPE.zpp_inner) }; $hxClasses["nape.shape.Polygon"] = nape_shape_Polygon, nape_shape_Polygon.__name__ = ["nape", "shape", "Polygon"], nape_shape_Polygon.rect = function(e, t, n, i, l) { return null == l && (l = !1), [nape_geom_Vec2.get(e, t, l), nape_geom_Vec2.get(e + n, t, l), nape_geom_Vec2.get(e + n, t + i, l), nape_geom_Vec2.get(e, t + i, l)] } , nape_shape_Polygon.__super__ = nape_shape_Shape, nape_shape_Polygon.prototype = $extend(nape_shape_Shape.prototype, { zpp_inner_zn: null, __class__: nape_shape_Polygon }); var nape_shape_ShapeIterator = function() { this.zpp_next = null, this.zpp_critical = !1, this.zpp_i = 0, this.zpp_inner = null }; $hxClasses["nape.shape.ShapeIterator"] = nape_shape_ShapeIterator, nape_shape_ShapeIterator.__name__ = ["nape", "shape", "ShapeIterator"], nape_shape_ShapeIterator.get = function(e) { var t; if (null == nape_shape_ShapeIterator.zpp_pool) { zpp_$nape_util_ZPP_$ShapeList.internal = !0; var n = new nape_shape_ShapeIterator; zpp_$nape_util_ZPP_$ShapeList.internal = !1, t = n } else { var i = nape_shape_ShapeIterator.zpp_pool; nape_shape_ShapeIterator.zpp_pool = i.zpp_next, t = i } return t.zpp_i = 0, t.zpp_inner = e, t.zpp_critical = !1, t } , nape_shape_ShapeIterator.prototype = { zpp_inner: null, zpp_i: null, zpp_critical: null, zpp_next: null, hasNext: function() { this.zpp_inner.zpp_inner.valmod(); var e = this.zpp_inner.get_length(); return this.zpp_critical = !0, this.zpp_i < e || (this.zpp_next = nape_shape_ShapeIterator.zpp_pool, nape_shape_ShapeIterator.zpp_pool = this, this.zpp_inner = null, !1) }, next: function() { return this.zpp_critical = !1, this.zpp_inner.at(this.zpp_i++) }, __class__: nape_shape_ShapeIterator }; var nape_shape_ShapeList = function() { this.zpp_inner = null, this.zpp_inner = new zpp_$nape_util_ZPP_$ShapeList, this.zpp_inner.outer = this }; $hxClasses["nape.shape.ShapeList"] = nape_shape_ShapeList, nape_shape_ShapeList.__name__ = ["nape", "shape", "ShapeList"], nape_shape_ShapeList.prototype = { zpp_inner: null, get_length: function() { return this.zpp_inner.valmod(), this.zpp_inner.zip_length && (this.zpp_inner.zip_length = !1, this.zpp_inner.user_length = this.zpp_inner.inner.length), this.zpp_inner.user_length }, at: function(e) { if (this.zpp_inner.valmod(), this.zpp_inner.reverse_flag && (e = this.get_length() - 1 - e), e < this.zpp_inner.at_index || null == this.zpp_inner.at_ite) this.zpp_inner.at_index = e, this.zpp_inner.at_ite = this.zpp_inner.inner.iterator_at(e); else for (; this.zpp_inner.at_index != e; ) this.zpp_inner.at_index++, this.zpp_inner.at_ite = this.zpp_inner.at_ite.next; return this.zpp_inner.at_ite.elt.outer }, push: function(e) { var t; return this.zpp_inner.modify_test(), this.zpp_inner.valmod(), (t = null == this.zpp_inner.adder || this.zpp_inner.adder(e)) && (this.zpp_inner.reverse_flag ? this.zpp_inner.inner.add(e.zpp_inner) : (null == this.zpp_inner.push_ite && (null == this.zpp_inner.inner.head ? this.zpp_inner.push_ite = null : this.zpp_inner.push_ite = this.zpp_inner.inner.iterator_at(this.get_length() - 1)), this.zpp_inner.push_ite = this.zpp_inner.inner.insert(this.zpp_inner.push_ite, e.zpp_inner)), this.zpp_inner.invalidate(), null != this.zpp_inner.post_adder && this.zpp_inner.post_adder(e)), t }, unshift: function(e) { var t; return this.zpp_inner.modify_test(), this.zpp_inner.valmod(), (t = null == this.zpp_inner.adder || this.zpp_inner.adder(e)) && (this.zpp_inner.reverse_flag ? (null == this.zpp_inner.push_ite && (null == this.zpp_inner.inner.head ? this.zpp_inner.push_ite = null : this.zpp_inner.push_ite = this.zpp_inner.inner.iterator_at(this.get_length() - 1)), this.zpp_inner.push_ite = this.zpp_inner.inner.insert(this.zpp_inner.push_ite, e.zpp_inner)) : this.zpp_inner.inner.add(e.zpp_inner), this.zpp_inner.invalidate(), null != this.zpp_inner.post_adder && this.zpp_inner.post_adder(e)), t }, add: function(e) { return this.zpp_inner.reverse_flag ? this.push(e) : this.unshift(e) }, remove: function(e) { var t; this.zpp_inner.modify_test(), this.zpp_inner.valmod(), t = !1; for (var n = this.zpp_inner.inner.head; null != n; ) { if (n.elt == e.zpp_inner) { t = !0; break } n = n.next } return t && (null != this.zpp_inner.subber && this.zpp_inner.subber(e), this.zpp_inner.dontremove || this.zpp_inner.inner.remove(e.zpp_inner), this.zpp_inner.invalidate()), t }, iterator: function() { return this.zpp_inner.valmod(), nape_shape_ShapeIterator.get(this) }, toString: function() { var e, t = "[", n = !0; for (this.zpp_inner.valmod(), e = nape_shape_ShapeIterator.get(this); e.hasNext(); ) { var i; e.zpp_critical = !1, i = e.zpp_inner.at(e.zpp_i++), n || (t += ","), t += null == i ? "NULL" : i.toString(), n = !1 } return t + "]" }, __class__: nape_shape_ShapeList, __properties__: { get_length: "get_length" } }; var nape_shape_ShapeType = function() {}; $hxClasses["nape.shape.ShapeType"] = nape_shape_ShapeType, nape_shape_ShapeType.__name__ = ["nape", "shape", "ShapeType"], nape_shape_ShapeType.prototype = { toString: function() { return this == (null == zpp_$nape_util_ZPP_$Flags.ShapeType_CIRCLE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.ShapeType_CIRCLE = new nape_shape_ShapeType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.ShapeType_CIRCLE) ? "CIRCLE" : this == (null == zpp_$nape_util_ZPP_$Flags.ShapeType_POLYGON && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.ShapeType_POLYGON = new nape_shape_ShapeType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.ShapeType_POLYGON) ? "POLYGON" : "" }, __class__: nape_shape_ShapeType }; var nape_shape_ValidationResult = function() {}; $hxClasses["nape.shape.ValidationResult"] = nape_shape_ValidationResult, nape_shape_ValidationResult.__name__ = ["nape", "shape", "ValidationResult"], nape_shape_ValidationResult.prototype = { toString: function() { return this == (null == zpp_$nape_util_ZPP_$Flags.ValidationResult_VALID && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.ValidationResult_VALID = new nape_shape_ValidationResult, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.ValidationResult_VALID) ? "VALID" : this == (null == zpp_$nape_util_ZPP_$Flags.ValidationResult_DEGENERATE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.ValidationResult_DEGENERATE = new nape_shape_ValidationResult, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.ValidationResult_DEGENERATE) ? "DEGENERATE" : this == (null == zpp_$nape_util_ZPP_$Flags.ValidationResult_CONCAVE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.ValidationResult_CONCAVE = new nape_shape_ValidationResult, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.ValidationResult_CONCAVE) ? "CONCAVE" : this == (null == zpp_$nape_util_ZPP_$Flags.ValidationResult_SELF_INTERSECTING && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.ValidationResult_SELF_INTERSECTING = new nape_shape_ValidationResult, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.ValidationResult_SELF_INTERSECTING) ? "SELF_INTERSECTING" : "" }, __class__: nape_shape_ValidationResult }; var nape_space_Broadphase = function() {}; $hxClasses["nape.space.Broadphase"] = nape_space_Broadphase, nape_space_Broadphase.__name__ = ["nape", "space", "Broadphase"], nape_space_Broadphase.prototype = { toString: function() { return this == (null == zpp_$nape_util_ZPP_$Flags.Broadphase_DYNAMIC_AABB_TREE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.Broadphase_DYNAMIC_AABB_TREE = new nape_space_Broadphase, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.Broadphase_DYNAMIC_AABB_TREE) ? "DYNAMIC_AABB_TREE" : this == (null == zpp_$nape_util_ZPP_$Flags.Broadphase_SWEEP_AND_PRUNE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.Broadphase_SWEEP_AND_PRUNE = new nape_space_Broadphase, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.Broadphase_SWEEP_AND_PRUNE) ? "SWEEP_AND_PRUNE" : "" }, __class__: nape_space_Broadphase }; var nape_space_Space = function(e, t) { this.zpp_inner = null, this.zpp_inner = new zpp_$nape_space_ZPP_$Space(null == e ? null : e.zpp_inner,t), this.zpp_inner.outer = this, null != e && e.zpp_inner.weak && e.dispose() }; $hxClasses["nape.space.Space"] = nape_space_Space, nape_space_Space.__name__ = ["nape", "space", "Space"], nape_space_Space.prototype = { zpp_inner: null, get_gravity: function() { return null == this.zpp_inner.wrap_gravity && this.zpp_inner.getgravity(), this.zpp_inner.wrap_gravity }, set_worldAngularDrag: function(e) { var t = e; return this.zpp_inner.global_ang_drag = t, this.zpp_inner.global_ang_drag }, set_worldLinearDrag: function(e) { var t = e; return this.zpp_inner.global_lin_drag = t, this.zpp_inner.global_lin_drag }, step: function(e, t, n) { null == n && (n = 10), null == t && (t = 10), this.zpp_inner.step(e, t, n) }, bodiesInAABB: function(e, t, n, i, l) { return null == n && (n = !0), null == t && (t = !1), this.zpp_inner.bodiesInAABB(e, n, t, null == i ? null : i.zpp_inner, l) }, bodiesInCircle: function(e, t, n, i, l) { null == n && (n = !1); var a = this.zpp_inner.bodiesInCircle(e, t, n, null == i ? null : i.zpp_inner, l); return e.zpp_inner.weak && e.dispose(), a }, __class__: nape_space_Space, __properties__: { set_worldLinearDrag: "set_worldLinearDrag", set_worldAngularDrag: "set_worldAngularDrag", get_gravity: "get_gravity" } }; var openfl_IAssetCache = function() {}; $hxClasses["openfl.IAssetCache"] = openfl_IAssetCache, openfl_IAssetCache.__name__ = ["openfl", "IAssetCache"], openfl_IAssetCache.prototype = { get_enabled: null, getBitmapData: null, hasBitmapData: null, removeBitmapData: null, setBitmapData: null, __class__: openfl_IAssetCache, __properties__: { get_enabled: "get_enabled" } }; var openfl_AssetCache = function() { this.__enabled = !0, this.bitmapData = new haxe_ds_StringMap, this.font = new haxe_ds_StringMap, this.sound = new haxe_ds_StringMap }; $hxClasses["openfl.AssetCache"] = openfl_AssetCache, openfl_AssetCache.__name__ = ["openfl", "AssetCache"], openfl_AssetCache.__interfaces__ = [openfl_IAssetCache], openfl_AssetCache.prototype = { bitmapData: null, font: null, sound: null, __enabled: null, getBitmapData: function(e) { return this.bitmapData.get(e) }, hasBitmapData: function(e) { return this.bitmapData.exists(e) }, removeBitmapData: function(e) { return lime_utils_Assets.cache.image.remove(e), this.bitmapData.remove(e) }, setBitmapData: function(e, t) { this.bitmapData.set(e, t) }, get_enabled: function() { return this.__enabled }, __class__: openfl_AssetCache, __properties__: { get_enabled: "get_enabled" } }; var openfl_Assets = function() {}; $hxClasses["openfl.Assets"] = openfl_Assets, openfl_Assets.__name__ = ["openfl", "Assets"], openfl_Assets.exists = function(e, t) { return lime_utils_Assets.exists(e, t) } , openfl_Assets.getBitmapData = function(e, t) { if (null == t && (t = !0), t && openfl_Assets.cache.get_enabled() && openfl_Assets.cache.hasBitmapData(e)) { var n = openfl_Assets.cache.getBitmapData(e); if (openfl_Assets.isValidBitmapData(n)) return n } var i = lime_utils_Assets.getImage(e, !1); if (null != i) { var l = openfl_display_BitmapData.fromImage(i); return t && openfl_Assets.cache.get_enabled() && openfl_Assets.cache.setBitmapData(e, l), l } return null } , openfl_Assets.getText = function(e) { return lime_utils_Assets.getText(e) } , openfl_Assets.isValidBitmapData = function(e) { return null != e && null != e.image } ; var openfl_AssetLibrary = function() { lime_utils_AssetLibrary.call(this) }; $hxClasses["openfl.AssetLibrary"] = openfl_AssetLibrary, openfl_AssetLibrary.__name__ = ["openfl", "AssetLibrary"], openfl_AssetLibrary.__super__ = lime_utils_AssetLibrary, openfl_AssetLibrary.prototype = $extend(lime_utils_AssetLibrary.prototype, { __class__: openfl_AssetLibrary }); var openfl_display_MovieClip = function() { openfl_display_Sprite.call(this), this.__currentFrame = 0, this.__currentLabels = [], this.__totalFrames = 0, this.enabled = !0, null != openfl_display_MovieClip.__initSymbol && (this.__swf = openfl_display_MovieClip.__initSWF, this.__symbol = openfl_display_MovieClip.__initSymbol, openfl_display_MovieClip.__initSWF = null, openfl_display_MovieClip.__initSymbol = null, this.__fromSymbol(this.__swf, this.__symbol)) }; $hxClasses["openfl.display.MovieClip"] = openfl_display_MovieClip, openfl_display_MovieClip.__name__ = ["openfl", "display", "MovieClip"], openfl_display_MovieClip.__super__ = openfl_display_Sprite, openfl_display_MovieClip.prototype = $extend(openfl_display_Sprite.prototype, { enabled: null, __currentFrame: null, __currentFrameLabel: null, __currentLabel: null, __currentLabels: null, __frameScripts: null, __frameTime: null, __lastUpdate: null, __objectDepths: null, __objects: null, __playing: null, __swf: null, __symbol: null, __timeElapsed: null, __totalFrames: null, __zeroSymbol: null, play: function() { null != this.__symbol && !this.__playing && this.__totalFrames > 1 && (this.__playing = !0, this.__frameTime = 1e3 / this.__swf.frameRate | 0, this.__timeElapsed = 0) }, __enterFrame: function(e) { if (null != this.__symbol && this.__playing) { this.__timeElapsed += e; var t = Math.floor(this.__timeElapsed / this.__frameTime); if (this.__timeElapsed = this.__timeElapsed % this.__frameTime, null != this.__frameScripts) for (var n = 0; n < t; ) { n++; if (this.__currentFrame++, this.__currentFrame > this.__totalFrames && (this.__currentFrame = 1), this.__frameScripts.h.hasOwnProperty(this.__currentFrame - 1) && (this.__frameScripts.h[this.__currentFrame - 1](), !this.__playing)) break } else for (this.__currentFrame += t; this.__currentFrame > this.__totalFrames; ) this.__currentFrame -= this.__totalFrames; this.__updateFrame() } openfl_display_Sprite.prototype.__enterFrame.call(this, e) }, __fromSymbol: function(e, t) { if (null == this.__objects) { this.__swf = e, this.__symbol = t, this.__lastUpdate = -1, this.__objectDepths = [], this.__objects = new haxe_ds_IntMap, this.__zeroSymbol = -1, this.__currentFrame = 1, this.__totalFrames = this.__symbol.frames.length; for (var n = 0, i = this.__symbol.frames.length; n < i; ) { var l = n++; null != this.__symbol.frames[l].label && this.__currentLabels.push(new openfl_display_FrameLabel(this.__symbol.frames[l].label,l + 1)) } this.__updateFrame(); for (var a = 0, s = Type.getInstanceFields(js_Boot.getClass(this)); a < s.length; ) { var r = s[a]; ++a; for (var _ = 0, o = this.__children; _ < o.length; ) { var p = o[_]; ++_, p.get_name() == r && (this[r] = p) } } this.__totalFrames > 1 && this.play() } }, __placeObject: function(e, t) { if (null != t.name && e.set_name(t.name), null != t.matrix && e.get_transform().set_matrix(t.matrix), null != t.colorTransform && e.get_transform().set_colorTransform(t.colorTransform), null != t.filters) { for (var n = [], i = 0, l = t.filters; i < l.length; ) { var a = l[i]; switch (++i, a[1]) { case 0: var s = a[4] , r = a[3] , _ = a[2]; n.push(new openfl_filters_BlurFilter(_,r,s)); break; case 1: var o = a[2]; n.push(new openfl_filters_ColorMatrixFilter(o)); break; case 2: var p = a[12] , h = a[11] , d = a[10] , u = a[9] , c = a[8] , m = a[7] , U = a[6] , Q = a[5] , N = a[4] , F = a[3] , Z = a[2]; n.push(new openfl_filters_DropShadowFilter(Z,F,N,Q,U,m,c,u,d,h,p)); break; case 3: var f = a[9] , S = a[8] , g = a[7] , B = a[6] , b = a[5] , v = a[4] , W = a[3] , T = a[2]; n.push(new openfl_filters_GlowFilter(T,W,v,b,B,g,S,f)) } } e.set_filters(n) } e.set_visible(t.visible) }, __renderFrame: function(e) { var t, n, i = this.__lastUpdate - 1; if (i > e) { for (var l, a, s = 0; s < this.__objectDepths.length; ) { l = this.__objectDepths[s], a = !1; for (var r = 0, _ = this.__symbol.frames[0].objects; r < _.length; ) { var o = _[r]; if (++r, o.id == l.id) { a = !0; break } } a ? s++ : (l.displayObject.parent == this && this.removeChild(l.displayObject), this.__objectDepths.splice(s, 1)) } i = 0 } for (var p = null, h = null, d = !1, u = i, c = e + 1; u < c; ) { var m = u++; if (!(m < 0)) for (var U = 0, Q = this.__symbol.frames[m].objects; U < Q.length; ) { var N = Q[U]; if (++U, N.type != openfl__$internal_timeline_FrameObjectType.DESTROY) { if (0 == N.id && N.symbol != this.__zeroSymbol) { null != (t = this.__objects.h[0]) && t.displayObject.parent == this && this.removeChild(t.displayObject); var F = this.__objects.h[0]; HxOverrides.remove(this.__objectDepths, F), t = null, this.__zeroSymbol = N.symbol } n = null, this.__objects.h.hasOwnProperty(N.id) ? (n = (t = this.__objects.h[N.id]).displayObject, null == t.displayObject.parent && (this.__objectDepths.push(t), d = !0)) : (this.__swf.symbols.h.hasOwnProperty(N.symbol) && (n = this.__swf.symbols.h[N.symbol].__createObject(this.__swf)), null != n && (t = new openfl_display__$MovieClip_TimelineObject(N.id,N.depth,n), this.__objectDepths.push(t), d = !0, this.__objects.h[N.id] = t)), null != n && (this.__placeObject(n, N), null != p ? p.clipDepth < N.depth ? p = null : n.set_mask(h) : n.set_mask(null), 0 != N.clipDepth && (p = N, n.set_visible(!1), h = n)) } else this.__objects.h.hasOwnProperty(N.id) && (null != (t = this.__objects.h[N.id]) && t.displayObject.parent == this && this.removeChild(t.displayObject), HxOverrides.remove(this.__objectDepths, t), d = !0) } } if (d) { this.__objectDepths.sort($bind(this, this.__sortTimelineDepth)); for (var Z = this.__objectDepths.length - 1; Z >= 0; ) t = this.__objectDepths[Z], this.addChildAt(t.displayObject, 0), Z-- } }, __sortTimelineDepth: function(e, t) { return e.depth - t.depth }, __updateFrame: function() { if (this.__currentFrame != this.__lastUpdate) { var e = this.__currentFrame - 1; if (e > -1) { if (this.__symbol.frames.length > e && null != this.__symbol.frames[e] ? this.__currentFrameLabel = this.__symbol.frames[e].label : this.__currentFrameLabel = null, null != this.__currentFrameLabel) this.__currentLabel = this.__currentFrameLabel; else if (this.__currentFrame != this.__lastUpdate + 1) { this.__currentLabel = null; for (var t = 0, n = this.__currentLabels; t < n.length; ) { var i = n[t]; if (++t, !(i.get_frame() <= this.__currentFrame)) break; this.__currentLabel = i.get_name() } } this.__renderFrame(e) } this.__renderDirty = !0, openfl_display_DisplayObject.__worldRenderDirty++ } this.__lastUpdate = this.__currentFrame }, __class__: openfl_display_MovieClip }); var openfl__$Vector_Vector_$Impl_$ = {}; $hxClasses["openfl._Vector.Vector_Impl_"] = openfl__$Vector_Vector_$Impl_$, openfl__$Vector_Vector_$Impl_$.__name__ = ["openfl", "_Vector", "Vector_Impl_"], openfl__$Vector_Vector_$Impl_$.toIntVector = function(e, t, n) { return new openfl__$Vector_IntVector(t,n) } , openfl__$Vector_Vector_$Impl_$.toFloatVector = function(e, t, n) { return new openfl__$Vector_FloatVector(t,n) } , openfl__$Vector_Vector_$Impl_$.toObjectVector = function(e, t, n) { return new openfl__$Vector_ObjectVector(t,n) } ; var openfl_geom_Matrix = function(e, t, n, i, l, a) { null == a && (a = 0), null == l && (l = 0), null == i && (i = 1), null == n && (n = 0), null == t && (t = 0), null == e && (e = 1), this.a = e, this.b = t, this.c = n, this.d = i, this.tx = l, this.ty = a }; $hxClasses["openfl.geom.Matrix"] = openfl_geom_Matrix, openfl_geom_Matrix.__name__ = ["openfl", "geom", "Matrix"], openfl_geom_Matrix.prototype = { a: null, b: null, c: null, d: null, tx: null, ty: null, clone: function() { return new openfl_geom_Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty) }, concat: function(e) { var t = this.a * e.a + this.b * e.c; this.b = this.a * e.b + this.b * e.d, this.a = t; var n = this.c * e.a + this.d * e.c; this.d = this.c * e.b + this.d * e.d, this.c = n; var i = this.tx * e.a + this.ty * e.c + e.tx; this.ty = this.tx * e.b + this.ty * e.d + e.ty, this.tx = i }, copyFrom: function(e) { this.a = e.a, this.b = e.b, this.c = e.c, this.d = e.d, this.tx = e.tx, this.ty = e.ty }, identity: function() { this.a = 1, this.b = 0, this.c = 0, this.d = 1, this.tx = 0, this.ty = 0 }, invert: function() { var e = this.a * this.d - this.b * this.c; if (0 == e) this.a = this.b = this.c = this.d = 0, this.tx = -this.tx, this.ty = -this.ty; else { e = 1 / e; var t = this.d * e; this.d = this.a * e, this.a = t, this.b *= -e, this.c *= -e; var n = -this.a * this.tx - this.c * this.ty; this.ty = -this.b * this.tx - this.d * this.ty, this.tx = n } return this }, rotate: function(e) { var t = Math.cos(e) , n = Math.sin(e) , i = this.a * t - this.b * n; this.b = this.a * n + this.b * t, this.a = i; var l = this.c * t - this.d * n; this.d = this.c * n + this.d * t, this.c = l; var a = this.tx * t - this.ty * n; this.ty = this.tx * n + this.ty * t, this.tx = a }, scale: function(e, t) { this.a *= e, this.b *= t, this.c *= e, this.d *= t, this.tx *= e, this.ty *= t }, setTo: function(e, t, n, i, l, a) { this.a = e, this.b = t, this.c = n, this.d = i, this.tx = l, this.ty = a }, transformPoint: function(e) { return new openfl_geom_Point(e.x * this.a + e.y * this.c + this.tx,e.x * this.b + e.y * this.d + this.ty) }, translate: function(e, t) { this.tx += e, this.ty += t }, __transformInversePoint: function(e) { var t = this.a * this.d - this.b * this.c; if (0 == t) e.x = -this.tx, e.y = -this.ty; else { var n = 1 / t * (this.c * (this.ty - e.y) + this.d * (e.x - this.tx)); e.y = 1 / t * (this.a * (e.y - this.ty) + this.b * (this.tx - e.x)), e.x = n } }, __transformInverseX: function(e, t) { var n = this.a * this.d - this.b * this.c; return 0 == n ? -this.tx : 1 / n * (this.c * (this.ty - t) + this.d * (e - this.tx)) }, __transformInverseY: function(e, t) { var n = this.a * this.d - this.b * this.c; return 0 == n ? -this.ty : 1 / n * (this.a * (t - this.ty) + this.b * (this.tx - e)) }, __transformX: function(e, t) { return e * this.a + t * this.c + this.tx }, __transformY: function(e, t) { return e * this.b + t * this.d + this.ty }, __translateTransformed: function(e, t) { this.tx = e * this.a + t * this.c + this.tx, this.ty = e * this.b + t * this.d + this.ty }, __class__: openfl_geom_Matrix }; var openfl_geom_ColorTransform = function(e, t, n, i, l, a, s, r) { null == r && (r = 0), null == s && (s = 0), null == a && (a = 0), null == l && (l = 0), null == i && (i = 1), null == n && (n = 1), null == t && (t = 1), null == e && (e = 1), this.redMultiplier = e, this.greenMultiplier = t, this.blueMultiplier = n, this.alphaMultiplier = i, this.redOffset = l, this.greenOffset = a, this.blueOffset = s, this.alphaOffset = r }; $hxClasses["openfl.geom.ColorTransform"] = openfl_geom_ColorTransform, openfl_geom_ColorTransform.__name__ = ["openfl", "geom", "ColorTransform"], openfl_geom_ColorTransform.prototype = { alphaMultiplier: null, alphaOffset: null, blueMultiplier: null, blueOffset: null, greenMultiplier: null, greenOffset: null, redMultiplier: null, redOffset: null, __clone: function() { return new openfl_geom_ColorTransform(this.redMultiplier,this.greenMultiplier,this.blueMultiplier,this.alphaMultiplier,this.redOffset,this.greenOffset,this.blueOffset,this.alphaOffset) }, __combine: function(e) { this.redMultiplier *= e.redMultiplier, this.greenMultiplier *= e.greenMultiplier, this.blueMultiplier *= e.blueMultiplier, this.alphaMultiplier *= e.alphaMultiplier, this.redOffset += e.redOffset, this.greenOffset += e.greenOffset, this.blueOffset += e.blueOffset, this.alphaOffset += e.alphaOffset }, __equals: function(e, t) { return null == t && (t = !1), null != e && this.redMultiplier == e.redMultiplier && this.greenMultiplier == e.greenMultiplier && this.blueMultiplier == e.blueMultiplier && (t || this.alphaMultiplier == e.alphaMultiplier) && this.redOffset == e.redOffset && this.greenOffset == e.greenOffset && this.blueOffset == e.blueOffset && this.alphaOffset == e.alphaOffset }, __toLimeColorMatrix: function() { var e; null == openfl_geom_ColorTransform.__limeColorMatrix && (e = new Float32Array(20), openfl_geom_ColorTransform.__limeColorMatrix = e); return openfl_geom_ColorTransform.__limeColorMatrix[0] = this.redMultiplier, openfl_geom_ColorTransform.__limeColorMatrix[4] = this.redOffset / 255, openfl_geom_ColorTransform.__limeColorMatrix[6] = this.greenMultiplier, openfl_geom_ColorTransform.__limeColorMatrix[9] = this.greenOffset / 255, openfl_geom_ColorTransform.__limeColorMatrix[12] = this.blueMultiplier, openfl_geom_ColorTransform.__limeColorMatrix[14] = this.blueOffset / 255, openfl_geom_ColorTransform.__limeColorMatrix[18] = this.alphaMultiplier, openfl_geom_ColorTransform.__limeColorMatrix[19] = this.alphaOffset / 255, openfl_geom_ColorTransform.__limeColorMatrix }, __class__: openfl_geom_ColorTransform }; var openfl_Lib = function() {}; $hxClasses["openfl.Lib"] = openfl_Lib, openfl_Lib.__name__ = ["openfl", "Lib"], openfl_Lib.getTimer = function() { return lime_system_System.getTimer() } , openfl_Lib.getURL = function(e, t) { null == t && (t = "_blank"), lime_system_System.openURL(e.url, t) } ; var openfl__$Vector_IVector = function() {}; $hxClasses["openfl._Vector.IVector"] = openfl__$Vector_IVector, openfl__$Vector_IVector.__name__ = ["openfl", "_Vector", "IVector"], openfl__$Vector_IVector.prototype = { __class__: openfl__$Vector_IVector }; var openfl__$Vector_FloatVector = function(e, t, n) { null == n && (n = []), this.__array = n, null != e && this.set_length(e), this.fixed = 1 == t }; $hxClasses["openfl._Vector.FloatVector"] = openfl__$Vector_FloatVector, openfl__$Vector_FloatVector.__name__ = ["openfl", "_Vector", "FloatVector"], openfl__$Vector_FloatVector.__interfaces__ = [openfl__$Vector_IVector], openfl__$Vector_FloatVector.prototype = { fixed: null, __array: null, get: function(e) { return this.__array[e] }, push: function(e) { return this.fixed ? this.__array.length : this.__array.push(e) }, set: function(e, t) { return !this.fixed || e < this.__array.length ? this.__array[e] = t : t }, get_length: function() { return this.__array.length }, set_length: function(e) { if (!this.fixed) { var t = this.__array.length; if (e < 0 && (e = 0), e > t) for (var n = t; n < e; ) { var i = n++; this.__array[i] = 0 } else for (; this.__array.length > e; ) this.__array.pop() } return this.__array.length }, __class__: openfl__$Vector_FloatVector, __properties__: { set_length: "set_length", get_length: "get_length" } }; var openfl__$Vector_IntVector = function(e, t, n) { null == n && (n = []), this.__array = n, null != e && this.set_length(e), this.fixed = 1 == t }; $hxClasses["openfl._Vector.IntVector"] = openfl__$Vector_IntVector, openfl__$Vector_IntVector.__name__ = ["openfl", "_Vector", "IntVector"], openfl__$Vector_IntVector.__interfaces__ = [openfl__$Vector_IVector], openfl__$Vector_IntVector.prototype = { fixed: null, __array: null, get: function(e) { return this.__array[e] }, set: function(e, t) { return !this.fixed || e < this.__array.length ? this.__array[e] = t : t }, get_length: function() { return this.__array.length }, set_length: function(e) { if (!this.fixed) { var t = this.__array.length; if (e < 0 && (e = 0), e > t) for (var n = t; n < e; ) { var i = n++; this.__array[i] = 0 } else for (; this.__array.length > e; ) this.__array.pop() } return this.__array.length }, __class__: openfl__$Vector_IntVector, __properties__: { set_length: "set_length", get_length: "get_length" } }; var openfl__$Vector_ObjectVector = function(e, t, n) { null == n && (n = []), this.__array = n, null != e && this.set_length(e), this.fixed = 1 == t }; $hxClasses["openfl._Vector.ObjectVector"] = openfl__$Vector_ObjectVector, openfl__$Vector_ObjectVector.__name__ = ["openfl", "_Vector", "ObjectVector"], openfl__$Vector_ObjectVector.__interfaces__ = [openfl__$Vector_IVector], openfl__$Vector_ObjectVector.prototype = { fixed: null, __array: null, get: function(e) { return this.__array[e] }, push: function(e) { return this.fixed ? this.__array.length : this.__array.push(e) }, splice: function(e, t) { return new openfl__$Vector_ObjectVector(null,null,this.__array.splice(e, t)) }, get_length: function() { return this.__array.length }, set_length: function(e) { if (!this.fixed) { var t = this.__array.length; if (e < 0 && (e = 0), e > t) for (var n = t; n < e; ) { n++; this.__array.push(null) } else for (; this.__array.length > e; ) this.__array.pop() } return this.__array.length }, __class__: openfl__$Vector_ObjectVector, __properties__: { set_length: "set_length", get_length: "get_length" } }; var openfl__$internal_renderer_AbstractBlendModeManager = function() {}; $hxClasses["openfl._internal.renderer.AbstractBlendModeManager"] = openfl__$internal_renderer_AbstractBlendModeManager, openfl__$internal_renderer_AbstractBlendModeManager.__name__ = ["openfl", "_internal", "renderer", "AbstractBlendModeManager"], openfl__$internal_renderer_AbstractBlendModeManager.prototype = { setBlendMode: function(e) {}, __class__: openfl__$internal_renderer_AbstractBlendModeManager }; var openfl__$internal_renderer_AbstractFilterManager = function(e) { this.renderSession = e }; $hxClasses["openfl._internal.renderer.AbstractFilterManager"] = openfl__$internal_renderer_AbstractFilterManager, openfl__$internal_renderer_AbstractFilterManager.__name__ = ["openfl", "_internal", "renderer", "AbstractFilterManager"], openfl__$internal_renderer_AbstractFilterManager.prototype = { renderSession: null, pushObject: function(e) { return null }, popObject: function(e) {}, __class__: openfl__$internal_renderer_AbstractFilterManager }; var openfl__$internal_renderer_AbstractMaskManager = function(e) { this.renderSession = e }; $hxClasses["openfl._internal.renderer.AbstractMaskManager"] = openfl__$internal_renderer_AbstractMaskManager, openfl__$internal_renderer_AbstractMaskManager.__name__ = ["openfl", "_internal", "renderer", "AbstractMaskManager"], openfl__$internal_renderer_AbstractMaskManager.prototype = { renderSession: null, pushMask: function(e) {}, pushObject: function(e, t) { null == t && (t = !0) }, pushRect: function(e, t) {}, popMask: function() {}, popObject: function(e, t) { null == t && (t = !0) }, popRect: function() {}, saveState: function() {}, restoreState: function() {}, __class__: openfl__$internal_renderer_AbstractMaskManager }; var openfl__$internal_renderer_AbstractRenderer = function(e) { this.stage = e, this.width = e.stageWidth, this.height = e.stageHeight }; $hxClasses["openfl._internal.renderer.AbstractRenderer"] = openfl__$internal_renderer_AbstractRenderer, openfl__$internal_renderer_AbstractRenderer.__name__ = ["openfl", "_internal", "renderer", "AbstractRenderer"], openfl__$internal_renderer_AbstractRenderer.prototype = { height: null, width: null, renderSession: null, stage: null, clear: function() {}, render: function() {}, resize: function(e, t) { this.width = e, this.height = t }, __class__: openfl__$internal_renderer_AbstractRenderer }; var openfl__$internal_renderer_AbstractShaderManager = function() {}; $hxClasses["openfl._internal.renderer.AbstractShaderManager"] = openfl__$internal_renderer_AbstractShaderManager, openfl__$internal_renderer_AbstractShaderManager.__name__ = ["openfl", "_internal", "renderer", "AbstractShaderManager"], openfl__$internal_renderer_AbstractShaderManager.prototype = { currentShader: null, defaultShader: null, setShader: function(e) {}, __class__: openfl__$internal_renderer_AbstractShaderManager }; var openfl__$internal_renderer_DrawCommandBuffer = function() { null == openfl__$internal_renderer_DrawCommandBuffer.empty ? (this.types = [], this.b = [], this.i = [], this.f = [], this.o = [], this.ff = [], this.ii = [], this.copyOnWrite = !0) : this.clear() }; $hxClasses["openfl._internal.renderer.DrawCommandBuffer"] = openfl__$internal_renderer_DrawCommandBuffer, openfl__$internal_renderer_DrawCommandBuffer.__name__ = ["openfl", "_internal", "renderer", "DrawCommandBuffer"], openfl__$internal_renderer_DrawCommandBuffer.prototype = { types: null, b: null, copyOnWrite: null, f: null, ff: null, i: null, ii: null, o: null, append: function(e) { if (0 == this.get_length()) return this.types = e.types, this.b = e.b, this.i = e.i, this.f = e.f, this.o = e.o, this.ff = e.ff, this.ii = e.ii, this.copyOnWrite = e.copyOnWrite = !0, e; for (var t = new openfl__$internal_renderer_DrawCommandReader(e), n = 0, i = e.types; n < i.length; ) { var l = i[n]; switch (++n, l[1]) { case 0: var a; t.advance(), t.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_BITMAP_FILL, a = t, this.beginBitmapFill(a.buffer.o[a.oPos], a.buffer.o[a.oPos + 1], a.buffer.b[a.bPos], a.buffer.b[a.bPos + 1]); break; case 1: var s; t.advance(), t.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_FILL, s = t, this.beginFill(s.buffer.i[s.iPos], s.buffer.f[s.fPos]); break; case 2: var r; t.advance(), t.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_GRADIENT_FILL, r = t, this.beginGradientFill(r.buffer.o[r.oPos], r.buffer.ii[r.iiPos], r.buffer.ff[r.ffPos], r.buffer.ii[r.iiPos + 1], r.buffer.o[r.oPos + 1], r.buffer.o[r.oPos + 2], r.buffer.o[r.oPos + 3], r.buffer.f[r.fPos]); break; case 3: var _; t.advance(), t.prev = openfl__$internal_renderer_DrawCommandType.CUBIC_CURVE_TO, _ = t, this.cubicCurveTo(_.buffer.f[_.fPos], _.buffer.f[_.fPos + 1], _.buffer.f[_.fPos + 2], _.buffer.f[_.fPos + 3], _.buffer.f[_.fPos + 4], _.buffer.f[_.fPos + 5]); break; case 4: var o; t.advance(), t.prev = openfl__$internal_renderer_DrawCommandType.CURVE_TO, o = t, this.curveTo(o.buffer.f[o.fPos], o.buffer.f[o.fPos + 1], o.buffer.f[o.fPos + 2], o.buffer.f[o.fPos + 3]); break; case 5: var p; t.advance(), t.prev = openfl__$internal_renderer_DrawCommandType.DRAW_CIRCLE, p = t, this.drawCircle(p.buffer.f[p.fPos], p.buffer.f[p.fPos + 1], p.buffer.f[p.fPos + 2]); break; case 6: var h; t.advance(), t.prev = openfl__$internal_renderer_DrawCommandType.DRAW_ELLIPSE, h = t, this.drawEllipse(h.buffer.f[h.fPos], h.buffer.f[h.fPos + 1], h.buffer.f[h.fPos + 2], h.buffer.f[h.fPos + 3]); break; case 7: var d; t.advance(), t.prev = openfl__$internal_renderer_DrawCommandType.DRAW_RECT, d = t, this.drawRect(d.buffer.f[d.fPos], d.buffer.f[d.fPos + 1], d.buffer.f[d.fPos + 2], d.buffer.f[d.fPos + 3]); break; case 8: var u; t.advance(), t.prev = openfl__$internal_renderer_DrawCommandType.DRAW_ROUND_RECT, u = t, this.drawRoundRect(u.buffer.f[u.fPos], u.buffer.f[u.fPos + 1], u.buffer.f[u.fPos + 2], u.buffer.f[u.fPos + 3], u.buffer.f[u.fPos + 4], u.buffer.o[u.oPos]); break; case 10: var c; t.advance(), t.prev = openfl__$internal_renderer_DrawCommandType.DRAW_TRIANGLES, c = t, this.drawTriangles(c.buffer.o[c.oPos], c.buffer.o[c.oPos + 1], c.buffer.o[c.oPos + 2], c.buffer.o[c.oPos + 3]); break; case 11: t.advance(), t.prev = openfl__$internal_renderer_DrawCommandType.END_FILL, t, this.endFill(); break; case 12: var m; t.advance(), t.prev = openfl__$internal_renderer_DrawCommandType.LINE_BITMAP_STYLE, m = t, this.lineBitmapStyle(m.buffer.o[m.oPos], m.buffer.o[m.oPos + 1], m.buffer.b[m.bPos], m.buffer.b[m.bPos + 1]); break; case 13: var U; t.advance(), t.prev = openfl__$internal_renderer_DrawCommandType.LINE_GRADIENT_STYLE, U = t, this.lineGradientStyle(U.buffer.o[U.oPos], U.buffer.ii[U.iiPos], U.buffer.ff[U.ffPos], U.buffer.ii[U.iiPos + 1], U.buffer.o[U.oPos + 1], U.buffer.o[U.oPos + 2], U.buffer.o[U.oPos + 3], U.buffer.f[U.fPos]); break; case 14: var Q; t.advance(), t.prev = openfl__$internal_renderer_DrawCommandType.LINE_STYLE, Q = t, this.lineStyle(Q.buffer.o[Q.oPos], Q.buffer.i[Q.iPos], Q.buffer.f[Q.fPos], Q.buffer.b[Q.bPos], Q.buffer.o[Q.oPos + 1], Q.buffer.o[Q.oPos + 2], Q.buffer.o[Q.oPos + 3], Q.buffer.f[Q.fPos + 1]); break; case 15: var N; t.advance(), t.prev = openfl__$internal_renderer_DrawCommandType.LINE_TO, N = t, this.lineTo(N.buffer.f[N.fPos], N.buffer.f[N.fPos + 1]); break; case 16: var F; t.advance(), t.prev = openfl__$internal_renderer_DrawCommandType.MOVE_TO, F = t, this.moveTo(F.buffer.f[F.fPos], F.buffer.f[F.fPos + 1]); break; case 17: var Z; t.advance(), t.prev = openfl__$internal_renderer_DrawCommandType.OVERRIDE_MATRIX, Z = t, this.overrideMatrix(Z.buffer.o[Z.oPos]) } } return t.destroy(), e }, beginBitmapFill: function(e, t, n, i) { this.prepareWrite(), this.types.push(openfl__$internal_renderer_DrawCommandType.BEGIN_BITMAP_FILL), this.o.push(e), this.o.push(t), this.b.push(n), this.b.push(i) }, beginFill: function(e, t) { this.prepareWrite(), this.types.push(openfl__$internal_renderer_DrawCommandType.BEGIN_FILL), this.i.push(e), this.f.push(t) }, beginGradientFill: function(e, t, n, i, l, a, s, r) { this.prepareWrite(), this.types.push(openfl__$internal_renderer_DrawCommandType.BEGIN_GRADIENT_FILL), this.o.push(e), this.ii.push(t), this.ff.push(n), this.ii.push(i), this.o.push(l), this.o.push(a), this.o.push(s), this.f.push(r) }, clear: function() { this.types = openfl__$internal_renderer_DrawCommandBuffer.empty.types, this.b = openfl__$internal_renderer_DrawCommandBuffer.empty.b, this.i = openfl__$internal_renderer_DrawCommandBuffer.empty.i, this.f = openfl__$internal_renderer_DrawCommandBuffer.empty.f, this.o = openfl__$internal_renderer_DrawCommandBuffer.empty.o, this.ff = openfl__$internal_renderer_DrawCommandBuffer.empty.ff, this.ii = openfl__$internal_renderer_DrawCommandBuffer.empty.ii, this.copyOnWrite = !0 }, copy: function() { var e = new openfl__$internal_renderer_DrawCommandBuffer; return e.append(this), e }, cubicCurveTo: function(e, t, n, i, l, a) { this.prepareWrite(), this.types.push(openfl__$internal_renderer_DrawCommandType.CUBIC_CURVE_TO), this.f.push(e), this.f.push(t), this.f.push(n), this.f.push(i), this.f.push(l), this.f.push(a) }, curveTo: function(e, t, n, i) { this.prepareWrite(), this.types.push(openfl__$internal_renderer_DrawCommandType.CURVE_TO), this.f.push(e), this.f.push(t), this.f.push(n), this.f.push(i) }, drawCircle: function(e, t, n) { this.prepareWrite(), this.types.push(openfl__$internal_renderer_DrawCommandType.DRAW_CIRCLE), this.f.push(e), this.f.push(t), this.f.push(n) }, drawEllipse: function(e, t, n, i) { this.prepareWrite(), this.types.push(openfl__$internal_renderer_DrawCommandType.DRAW_ELLIPSE), this.f.push(e), this.f.push(t), this.f.push(n), this.f.push(i) }, drawRect: function(e, t, n, i) { this.prepareWrite(), this.types.push(openfl__$internal_renderer_DrawCommandType.DRAW_RECT), this.f.push(e), this.f.push(t), this.f.push(n), this.f.push(i) }, drawRoundRect: function(e, t, n, i, l, a) { this.prepareWrite(), this.types.push(openfl__$internal_renderer_DrawCommandType.DRAW_ROUND_RECT), this.f.push(e), this.f.push(t), this.f.push(n), this.f.push(i), this.f.push(l), this.o.push(a) }, drawTriangles: function(e, t, n, i) { this.prepareWrite(), this.types.push(openfl__$internal_renderer_DrawCommandType.DRAW_TRIANGLES), this.o.push(e), this.o.push(t), this.o.push(n), this.o.push(i) }, endFill: function() { this.prepareWrite(), this.types.push(openfl__$internal_renderer_DrawCommandType.END_FILL) }, lineBitmapStyle: function(e, t, n, i) { this.prepareWrite(), this.types.push(openfl__$internal_renderer_DrawCommandType.LINE_BITMAP_STYLE), this.o.push(e), this.o.push(t), this.b.push(n), this.b.push(i) }, lineGradientStyle: function(e, t, n, i, l, a, s, r) { this.prepareWrite(), this.types.push(openfl__$internal_renderer_DrawCommandType.LINE_GRADIENT_STYLE), this.o.push(e), this.ii.push(t), this.ff.push(n), this.ii.push(i), this.o.push(l), this.o.push(a), this.o.push(s), this.f.push(r) }, lineStyle: function(e, t, n, i, l, a, s, r) { this.prepareWrite(), this.types.push(openfl__$internal_renderer_DrawCommandType.LINE_STYLE), this.o.push(e), this.i.push(t), this.f.push(n), this.b.push(i), this.o.push(l), this.o.push(a), this.o.push(s), this.f.push(r) }, lineTo: function(e, t) { this.prepareWrite(), this.types.push(openfl__$internal_renderer_DrawCommandType.LINE_TO), this.f.push(e), this.f.push(t) }, moveTo: function(e, t) { this.prepareWrite(), this.types.push(openfl__$internal_renderer_DrawCommandType.MOVE_TO), this.f.push(e), this.f.push(t) }, prepareWrite: function() { this.copyOnWrite && (this.types = this.types.slice(), this.b = this.b.slice(), this.i = this.i.slice(), this.f = this.f.slice(), this.o = this.o.slice(), this.ff = this.ff.slice(), this.ii = this.ii.slice(), this.copyOnWrite = !1) }, overrideMatrix: function(e) { this.prepareWrite(), this.types.push(openfl__$internal_renderer_DrawCommandType.OVERRIDE_MATRIX), this.o.push(e) }, get_length: function() { return this.types.length }, __class__: openfl__$internal_renderer_DrawCommandBuffer, __properties__: { get_length: "get_length" } }; var openfl__$internal_renderer_DrawCommandReader = function(e) { this.buffer = e, this.bPos = this.iPos = this.fPos = this.oPos = this.ffPos = this.iiPos = this.tsPos = 0, this.prev = openfl__$internal_renderer_DrawCommandType.UNKNOWN }; $hxClasses["openfl._internal.renderer.DrawCommandReader"] = openfl__$internal_renderer_DrawCommandReader, openfl__$internal_renderer_DrawCommandReader.__name__ = ["openfl", "_internal", "renderer", "DrawCommandReader"], openfl__$internal_renderer_DrawCommandReader.prototype = { buffer: null, bPos: null, iiPos: null, iPos: null, ffPos: null, fPos: null, oPos: null, prev: null, tsPos: null, advance: function() { switch (this.prev[1]) { case 0: this.oPos += 2, this.bPos += 2; break; case 1: this.iPos += 1, this.fPos += 1; break; case 2: this.oPos += 4, this.iiPos += 2, this.ffPos += 1, this.fPos += 1; break; case 3: this.fPos += 6; break; case 4: this.fPos += 4; break; case 5: this.fPos += 3; break; case 6: case 7: this.fPos += 4; break; case 8: this.fPos += 5, this.oPos += 1; break; case 10: this.oPos += 4; break; case 11: break; case 12: this.oPos += 2, this.bPos += 2; break; case 13: this.oPos += 4, this.iiPos += 2, this.ffPos += 1, this.fPos += 1; break; case 14: this.oPos += 4, this.iPos += 1, this.fPos += 2, this.bPos += 1; break; case 15: case 16: this.fPos += 2; break; case 17: this.oPos += 1 } }, destroy: function() { this.buffer = null, this.reset() }, reset: function() { this.bPos = this.iPos = this.fPos = this.oPos = this.ffPos = this.iiPos = this.tsPos = 0 }, __class__: openfl__$internal_renderer_DrawCommandReader }; var openfl__$internal_renderer_DrawCommandType = $hxClasses["openfl._internal.renderer.DrawCommandType"] = { __ename__: ["openfl", "_internal", "renderer", "DrawCommandType"], __constructs__: ["BEGIN_BITMAP_FILL", "BEGIN_FILL", "BEGIN_GRADIENT_FILL", "CUBIC_CURVE_TO", "CURVE_TO", "DRAW_CIRCLE", "DRAW_ELLIPSE", "DRAW_RECT", "DRAW_ROUND_RECT", "DRAW_TILES", "DRAW_TRIANGLES", "END_FILL", "LINE_BITMAP_STYLE", "LINE_GRADIENT_STYLE", "LINE_STYLE", "LINE_TO", "MOVE_TO", "OVERRIDE_MATRIX", "UNKNOWN"] }; openfl__$internal_renderer_DrawCommandType.BEGIN_BITMAP_FILL = ["BEGIN_BITMAP_FILL", 0], openfl__$internal_renderer_DrawCommandType.BEGIN_BITMAP_FILL.toString = $estr, openfl__$internal_renderer_DrawCommandType.BEGIN_BITMAP_FILL.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.BEGIN_FILL = ["BEGIN_FILL", 1], openfl__$internal_renderer_DrawCommandType.BEGIN_FILL.toString = $estr, openfl__$internal_renderer_DrawCommandType.BEGIN_FILL.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.BEGIN_GRADIENT_FILL = ["BEGIN_GRADIENT_FILL", 2], openfl__$internal_renderer_DrawCommandType.BEGIN_GRADIENT_FILL.toString = $estr, openfl__$internal_renderer_DrawCommandType.BEGIN_GRADIENT_FILL.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.CUBIC_CURVE_TO = ["CUBIC_CURVE_TO", 3], openfl__$internal_renderer_DrawCommandType.CUBIC_CURVE_TO.toString = $estr, openfl__$internal_renderer_DrawCommandType.CUBIC_CURVE_TO.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.CURVE_TO = ["CURVE_TO", 4], openfl__$internal_renderer_DrawCommandType.CURVE_TO.toString = $estr, openfl__$internal_renderer_DrawCommandType.CURVE_TO.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.DRAW_CIRCLE = ["DRAW_CIRCLE", 5], openfl__$internal_renderer_DrawCommandType.DRAW_CIRCLE.toString = $estr, openfl__$internal_renderer_DrawCommandType.DRAW_CIRCLE.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.DRAW_ELLIPSE = ["DRAW_ELLIPSE", 6], openfl__$internal_renderer_DrawCommandType.DRAW_ELLIPSE.toString = $estr, openfl__$internal_renderer_DrawCommandType.DRAW_ELLIPSE.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.DRAW_RECT = ["DRAW_RECT", 7], openfl__$internal_renderer_DrawCommandType.DRAW_RECT.toString = $estr, openfl__$internal_renderer_DrawCommandType.DRAW_RECT.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.DRAW_ROUND_RECT = ["DRAW_ROUND_RECT", 8], openfl__$internal_renderer_DrawCommandType.DRAW_ROUND_RECT.toString = $estr, openfl__$internal_renderer_DrawCommandType.DRAW_ROUND_RECT.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.DRAW_TILES = ["DRAW_TILES", 9], openfl__$internal_renderer_DrawCommandType.DRAW_TILES.toString = $estr, openfl__$internal_renderer_DrawCommandType.DRAW_TILES.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.DRAW_TRIANGLES = ["DRAW_TRIANGLES", 10], openfl__$internal_renderer_DrawCommandType.DRAW_TRIANGLES.toString = $estr, openfl__$internal_renderer_DrawCommandType.DRAW_TRIANGLES.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.END_FILL = ["END_FILL", 11], openfl__$internal_renderer_DrawCommandType.END_FILL.toString = $estr, openfl__$internal_renderer_DrawCommandType.END_FILL.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.LINE_BITMAP_STYLE = ["LINE_BITMAP_STYLE", 12], openfl__$internal_renderer_DrawCommandType.LINE_BITMAP_STYLE.toString = $estr, openfl__$internal_renderer_DrawCommandType.LINE_BITMAP_STYLE.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.LINE_GRADIENT_STYLE = ["LINE_GRADIENT_STYLE", 13], openfl__$internal_renderer_DrawCommandType.LINE_GRADIENT_STYLE.toString = $estr, openfl__$internal_renderer_DrawCommandType.LINE_GRADIENT_STYLE.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.LINE_STYLE = ["LINE_STYLE", 14], openfl__$internal_renderer_DrawCommandType.LINE_STYLE.toString = $estr, openfl__$internal_renderer_DrawCommandType.LINE_STYLE.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.LINE_TO = ["LINE_TO", 15], openfl__$internal_renderer_DrawCommandType.LINE_TO.toString = $estr, openfl__$internal_renderer_DrawCommandType.LINE_TO.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.MOVE_TO = ["MOVE_TO", 16], openfl__$internal_renderer_DrawCommandType.MOVE_TO.toString = $estr, openfl__$internal_renderer_DrawCommandType.MOVE_TO.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.OVERRIDE_MATRIX = ["OVERRIDE_MATRIX", 17], openfl__$internal_renderer_DrawCommandType.OVERRIDE_MATRIX.toString = $estr, openfl__$internal_renderer_DrawCommandType.OVERRIDE_MATRIX.__enum__ = openfl__$internal_renderer_DrawCommandType, openfl__$internal_renderer_DrawCommandType.UNKNOWN = ["UNKNOWN", 18], openfl__$internal_renderer_DrawCommandType.UNKNOWN.toString = $estr, openfl__$internal_renderer_DrawCommandType.UNKNOWN.__enum__ = openfl__$internal_renderer_DrawCommandType; var openfl__$internal_renderer_RenderSession = function() { this.allowSmoothing = !0 }; $hxClasses["openfl._internal.renderer.RenderSession"] = openfl__$internal_renderer_RenderSession, openfl__$internal_renderer_RenderSession.__name__ = ["openfl", "_internal", "renderer", "RenderSession"], openfl__$internal_renderer_RenderSession.prototype = { allowSmoothing: null, context: null, element: null, gl: null, renderer: null, roundPixels: null, transformOriginProperty: null, upscaled: null, blendModeManager: null, filterManager: null, maskManager: null, shaderManager: null, __class__: openfl__$internal_renderer_RenderSession }; var openfl__$internal_renderer_canvas_CanvasBitmap = function() {}; $hxClasses["openfl._internal.renderer.canvas.CanvasBitmap"] = openfl__$internal_renderer_canvas_CanvasBitmap, openfl__$internal_renderer_canvas_CanvasBitmap.__name__ = ["openfl", "_internal", "renderer", "canvas", "CanvasBitmap"], openfl__$internal_renderer_canvas_CanvasBitmap.render = function(e, t) { if (e.__renderable && !(e.__worldAlpha <= 0)) { var n = t.context; if (null != e.bitmapData && e.bitmapData.__isValid) { t.maskManager.pushObject(e, !1), lime_graphics_utils_ImageCanvasUtil.convertToCanvas(e.bitmapData.image), n.globalAlpha = e.__worldAlpha; var i = e.__renderTransform , l = e.__scrollRect; t.roundPixels ? n.setTransform(i.a, i.b, i.c, i.d, 0 | i.tx, 0 | i.ty) : n.setTransform(i.a, i.b, i.c, i.d, i.tx, i.ty), t.allowSmoothing && e.smoothing || (n.mozImageSmoothingEnabled = !1, n.msImageSmoothingEnabled = !1, n.imageSmoothingEnabled = !1), null == l ? n.drawImage(e.bitmapData.image.get_src(), 0, 0) : n.drawImage(e.bitmapData.image.get_src(), l.x, l.y, l.width, l.height, l.x, l.y, l.width, l.height), t.allowSmoothing && e.smoothing || (n.mozImageSmoothingEnabled = !0, n.msImageSmoothingEnabled = !0, n.imageSmoothingEnabled = !0), t.maskManager.popObject(e, !1) } } } ; var openfl__$internal_renderer_canvas_CanvasDisplayObject = function() {}; $hxClasses["openfl._internal.renderer.canvas.CanvasDisplayObject"] = openfl__$internal_renderer_canvas_CanvasDisplayObject, openfl__$internal_renderer_canvas_CanvasDisplayObject.__name__ = ["openfl", "_internal", "renderer", "canvas", "CanvasDisplayObject"], openfl__$internal_renderer_canvas_CanvasDisplayObject.render = function(e, t) { if ((null != e.opaqueBackground || null != e.__graphics) && e.__renderable && !(e.__worldAlpha <= 0)) { if (null != e.opaqueBackground && e.get_width() > 0 && e.get_height() > 0) { t.maskManager.pushObject(e); var n = t.context , i = e.__renderTransform; t.roundPixels ? n.setTransform(i.a, i.b, i.c, i.d, 0 | i.tx, 0 | i.ty) : n.setTransform(i.a, i.b, i.c, i.d, i.tx, i.ty); var l = e.opaqueBackground; n.fillStyle = "rgb(" + (l >> 16 & 255) + "," + (l >> 8 & 255) + "," + (255 & l) + ")", n.fillRect(0, 0, e.get_width(), e.get_height()), t.maskManager.popObject(e) } null != e.__graphics && openfl__$internal_renderer_canvas_CanvasShape.render(e, t) } } ; var openfl__$internal_renderer_canvas_CanvasGraphics = function() {}; $hxClasses["openfl._internal.renderer.canvas.CanvasGraphics"] = openfl__$internal_renderer_canvas_CanvasGraphics, openfl__$internal_renderer_canvas_CanvasGraphics.__name__ = ["openfl", "_internal", "renderer", "canvas", "CanvasGraphics"], openfl__$internal_renderer_canvas_CanvasGraphics.closePath = function(e) { null == e && (e = !1), null != openfl__$internal_renderer_canvas_CanvasGraphics.context.strokeStyle && (e || openfl__$internal_renderer_canvas_CanvasGraphics.context.closePath(), openfl__$internal_renderer_canvas_CanvasGraphics.context.stroke(), e && openfl__$internal_renderer_canvas_CanvasGraphics.context.closePath(), openfl__$internal_renderer_canvas_CanvasGraphics.context.beginPath()) } , openfl__$internal_renderer_canvas_CanvasGraphics.createBitmapFill = function(e, t, n) { return lime_graphics_utils_ImageCanvasUtil.convertToCanvas(e.image), openfl__$internal_renderer_canvas_CanvasGraphics.setSmoothing(n), openfl__$internal_renderer_canvas_CanvasGraphics.context.createPattern(e.image.get_src(), t ? "repeat" : "no-repeat") } , openfl__$internal_renderer_canvas_CanvasGraphics.createGradientPattern = function(e, t, n, i, l, a, s, r) { var _ = null; switch (e) { case 1: null == l && (l = new openfl_geom_Matrix); var o = l.transformPoint(new openfl_geom_Point(1638.4,0)); _ = openfl__$internal_renderer_canvas_CanvasGraphics.context.createRadialGradient(l.tx, l.ty, 0, l.tx, l.ty, Math.abs((o.x - l.tx) / 2)); break; case 0: var p, h = (p = null != l ? l : new openfl_geom_Matrix).transformPoint(new openfl_geom_Point(-819.2,0)), d = p.transformPoint(new openfl_geom_Point(819.2,0)); _ = openfl__$internal_renderer_canvas_CanvasGraphics.context.createLinearGradient(h.x, h.y, d.x, d.y) } for (var u = 0, c = t.length; u < c; ) { var m = u++ , U = t[m] , Q = n[m] , N = (16711680 & U) >>> 16 , F = (65280 & U) >>> 8 , Z = 255 & U , f = i[m] / 255; f < 0 && (f = 0), f > 1 && (f = 1), _.addColorStop(f, "rgba(" + N + ", " + F + ", " + Z + ", " + Q + ")") } return _ } , openfl__$internal_renderer_canvas_CanvasGraphics.createTempPatternCanvas = function(e, t, n, i) { var l = window.document.createElement("canvas") , a = l.getContext("2d"); return l.width = n, l.height = i, a.fillStyle = a.createPattern(e.image.get_src(), t ? "repeat" : "no-repeat"), a.beginPath(), a.moveTo(0, 0), a.lineTo(0, i), a.lineTo(n, i), a.lineTo(n, 0), a.lineTo(0, 0), a.closePath(), openfl__$internal_renderer_canvas_CanvasGraphics.hitTesting || a.fill(), l } , openfl__$internal_renderer_canvas_CanvasGraphics.drawRoundRect = function(e, t, n, i, l, a) { null == a && (a = l), a *= .5, (l *= .5) > n / 2 && (l = n / 2), a > i / 2 && (a = i / 2); var s = e + n , r = t + i , _ = -l + l * openfl__$internal_renderer_canvas_CanvasGraphics.SIN45 , o = -l + l * openfl__$internal_renderer_canvas_CanvasGraphics.TAN22 , p = -a + a * openfl__$internal_renderer_canvas_CanvasGraphics.SIN45 , h = -a + a * openfl__$internal_renderer_canvas_CanvasGraphics.TAN22; openfl__$internal_renderer_canvas_CanvasGraphics.context.moveTo(s, r - a), openfl__$internal_renderer_canvas_CanvasGraphics.context.quadraticCurveTo(s, r + h, s + _, r + p), openfl__$internal_renderer_canvas_CanvasGraphics.context.quadraticCurveTo(s + o, r, s - l, r), openfl__$internal_renderer_canvas_CanvasGraphics.context.lineTo(e + l, r), openfl__$internal_renderer_canvas_CanvasGraphics.context.quadraticCurveTo(e - o, r, e - _, r + p), openfl__$internal_renderer_canvas_CanvasGraphics.context.quadraticCurveTo(e, r + h, e, r - a), openfl__$internal_renderer_canvas_CanvasGraphics.context.lineTo(e, t + a), openfl__$internal_renderer_canvas_CanvasGraphics.context.quadraticCurveTo(e, t - h, e - _, t - p), openfl__$internal_renderer_canvas_CanvasGraphics.context.quadraticCurveTo(e - o, t, e + l, t), openfl__$internal_renderer_canvas_CanvasGraphics.context.lineTo(s - l, t), openfl__$internal_renderer_canvas_CanvasGraphics.context.quadraticCurveTo(s + o, t, s + _, t - p), openfl__$internal_renderer_canvas_CanvasGraphics.context.quadraticCurveTo(s, t - h, s, t + a), openfl__$internal_renderer_canvas_CanvasGraphics.context.lineTo(s, r - a) } , openfl__$internal_renderer_canvas_CanvasGraphics.endFill = function() { openfl__$internal_renderer_canvas_CanvasGraphics.context.beginPath(), openfl__$internal_renderer_canvas_CanvasGraphics.playCommands(openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands, !1), openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.clear() } , openfl__$internal_renderer_canvas_CanvasGraphics.endStroke = function() { openfl__$internal_renderer_canvas_CanvasGraphics.context.beginPath(), openfl__$internal_renderer_canvas_CanvasGraphics.playCommands(openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands, !0), openfl__$internal_renderer_canvas_CanvasGraphics.context.closePath(), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.clear() } , openfl__$internal_renderer_canvas_CanvasGraphics.hitTest = function(e, t, n) { if (openfl__$internal_renderer_canvas_CanvasGraphics.bounds = e.__bounds, openfl__$internal_renderer_canvas_CanvasGraphics.graphics = e, 0 == e.__commands.get_length() || null == openfl__$internal_renderer_canvas_CanvasGraphics.bounds || openfl__$internal_renderer_canvas_CanvasGraphics.bounds.width <= 0 || openfl__$internal_renderer_canvas_CanvasGraphics.bounds.height <= 0) return !1; openfl__$internal_renderer_canvas_CanvasGraphics.hitTesting = !0; var i = e.__renderTransform , l = t * i.a + n * i.c + i.tx , a = t * i.b + n * i.d + i.ty; t = l, n = a, t -= openfl__$internal_renderer_canvas_CanvasGraphics.bounds.x * i.a + openfl__$internal_renderer_canvas_CanvasGraphics.bounds.y * i.c + i.tx, n -= openfl__$internal_renderer_canvas_CanvasGraphics.bounds.x * i.b + openfl__$internal_renderer_canvas_CanvasGraphics.bounds.y * i.d + i.ty; var s = e.__canvas , r = e.__context; e.__canvas = openfl__$internal_renderer_canvas_CanvasGraphics.hitTestCanvas, e.__context = openfl__$internal_renderer_canvas_CanvasGraphics.hitTestContext, openfl__$internal_renderer_canvas_CanvasGraphics.context = e.__context, openfl__$internal_renderer_canvas_CanvasGraphics.context.setTransform(i.a, i.b, i.c, i.d, i.tx, i.ty), openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.clear(), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.clear(), openfl__$internal_renderer_canvas_CanvasGraphics.hasFill = !1, openfl__$internal_renderer_canvas_CanvasGraphics.hasStroke = !1, openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill = null, openfl__$internal_renderer_canvas_CanvasGraphics.bitmapRepeat = !1; for (var _ = new openfl__$internal_renderer_DrawCommandReader(e.__commands), o = 0, p = e.__commands.types; o < p.length; ) { var h = p[o]; switch (++o, h[1]) { case 3: var d; _.advance(), _.prev = openfl__$internal_renderer_DrawCommandType.CUBIC_CURVE_TO, d = _, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.cubicCurveTo(d.buffer.f[d.fPos], d.buffer.f[d.fPos + 1], d.buffer.f[d.fPos + 2], d.buffer.f[d.fPos + 3], d.buffer.f[d.fPos + 4], d.buffer.f[d.fPos + 5]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.cubicCurveTo(d.buffer.f[d.fPos], d.buffer.f[d.fPos + 1], d.buffer.f[d.fPos + 2], d.buffer.f[d.fPos + 3], d.buffer.f[d.fPos + 4], d.buffer.f[d.fPos + 5]); break; case 4: var u; _.advance(), _.prev = openfl__$internal_renderer_DrawCommandType.CURVE_TO, u = _, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.curveTo(u.buffer.f[u.fPos], u.buffer.f[u.fPos + 1], u.buffer.f[u.fPos + 2], u.buffer.f[u.fPos + 3]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.curveTo(u.buffer.f[u.fPos], u.buffer.f[u.fPos + 1], u.buffer.f[u.fPos + 2], u.buffer.f[u.fPos + 3]); break; case 15: var c; _.advance(), _.prev = openfl__$internal_renderer_DrawCommandType.LINE_TO, c = _, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.lineTo(c.buffer.f[c.fPos], c.buffer.f[c.fPos + 1]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.lineTo(c.buffer.f[c.fPos], c.buffer.f[c.fPos + 1]); break; case 16: var m; _.advance(), _.prev = openfl__$internal_renderer_DrawCommandType.MOVE_TO, m = _, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.moveTo(m.buffer.f[m.fPos], m.buffer.f[m.fPos + 1]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.moveTo(m.buffer.f[m.fPos], m.buffer.f[m.fPos + 1]); break; case 13: var U; _.advance(), _.prev = openfl__$internal_renderer_DrawCommandType.LINE_GRADIENT_STYLE, U = _, openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.lineGradientStyle(U.buffer.o[U.oPos], U.buffer.ii[U.iiPos], U.buffer.ff[U.ffPos], U.buffer.ii[U.iiPos + 1], U.buffer.o[U.oPos + 1], U.buffer.o[U.oPos + 2], U.buffer.o[U.oPos + 3], U.buffer.f[U.fPos]); break; case 12: var Q; _.advance(), _.prev = openfl__$internal_renderer_DrawCommandType.LINE_BITMAP_STYLE, Q = _, openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.lineBitmapStyle(Q.buffer.o[Q.oPos], Q.buffer.o[Q.oPos + 1], Q.buffer.b[Q.bPos], Q.buffer.b[Q.bPos + 1]); break; case 14: var N; _.advance(), _.prev = openfl__$internal_renderer_DrawCommandType.LINE_STYLE, N = _, openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.lineStyle(N.buffer.o[N.oPos], N.buffer.i[N.iPos], 1, N.buffer.b[N.bPos], N.buffer.o[N.oPos + 1], N.buffer.o[N.oPos + 2], N.buffer.o[N.oPos + 3], N.buffer.f[N.fPos + 1]); break; case 11: if (_.advance(), _.prev = openfl__$internal_renderer_DrawCommandType.END_FILL, openfl__$internal_renderer_canvas_CanvasGraphics.endFill(), openfl__$internal_renderer_canvas_CanvasGraphics.endStroke(), openfl__$internal_renderer_canvas_CanvasGraphics.hasFill && openfl__$internal_renderer_canvas_CanvasGraphics.context.isPointInPath(t, n)) return _.destroy(), e.__canvas = s, e.__context = r, !0; if (openfl__$internal_renderer_canvas_CanvasGraphics.hasStroke && openfl__$internal_renderer_canvas_CanvasGraphics.context.isPointInStroke(t, n)) return _.destroy(), e.__canvas = s, e.__context = r, !0; openfl__$internal_renderer_canvas_CanvasGraphics.hasFill = !1, openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill = null; break; case 0: case 1: case 2: if (openfl__$internal_renderer_canvas_CanvasGraphics.endFill(), openfl__$internal_renderer_canvas_CanvasGraphics.endStroke(), openfl__$internal_renderer_canvas_CanvasGraphics.hasFill && openfl__$internal_renderer_canvas_CanvasGraphics.context.isPointInPath(t, n)) return _.destroy(), e.__canvas = s, e.__context = r, !0; if (openfl__$internal_renderer_canvas_CanvasGraphics.hasStroke && openfl__$internal_renderer_canvas_CanvasGraphics.context.isPointInStroke(t, n)) return _.destroy(), e.__canvas = s, e.__context = r, !0; var F; if (h == openfl__$internal_renderer_DrawCommandType.BEGIN_BITMAP_FILL) _.advance(), _.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_BITMAP_FILL, F = _, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.beginBitmapFill(F.buffer.o[F.oPos], F.buffer.o[F.oPos + 1], F.buffer.b[F.bPos], F.buffer.b[F.bPos + 1]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.beginBitmapFill(F.buffer.o[F.oPos], F.buffer.o[F.oPos + 1], F.buffer.b[F.bPos], F.buffer.b[F.bPos + 1]); else if (h == openfl__$internal_renderer_DrawCommandType.BEGIN_GRADIENT_FILL) { var Z; _.advance(), _.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_GRADIENT_FILL, Z = _, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.beginGradientFill(Z.buffer.o[Z.oPos], Z.buffer.ii[Z.iiPos], Z.buffer.ff[Z.ffPos], Z.buffer.ii[Z.iiPos + 1], Z.buffer.o[Z.oPos + 1], Z.buffer.o[Z.oPos + 2], Z.buffer.o[Z.oPos + 3], Z.buffer.f[Z.fPos]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.beginGradientFill(Z.buffer.o[Z.oPos], Z.buffer.ii[Z.iiPos], Z.buffer.ff[Z.ffPos], Z.buffer.ii[Z.iiPos + 1], Z.buffer.o[Z.oPos + 1], Z.buffer.o[Z.oPos + 2], Z.buffer.o[Z.oPos + 3], Z.buffer.f[Z.fPos]) } else { var f; _.advance(), _.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_FILL, f = _, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.beginFill(f.buffer.i[f.iPos], 1), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.beginFill(f.buffer.i[f.iPos], 1) } break; case 5: var S; _.advance(), _.prev = openfl__$internal_renderer_DrawCommandType.DRAW_CIRCLE, S = _, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.drawCircle(S.buffer.f[S.fPos], S.buffer.f[S.fPos + 1], S.buffer.f[S.fPos + 2]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.drawCircle(S.buffer.f[S.fPos], S.buffer.f[S.fPos + 1], S.buffer.f[S.fPos + 2]); break; case 6: var g; _.advance(), _.prev = openfl__$internal_renderer_DrawCommandType.DRAW_ELLIPSE, g = _, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.drawEllipse(g.buffer.f[g.fPos], g.buffer.f[g.fPos + 1], g.buffer.f[g.fPos + 2], g.buffer.f[g.fPos + 3]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.drawEllipse(g.buffer.f[g.fPos], g.buffer.f[g.fPos + 1], g.buffer.f[g.fPos + 2], g.buffer.f[g.fPos + 3]); break; case 7: var B; _.advance(), _.prev = openfl__$internal_renderer_DrawCommandType.DRAW_RECT, B = _, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.drawRect(B.buffer.f[B.fPos], B.buffer.f[B.fPos + 1], B.buffer.f[B.fPos + 2], B.buffer.f[B.fPos + 3]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.drawRect(B.buffer.f[B.fPos], B.buffer.f[B.fPos + 1], B.buffer.f[B.fPos + 2], B.buffer.f[B.fPos + 3]); break; case 8: var b; _.advance(), _.prev = openfl__$internal_renderer_DrawCommandType.DRAW_ROUND_RECT, b = _, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.drawRoundRect(b.buffer.f[b.fPos], b.buffer.f[b.fPos + 1], b.buffer.f[b.fPos + 2], b.buffer.f[b.fPos + 3], b.buffer.f[b.fPos + 4], b.buffer.o[b.oPos]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.drawRoundRect(b.buffer.f[b.fPos], b.buffer.f[b.fPos + 1], b.buffer.f[b.fPos + 2], b.buffer.f[b.fPos + 3], b.buffer.f[b.fPos + 4], b.buffer.o[b.oPos]); break; default: _.advance(), _.prev = h } } return openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.get_length() > 0 && openfl__$internal_renderer_canvas_CanvasGraphics.endFill(), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.get_length() > 0 && openfl__$internal_renderer_canvas_CanvasGraphics.endStroke(), _.destroy(), openfl__$internal_renderer_canvas_CanvasGraphics.hasFill && openfl__$internal_renderer_canvas_CanvasGraphics.context.isPointInPath(t, n) ? (e.__canvas = s, e.__context = r, !0) : openfl__$internal_renderer_canvas_CanvasGraphics.hasStroke && openfl__$internal_renderer_canvas_CanvasGraphics.context.isPointInStroke(t, n) ? (e.__canvas = s, e.__context = r, !0) : (e.__canvas = s, e.__context = r, !1) } , openfl__$internal_renderer_canvas_CanvasGraphics.normalizeUVT = function(e, t) { null == t && (t = !1); for (var n = -1 / 0, i = -1 / 0, l = e.get_length(), a = 1, s = l + 1; a < s; ) { var r = a++; t && r % 3 == 0 || n < (i = e.get(r - 1)) && (n = i) } if (!t) return { max: n, uvt: e }; for (var _ = openfl__$Vector_Vector_$Impl_$.toFloatVector(null), o = 1, p = l + 1; o < p; ) { var h = o++; if (!t || h % 3 != 0) { var d = e.get(h - 1); _.push(d) } } return { max: n, uvt: _ } } , openfl__$internal_renderer_canvas_CanvasGraphics.playCommands = function(e, t) { null == t && (t = !1), openfl__$internal_renderer_canvas_CanvasGraphics.bounds = openfl__$internal_renderer_canvas_CanvasGraphics.graphics.__bounds; var n = openfl__$internal_renderer_canvas_CanvasGraphics.bounds.x , i = openfl__$internal_renderer_canvas_CanvasGraphics.bounds.y , l = 0 , a = 0 , s = !1 , r = 0 , _ = 0; openfl__$internal_renderer_canvas_CanvasGraphics.setSmoothing(!0); for (var o = new openfl__$internal_renderer_DrawCommandReader(e), p = 0, h = e.types; p < h.length; ) { var d = h[p]; switch (++p, d[1]) { case 3: var u; o.advance(), o.prev = openfl__$internal_renderer_DrawCommandType.CUBIC_CURVE_TO, u = o, openfl__$internal_renderer_canvas_CanvasGraphics.context.bezierCurveTo(u.buffer.f[u.fPos] - n, u.buffer.f[u.fPos + 1] - i, u.buffer.f[u.fPos + 2] - n, u.buffer.f[u.fPos + 3] - i, u.buffer.f[u.fPos + 4] - n, u.buffer.f[u.fPos + 5] - i); break; case 4: var c; o.advance(), o.prev = openfl__$internal_renderer_DrawCommandType.CURVE_TO, c = o, openfl__$internal_renderer_canvas_CanvasGraphics.context.quadraticCurveTo(c.buffer.f[c.fPos] - n, c.buffer.f[c.fPos + 1] - i, c.buffer.f[c.fPos + 2] - n, c.buffer.f[c.fPos + 3] - i); break; case 5: var m; o.advance(), o.prev = openfl__$internal_renderer_DrawCommandType.DRAW_CIRCLE, m = o, openfl__$internal_renderer_canvas_CanvasGraphics.context.moveTo(m.buffer.f[m.fPos] - n + m.buffer.f[m.fPos + 2], m.buffer.f[m.fPos + 1] - i), openfl__$internal_renderer_canvas_CanvasGraphics.context.arc(m.buffer.f[m.fPos] - n, m.buffer.f[m.fPos + 1] - i, m.buffer.f[m.fPos + 2], 0, 2 * Math.PI, !0); break; case 6: var U; o.advance(), o.prev = openfl__$internal_renderer_DrawCommandType.DRAW_ELLIPSE; var Q = (U = o).buffer.f[U.fPos] , N = U.buffer.f[U.fPos + 1] , F = U.buffer.f[U.fPos + 2] , Z = U.buffer.f[U.fPos + 3] , f = F / 2 * .5522848 , S = Z / 2 * .5522848 , g = (Q -= n) + F , B = (N -= i) + Z , b = Q + F / 2 , v = N + Z / 2; openfl__$internal_renderer_canvas_CanvasGraphics.context.moveTo(Q, v), openfl__$internal_renderer_canvas_CanvasGraphics.context.bezierCurveTo(Q, v - S, b - f, N, b, N), openfl__$internal_renderer_canvas_CanvasGraphics.context.bezierCurveTo(b + f, N, g, v - S, g, v), openfl__$internal_renderer_canvas_CanvasGraphics.context.bezierCurveTo(g, v + S, b + f, B, b, B), openfl__$internal_renderer_canvas_CanvasGraphics.context.bezierCurveTo(b - f, B, Q, v + S, Q, v); break; case 8: var W; o.advance(), o.prev = openfl__$internal_renderer_DrawCommandType.DRAW_ROUND_RECT, W = o, openfl__$internal_renderer_canvas_CanvasGraphics.drawRoundRect(W.buffer.f[W.fPos] - n, W.buffer.f[W.fPos + 1] - i, W.buffer.f[W.fPos + 2], W.buffer.f[W.fPos + 3], W.buffer.f[W.fPos + 4], W.buffer.o[W.oPos]); break; case 15: var T; o.advance(), o.prev = openfl__$internal_renderer_DrawCommandType.LINE_TO, T = o, openfl__$internal_renderer_canvas_CanvasGraphics.context.lineTo(T.buffer.f[T.fPos] - n, T.buffer.f[T.fPos + 1] - i), l = T.buffer.f[T.fPos], a = T.buffer.f[T.fPos + 1]; break; case 16: var V; o.advance(), o.prev = openfl__$internal_renderer_DrawCommandType.MOVE_TO, V = o, openfl__$internal_renderer_canvas_CanvasGraphics.context.moveTo(V.buffer.f[V.fPos] - n, V.buffer.f[V.fPos + 1] - i), l = V.buffer.f[V.fPos], a = V.buffer.f[V.fPos + 1], s = !0, r = V.buffer.f[V.fPos], _ = V.buffer.f[V.fPos + 1]; break; case 14: var R; if (o.advance(), o.prev = openfl__$internal_renderer_DrawCommandType.LINE_STYLE, R = o, t && openfl__$internal_renderer_canvas_CanvasGraphics.hasStroke && openfl__$internal_renderer_canvas_CanvasGraphics.closePath(!0), openfl__$internal_renderer_canvas_CanvasGraphics.context.moveTo(l - n, a - i), null == R.buffer.o[R.oPos]) openfl__$internal_renderer_canvas_CanvasGraphics.hasStroke = !1; else { if (R.buffer.o[R.oPos] > 0 ? openfl__$internal_renderer_canvas_CanvasGraphics.context.lineWidth = R.buffer.o[R.oPos] : openfl__$internal_renderer_canvas_CanvasGraphics.context.lineWidth = 1, null == R.buffer.o[R.oPos + 3] ? openfl__$internal_renderer_canvas_CanvasGraphics.context.lineJoin = "round" : openfl__$internal_renderer_canvas_CanvasGraphics.context.lineJoin = openfl_display__$JointStyle_JointStyle_$Impl_$.toString(R.buffer.o[R.oPos + 3]).toLowerCase(), null == R.buffer.o[R.oPos + 2]) openfl__$internal_renderer_canvas_CanvasGraphics.context.lineCap = "round"; else switch (R.buffer.o[R.oPos + 2]) { case 0: openfl__$internal_renderer_canvas_CanvasGraphics.context.lineCap = "butt"; break; default: openfl__$internal_renderer_canvas_CanvasGraphics.context.lineCap = openfl_display__$CapsStyle_CapsStyle_$Impl_$.toString(R.buffer.o[R.oPos + 2]).toLowerCase() } if (openfl__$internal_renderer_canvas_CanvasGraphics.context.miterLimit = R.buffer.f[R.fPos + 1], 1 == R.buffer.f[R.fPos]) openfl__$internal_renderer_canvas_CanvasGraphics.context.strokeStyle = "#" + StringTools.hex(16777215 & R.buffer.i[R.iPos], 6); else { var y = (16711680 & R.buffer.i[R.iPos]) >>> 16 , D = (65280 & R.buffer.i[R.iPos]) >>> 8 , x = 255 & R.buffer.i[R.iPos]; openfl__$internal_renderer_canvas_CanvasGraphics.context.strokeStyle = "rgba(" + y + ", " + D + ", " + x + ", " + R.buffer.f[R.fPos] + ")" } openfl__$internal_renderer_canvas_CanvasGraphics.setSmoothing(!0), openfl__$internal_renderer_canvas_CanvasGraphics.hasStroke = !0 } break; case 13: var J; o.advance(), o.prev = openfl__$internal_renderer_DrawCommandType.LINE_GRADIENT_STYLE, J = o, t && openfl__$internal_renderer_canvas_CanvasGraphics.hasStroke && openfl__$internal_renderer_canvas_CanvasGraphics.closePath(), openfl__$internal_renderer_canvas_CanvasGraphics.context.moveTo(l - n, a - i), openfl__$internal_renderer_canvas_CanvasGraphics.context.strokeStyle = openfl__$internal_renderer_canvas_CanvasGraphics.createGradientPattern(J.buffer.o[J.oPos], J.buffer.ii[J.iiPos], J.buffer.ff[J.ffPos], J.buffer.ii[J.iiPos + 1], J.buffer.o[J.oPos + 1], J.buffer.o[J.oPos + 2], J.buffer.o[J.oPos + 3], J.buffer.f[J.fPos]), openfl__$internal_renderer_canvas_CanvasGraphics.setSmoothing(!0), openfl__$internal_renderer_canvas_CanvasGraphics.hasStroke = !0; break; case 12: var z; o.advance(), o.prev = openfl__$internal_renderer_DrawCommandType.LINE_BITMAP_STYLE, z = o, t && openfl__$internal_renderer_canvas_CanvasGraphics.hasStroke && openfl__$internal_renderer_canvas_CanvasGraphics.closePath(), openfl__$internal_renderer_canvas_CanvasGraphics.context.moveTo(l - n, a - i), openfl__$internal_renderer_canvas_CanvasGraphics.context.strokeStyle = openfl__$internal_renderer_canvas_CanvasGraphics.createBitmapFill(z.buffer.o[z.oPos], z.buffer.b[z.bPos], z.buffer.b[z.bPos + 1]), openfl__$internal_renderer_canvas_CanvasGraphics.hasStroke = !0; break; case 0: var k; o.advance(), o.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_BITMAP_FILL, k = o, openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill = k.buffer.o[k.oPos], openfl__$internal_renderer_canvas_CanvasGraphics.context.fillStyle = openfl__$internal_renderer_canvas_CanvasGraphics.createBitmapFill(k.buffer.o[k.oPos], !0, k.buffer.b[k.bPos + 1]), openfl__$internal_renderer_canvas_CanvasGraphics.hasFill = !0, null != k.buffer.o[k.oPos + 1] ? (openfl__$internal_renderer_canvas_CanvasGraphics.pendingMatrix = k.buffer.o[k.oPos + 1], openfl__$internal_renderer_canvas_CanvasGraphics.inversePendingMatrix = k.buffer.o[k.oPos + 1].clone(), openfl__$internal_renderer_canvas_CanvasGraphics.inversePendingMatrix.invert()) : (openfl__$internal_renderer_canvas_CanvasGraphics.pendingMatrix = null, openfl__$internal_renderer_canvas_CanvasGraphics.inversePendingMatrix = null); break; case 1: var E; if (o.advance(), o.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_FILL, (E = o).buffer.f[E.fPos] < .005) openfl__$internal_renderer_canvas_CanvasGraphics.hasFill = !1; else { if (1 == E.buffer.f[E.fPos]) openfl__$internal_renderer_canvas_CanvasGraphics.context.fillStyle = "#" + StringTools.hex(16777215 & E.buffer.i[E.iPos], 6); else { var P = (16711680 & E.buffer.i[E.iPos]) >>> 16 , M = (65280 & E.buffer.i[E.iPos]) >>> 8 , w = 255 & E.buffer.i[E.iPos]; openfl__$internal_renderer_canvas_CanvasGraphics.context.fillStyle = "rgba(" + P + ", " + M + ", " + w + ", " + E.buffer.f[E.fPos] + ")" } openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill = null, openfl__$internal_renderer_canvas_CanvasGraphics.setSmoothing(!0), openfl__$internal_renderer_canvas_CanvasGraphics.hasFill = !0 } break; case 2: var $; o.advance(), o.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_GRADIENT_FILL, $ = o, openfl__$internal_renderer_canvas_CanvasGraphics.context.fillStyle = openfl__$internal_renderer_canvas_CanvasGraphics.createGradientPattern($.buffer.o[$.oPos], $.buffer.ii[$.iiPos], $.buffer.ff[$.ffPos], $.buffer.ii[$.iiPos + 1], $.buffer.o[$.oPos + 1], $.buffer.o[$.oPos + 2], $.buffer.o[$.oPos + 3], $.buffer.f[$.fPos]), openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill = null, openfl__$internal_renderer_canvas_CanvasGraphics.setSmoothing(!0), openfl__$internal_renderer_canvas_CanvasGraphics.hasFill = !0; break; case 7: var C; o.advance(), o.prev = openfl__$internal_renderer_DrawCommandType.DRAW_RECT, C = o; var G = !1; if (null != openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill && !openfl__$internal_renderer_canvas_CanvasGraphics.hitTesting) { var O = 0 , I = 0 , H = 0 , Y = 0 , A = !0; if (null != openfl__$internal_renderer_canvas_CanvasGraphics.pendingMatrix) if (0 != openfl__$internal_renderer_canvas_CanvasGraphics.pendingMatrix.b || 0 != openfl__$internal_renderer_canvas_CanvasGraphics.pendingMatrix.c) A = !1; else { var L = openfl__$internal_renderer_canvas_CanvasGraphics.inversePendingMatrix.transformPoint(new openfl_geom_Point(C.buffer.f[C.fPos],C.buffer.f[C.fPos + 1])) , X = openfl__$internal_renderer_canvas_CanvasGraphics.inversePendingMatrix.transformPoint(new openfl_geom_Point(C.buffer.f[C.fPos] + C.buffer.f[C.fPos + 2],C.buffer.f[C.fPos + 1] + C.buffer.f[C.fPos + 3])); O = L.y, Y = L.x, H = X.y, I = X.x } else O = C.buffer.f[C.fPos + 1], Y = C.buffer.f[C.fPos], H = C.buffer.f[C.fPos + 1] + C.buffer.f[C.fPos + 3], I = C.buffer.f[C.fPos] + C.buffer.f[C.fPos + 2]; A && O >= 0 && Y >= 0 && I <= openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill.width && H <= openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill.height && (G = !0, openfl__$internal_renderer_canvas_CanvasGraphics.hitTesting || openfl__$internal_renderer_canvas_CanvasGraphics.context.drawImage(openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill.image.get_src(), Y, O, I - Y, H - O, C.buffer.f[C.fPos] - n, C.buffer.f[C.fPos + 1] - i, C.buffer.f[C.fPos + 2], C.buffer.f[C.fPos + 3])) } G || openfl__$internal_renderer_canvas_CanvasGraphics.context.rect(C.buffer.f[C.fPos] - n, C.buffer.f[C.fPos + 1] - i, C.buffer.f[C.fPos + 2], C.buffer.f[C.fPos + 3]); break; default: o.advance(), o.prev = d } } o.destroy(), t && openfl__$internal_renderer_canvas_CanvasGraphics.hasStroke && (openfl__$internal_renderer_canvas_CanvasGraphics.hasFill && s ? openfl__$internal_renderer_canvas_CanvasGraphics.context.lineTo(r - n, _ - i) : s && l == r && a == _ && openfl__$internal_renderer_canvas_CanvasGraphics.closePath(!0), openfl__$internal_renderer_canvas_CanvasGraphics.hitTesting || openfl__$internal_renderer_canvas_CanvasGraphics.context.stroke()), t || (openfl__$internal_renderer_canvas_CanvasGraphics.hasFill || null != openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill) && (openfl__$internal_renderer_canvas_CanvasGraphics.context.translate(-openfl__$internal_renderer_canvas_CanvasGraphics.bounds.x, -openfl__$internal_renderer_canvas_CanvasGraphics.bounds.y), null != openfl__$internal_renderer_canvas_CanvasGraphics.pendingMatrix ? (openfl__$internal_renderer_canvas_CanvasGraphics.context.transform(openfl__$internal_renderer_canvas_CanvasGraphics.pendingMatrix.a, openfl__$internal_renderer_canvas_CanvasGraphics.pendingMatrix.b, openfl__$internal_renderer_canvas_CanvasGraphics.pendingMatrix.c, openfl__$internal_renderer_canvas_CanvasGraphics.pendingMatrix.d, openfl__$internal_renderer_canvas_CanvasGraphics.pendingMatrix.tx, openfl__$internal_renderer_canvas_CanvasGraphics.pendingMatrix.ty), openfl__$internal_renderer_canvas_CanvasGraphics.hitTesting || openfl__$internal_renderer_canvas_CanvasGraphics.context.fill(), openfl__$internal_renderer_canvas_CanvasGraphics.context.transform(openfl__$internal_renderer_canvas_CanvasGraphics.inversePendingMatrix.a, openfl__$internal_renderer_canvas_CanvasGraphics.inversePendingMatrix.b, openfl__$internal_renderer_canvas_CanvasGraphics.inversePendingMatrix.c, openfl__$internal_renderer_canvas_CanvasGraphics.inversePendingMatrix.d, openfl__$internal_renderer_canvas_CanvasGraphics.inversePendingMatrix.tx, openfl__$internal_renderer_canvas_CanvasGraphics.inversePendingMatrix.ty)) : openfl__$internal_renderer_canvas_CanvasGraphics.hitTesting || openfl__$internal_renderer_canvas_CanvasGraphics.context.fill(), openfl__$internal_renderer_canvas_CanvasGraphics.context.translate(openfl__$internal_renderer_canvas_CanvasGraphics.bounds.x, openfl__$internal_renderer_canvas_CanvasGraphics.bounds.y), openfl__$internal_renderer_canvas_CanvasGraphics.context.closePath()) } , openfl__$internal_renderer_canvas_CanvasGraphics.render = function(e, t, n) { if (e.__update(), e.__dirty) { openfl__$internal_renderer_canvas_CanvasGraphics.hitTesting = !1, openfl__$internal_renderer_canvas_CanvasGraphics.graphics = e, openfl__$internal_renderer_canvas_CanvasGraphics.allowSmoothing = t.allowSmoothing, openfl__$internal_renderer_canvas_CanvasGraphics.bounds = e.__bounds; var i = e.__width , l = e.__height; if (!e.__visible || 0 == e.__commands.get_length() || null == openfl__$internal_renderer_canvas_CanvasGraphics.bounds || i < 1 || l < 1) e.__canvas = null, e.__context = null, e.__bitmap = null; else { null == e.__canvas && (e.__canvas = window.document.createElement("canvas"), e.__context = e.__canvas.getContext("2d")), openfl__$internal_renderer_canvas_CanvasGraphics.context = e.__context; var a = e.__renderTransform , s = e.__canvas , r = window.devicePixelRatio || 1 , _ = i * r | 0 , o = l * r | 0; s.width == _ && s.height == o ? openfl__$internal_renderer_canvas_CanvasGraphics.context.clearRect(0, 0, _, o) : (s.width = i, s.height = l), openfl__$internal_renderer_canvas_CanvasGraphics.context.setTransform(a.a, a.b, a.c, a.d, a.tx, a.ty), openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.clear(), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.clear(), openfl__$internal_renderer_canvas_CanvasGraphics.hasFill = !1, openfl__$internal_renderer_canvas_CanvasGraphics.hasStroke = !1, openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill = null, openfl__$internal_renderer_canvas_CanvasGraphics.bitmapRepeat = !1; var p = new openfl__$internal_renderer_DrawCommandReader(e.__commands) , h = 0 , d = e.__commands.types; try { for (; h < d.length; ) { var u = d[h]; switch (++h, u[1]) { case 3: var c; p.advance(), p.prev = openfl__$internal_renderer_DrawCommandType.CUBIC_CURVE_TO, c = p, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.cubicCurveTo(c.buffer.f[c.fPos], c.buffer.f[c.fPos + 1], c.buffer.f[c.fPos + 2], c.buffer.f[c.fPos + 3], c.buffer.f[c.fPos + 4], c.buffer.f[c.fPos + 5]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.cubicCurveTo(c.buffer.f[c.fPos], c.buffer.f[c.fPos + 1], c.buffer.f[c.fPos + 2], c.buffer.f[c.fPos + 3], c.buffer.f[c.fPos + 4], c.buffer.f[c.fPos + 5]); break; case 4: var m; p.advance(), p.prev = openfl__$internal_renderer_DrawCommandType.CURVE_TO, m = p, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.curveTo(m.buffer.f[m.fPos], m.buffer.f[m.fPos + 1], m.buffer.f[m.fPos + 2], m.buffer.f[m.fPos + 3]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.curveTo(m.buffer.f[m.fPos], m.buffer.f[m.fPos + 1], m.buffer.f[m.fPos + 2], m.buffer.f[m.fPos + 3]); break; case 15: var U; p.advance(), p.prev = openfl__$internal_renderer_DrawCommandType.LINE_TO, U = p, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.lineTo(U.buffer.f[U.fPos], U.buffer.f[U.fPos + 1]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.lineTo(U.buffer.f[U.fPos], U.buffer.f[U.fPos + 1]); break; case 16: var Q; p.advance(), p.prev = openfl__$internal_renderer_DrawCommandType.MOVE_TO, Q = p, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.moveTo(Q.buffer.f[Q.fPos], Q.buffer.f[Q.fPos + 1]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.moveTo(Q.buffer.f[Q.fPos], Q.buffer.f[Q.fPos + 1]); break; case 11: p.advance(), p.prev = openfl__$internal_renderer_DrawCommandType.END_FILL, openfl__$internal_renderer_canvas_CanvasGraphics.endFill(), openfl__$internal_renderer_canvas_CanvasGraphics.endStroke(), openfl__$internal_renderer_canvas_CanvasGraphics.hasFill = !1, openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill = null; break; case 14: var N; p.advance(), p.prev = openfl__$internal_renderer_DrawCommandType.LINE_STYLE, N = p, openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.lineStyle(N.buffer.o[N.oPos], N.buffer.i[N.iPos], N.buffer.f[N.fPos], N.buffer.b[N.bPos], N.buffer.o[N.oPos + 1], N.buffer.o[N.oPos + 2], N.buffer.o[N.oPos + 3], N.buffer.f[N.fPos + 1]); break; case 13: var F; p.advance(), p.prev = openfl__$internal_renderer_DrawCommandType.LINE_GRADIENT_STYLE, F = p, openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.lineGradientStyle(F.buffer.o[F.oPos], F.buffer.ii[F.iiPos], F.buffer.ff[F.ffPos], F.buffer.ii[F.iiPos + 1], F.buffer.o[F.oPos + 1], F.buffer.o[F.oPos + 2], F.buffer.o[F.oPos + 3], F.buffer.f[F.fPos]); break; case 12: var Z; p.advance(), p.prev = openfl__$internal_renderer_DrawCommandType.LINE_BITMAP_STYLE, Z = p, openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.lineBitmapStyle(Z.buffer.o[Z.oPos], Z.buffer.o[Z.oPos + 1], Z.buffer.b[Z.bPos], Z.buffer.b[Z.bPos + 1]); break; case 0: case 1: case 2: var f; if (openfl__$internal_renderer_canvas_CanvasGraphics.endFill(), openfl__$internal_renderer_canvas_CanvasGraphics.endStroke(), u == openfl__$internal_renderer_DrawCommandType.BEGIN_BITMAP_FILL) p.advance(), p.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_BITMAP_FILL, f = p, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.beginBitmapFill(f.buffer.o[f.oPos], f.buffer.o[f.oPos + 1], f.buffer.b[f.bPos], f.buffer.b[f.bPos + 1]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.beginBitmapFill(f.buffer.o[f.oPos], f.buffer.o[f.oPos + 1], f.buffer.b[f.bPos], f.buffer.b[f.bPos + 1]); else if (u == openfl__$internal_renderer_DrawCommandType.BEGIN_GRADIENT_FILL) { var S; p.advance(), p.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_GRADIENT_FILL, S = p, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.beginGradientFill(S.buffer.o[S.oPos], S.buffer.ii[S.iiPos], S.buffer.ff[S.ffPos], S.buffer.ii[S.iiPos + 1], S.buffer.o[S.oPos + 1], S.buffer.o[S.oPos + 2], S.buffer.o[S.oPos + 3], S.buffer.f[S.fPos]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.beginGradientFill(S.buffer.o[S.oPos], S.buffer.ii[S.iiPos], S.buffer.ff[S.ffPos], S.buffer.ii[S.iiPos + 1], S.buffer.o[S.oPos + 1], S.buffer.o[S.oPos + 2], S.buffer.o[S.oPos + 3], S.buffer.f[S.fPos]) } else { var g; p.advance(), p.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_FILL, g = p, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.beginFill(g.buffer.i[g.iPos], g.buffer.f[g.fPos]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.beginFill(g.buffer.i[g.iPos], g.buffer.f[g.fPos]) } break; case 5: var B; p.advance(), p.prev = openfl__$internal_renderer_DrawCommandType.DRAW_CIRCLE, B = p, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.drawCircle(B.buffer.f[B.fPos], B.buffer.f[B.fPos + 1], B.buffer.f[B.fPos + 2]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.drawCircle(B.buffer.f[B.fPos], B.buffer.f[B.fPos + 1], B.buffer.f[B.fPos + 2]); break; case 6: var b; p.advance(), p.prev = openfl__$internal_renderer_DrawCommandType.DRAW_ELLIPSE, b = p, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.drawEllipse(b.buffer.f[b.fPos], b.buffer.f[b.fPos + 1], b.buffer.f[b.fPos + 2], b.buffer.f[b.fPos + 3]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.drawEllipse(b.buffer.f[b.fPos], b.buffer.f[b.fPos + 1], b.buffer.f[b.fPos + 2], b.buffer.f[b.fPos + 3]); break; case 7: var v; p.advance(), p.prev = openfl__$internal_renderer_DrawCommandType.DRAW_RECT, v = p, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.drawRect(v.buffer.f[v.fPos], v.buffer.f[v.fPos + 1], v.buffer.f[v.fPos + 2], v.buffer.f[v.fPos + 3]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.drawRect(v.buffer.f[v.fPos], v.buffer.f[v.fPos + 1], v.buffer.f[v.fPos + 2], v.buffer.f[v.fPos + 3]); break; case 8: var W; p.advance(), p.prev = openfl__$internal_renderer_DrawCommandType.DRAW_ROUND_RECT, W = p, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.drawRoundRect(W.buffer.f[W.fPos], W.buffer.f[W.fPos + 1], W.buffer.f[W.fPos + 2], W.buffer.f[W.fPos + 3], W.buffer.f[W.fPos + 4], W.buffer.o[W.oPos]), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.drawRoundRect(W.buffer.f[W.fPos], W.buffer.f[W.fPos + 1], W.buffer.f[W.fPos + 2], W.buffer.f[W.fPos + 3], W.buffer.f[W.fPos + 4], W.buffer.o[W.oPos]); break; case 10: var T; openfl__$internal_renderer_canvas_CanvasGraphics.endFill(), openfl__$internal_renderer_canvas_CanvasGraphics.endStroke(), p.advance(), p.prev = openfl__$internal_renderer_DrawCommandType.DRAW_TRIANGLES; var V = (T = p).buffer.o[T.oPos] , R = T.buffer.o[T.oPos + 1] , y = T.buffer.o[T.oPos + 2] , D = null , x = null == openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill; if (x && null != y) throw "__break__"; if (!x) { if (null == y) { y = openfl__$Vector_Vector_$Impl_$.toFloatVector(null); for (var J = 0, z = Std.int(V.get_length() / 2); J < z; ) { var k = J++ , E = V.get(2 * k) / openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill.width; y.push(E); var P = V.get(2 * k + 1) / openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill.height; y.push(P) } } var M = y.get_length() != V.get_length() , w = openfl__$internal_renderer_canvas_CanvasGraphics.normalizeUVT(y, M) , $ = w.max; y = w.uvt, D = $ > 1 ? openfl__$internal_renderer_canvas_CanvasGraphics.createTempPatternCanvas(openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill, openfl__$internal_renderer_canvas_CanvasGraphics.bitmapRepeat, 0 | openfl__$internal_renderer_canvas_CanvasGraphics.bounds.width, 0 | openfl__$internal_renderer_canvas_CanvasGraphics.bounds.height) : openfl__$internal_renderer_canvas_CanvasGraphics.createTempPatternCanvas(openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill, openfl__$internal_renderer_canvas_CanvasGraphics.bitmapRepeat, openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill.width, openfl__$internal_renderer_canvas_CanvasGraphics.bitmapFill.height) } for (var C, G, O, I, H, Y, A, L, X, j, K, q, ee, te, ne, ie, le, ae, se, re, _e, oe, pe, he, de, ue, ce, me, Ue = 0, Qe = R.get_length(); Ue < Qe; ) { switch (C = Ue, G = Ue + 1, O = Ue + 2, I = 2 * R.get(C), H = 2 * R.get(C) + 1, Y = 2 * R.get(G), A = 2 * R.get(G) + 1, L = 2 * R.get(O), X = 2 * R.get(O) + 1, j = V.get(I), K = V.get(H), q = V.get(Y), ee = V.get(A), te = V.get(L), ne = V.get(X), T.buffer.o[T.oPos + 3]) { case 2: if (!((q - j) * (ne - K) - (ee - K) * (te - j) < 0)) { Ue += 3; continue } break; case 0: if ((q - j) * (ne - K) - (ee - K) * (te - j) < 0) { Ue += 3; continue } } x ? (openfl__$internal_renderer_canvas_CanvasGraphics.context.beginPath(), openfl__$internal_renderer_canvas_CanvasGraphics.context.moveTo(j, K), openfl__$internal_renderer_canvas_CanvasGraphics.context.lineTo(q, ee), openfl__$internal_renderer_canvas_CanvasGraphics.context.lineTo(te, ne), openfl__$internal_renderer_canvas_CanvasGraphics.context.closePath(), openfl__$internal_renderer_canvas_CanvasGraphics.hitTesting || openfl__$internal_renderer_canvas_CanvasGraphics.context.fill(), Ue += 3) : (openfl__$internal_renderer_canvas_CanvasGraphics.context.save(), openfl__$internal_renderer_canvas_CanvasGraphics.context.beginPath(), openfl__$internal_renderer_canvas_CanvasGraphics.context.moveTo(j, K), openfl__$internal_renderer_canvas_CanvasGraphics.context.lineTo(q, ee), openfl__$internal_renderer_canvas_CanvasGraphics.context.lineTo(te, ne), openfl__$internal_renderer_canvas_CanvasGraphics.context.closePath(), openfl__$internal_renderer_canvas_CanvasGraphics.context.clip(), ie = y.get(I) * D.width, ae = y.get(Y) * D.width, re = y.get(L) * D.width, le = y.get(H) * D.height, se = y.get(A) * D.height, 0 != (oe = ie * ((_e = y.get(X) * D.height) - se) - ae * _e + re * se + (ae - re) * le) ? (pe = -(le * (te - q) - se * te + _e * q + (se - _e) * j) / oe, he = (se * ne + le * (ee - ne) - _e * ee + (_e - se) * K) / oe, de = (ie * (te - q) - ae * te + re * q + (ae - re) * j) / oe, ue = -(ae * ne + ie * (ee - ne) - re * ee + (re - ae) * K) / oe, ce = (ie * (_e * q - se * te) + le * (ae * te - re * q) + (re * se - ae * _e) * j) / oe, me = (ie * (_e * ee - se * ne) + le * (ae * ne - re * ee) + (re * se - ae * _e) * K) / oe, openfl__$internal_renderer_canvas_CanvasGraphics.context.transform(pe, he, de, ue, ce, me), openfl__$internal_renderer_canvas_CanvasGraphics.context.drawImage(D, 0, 0), openfl__$internal_renderer_canvas_CanvasGraphics.context.restore(), Ue += 3) : Ue += 3) } break; default: p.advance(), p.prev = u } } } catch (e) { if ("__break__" != e) throw e } openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands.get_length() > 0 && openfl__$internal_renderer_canvas_CanvasGraphics.endFill(), openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands.get_length() > 0 && openfl__$internal_renderer_canvas_CanvasGraphics.endStroke(), p.destroy(), e.__bitmap = openfl_display_BitmapData.fromCanvas(e.__canvas) } e.set___dirty(!1) } } , openfl__$internal_renderer_canvas_CanvasGraphics.renderMask = function(e, t) { if (0 != e.__commands.get_length()) { openfl__$internal_renderer_canvas_CanvasGraphics.context = t.context; for (var n = new openfl__$internal_renderer_DrawCommandReader(e.__commands), i = 0, l = e.__commands.types; i < l.length; ) { var a = l[i]; switch (++i, a[1]) { case 3: var s; n.advance(), n.prev = openfl__$internal_renderer_DrawCommandType.CUBIC_CURVE_TO, s = n, openfl__$internal_renderer_canvas_CanvasGraphics.context.bezierCurveTo(s.buffer.f[s.fPos] - 0, s.buffer.f[s.fPos + 1] - 0, s.buffer.f[s.fPos + 2] - 0, s.buffer.f[s.fPos + 3] - 0, s.buffer.f[s.fPos + 4] - 0, s.buffer.f[s.fPos + 5] - 0), s.buffer.f[s.fPos + 4], s.buffer.f[s.fPos + 5]; break; case 4: var r; n.advance(), n.prev = openfl__$internal_renderer_DrawCommandType.CURVE_TO, r = n, openfl__$internal_renderer_canvas_CanvasGraphics.context.quadraticCurveTo(r.buffer.f[r.fPos] - 0, r.buffer.f[r.fPos + 1] - 0, r.buffer.f[r.fPos + 2] - 0, r.buffer.f[r.fPos + 3] - 0), r.buffer.f[r.fPos + 2], r.buffer.f[r.fPos + 3]; break; case 5: var _; n.advance(), n.prev = openfl__$internal_renderer_DrawCommandType.DRAW_CIRCLE, _ = n, openfl__$internal_renderer_canvas_CanvasGraphics.context.arc(_.buffer.f[_.fPos] - 0, _.buffer.f[_.fPos + 1] - 0, _.buffer.f[_.fPos + 2], 0, 2 * Math.PI, !0); break; case 6: var o; n.advance(), n.prev = openfl__$internal_renderer_DrawCommandType.DRAW_ELLIPSE; var p = (o = n).buffer.f[o.fPos] , h = o.buffer.f[o.fPos + 1] , d = o.buffer.f[o.fPos + 2] , u = o.buffer.f[o.fPos + 3] , c = d / 2 * .5522848 , m = u / 2 * .5522848 , U = (p -= 0) + d , Q = (h -= 0) + u , N = p + d / 2 , F = h + u / 2; openfl__$internal_renderer_canvas_CanvasGraphics.context.moveTo(p, F), openfl__$internal_renderer_canvas_CanvasGraphics.context.bezierCurveTo(p, F - m, N - c, h, N, h), openfl__$internal_renderer_canvas_CanvasGraphics.context.bezierCurveTo(N + c, h, U, F - m, U, F), openfl__$internal_renderer_canvas_CanvasGraphics.context.bezierCurveTo(U, F + m, N + c, Q, N, Q), openfl__$internal_renderer_canvas_CanvasGraphics.context.bezierCurveTo(N - c, Q, p, F + m, p, F); break; case 7: var Z; n.advance(), n.prev = openfl__$internal_renderer_DrawCommandType.DRAW_RECT, Z = n, openfl__$internal_renderer_canvas_CanvasGraphics.context.rect(Z.buffer.f[Z.fPos] - 0, Z.buffer.f[Z.fPos + 1] - 0, Z.buffer.f[Z.fPos + 2], Z.buffer.f[Z.fPos + 3]); break; case 8: var f; n.advance(), n.prev = openfl__$internal_renderer_DrawCommandType.DRAW_ROUND_RECT, f = n, openfl__$internal_renderer_canvas_CanvasGraphics.drawRoundRect(f.buffer.f[f.fPos] - 0, f.buffer.f[f.fPos + 1] - 0, f.buffer.f[f.fPos + 2], f.buffer.f[f.fPos + 3], f.buffer.f[f.fPos + 4], f.buffer.o[f.oPos]); break; case 15: var S; n.advance(), n.prev = openfl__$internal_renderer_DrawCommandType.LINE_TO, S = n, openfl__$internal_renderer_canvas_CanvasGraphics.context.lineTo(S.buffer.f[S.fPos] - 0, S.buffer.f[S.fPos + 1] - 0), S.buffer.f[S.fPos], S.buffer.f[S.fPos + 1]; break; case 16: var g; n.advance(), n.prev = openfl__$internal_renderer_DrawCommandType.MOVE_TO, g = n, openfl__$internal_renderer_canvas_CanvasGraphics.context.moveTo(g.buffer.f[g.fPos] - 0, g.buffer.f[g.fPos + 1] - 0), g.buffer.f[g.fPos], g.buffer.f[g.fPos + 1]; break; default: n.advance(), n.prev = a } } n.destroy() } } , openfl__$internal_renderer_canvas_CanvasGraphics.setSmoothing = function(e) { openfl__$internal_renderer_canvas_CanvasGraphics.allowSmoothing || (e = !1), openfl__$internal_renderer_canvas_CanvasGraphics.context.imageSmoothingEnabled != e && (openfl__$internal_renderer_canvas_CanvasGraphics.context.mozImageSmoothingEnabled = e, openfl__$internal_renderer_canvas_CanvasGraphics.context.msImageSmoothingEnabled = e, openfl__$internal_renderer_canvas_CanvasGraphics.context.imageSmoothingEnabled = e) } ; var openfl__$internal_renderer_canvas_CanvasMaskManager = function(e) { openfl__$internal_renderer_AbstractMaskManager.call(this, e) }; $hxClasses["openfl._internal.renderer.canvas.CanvasMaskManager"] = openfl__$internal_renderer_canvas_CanvasMaskManager, openfl__$internal_renderer_canvas_CanvasMaskManager.__name__ = ["openfl", "_internal", "renderer", "canvas", "CanvasMaskManager"], openfl__$internal_renderer_canvas_CanvasMaskManager.__super__ = openfl__$internal_renderer_AbstractMaskManager, openfl__$internal_renderer_canvas_CanvasMaskManager.prototype = $extend(openfl__$internal_renderer_AbstractMaskManager.prototype, { pushMask: function(e) { var t = this.renderSession.context; t.save(); var n = e.__getRenderTransform(); t.setTransform(n.a, n.b, n.c, n.d, n.tx, n.ty), t.beginPath(), e.__renderCanvasMask(this.renderSession), t.clip() }, pushObject: function(e, t) { null == t && (t = !0), t && null != e.__scrollRect && this.pushRect(e.__scrollRect, e.__renderTransform), null != e.__mask && this.pushMask(e.__mask) }, pushRect: function(e, t) { var n = this.renderSession.context; n.save(), n.setTransform(t.a, t.b, t.c, t.d, t.tx, t.ty), n.beginPath(), n.rect(e.x, e.y, e.width, e.height), n.clip() }, popMask: function() { this.renderSession.context.restore() }, popObject: function(e, t) { null == t && (t = !0), null != e.__mask && this.popMask(), t && null != e.__scrollRect && this.popRect() }, popRect: function() { this.renderSession.context.restore() }, __class__: openfl__$internal_renderer_canvas_CanvasMaskManager }); var openfl__$internal_renderer_canvas_CanvasRenderer = function(e, t) { openfl__$internal_renderer_AbstractRenderer.call(this, e), this.context = t, this.renderSession = new openfl__$internal_renderer_RenderSession, this.renderSession.context = t, this.renderSession.renderer = this, this.renderSession.maskManager = new openfl__$internal_renderer_canvas_CanvasMaskManager(this.renderSession) }; $hxClasses["openfl._internal.renderer.canvas.CanvasRenderer"] = openfl__$internal_renderer_canvas_CanvasRenderer, openfl__$internal_renderer_canvas_CanvasRenderer.__name__ = ["openfl", "_internal", "renderer", "canvas", "CanvasRenderer"], openfl__$internal_renderer_canvas_CanvasRenderer.__super__ = openfl__$internal_renderer_AbstractRenderer, openfl__$internal_renderer_canvas_CanvasRenderer.prototype = $extend(openfl__$internal_renderer_AbstractRenderer.prototype, { context: null, clear: function() { for (var e = 0, t = this.stage.stage3Ds; e < t.get_length(); ) { var n = t.get(e); ++e, n.__renderCanvas(this.stage, this.renderSession) } }, render: function() { this.renderSession.allowSmoothing = 2 != this.stage.quality, this.context.setTransform(1, 0, 0, 1, 0, 0), this.context.globalAlpha = 1, !this.stage.__transparent && this.stage.__clearBeforeRender ? (this.context.fillStyle = this.stage.__colorString, this.context.fillRect(0, 0, this.stage.stageWidth * this.stage.window.__scale, this.stage.stageHeight * this.stage.window.__scale)) : this.stage.__transparent && this.stage.__clearBeforeRender && this.context.clearRect(0, 0, this.stage.stageWidth * this.stage.window.__scale, this.stage.stageHeight * this.stage.window.__scale), this.stage.__renderCanvas(this.renderSession) }, __class__: openfl__$internal_renderer_canvas_CanvasRenderer }); var openfl__$internal_renderer_canvas_CanvasShape = function() {}; $hxClasses["openfl._internal.renderer.canvas.CanvasShape"] = openfl__$internal_renderer_canvas_CanvasShape, openfl__$internal_renderer_canvas_CanvasShape.__name__ = ["openfl", "_internal", "renderer", "canvas", "CanvasShape"], openfl__$internal_renderer_canvas_CanvasShape.render = function(e, t) { if (e.__renderable && !(e.__worldAlpha <= 0)) { var n = e.__graphics; if (null != n) { openfl__$internal_renderer_canvas_CanvasGraphics.render(n, t, e.__renderTransform); n.__bounds; var i = n.__width , l = n.__height; if (null != n.__canvas) { var a = t.context , s = e.__scrollRect; if (i > 0 && l > 0 && (null == s || s.width > 0 && s.height > 0)) { t.maskManager.pushObject(e), a.globalAlpha = e.__worldAlpha; var r = n.__worldTransform; t.roundPixels ? a.setTransform(r.a, r.b, r.c, r.d, 0 | r.tx, 0 | r.ty) : a.setTransform(r.a, r.b, r.c, r.d, r.tx, r.ty), a.drawImage(n.__canvas, 0, 0), t.maskManager.popObject(e) } } } } } ; var openfl__$internal_renderer_canvas_CanvasTextField = function() {}; $hxClasses["openfl._internal.renderer.canvas.CanvasTextField"] = openfl__$internal_renderer_canvas_CanvasTextField, openfl__$internal_renderer_canvas_CanvasTextField.__name__ = ["openfl", "_internal", "renderer", "canvas", "CanvasTextField"], openfl__$internal_renderer_canvas_CanvasTextField.render = function(e, t, n) { var i = e.__textEngine , l = i.bounds , a = e.__graphics; if (e.__dirty && (e.__updateLayout(), null == a.__bounds && (a.__bounds = new openfl_geom_Rectangle), a.__bounds.copyFrom(l)), a.__update(), e.__dirty || a.__dirty) { var s = a.__width , r = a.__height; if ((null != i.text && "" != i.text || i.background || i.border || i.__hasFocus || 1 == i.type && i.selectable) && (!(i.width <= 0 || i.height <= 0) || 2 == i.autoSize)) { null == e.__graphics.__canvas && (e.__graphics.__canvas = window.document.createElement("canvas"), e.__graphics.__context = e.__graphics.__canvas.getContext("2d")), openfl__$internal_renderer_canvas_CanvasTextField.context = a.__context; var _ = a.__renderTransform; if (a.__canvas.width = s, a.__canvas.height = r, openfl__$internal_renderer_canvas_CanvasTextField.context.setTransform(_.a, _.b, _.c, _.d, _.tx, _.ty), null == openfl__$internal_renderer_canvas_CanvasTextField.clearRect && (openfl__$internal_renderer_canvas_CanvasTextField.clearRect = "undefined" != typeof navigator && void 0 !== navigator.isCocoonJS), openfl__$internal_renderer_canvas_CanvasTextField.clearRect && openfl__$internal_renderer_canvas_CanvasTextField.context.clearRect(0, 0, a.__canvas.width, a.__canvas.height), null != i.text && "" != i.text || i.__hasFocus) { var o = i.text; !t.allowSmoothing || 0 == i.antiAliasType && 400 == i.sharpness ? (a.__context.mozImageSmoothingEnabled = !1, a.__context.msImageSmoothingEnabled = !1, a.__context.imageSmoothingEnabled = !1) : (a.__context.mozImageSmoothingEnabled = !0, a.__context.msImageSmoothingEnabled = !0, a.__context.imageSmoothingEnabled = !0), (i.border || i.background) && (openfl__$internal_renderer_canvas_CanvasTextField.context.rect(.5, .5, l.width - 1, l.height - 1), i.background && (openfl__$internal_renderer_canvas_CanvasTextField.context.fillStyle = "#" + StringTools.hex(16777215 & i.backgroundColor, 6), openfl__$internal_renderer_canvas_CanvasTextField.context.fill()), i.border && (openfl__$internal_renderer_canvas_CanvasTextField.context.lineWidth = 1, openfl__$internal_renderer_canvas_CanvasTextField.context.strokeStyle = "#" + StringTools.hex(16777215 & i.borderColor, 6), openfl__$internal_renderer_canvas_CanvasTextField.context.stroke())), openfl__$internal_renderer_canvas_CanvasTextField.context.textBaseline = "top", openfl__$internal_renderer_canvas_CanvasTextField.context.textAlign = "start"; for (var p, h = -e.get_scrollH(), d = 0, u = 0, c = e.get_scrollV() - 1; u < c; ) { var m = u++; d -= i.lineHeights.get(m) } for (var U = 0, Q = new EReg("(iPad|iPhone|iPod|Firefox)","g").match(window.navigator.userAgent), N = 0, F = i.layoutGroups; N < F.get_length(); ) { var Z = F.get(N); if (++N, !(Z.lineIndex < e.get_scrollV() - 1)) { if (Z.lineIndex > e.get_scrollV() + i.bottomScrollV - 2) break; if (openfl__$internal_renderer_canvas_CanvasTextField.context.font = openfl__$internal_text_TextEngine.getFont(Z.format), openfl__$internal_renderer_canvas_CanvasTextField.context.fillStyle = "#" + StringTools.hex(16777215 & Z.format.color, 6), Q && (U = .185 * Z.format.size), openfl__$internal_renderer_canvas_CanvasTextField.context.fillText(o.substring(Z.startIndex, Z.endIndex), Z.offsetX + h, Z.offsetY + U + d), e.__caretIndex > -1 && i.selectable) if (e.__selectionIndex == e.__caretIndex) { if (e.__showCursor && Z.startIndex <= e.__caretIndex && Z.endIndex >= e.__caretIndex) { p = 0; for (var f = 0, S = e.__caretIndex - Z.startIndex; f < S; ) { var g = f++; if (Z.advances.length <= g) break; p += Z.advances[g] } openfl__$internal_renderer_canvas_CanvasTextField.context.fillRect(Z.offsetX + p, Z.offsetY, 1, Z.height) } } else if (Z.startIndex <= e.__caretIndex && Z.endIndex >= e.__caretIndex || Z.startIndex <= e.__selectionIndex && Z.endIndex >= e.__selectionIndex || Z.startIndex > e.__caretIndex && Z.endIndex < e.__selectionIndex || Z.startIndex > e.__selectionIndex && Z.endIndex < e.__caretIndex) { var B, b, v = Std.int(Math.min(e.__selectionIndex, e.__caretIndex)), W = Std.int(Math.max(e.__selectionIndex, e.__caretIndex)); Z.startIndex > v && (v = Z.startIndex), Z.endIndex < W && (W = Z.endIndex), B = e.getCharBoundaries(v), W >= i.text.length ? (b = e.getCharBoundaries(i.text.length - 1)).x += b.width + 2 : b = e.getCharBoundaries(W), null != B && null != b && (openfl__$internal_renderer_canvas_CanvasTextField.context.fillStyle = "#000000", openfl__$internal_renderer_canvas_CanvasTextField.context.fillRect(B.x, B.y, b.x - B.x, Z.height), openfl__$internal_renderer_canvas_CanvasTextField.context.fillStyle = "#FFFFFF", openfl__$internal_renderer_canvas_CanvasTextField.context.fillText(o.substring(v, W), h + B.x, Z.offsetY + U + d)) } } } } else if ((i.border || i.background) && (i.border ? openfl__$internal_renderer_canvas_CanvasTextField.context.rect(.5, .5, l.width - 1, l.height - 1) : openfl__$internal_renderer_canvas_CanvasTextField.context.rect(0, 0, l.width, l.height), i.background && (openfl__$internal_renderer_canvas_CanvasTextField.context.fillStyle = "#" + StringTools.hex(16777215 & i.backgroundColor, 6), openfl__$internal_renderer_canvas_CanvasTextField.context.fill()), i.border && (openfl__$internal_renderer_canvas_CanvasTextField.context.lineWidth = 1, openfl__$internal_renderer_canvas_CanvasTextField.context.lineCap = "square", openfl__$internal_renderer_canvas_CanvasTextField.context.strokeStyle = "#" + StringTools.hex(16777215 & i.borderColor, 6), openfl__$internal_renderer_canvas_CanvasTextField.context.stroke())), e.__caretIndex > -1 && i.selectable && e.__showCursor) { for (var T = -e.get_scrollH(), V = 0, R = 0, y = e.get_scrollV() - 1; R < y; ) { var D = R++; V -= i.lineHeights.get(D) } openfl__$internal_renderer_canvas_CanvasTextField.context.beginPath(), openfl__$internal_renderer_canvas_CanvasTextField.context.strokeStyle = "#" + StringTools.hex(16777215 & e.get_defaultTextFormat().color, 6), openfl__$internal_renderer_canvas_CanvasTextField.context.moveTo(T + 2.5, V + 2.5), openfl__$internal_renderer_canvas_CanvasTextField.context.lineWidth = 1, openfl__$internal_renderer_canvas_CanvasTextField.context.lineTo(T + 2.5, V + openfl__$internal_text_TextEngine.getFormatHeight(e.get_defaultTextFormat()) - 1), openfl__$internal_renderer_canvas_CanvasTextField.context.stroke(), openfl__$internal_renderer_canvas_CanvasTextField.context.closePath() } a.__bitmap = openfl_display_BitmapData.fromCanvas(e.__graphics.__canvas), a.__visible = !0, e.__dirty = !1, a.set___dirty(!1) } else e.__graphics.__canvas = null, e.__graphics.__context = null, e.__graphics.__bitmap = null, e.__graphics.set___dirty(!1), e.__dirty = !1 } } ; var openfl__$internal_renderer_canvas_CanvasTilemap = function() {}; $hxClasses["openfl._internal.renderer.canvas.CanvasTilemap"] = openfl__$internal_renderer_canvas_CanvasTilemap, openfl__$internal_renderer_canvas_CanvasTilemap.__name__ = ["openfl", "_internal", "renderer", "canvas", "CanvasTilemap"], openfl__$internal_renderer_canvas_CanvasTilemap.render = function(e, t) { if (e.__renderable && 0 != e.__tiles.length && !(e.__worldAlpha <= 0)) { var n = t.context; t.maskManager.pushObject(e); var i = openfl_geom_Rectangle.__temp; i.setTo(0, 0, e.__width, e.__height), t.maskManager.pushRect(i, e.__renderTransform); var l = e.__renderTransform , a = t.roundPixels; t.allowSmoothing && e.smoothing || (n.mozImageSmoothingEnabled = !1, n.msImageSmoothingEnabled = !1, n.imageSmoothingEnabled = !1); var s, r, _, o, p, h, d, u = e.tileset, c = null, m = null; r = (s = e.__tiles).length; for (var U = openfl_geom_Matrix.__temp, Q = 0; Q < r; ) { o = (_ = s[Q++]).alpha, !_.visible || o <= 0 || null != (p = null != _.tileset ? _.tileset : u) && null != (h = p.__data[_.id]) && null != (d = p.bitmapData) && (d != c && (null == d.image.buffer.__srcImage && lime_graphics_utils_ImageCanvasUtil.convertToCanvas(d.image), m = d.image.get_src(), c = d), n.globalAlpha = e.__worldAlpha * o, U.setTo(1, 0, 0, 1, -_.originX, -_.originY), U.concat(_.matrix), U.concat(l), a ? n.setTransform(U.a, U.b, U.c, U.d, 0 | U.tx, 0 | U.ty) : n.setTransform(U.a, U.b, U.c, U.d, U.tx, U.ty), n.drawImage(m, h.x, h.y, h.width, h.height, 0, 0, h.width, h.height)) } t.allowSmoothing && e.smoothing || (n.mozImageSmoothingEnabled = !0, n.msImageSmoothingEnabled = !0, n.imageSmoothingEnabled = !0), t.maskManager.popRect(), t.maskManager.popObject(e) } } ; var openfl__$internal_renderer_dom_DOMMaskManager = function(e) { openfl__$internal_renderer_AbstractMaskManager.call(this, e), this.clipRects = [], this.numClipRects = 0 }; $hxClasses["openfl._internal.renderer.dom.DOMMaskManager"] = openfl__$internal_renderer_dom_DOMMaskManager, openfl__$internal_renderer_dom_DOMMaskManager.__name__ = ["openfl", "_internal", "renderer", "dom", "DOMMaskManager"], openfl__$internal_renderer_dom_DOMMaskManager.__super__ = openfl__$internal_renderer_AbstractMaskManager, openfl__$internal_renderer_dom_DOMMaskManager.prototype = $extend(openfl__$internal_renderer_AbstractMaskManager.prototype, { currentClipRect: null, clipRects: null, numClipRects: null, pushMask: function(e) { this.pushRect(e.getBounds(e), e.__getRenderTransform()) }, pushObject: function(e, t) { null == t && (t = !0), t && null != e.__scrollRect && this.pushRect(e.__scrollRect, e.__renderTransform), null != e.__mask && this.pushMask(e.__mask) }, pushRect: function(e, t) { this.numClipRects == this.clipRects.length && (this.clipRects[this.numClipRects] = new openfl_geom_Rectangle); var n = this.clipRects[this.numClipRects]; if (e.__transform(n, t), this.numClipRects > 0) { var i = this.clipRects[this.numClipRects - 1]; n.__contract(i.x, i.y, i.width, i.height) } n.height < 0 && (n.height = 0), n.width < 0 && (n.width = 0), this.currentClipRect = n, this.numClipRects++ }, popMask: function() { this.popRect() }, popObject: function(e, t) { null == t && (t = !0), null != e.__mask && this.popMask(), t && null != e.__scrollRect && this.popRect() }, popRect: function() { this.numClipRects > 0 && (this.numClipRects--, this.numClipRects > 0 ? this.currentClipRect = this.clipRects[this.numClipRects - 1] : this.currentClipRect = null) }, updateClip: function(e) { if (null == this.currentClipRect) e.__worldClipChanged = null != e.__worldClip, e.__worldClip = null; else { null == e.__worldClip && (e.__worldClip = new openfl_geom_Rectangle); var t = openfl_geom_Rectangle.__temp , n = openfl_geom_Matrix.__temp; n.copyFrom(e.__renderTransform), n.invert(), this.currentClipRect.__transform(t, n), t.equals(e.__worldClip) ? e.__worldClipChanged = !1 : (e.__worldClip.copyFrom(t), e.__worldClipChanged = !0) } }, __class__: openfl__$internal_renderer_dom_DOMMaskManager }); var openfl_geom_Rectangle = function(e, t, n, i) { null == i && (i = 0), null == n && (n = 0), null == t && (t = 0), null == e && (e = 0), this.x = e, this.y = t, this.width = n, this.height = i }; $hxClasses["openfl.geom.Rectangle"] = openfl_geom_Rectangle, openfl_geom_Rectangle.__name__ = ["openfl", "geom", "Rectangle"], openfl_geom_Rectangle.prototype = { height: null, width: null, x: null, y: null, clone: function() { return new openfl_geom_Rectangle(this.x,this.y,this.width,this.height) }, contains: function(e, t) { return e >= this.x && t >= this.y && e < this.get_right() && t < this.get_bottom() }, containsPoint: function(e) { return this.contains(e.x, e.y) }, copyFrom: function(e) { this.x = e.x, this.y = e.y, this.width = e.width, this.height = e.height }, equals: function(e) { return e == this || null != e && this.x == e.x && this.y == e.y && this.width == e.width && this.height == e.height }, setTo: function(e, t, n, i) { this.x = e, this.y = t, this.width = n, this.height = i }, __contract: function(e, t, n, i) { if (0 != this.width || 0 != this.height) { var l = 0 , a = 0 , s = 0 , r = 0; this.x < e && (l = e - this.x), this.y < t && (a = t - this.y), this.get_right() > e + n && (s = e + n - this.get_right()), this.get_bottom() > t + i && (r = t + i - this.get_bottom()), this.x += l, this.y += a, this.width += s - l, this.height += r - a } }, __expand: function(e, t, n, i) { if (0 == this.width && 0 == this.height) return this.x = e, this.y = t, this.width = n, void (this.height = i); var l = this.get_right() , a = this.get_bottom(); this.x > e && (this.x = e, this.width = l - e), this.y > t && (this.y = t, this.height = a - t), l < e + n && (this.width = e + n - this.x), a < t + i && (this.height = t + i - this.y) }, __toLimeRectangle: function() { return null == openfl_geom_Rectangle.__limeRectangle && (openfl_geom_Rectangle.__limeRectangle = new lime_math_Rectangle), openfl_geom_Rectangle.__limeRectangle.setTo(this.x, this.y, this.width, this.height), openfl_geom_Rectangle.__limeRectangle }, __transform: function(e, t) { var n = t.a * this.x + t.c * this.y , i = n , l = t.b * this.x + t.d * this.y , a = l , s = t.a * (this.x + this.width) + t.c * this.y , r = t.b * (this.x + this.width) + t.d * this.y; s < n && (n = s), r < l && (l = r), s > i && (i = s), r > a && (a = r), s = t.a * (this.x + this.width) + t.c * (this.y + this.height), r = t.b * (this.x + this.width) + t.d * (this.y + this.height), s < n && (n = s), r < l && (l = r), s > i && (i = s), r > a && (a = r), s = t.a * this.x + t.c * (this.y + this.height), r = t.b * this.x + t.d * (this.y + this.height), s < n && (n = s), r < l && (l = r), s > i && (i = s), r > a && (a = r), e.setTo(n + t.tx, l + t.ty, i - n, a - l) }, get_bottom: function() { return this.y + this.height }, get_left: function() { return this.x }, get_right: function() { return this.x + this.width }, get_top: function() { return this.y }, __class__: openfl_geom_Rectangle, __properties__: { get_top: "get_top", get_right: "get_right", get_left: "get_left", get_bottom: "get_bottom" } }; var openfl__$internal_renderer_opengl_GLBitmap = function() {}; $hxClasses["openfl._internal.renderer.opengl.GLBitmap"] = openfl__$internal_renderer_opengl_GLBitmap, openfl__$internal_renderer_opengl_GLBitmap.__name__ = ["openfl", "_internal", "renderer", "opengl", "GLBitmap"], openfl__$internal_renderer_opengl_GLBitmap.render = function(e, t) { if (e.__renderable && !(e.__worldAlpha <= 0) && null != e.bitmapData && e.bitmapData.__isValid) { var n = t.renderer , i = t.gl; t.blendModeManager.setBlendMode(e.get_blendMode()), t.maskManager.pushObject(e); var l = t.filterManager.pushObject(e); l.get_data().uImage0.input = e.bitmapData, l.get_data().uImage0.smoothing = t.allowSmoothing && (e.smoothing || t.upscaled), l.get_data().uMatrix.value = n.getMatrix(e.__renderTransform), t.shaderManager.setShader(l), i.bindBuffer(i.ARRAY_BUFFER, e.bitmapData.getBuffer(i, e.__worldAlpha)), i.vertexAttribPointer(l.get_data().aPosition.index, 3, i.FLOAT, !1, 24, 0), i.vertexAttribPointer(l.get_data().aTexCoord.index, 2, i.FLOAT, !1, 24, 12), i.vertexAttribPointer(l.get_data().aAlpha.index, 1, i.FLOAT, !1, 24, 20), i.drawArrays(i.TRIANGLE_STRIP, 0, 4), t.filterManager.popObject(e), t.maskManager.popObject(e) } } ; var openfl__$internal_renderer_opengl_GLBlendModeManager = function(e) { openfl__$internal_renderer_AbstractBlendModeManager.call(this), this.gl = e, this.setBlendMode(10), e.enable(e.BLEND) }; $hxClasses["openfl._internal.renderer.opengl.GLBlendModeManager"] = openfl__$internal_renderer_opengl_GLBlendModeManager, openfl__$internal_renderer_opengl_GLBlendModeManager.__name__ = ["openfl", "_internal", "renderer", "opengl", "GLBlendModeManager"], openfl__$internal_renderer_opengl_GLBlendModeManager.__super__ = openfl__$internal_renderer_AbstractBlendModeManager, openfl__$internal_renderer_opengl_GLBlendModeManager.prototype = $extend(openfl__$internal_renderer_AbstractBlendModeManager.prototype, { currentBlendMode: null, gl: null, setBlendMode: function(e) { if (this.currentBlendMode != e) switch (this.currentBlendMode = e, e) { case 0: this.gl.blendEquation(this.gl.FUNC_ADD), this.gl.blendFunc(this.gl.ONE, this.gl.ONE); break; case 9: this.gl.blendEquation(this.gl.FUNC_ADD), this.gl.blendFunc(this.gl.DST_COLOR, this.gl.ONE_MINUS_SRC_ALPHA); break; case 12: this.gl.blendEquation(this.gl.FUNC_ADD), this.gl.blendFunc(this.gl.ONE, this.gl.ONE_MINUS_SRC_COLOR); break; case 14: this.gl.blendEquation(this.gl.FUNC_REVERSE_SUBTRACT), this.gl.blendFunc(this.gl.ONE, this.gl.ONE); break; default: this.gl.blendEquation(this.gl.FUNC_ADD), this.gl.blendFunc(this.gl.ONE, this.gl.ONE_MINUS_SRC_ALPHA) } }, __class__: openfl__$internal_renderer_opengl_GLBlendModeManager }); var openfl__$internal_renderer_opengl_GLDisplayObject = function() {}; $hxClasses["openfl._internal.renderer.opengl.GLDisplayObject"] = openfl__$internal_renderer_opengl_GLDisplayObject, openfl__$internal_renderer_opengl_GLDisplayObject.__name__ = ["openfl", "_internal", "renderer", "opengl", "GLDisplayObject"], openfl__$internal_renderer_opengl_GLDisplayObject.render = function(e, t) { if ((null != e.opaqueBackground || null != e.__graphics) && e.__renderable && !(e.__worldAlpha <= 0)) { if (null != e.opaqueBackground && e.get_width() > 0 && e.get_height() > 0) { t.maskManager.pushObject(e); var n = t.gl , i = openfl_geom_Rectangle.__temp; i.setTo(0, 0, e.get_width(), e.get_height()), t.maskManager.pushRect(i, e.__renderTransform); var l = e.opaqueBackground; n.clearColor((l >> 16 & 255) / 255, (l >> 8 & 255) / 255, (255 & l) / 255, 1), n.clear(n.COLOR_BUFFER_BIT), t.maskManager.popRect(), t.maskManager.popObject(e) } null != e.__graphics && openfl__$internal_renderer_opengl_GLShape.render(e, t) } } ; var openfl__$internal_renderer_opengl_GLFilterManager = function(e, t) { openfl__$internal_renderer_AbstractFilterManager.call(this, t), this.renderer = e, this.gl = t.gl, this.filterDepth = 0, this.matrix = new openfl_geom_Matrix }; $hxClasses["openfl._internal.renderer.opengl.GLFilterManager"] = openfl__$internal_renderer_opengl_GLFilterManager, openfl__$internal_renderer_opengl_GLFilterManager.__name__ = ["openfl", "_internal", "renderer", "opengl", "GLFilterManager"], openfl__$internal_renderer_opengl_GLFilterManager.__super__ = openfl__$internal_renderer_AbstractFilterManager, openfl__$internal_renderer_opengl_GLFilterManager.prototype = $extend(openfl__$internal_renderer_AbstractFilterManager.prototype, { filterDepth: null, gl: null, matrix: null, renderer: null, pushObject: function(e) { if (null != e.__filters && e.__filters.length > 0) { if (1 == e.__filters.length && 0 == e.__filters[0].__numPasses) return e.__filters[0].__initShader(this.renderSession, 0); this.renderer.getRenderTarget(!0), this.filterDepth++ } return this.renderSession.shaderManager.defaultShader }, popObject: function(e) { if (null != e.__filters && e.__filters.length > 0) { var t = 0; if (e.__filters.length > 1 || e.__filters[0].__numPasses > 0) { t = e.__filters.length; for (var n = 0, i = e.__filters; n < i.length; ) { var l = i[n]; ++n, l.__numPasses > 0 ? t += l.__numPasses - 1 : t += 0 } } if (t > 0) for (var a, s, r = 0, _ = e.__filters; r < _.length; ) { var o = _[r]; if (++r, o.__numPasses > 0) for (var p = 0, h = o.__numPasses; p < h; ) { var d = p++; a = this.renderer.currentRenderTarget, this.renderer.getRenderTarget(!0), s = o.__initShader(this.renderSession, d), this.renderPass(a, s) } else a = this.renderer.currentRenderTarget, this.renderer.getRenderTarget(!0), s = o.__initShader(this.renderSession, 0), this.renderPass(a, s); this.filterDepth--, this.renderer.getRenderTarget(this.filterDepth > 0), this.renderPass(this.renderer.currentRenderTarget, this.renderSession.shaderManager.defaultShader) } else this.filterDepth-- } }, renderPass: function(e, t) { t.get_data().uImage0.input = e, t.get_data().uImage0.smoothing = this.renderSession.allowSmoothing && this.renderSession.upscaled, t.get_data().uMatrix.value = this.renderer.getMatrix(this.matrix), this.renderSession.shaderManager.setShader(t), this.gl.bindBuffer(this.gl.ARRAY_BUFFER, e.getBuffer(this.gl, 1)), this.gl.vertexAttribPointer(t.get_data().aPosition.index, 3, this.gl.FLOAT, !1, 24, 0), this.gl.vertexAttribPointer(t.get_data().aTexCoord.index, 2, this.gl.FLOAT, !1, 24, 12), this.gl.vertexAttribPointer(t.get_data().aAlpha.index, 1, this.gl.FLOAT, !1, 24, 20), this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, 4) }, __class__: openfl__$internal_renderer_opengl_GLFilterManager }); var openfl__$internal_renderer_opengl_GLMaskManager = function(e) { openfl__$internal_renderer_AbstractMaskManager.call(this, e), this.gl = e.gl, this.clipRects = [], this.numClipRects = 0, this.tempRect = new openfl_geom_Rectangle }; $hxClasses["openfl._internal.renderer.opengl.GLMaskManager"] = openfl__$internal_renderer_opengl_GLMaskManager, openfl__$internal_renderer_opengl_GLMaskManager.__name__ = ["openfl", "_internal", "renderer", "opengl", "GLMaskManager"], openfl__$internal_renderer_opengl_GLMaskManager.__super__ = openfl__$internal_renderer_AbstractMaskManager, openfl__$internal_renderer_opengl_GLMaskManager.prototype = $extend(openfl__$internal_renderer_AbstractMaskManager.prototype, { clipRects: null, gl: null, numClipRects: null, tempRect: null, pushMask: function(e) { this.pushRect(e.getBounds(e), e.__getRenderTransform()) }, pushObject: function(e, t) { null == t && (t = !0), t && null != e.__scrollRect && this.pushRect(e.__scrollRect, e.__renderTransform), null != e.__mask && this.pushMask(e.__mask) }, pushRect: function(e, t) { openfl_Lib.current.stage; this.numClipRects == this.clipRects.length && (this.clipRects[this.numClipRects] = new openfl_geom_Rectangle); var n = this.clipRects[this.numClipRects]; if (e.__transform(n, t), this.numClipRects > 0) { var i = this.clipRects[this.numClipRects - 1]; n.__contract(i.x, i.y, i.width, i.height) } n.height < 0 && (n.height = 0), n.width < 0 && (n.width = 0), this.scissorRect(n), this.numClipRects++ }, popMask: function() { this.popRect() }, popObject: function(e, t) { null == t && (t = !0), null != e.__mask && this.popMask(), t && null != e.__scrollRect && this.popRect() }, popRect: function() { this.numClipRects > 0 && (this.numClipRects--, this.numClipRects > 0 ? this.scissorRect(this.clipRects[this.numClipRects - 1]) : this.scissorRect()) }, scissorRect: function(e) { if (null != e) { var t = this.renderSession.renderer; this.gl.enable(this.gl.SCISSOR_TEST); var n = Math.floor(e.x) , i = Math.floor(t.height - e.y - e.height) , l = Math.ceil(e.width) , a = Math.ceil(e.height); l < 0 && (l = 0), a < 0 && (a = 0), this.gl.scissor(n, i, l, a) } else this.gl.disable(this.gl.SCISSOR_TEST) }, __class__: openfl__$internal_renderer_opengl_GLMaskManager }); var openfl__$internal_renderer_opengl_GLRenderer = function(e, t, n) { null == n && (n = !0), openfl__$internal_renderer_AbstractRenderer.call(this, e), this.gl = t, this.flipped = n, this.matrix = lime_math__$Matrix4_Matrix4_$Impl_$._new(), this.values = [], this.renderSession = new openfl__$internal_renderer_RenderSession, this.renderSession.gl = t, this.renderSession.renderer = this, this.renderSession.blendModeManager = new openfl__$internal_renderer_opengl_GLBlendModeManager(t), this.renderSession.filterManager = new openfl__$internal_renderer_opengl_GLFilterManager(this,this.renderSession), this.renderSession.shaderManager = new openfl__$internal_renderer_opengl_GLShaderManager(t), this.renderSession.maskManager = new openfl__$internal_renderer_opengl_GLMaskManager(this.renderSession), null != e.window && (null == e.stage3Ds.get(0).context3D && e.stage3Ds.get(0).__createContext(e, this.renderSession), this.resize(Math.ceil(e.window.__width * e.window.__scale), Math.ceil(e.window.__height * e.window.__scale))) }; $hxClasses["openfl._internal.renderer.opengl.GLRenderer"] = openfl__$internal_renderer_opengl_GLRenderer, openfl__$internal_renderer_opengl_GLRenderer.__name__ = ["openfl", "_internal", "renderer", "opengl", "GLRenderer"], openfl__$internal_renderer_opengl_GLRenderer.__super__ = openfl__$internal_renderer_AbstractRenderer, openfl__$internal_renderer_opengl_GLRenderer.prototype = $extend(openfl__$internal_renderer_AbstractRenderer.prototype, { projection: null, projectionFlipped: null, currentRenderTarget: null, displayHeight: null, displayMatrix: null, displayWidth: null, flipped: null, gl: null, matrix: null, renderTargetA: null, renderTargetB: null, offsetX: null, offsetY: null, values: null, clear: function() { this.stage.__transparent ? this.gl.clearColor(0, 0, 0, 0) : this.gl.clearColor(this.stage.__colorSplit[0], this.stage.__colorSplit[1], this.stage.__colorSplit[2], 1), this.gl.clear(this.gl.COLOR_BUFFER_BIT); for (var e = 0, t = this.stage.stage3Ds; e < t.get_length(); ) { var n = t.get(e); ++e, n.__renderGL(this.stage, this.renderSession) } }, getMatrix: function(e) { var t = openfl_geom_Matrix.__temp; t.copyFrom(e), t.concat(this.displayMatrix), this.renderSession.roundPixels && (t.tx = Math.round(t.tx), t.ty = Math.round(t.ty)), lime_math__$Matrix4_Matrix4_$Impl_$.identity(this.matrix), lime_math__$Matrix4_Matrix4_$Impl_$.set(this.matrix, 0, t.a), lime_math__$Matrix4_Matrix4_$Impl_$.set(this.matrix, 1, t.b), lime_math__$Matrix4_Matrix4_$Impl_$.set(this.matrix, 4, t.c), lime_math__$Matrix4_Matrix4_$Impl_$.set(this.matrix, 5, t.d), lime_math__$Matrix4_Matrix4_$Impl_$.set(this.matrix, 12, t.tx), lime_math__$Matrix4_Matrix4_$Impl_$.set(this.matrix, 13, t.ty), lime_math__$Matrix4_Matrix4_$Impl_$.append(this.matrix, this.flipped ? this.projectionFlipped : this.projection); for (var n = 0; n < 16; ) { var i = n++; this.values[i] = lime_math__$Matrix4_Matrix4_$Impl_$.get(this.matrix, i) } return this.values }, getRenderTarget: function(e) { e ? (null == this.renderTargetA && (this.renderTargetA = openfl_display_BitmapData.fromTexture(this.stage.stage3Ds.get(0).context3D.createRectangleTexture(this.width, this.height, 1, !0)), this.gl.bindTexture(this.gl.TEXTURE_2D, this.renderTargetA.getTexture(this.gl)), this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_S, this.gl.CLAMP_TO_EDGE), this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_T, this.gl.CLAMP_TO_EDGE)), null == this.renderTargetB && (this.renderTargetB = openfl_display_BitmapData.fromTexture(this.stage.stage3Ds.get(0).context3D.createRectangleTexture(this.width, this.height, 1, !0)), this.gl.bindTexture(this.gl.TEXTURE_2D, this.renderTargetB.getTexture(this.gl)), this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_S, this.gl.CLAMP_TO_EDGE), this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_T, this.gl.CLAMP_TO_EDGE)), this.currentRenderTarget == this.renderTargetA ? this.currentRenderTarget = this.renderTargetB : this.currentRenderTarget = this.renderTargetA, this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, this.currentRenderTarget.__getFramebuffer(this.gl)), this.gl.viewport(0, 0, this.width, this.height), this.gl.clearColor(0, 0, 0, 0), this.gl.clear(this.gl.COLOR_BUFFER_BIT), this.flipped = !1) : (this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null), this.flipped = !0) }, render: function() { this.gl.viewport(this.offsetX, this.offsetY, this.displayWidth, this.displayHeight), this.renderSession.allowSmoothing = 2 != this.stage.quality, this.renderSession.upscaled = 1 != this.displayMatrix.a || 1 != this.displayMatrix.d, this.stage.__renderGL(this.renderSession), (this.offsetX > 0 || this.offsetY > 0) && (this.gl.clearColor(0, 0, 0, 1), this.gl.enable(this.gl.SCISSOR_TEST), this.offsetX > 0 && (this.gl.scissor(0, 0, this.offsetX, this.height), this.gl.clear(this.gl.COLOR_BUFFER_BIT), this.gl.scissor(this.offsetX + this.displayWidth, 0, this.width, this.height), this.gl.clear(this.gl.COLOR_BUFFER_BIT)), this.offsetY > 0 && (this.gl.scissor(0, 0, this.width, this.offsetY), this.gl.clear(this.gl.COLOR_BUFFER_BIT), this.gl.scissor(0, this.offsetY + this.displayHeight, this.width, this.height), this.gl.clear(this.gl.COLOR_BUFFER_BIT)), this.gl.disable(this.gl.SCISSOR_TEST)) }, resize: function(e, t) { openfl__$internal_renderer_AbstractRenderer.prototype.resize.call(this, e, t), null == this.renderTargetA || this.renderTargetA.width == e && this.renderTargetA.height == t || (this.renderTargetA = openfl_display_BitmapData.fromTexture(this.stage.stage3Ds.get(0).context3D.createRectangleTexture(e, t, 1, !0)), this.gl.bindTexture(this.gl.TEXTURE_2D, this.renderTargetA.getTexture(this.gl)), this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_S, this.gl.CLAMP_TO_EDGE), this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_T, this.gl.CLAMP_TO_EDGE)), null == this.renderTargetB || this.renderTargetB.width == e && this.renderTargetB.height == t || (this.renderTargetB = openfl_display_BitmapData.fromTexture(this.stage.stage3Ds.get(0).context3D.createRectangleTexture(e, t, 1, !0)), this.gl.bindTexture(this.gl.TEXTURE_2D, this.renderTargetB.getTexture(this.gl)), this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_S, this.gl.CLAMP_TO_EDGE), this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_T, this.gl.CLAMP_TO_EDGE)), this.displayMatrix = this.stage.__displayMatrix, this.offsetX = Math.round(this.displayMatrix.__transformX(0, 0)), this.offsetY = Math.round(this.displayMatrix.__transformY(0, 0)), this.displayWidth = Math.round(this.displayMatrix.__transformX(this.stage.stageWidth, 0) - this.offsetX), this.displayHeight = Math.round(this.displayMatrix.__transformY(0, this.stage.stageHeight) - this.offsetY), this.projection = lime_math__$Matrix4_Matrix4_$Impl_$.createOrtho(this.offsetX, this.displayWidth + this.offsetX, this.offsetY, this.displayHeight + this.offsetY, -1e3, 1e3), this.projectionFlipped = lime_math__$Matrix4_Matrix4_$Impl_$.createOrtho(this.offsetX, this.displayWidth + this.offsetX, this.displayHeight + this.offsetY, this.offsetY, -1e3, 1e3) }, __class__: openfl__$internal_renderer_opengl_GLRenderer }); var openfl__$internal_renderer_opengl_GLShaderManager = function(e) { openfl__$internal_renderer_AbstractShaderManager.call(this), this.gl = e, this.defaultShader = new openfl_display_Shader, this.defaultShader.gl = e, this.defaultShader.__init() }; $hxClasses["openfl._internal.renderer.opengl.GLShaderManager"] = openfl__$internal_renderer_opengl_GLShaderManager, openfl__$internal_renderer_opengl_GLShaderManager.__name__ = ["openfl", "_internal", "renderer", "opengl", "GLShaderManager"], openfl__$internal_renderer_opengl_GLShaderManager.__super__ = openfl__$internal_renderer_AbstractShaderManager, openfl__$internal_renderer_opengl_GLShaderManager.prototype = $extend(openfl__$internal_renderer_AbstractShaderManager.prototype, { gl: null, setShader: function(e) { if (this.currentShader != e) { if (null != this.currentShader && this.currentShader.__disable(), null == e) return this.currentShader = null, void this.gl.useProgram(null); this.currentShader = e, null == this.currentShader.gl && (this.currentShader.gl = this.gl, this.currentShader.__init()), this.gl.useProgram(e.glProgram), this.currentShader.__enable(), this.currentShader.__update() } else null != this.currentShader && this.currentShader.__update() }, __class__: openfl__$internal_renderer_opengl_GLShaderManager }); var openfl__$internal_renderer_opengl_GLShape = function() {}; $hxClasses["openfl._internal.renderer.opengl.GLShape"] = openfl__$internal_renderer_opengl_GLShape, openfl__$internal_renderer_opengl_GLShape.__name__ = ["openfl", "_internal", "renderer", "opengl", "GLShape"], openfl__$internal_renderer_opengl_GLShape.render = function(e, t) { if (e.__renderable && !(e.__worldAlpha <= 0)) { var n = e.__graphics; if (null != n) { openfl__$internal_renderer_canvas_CanvasGraphics.render(n, t, e.__renderTransform); n.__bounds; if (null != n.__bitmap && n.__visible) { var i = t.renderer , l = t.gl; t.blendModeManager.setBlendMode(e.get_blendMode()), t.maskManager.pushObject(e); var a = t.filterManager.pushObject(e); a.get_data().uImage0.input = n.__bitmap, a.get_data().uImage0.smoothing = t.allowSmoothing, a.get_data().uMatrix.value = i.getMatrix(n.__worldTransform), t.shaderManager.setShader(a), l.bindBuffer(l.ARRAY_BUFFER, n.__bitmap.getBuffer(l, e.__worldAlpha)), l.vertexAttribPointer(a.get_data().aPosition.index, 3, l.FLOAT, !1, 24, 0), l.vertexAttribPointer(a.get_data().aTexCoord.index, 2, l.FLOAT, !1, 24, 12), l.vertexAttribPointer(a.get_data().aAlpha.index, 1, l.FLOAT, !1, 24, 20), l.drawArrays(l.TRIANGLE_STRIP, 0, 4), t.filterManager.popObject(e), t.maskManager.popObject(e) } } } } ; var openfl__$internal_renderer_opengl_GLTilemap = function() {}; $hxClasses["openfl._internal.renderer.opengl.GLTilemap"] = openfl__$internal_renderer_opengl_GLTilemap, openfl__$internal_renderer_opengl_GLTilemap.__name__ = ["openfl", "_internal", "renderer", "opengl", "GLTilemap"], openfl__$internal_renderer_opengl_GLTilemap.render = function(e, t) { if (e.__renderable && 0 != e.__tiles.length && !(e.__worldAlpha <= 0)) { var n = t.renderer , i = t.gl; t.blendModeManager.setBlendMode(e.get_blendMode()), t.maskManager.pushObject(e); var l = t.filterManager.pushObject(e) , a = openfl_geom_Rectangle.__temp; a.setTo(0, 0, e.__width, e.__height), t.maskManager.pushRect(a, e.__renderTransform), l.get_data().uMatrix.value = n.getMatrix(e.__renderTransform), l.get_data().uImage0.smoothing = t.allowSmoothing && e.smoothing; var s, r, _, o, p, h, d, u, c, m, U, Q, N, F, Z, f, S, g, B = e.tileset, b = e.__worldAlpha, v = e.__worldAlpha != e.__cacheAlpha, W = 0, T = 0; if (r = (s = e.__tiles).length, null == (_ = e.__bufferData) || e.__dirty || _.length != 30 * r) { if (o = 0, null == _) { var V = 30 * r; _ = null != V ? new Float32Array(V) : null } else if (_.length != 30 * r) { var R; e.__dirty || (o = _.length / 30 | 0); var y = 30 * r; R = null != y ? new Float32Array(y) : null, _.length <= R.length ? R.set(_) : R.set(_.subarray(0, R.length)), _ = R } for (var D = o; D < r; ) { var x = D++; openfl__$internal_renderer_opengl_GLTilemap.__updateTileAlpha(s[x], b, 30 * x, _), null != (u = null != s[x].tileset ? s[x].tileset : e.tileset) && openfl__$internal_renderer_opengl_GLTilemap.__updateTileUV(s[x], u, 30 * x, _) } e.__bufferData = _ } null == e.__buffer && (e.__buffer = i.createBuffer()), i.bindBuffer(i.ARRAY_BUFFER, e.__buffer); for (var J = 0, z = 0; z < r; ) { var k = z++; p = 30 * k, d = (h = s[k]).alpha, !h.visible || d <= 0 ? openfl__$internal_renderer_opengl_GLTilemap.__skipTile(h, k, p, _) : null != (u = null != h.tileset ? h.tileset : B) && null != (c = u.__data[h.id]) ? (W = c.width, T = c.height, (v || h.__alphaDirty) && openfl__$internal_renderer_opengl_GLTilemap.__updateTileAlpha(h, b, p, _), h.__sourceDirty && openfl__$internal_renderer_opengl_GLTilemap.__updateTileUV(h, u, p, _), h.__transformDirty ? ((m = openfl_geom_Matrix.__temp).setTo(1, 0, 0, 1, -h.originX, -h.originY), m.concat(h.matrix), U = h.__transform[0] = 0 * m.a + 0 * m.c + m.tx, Q = h.__transform[1] = 0 * m.b + 0 * m.d + m.ty, N = h.__transform[2] = W * m.a + 0 * m.c + m.tx, F = h.__transform[3] = W * m.b + 0 * m.d + m.ty, Z = h.__transform[4] = 0 * m.a + T * m.c + m.tx, f = h.__transform[5] = 0 * m.b + T * m.d + m.ty, S = h.__transform[6] = W * m.a + T * m.c + m.tx, g = h.__transform[7] = W * m.b + T * m.d + m.ty, h.__transformDirty = !1) : (U = h.__transform[0], Q = h.__transform[1], N = h.__transform[2], F = h.__transform[3], Z = h.__transform[4], f = h.__transform[5], S = h.__transform[6], g = h.__transform[7]), _[p] = U, _[p + 1] = Q, _[p + 5] = N, _[p + 6] = F, _[p + 10] = Z, _[p + 11] = f, _[p + 15] = Z, _[p + 16] = f, _[p + 20] = N, _[p + 21] = F, _[p + 25] = S, _[p + 26] = g, J = k, openfl__$internal_renderer_opengl_GLTilemap.__skippedTiles.h[k] = !1) : openfl__$internal_renderer_opengl_GLTilemap.__skipTile(h, k, p, _) } i.bufferData(i.ARRAY_BUFFER, _, i.DYNAMIC_DRAW), i.vertexAttribPointer(l.get_data().aPosition.index, 2, i.FLOAT, !1, 20, 0), i.vertexAttribPointer(l.get_data().aTexCoord.index, 2, i.FLOAT, !1, 20, 8), i.vertexAttribPointer(l.get_data().aAlpha.index, 1, i.FLOAT, !1, 20, 16); for (var E = null, P = 0, M = 0, w = J + 1; M < w; ) { var $ = M++; openfl__$internal_renderer_opengl_GLTilemap.__skippedTiles.h[$] || ((u = null != (h = s[$]).tileset ? h.tileset : B).bitmapData != E && (null != E && (l.get_data().uImage0.input = E, t.shaderManager.setShader(l), i.drawArrays(i.TRIANGLES, 6 * P, 6 * ($ - P))), E = u.bitmapData, P = $), $ == J && null != u.bitmapData && (l.get_data().uImage0.input = u.bitmapData, t.shaderManager.setShader(l), i.drawArrays(i.TRIANGLES, 6 * P, 6 * ($ + 1 - P)))) } i.disableVertexAttribArray(l.get_data().aAlpha.index), e.__dirty = !1, e.__cacheAlpha = b, t.filterManager.popObject(e), t.maskManager.popRect(), t.maskManager.popObject(e) } } , openfl__$internal_renderer_opengl_GLTilemap.__skipTile = function(e, t, n, i) { var l = 30 * t; i[l + 4] = 0, i[l + 9] = 0, i[l + 14] = 0, i[l + 19] = 0, i[l + 24] = 0, i[l + 29] = 0, openfl__$internal_renderer_opengl_GLTilemap.__skippedTiles.h[t] = !0, e.__alphaDirty = !0 } , openfl__$internal_renderer_opengl_GLTilemap.__updateTileAlpha = function(e, t, n, i) { var l = t * e.alpha; i[n + 4] = l, i[n + 9] = l, i[n + 14] = l, i[n + 19] = l, i[n + 24] = l, i[n + 29] = l, e.__alphaDirty = !1 } , openfl__$internal_renderer_opengl_GLTilemap.__updateTileUV = function(e, t, n, i) { var l = t.__data[e.id]; if (null != l) { var a = l.__uvX , s = l.__uvY , r = l.__uvWidth , _ = l.__uvHeight; i[n + 2] = a, i[n + 3] = s, i[n + 7] = r, i[n + 8] = s, i[n + 12] = a, i[n + 13] = _, i[n + 17] = a, i[n + 18] = _, i[n + 22] = r, i[n + 23] = s, i[n + 27] = r, i[n + 28] = _, e.__sourceDirty = !1 } } ; var openfl__$internal_stage3D_Context3DStateCache = function() { this._registers = openfl__$Vector_Vector_$Impl_$.toFloatVector(null, 4096), this.clearSettings() }; $hxClasses["openfl._internal.stage3D.Context3DStateCache"] = openfl__$internal_stage3D_Context3DStateCache, openfl__$internal_stage3D_Context3DStateCache.__name__ = ["openfl", "_internal", "stage3D", "Context3DStateCache"], openfl__$internal_stage3D_Context3DStateCache.prototype = { _activeTexture: null, _activeVertexArray: null, _cullingMode: null, _depthTestCompareMode: null, _depthTestEnabled: null, _depthTestMask: null, _destBlendFactor: null, _program: null, _registers: null, _srcBlendFactor: null, _viewportHeight: null, _viewportOriginX: null, _viewportOriginY: null, _viewportWidth: null, clearRegisters: function() { for (var e = 0; e < 4096; ) { var t = e++; this._registers.set(t, -999999999) } }, clearSettings: function() { this._srcBlendFactor = null, this._destBlendFactor = null, this._depthTestEnabled = !1, this._depthTestMask = !1, this._depthTestCompareMode = null, this._program = null, this._cullingMode = null, this._activeTexture = -1, this._activeVertexArray = -1, this._viewportOriginX = -1, this._viewportOriginY = -1, this._viewportWidth = -1, this._viewportHeight = -1, this.clearRegisters() }, updateViewport: function(e, t, n, i) { return this._viewportOriginX = e, this._viewportOriginY = t, this._viewportWidth = n, this._viewportHeight = i, !0 }, __class__: openfl__$internal_stage3D_Context3DStateCache }; var openfl__$internal_stage3D_GLUtils = function() {}; $hxClasses["openfl._internal.stage3D.GLUtils"] = openfl__$internal_stage3D_GLUtils, openfl__$internal_stage3D_GLUtils.__name__ = ["openfl", "_internal", "stage3D", "GLUtils"], openfl__$internal_stage3D_GLUtils.CheckGLError = function() { if (openfl__$internal_stage3D_GLUtils.debug) { var e = lime_graphics_opengl_GL.context.getError(); if (0 != e) throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("Error calling openGL api. Error: " + e + "\n")) } } ; var openfl__$internal_stage3D_SamplerState = function(e, t, n, i, l, a, s, r, _) { null == _ && (_ = !1), null == r && (r = !1), null == s && (s = !1), null == a && (a = 0), null == l && (l = 0), this.set_minFilter(e), this.set_magFilter(t), this.set_wrapModeS(n), this.set_wrapModeT(i), this.set_lodBias(l), this.set_maxAniso(a), this.ignoreSampler = s, this.centroid = r, this.mipmapGenerated = _, this.__samplerDirty = !0 }; $hxClasses["openfl._internal.stage3D.SamplerState"] = openfl__$internal_stage3D_SamplerState, openfl__$internal_stage3D_SamplerState.__name__ = ["openfl", "_internal", "stage3D", "SamplerState"], openfl__$internal_stage3D_SamplerState.prototype = { lodBias: null, magFilter: null, maxAniso: null, minFilter: null, wrapModeS: null, wrapModeT: null, centroid: null, ignoreSampler: null, mipmapGenerated: null, __samplerDirty: null, set_lodBias: function(e) { return this.lodBias != e && (this.__samplerDirty = !0), this.lodBias = e }, set_magFilter: function(e) { return this.magFilter != e && (this.__samplerDirty = !0), this.magFilter = e }, set_maxAniso: function(e) { return this.maxAniso != e && (this.__samplerDirty = !0), this.maxAniso = e }, set_minFilter: function(e) { return this.minFilter != e && (this.__samplerDirty = !0), this.minFilter = e }, set_wrapModeS: function(e) { return this.wrapModeS != e && (this.__samplerDirty = !0), this.wrapModeS = e }, set_wrapModeT: function(e) { return this.wrapModeT != e && (this.__samplerDirty = !0), this.wrapModeT = e }, __class__: openfl__$internal_stage3D_SamplerState, __properties__: { set_wrapModeT: "set_wrapModeT", set_wrapModeS: "set_wrapModeS", set_minFilter: "set_minFilter", set_maxAniso: "set_maxAniso", set_magFilter: "set_magFilter", set_lodBias: "set_lodBias" } }; var openfl__$internal_swf_FilterType = $hxClasses["openfl._internal.swf.FilterType"] = { __ename__: ["openfl", "_internal", "swf", "FilterType"], __constructs__: ["BlurFilter", "ColorMatrixFilter", "DropShadowFilter", "GlowFilter"] }; openfl__$internal_swf_FilterType.BlurFilter = function(e, t, n) { var i = ["BlurFilter", 0, e, t, n]; return i.__enum__ = openfl__$internal_swf_FilterType, i.toString = $estr, i } , openfl__$internal_swf_FilterType.ColorMatrixFilter = function(e) { var t = ["ColorMatrixFilter", 1, e]; return t.__enum__ = openfl__$internal_swf_FilterType, t.toString = $estr, t } , openfl__$internal_swf_FilterType.DropShadowFilter = function(e, t, n, i, l, a, s, r, _, o, p) { var h = ["DropShadowFilter", 2, e, t, n, i, l, a, s, r, _, o, p]; return h.__enum__ = openfl__$internal_swf_FilterType, h.toString = $estr, h } , openfl__$internal_swf_FilterType.GlowFilter = function(e, t, n, i, l, a, s, r) { var _ = ["GlowFilter", 3, e, t, n, i, l, a, s, r]; return _.__enum__ = openfl__$internal_swf_FilterType, _.toString = $estr, _ } ; var openfl__$internal_swf_SWFLite = function() { this.symbols = new haxe_ds_IntMap }; $hxClasses["openfl._internal.swf.SWFLite"] = openfl__$internal_swf_SWFLite, openfl__$internal_swf_SWFLite.__name__ = ["openfl", "_internal", "swf", "SWFLite"], openfl__$internal_swf_SWFLite.resolveClass = function(e) { var t = Type.resolveClass(e); return null == t && (t = Type.resolveClass(StringTools.replace(e, "openfl._legacy", "openfl"))), null == t && (t = Type.resolveClass(StringTools.replace(e, "openfl._v2", "openfl"))), t } , openfl__$internal_swf_SWFLite.resolveEnum = function(e) { var t = Type.resolveEnum(e); return null == t && (t = Type.resolveEnum(StringTools.replace(e, "openfl._legacy", "openfl"))), null == t && (t = Type.resolveEnum(StringTools.replace(e, "openfl._v2", "openfl"))), t } , openfl__$internal_swf_SWFLite.unserialize = function(e) { if (null == e) return null; var t = new haxe_Unserializer(e); return t.setResolver({ resolveClass: openfl__$internal_swf_SWFLite.resolveClass, resolveEnum: openfl__$internal_swf_SWFLite.resolveEnum }), t.unserialize() } , openfl__$internal_swf_SWFLite.prototype = { frameRate: null, library: null, root: null, symbols: null, createButton: function(e) { return null }, createMovieClip: function(e) { if (null == e && (e = ""), "" == e) return this.root.__createObject(this); for (var t = this.symbols.iterator(); t.hasNext(); ) { var n = t.next(); if (n.className == e && js_Boot.__instanceof(n, openfl__$internal_symbols_SpriteSymbol)) return js_Boot.__cast(n, openfl__$internal_symbols_SpriteSymbol).__createObject(this) } return null }, getBitmapData: function(e) { for (var t = this.symbols.iterator(); t.hasNext(); ) { var n = t.next(); if (n.className == e && js_Boot.__instanceof(n, openfl__$internal_symbols_BitmapSymbol)) { var i = n; return openfl_Assets.getBitmapData(i.path) } } return null }, hasSymbol: function(e) { for (var t = this.symbols.iterator(); t.hasNext(); ) { if (t.next().className == e) return !0 } return !1 }, serialize: function() { var e = new haxe_Serializer; return e.serialize(this), e.toString() }, __class__: openfl__$internal_swf_SWFLite }; var openfl__$internal_swf_SWFLiteLibrary = function(e) { openfl_AssetLibrary.call(this), this.id = e, this.alphaCheck = new haxe_ds_StringMap, this.rootPath = "" }; $hxClasses["openfl._internal.swf.SWFLiteLibrary"] = openfl__$internal_swf_SWFLiteLibrary, openfl__$internal_swf_SWFLiteLibrary.__name__ = ["openfl", "_internal", "swf", "SWFLiteLibrary"], openfl__$internal_swf_SWFLiteLibrary.__super__ = openfl_AssetLibrary, openfl__$internal_swf_SWFLiteLibrary.prototype = $extend(openfl_AssetLibrary.prototype, { alphaCheck: null, id: null, preloading: null, rootPath: null, swf: null, exists: function(e, t) { return null != this.swf && ("" == e && "MOVIE_CLIP" == t || ("IMAGE" == t || "MOVIE_CLIP" == t) && (null != this.swf && this.swf.hasSymbol(e))) }, getImage: function(e) { if (!this.alphaCheck.exists(e)) for (var t = this.swf.symbols.iterator(); t.hasNext(); ) { var n = t.next(); if (js_Boot.__instanceof(n, openfl__$internal_symbols_BitmapSymbol) && js_Boot.__cast(n, openfl__$internal_symbols_BitmapSymbol).path == e) { var i = n; if (null != i.alpha) { var l = openfl_AssetLibrary.prototype.getImage.call(this, e) , a = openfl_AssetLibrary.prototype.getImage.call(this, i.alpha); return this.__copyChannel(l, a), this.cachedImages.set(e, l), this.alphaCheck.set(e, !0), l } } } return openfl_AssetLibrary.prototype.getImage.call(this, e) }, getMovieClip: function(e) { return null != this.swf ? this.swf.createMovieClip(e) : null }, isLocal: function(e, t) { return !0 }, load: function() { var e = this; null != this.id && this.preload.set(this.id, !0); for (var t = this.paths.keys(); t.hasNext(); ) { var n = t.next(); this.preload.set(n, !0) } var i = new lime_app_Promise; return this.preloading = !0, this.loadText(this.id).onError($bind(i, i.error)).onComplete(function(t) { e.swf = openfl__$internal_swf_SWFLite.unserialize(t), e.swf.library = e, openfl__$internal_swf_SWFLite.instances.set(e.id, e.swf), e.__load().onProgress($bind(i, i.progress)).onError($bind(i, i.error)).onComplete(function(t) { e.preloading = !1, i.complete(e) }) }), i.future }, loadImage: function(e) { var t = this; if (!this.preloading && !this.alphaCheck.exists(e)) for (var n = this.swf.symbols.iterator(); n.hasNext(); ) { var i = n.next(); if (js_Boot.__instanceof(i, openfl__$internal_symbols_BitmapSymbol) && js_Boot.__cast(i, openfl__$internal_symbols_BitmapSymbol).path == e) { var l = [i]; if (null != l[0].alpha) { var a = [new lime_app_Promise]; return this.__loadImage(e).onError(($_ = a[0], $bind($_, $_.error))).onComplete(function(n, i) { return function(l) { t.__loadImage(i[0].alpha).onError(($_ = n[0], $bind($_, $_.error))).onComplete(function(n) { return function(i) { t.__copyChannel(l, i), t.cachedImages.set(e, l), t.alphaCheck.set(e, !0), n[0].complete(l) } }(n)) } }(a, l)), a[0].future } } } return openfl_AssetLibrary.prototype.loadImage.call(this, e) }, unload: function() { for (var e, t = this.swf.symbols.iterator(); t.hasNext(); ) { var n = t.next(); js_Boot.__instanceof(n, openfl__$internal_symbols_BitmapSymbol) && (e = n, openfl_Assets.cache.removeBitmapData(e.path)) } }, __copyChannel: function(e, t) { null != t && e.copyChannel(t, t.get_rect(), new lime_math_Vector2, lime_graphics_ImageChannel.RED, lime_graphics_ImageChannel.ALPHA), e.buffer.premultiplied = !0, e.set_premultiplied(!1) }, __load: function() { return openfl_AssetLibrary.prototype.load.call(this) }, __loadImage: function(e) { return openfl_AssetLibrary.prototype.loadImage.call(this, e) }, __class__: openfl__$internal_swf_SWFLiteLibrary }); var openfl__$internal_swf_ShapeCommand = $hxClasses["openfl._internal.swf.ShapeCommand"] = { __ename__: ["openfl", "_internal", "swf", "ShapeCommand"], __constructs__: ["BeginBitmapFill", "BeginFill", "BeginGradientFill", "CurveTo", "EndFill", "LineStyle", "LineTo", "MoveTo"] }; openfl__$internal_swf_ShapeCommand.BeginBitmapFill = function(e, t, n, i) { var l = ["BeginBitmapFill", 0, e, t, n, i]; return l.__enum__ = openfl__$internal_swf_ShapeCommand, l.toString = $estr, l } , openfl__$internal_swf_ShapeCommand.BeginFill = function(e, t) { var n = ["BeginFill", 1, e, t]; return n.__enum__ = openfl__$internal_swf_ShapeCommand, n.toString = $estr, n } , openfl__$internal_swf_ShapeCommand.BeginGradientFill = function(e, t, n, i, l, a, s, r) { var _ = ["BeginGradientFill", 2, e, t, n, i, l, a, s, r]; return _.__enum__ = openfl__$internal_swf_ShapeCommand, _.toString = $estr, _ } , openfl__$internal_swf_ShapeCommand.CurveTo = function(e, t, n, i) { var l = ["CurveTo", 3, e, t, n, i]; return l.__enum__ = openfl__$internal_swf_ShapeCommand, l.toString = $estr, l } , openfl__$internal_swf_ShapeCommand.EndFill = ["EndFill", 4], openfl__$internal_swf_ShapeCommand.EndFill.toString = $estr, openfl__$internal_swf_ShapeCommand.EndFill.__enum__ = openfl__$internal_swf_ShapeCommand, openfl__$internal_swf_ShapeCommand.LineStyle = function(e, t, n, i, l, a, s, r) { var _ = ["LineStyle", 5, e, t, n, i, l, a, s, r]; return _.__enum__ = openfl__$internal_swf_ShapeCommand, _.toString = $estr, _ } , openfl__$internal_swf_ShapeCommand.LineTo = function(e, t) { var n = ["LineTo", 6, e, t]; return n.__enum__ = openfl__$internal_swf_ShapeCommand, n.toString = $estr, n } , openfl__$internal_swf_ShapeCommand.MoveTo = function(e, t) { var n = ["MoveTo", 7, e, t]; return n.__enum__ = openfl__$internal_swf_ShapeCommand, n.toString = $estr, n } ; var openfl__$internal_symbols_SWFSymbol = function() {}; $hxClasses["openfl._internal.symbols.SWFSymbol"] = openfl__$internal_symbols_SWFSymbol, openfl__$internal_symbols_SWFSymbol.__name__ = ["openfl", "_internal", "symbols", "SWFSymbol"], openfl__$internal_symbols_SWFSymbol.prototype = { className: null, id: null, __createObject: function(e) { return null }, __class__: openfl__$internal_symbols_SWFSymbol }; var openfl__$internal_symbols_BitmapSymbol = function() { openfl__$internal_symbols_SWFSymbol.call(this) }; $hxClasses["openfl._internal.symbols.BitmapSymbol"] = openfl__$internal_symbols_BitmapSymbol, openfl__$internal_symbols_BitmapSymbol.__name__ = ["openfl", "_internal", "symbols", "BitmapSymbol"], openfl__$internal_symbols_BitmapSymbol.__super__ = openfl__$internal_symbols_SWFSymbol, openfl__$internal_symbols_BitmapSymbol.prototype = $extend(openfl__$internal_symbols_SWFSymbol.prototype, { alpha: null, path: null, __createObject: function(e) { return new openfl_display_Bitmap(openfl_display_BitmapData.fromImage(e.library.getImage(this.path)),1,!0) }, __class__: openfl__$internal_symbols_BitmapSymbol }); var openfl__$internal_symbols_ButtonSymbol = function() { openfl__$internal_symbols_SWFSymbol.call(this) }; $hxClasses["openfl._internal.symbols.ButtonSymbol"] = openfl__$internal_symbols_ButtonSymbol, openfl__$internal_symbols_ButtonSymbol.__name__ = ["openfl", "_internal", "symbols", "ButtonSymbol"], openfl__$internal_symbols_ButtonSymbol.__super__ = openfl__$internal_symbols_SWFSymbol, openfl__$internal_symbols_ButtonSymbol.prototype = $extend(openfl__$internal_symbols_SWFSymbol.prototype, { downState: null, hitState: null, overState: null, upState: null, __createObject: function(e) { var t = null; if (openfl_display_SimpleButton.__initSWF = e, openfl_display_SimpleButton.__initSymbol = this, null != this.className) { var n = Type.resolveClass(this.className); null != n && (t = Type.createInstance(n, [])) } return null == t && (t = new openfl_display_SimpleButton), t }, __class__: openfl__$internal_symbols_ButtonSymbol }); var openfl__$internal_symbols_DynamicTextSymbol = function() { openfl__$internal_symbols_SWFSymbol.call(this) }; $hxClasses["openfl._internal.symbols.DynamicTextSymbol"] = openfl__$internal_symbols_DynamicTextSymbol, openfl__$internal_symbols_DynamicTextSymbol.__name__ = ["openfl", "_internal", "symbols", "DynamicTextSymbol"], openfl__$internal_symbols_DynamicTextSymbol.__super__ = openfl__$internal_symbols_SWFSymbol, openfl__$internal_symbols_DynamicTextSymbol.prototype = $extend(openfl__$internal_symbols_SWFSymbol.prototype, { align: null, border: null, color: null, fontHeight: null, fontID: null, fontName: null, height: null, html: null, indent: null, input: null, leading: null, leftMargin: null, multiline: null, password: null, rightMargin: null, selectable: null, text: null, width: null, wordWrap: null, x: null, y: null, __createObject: function(e) { var t = new openfl_text_TextField; return t.__fromSymbol(e, this), t }, __class__: openfl__$internal_symbols_DynamicTextSymbol }); var openfl__$internal_symbols_FontSymbol = function() { openfl__$internal_symbols_SWFSymbol.call(this) }; $hxClasses["openfl._internal.symbols.FontSymbol"] = openfl__$internal_symbols_FontSymbol, openfl__$internal_symbols_FontSymbol.__name__ = ["openfl", "_internal", "symbols", "FontSymbol"], openfl__$internal_symbols_FontSymbol.__super__ = openfl__$internal_symbols_SWFSymbol, openfl__$internal_symbols_FontSymbol.prototype = $extend(openfl__$internal_symbols_SWFSymbol.prototype, { advances: null, bold: null, codes: null, glyphs: null, italic: null, leading: null, name: null, __class__: openfl__$internal_symbols_FontSymbol }); var openfl__$internal_symbols_ShapeSymbol = function() { openfl__$internal_symbols_SWFSymbol.call(this) }; $hxClasses["openfl._internal.symbols.ShapeSymbol"] = openfl__$internal_symbols_ShapeSymbol, openfl__$internal_symbols_ShapeSymbol.__name__ = ["openfl", "_internal", "symbols", "ShapeSymbol"], openfl__$internal_symbols_ShapeSymbol.__super__ = openfl__$internal_symbols_SWFSymbol, openfl__$internal_symbols_ShapeSymbol.prototype = $extend(openfl__$internal_symbols_SWFSymbol.prototype, { commands: null, rendered: null, __createObject: function(e) { var t = new openfl_display_Shape , n = t.get_graphics(); if (null != this.rendered) return n.copyFrom(this.rendered.get_graphics()), t; for (var i = 0, l = this.commands; i < l.length; ) { var a = l[i]; switch (++i, a[1]) { case 1: var s = a[3] , r = a[2]; n.beginFill(r, s); break; case 0: var _ = a[5] , o = a[4] , p = a[3] , h = a[2] , d = e.symbols.h[h] , u = e.library.getImage(d.path); null != u && n.beginBitmapFill(openfl_display_BitmapData.fromImage(u), p, o, _); break; case 2: var c = a[9] , m = a[8] , U = a[7] , Q = a[6] , N = a[5] , F = a[4] , Z = a[3] , f = a[2]; n.beginGradientFill(f, Z, F, N, Q, U, m, c); break; case 3: var S = a[5] , g = a[4] , B = a[3] , b = a[2]; n.curveTo(b, B, g, S); break; case 4: n.endFill(); break; case 5: var v = a[9] , W = a[8] , T = a[7] , V = a[6] , R = a[5] , y = a[4] , D = a[3] , x = a[2]; null != x ? n.lineStyle(x, D, y, R, V, T, W, v) : n.lineStyle(); break; case 6: var J = a[3] , z = a[2]; n.lineTo(z, J); break; case 7: var k = a[3] , E = a[2]; n.moveTo(E, k) } } return this.commands = null, this.rendered = new openfl_display_Shape, this.rendered.get_graphics().copyFrom(t.get_graphics()), t }, __class__: openfl__$internal_symbols_ShapeSymbol }); var openfl__$internal_symbols_SpriteSymbol = function() { openfl__$internal_symbols_SWFSymbol.call(this), this.frames = [] }; $hxClasses["openfl._internal.symbols.SpriteSymbol"] = openfl__$internal_symbols_SpriteSymbol, openfl__$internal_symbols_SpriteSymbol.__name__ = ["openfl", "_internal", "symbols", "SpriteSymbol"], openfl__$internal_symbols_SpriteSymbol.__super__ = openfl__$internal_symbols_SWFSymbol, openfl__$internal_symbols_SpriteSymbol.prototype = $extend(openfl__$internal_symbols_SWFSymbol.prototype, { frames: null, __createObject: function(e) { var t = null; if (openfl_display_MovieClip.__initSWF = e, openfl_display_MovieClip.__initSymbol = this, null != this.className) { var n = Type.resolveClass(this.className); null != n && (t = Type.createInstance(n, [])) } return null == t && (t = new openfl_display_MovieClip), t }, __class__: openfl__$internal_symbols_SpriteSymbol }); var openfl__$internal_symbols_StaticTextSymbol = function() { openfl__$internal_symbols_SWFSymbol.call(this) }; $hxClasses["openfl._internal.symbols.StaticTextSymbol"] = openfl__$internal_symbols_StaticTextSymbol, openfl__$internal_symbols_StaticTextSymbol.__name__ = ["openfl", "_internal", "symbols", "StaticTextSymbol"], openfl__$internal_symbols_StaticTextSymbol.__super__ = openfl__$internal_symbols_SWFSymbol, openfl__$internal_symbols_StaticTextSymbol.prototype = $extend(openfl__$internal_symbols_SWFSymbol.prototype, { matrix: null, records: null, rendered: null, __createObject: function(e) { var t = new openfl_display_Shape , n = t.get_graphics(); if (null != this.rendered) return n.copyFrom(this.rendered.get_graphics()), t; if (null != this.records) for (var i = null, l = 16777215, a = this.matrix.tx, s = this.matrix.ty, r = 0, _ = this.records; r < _.length; ) { var o = _[r]; if (++r, null != o.fontID && (i = e.symbols.h[o.fontID]), null != o.offsetX && (a = this.matrix.tx + .05 * o.offsetX), null != o.offsetY && (s = this.matrix.ty + .05 * o.offsetY), null != o.color && (l = o.color), null != i) for (var p, h = o.fontHeight / 1024 * .05, d = 0, u = o.glyphs.length; d < u; ) { var c = d++; p = o.glyphs[c]; for (var m = 0, U = i.glyphs[p]; m < U.length; ) { var Q = U[m]; switch (++m, Q[1]) { case 1: Q[3]; n.beginFill(16777215 & l, (l >> 24 & 255) / 255); break; case 3: var N = Q[5] , F = Q[4] , Z = Q[3] , f = Q[2]; n.curveTo(f * h + a, Z * h + s, F * h + a, N * h + s); break; case 4: n.endFill(); break; case 5: var S = Q[9] , g = Q[8] , B = Q[7] , b = Q[6] , v = Q[5] , W = Q[4] , T = Q[3] , V = Q[2]; null != V ? n.lineStyle(V, T, W, v, b, B, g, S) : n.lineStyle(); break; case 6: var R = Q[3] , y = Q[2]; n.lineTo(y * h + a, R * h + s); break; case 7: var D = Q[3] , x = Q[2]; n.moveTo(x * h + a, D * h + s) } } a += .05 * o.advances[c] } } return this.records = null, this.rendered = new openfl_display_Shape, this.rendered.get_graphics().copyFrom(t.get_graphics()), t }, __class__: openfl__$internal_symbols_StaticTextSymbol }); var openfl__$internal_symbols_StaticTextRecord = function() {}; $hxClasses["openfl._internal.symbols.StaticTextRecord"] = openfl__$internal_symbols_StaticTextRecord, openfl__$internal_symbols_StaticTextRecord.__name__ = ["openfl", "_internal", "symbols", "StaticTextRecord"], openfl__$internal_symbols_StaticTextRecord.prototype = { advances: null, color: null, fontHeight: null, fontID: null, glyphs: null, offsetX: null, offsetY: null, __class__: openfl__$internal_symbols_StaticTextRecord }; var openfl__$internal_text_TextEngine = function(e) { this.textField = e, this.width = 100, this.height = 100, this.text = "", this.bounds = new openfl_geom_Rectangle(0,0,0,0), this.type = 0, this.autoSize = 2, this.embedFonts = !1, this.selectable = !0, this.borderColor = 0, this.border = !1, this.backgroundColor = 16777215, this.background = !1, this.gridFitType = 1, this.maxChars = 0, this.multiline = !1, this.sharpness = 0, this.scrollH = 0, this.scrollV = 1, this.wordWrap = !1, this.lineAscents = openfl__$Vector_Vector_$Impl_$.toFloatVector(null), this.lineBreaks = openfl__$Vector_Vector_$Impl_$.toIntVector(null), this.lineDescents = openfl__$Vector_Vector_$Impl_$.toFloatVector(null), this.lineLeadings = openfl__$Vector_Vector_$Impl_$.toFloatVector(null), this.lineHeights = openfl__$Vector_Vector_$Impl_$.toFloatVector(null), this.lineWidths = openfl__$Vector_Vector_$Impl_$.toFloatVector(null), this.layoutGroups = openfl__$Vector_Vector_$Impl_$.toObjectVector(null), this.textFormatRanges = openfl__$Vector_Vector_$Impl_$.toObjectVector(null), openfl__$internal_text_TextEngine.__canvas = window.document.createElement("canvas"), openfl__$internal_text_TextEngine.__context = openfl__$internal_text_TextEngine.__canvas.getContext("2d") }; $hxClasses["openfl._internal.text.TextEngine"] = openfl__$internal_text_TextEngine, openfl__$internal_text_TextEngine.__name__ = ["openfl", "_internal", "text", "TextEngine"], openfl__$internal_text_TextEngine.getFormatHeight = function(e) { return openfl__$internal_text_TextEngine.__context.font = openfl__$internal_text_TextEngine.getFont(e), e.size + .185 * e.size + e.leading } , openfl__$internal_text_TextEngine.getFont = function(e) { var t, n; return t = e.italic ? "italic " : "normal ", t += "normal ", e.bold ? t += "bold " : t += "normal ", t += e.size + "px", t += "/" + (e.leading + e.size + 3) + "px ", t += "" + (n = e.font, function(t) { var i; switch (n) { case "_sans": i = "sans-serif"; break; case "_serif": i = "serif"; break; case "_typewriter": i = "monospace"; break; default: i = "'" + new EReg("^[\\s'\"]+(.*)[\\s'\"]+$","").replace(e.font, "$1") + "'" } return i }()) } , openfl__$internal_text_TextEngine.prototype = { antiAliasType: null, autoSize: null, background: null, backgroundColor: null, border: null, borderColor: null, bottomScrollV: null, bounds: null, embedFonts: null, gridFitType: null, height: null, layoutGroups: null, lineAscents: null, lineBreaks: null, lineDescents: null, lineLeadings: null, lineHeights: null, lineWidths: null, maxChars: null, maxScrollH: null, maxScrollV: null, multiline: null, numLines: null, scrollH: null, scrollV: null, selectable: null, sharpness: null, text: null, textHeight: null, textFormatRanges: null, textWidth: null, type: null, width: null, wordWrap: null, textField: null, __hasFocus: null, __useIntAdvances: null, getBounds: function() { var e; e = this.border ? 1 : 0, this.bounds.width = this.width + e, this.bounds.height = this.height + e }, getLineBreakIndex: function(e) { null == e && (e = 0); var t = this.text.indexOf("\n", e) , n = this.text.indexOf("\r", e); return -1 == t ? n : -1 == n ? t : t < n ? t : n }, getLineMeasurements: function() { this.lineAscents.set_length(0), this.lineDescents.set_length(0), this.lineLeadings.set_length(0), this.lineHeights.set_length(0), this.lineWidths.set_length(0); var e = 0 , t = 0 , n = null , i = 0 , l = 0; this.textWidth = 0, this.textHeight = 0, this.numLines = 1, this.bottomScrollV = 0, this.maxScrollH = 0; for (var a = 0, s = this.layoutGroups; a < s.get_length(); ) { var r = s.get(a); for (++a; r.lineIndex > this.numLines - 1; ) this.lineAscents.push(e), this.lineDescents.push(t), this.lineLeadings.push(null != n ? n : 0), this.lineHeights.push(i), this.lineWidths.push(l), e = 0, t = 0, n = null, i = 0, l = 0, this.numLines++, this.textHeight <= this.height - 2 && this.bottomScrollV++; e = Math.max(e, r.ascent), t = Math.max(t, r.descent), n = null == n ? r.leading : Std.int(Math.max(n, r.leading)), i = Math.max(i, r.height), (l = r.offsetX - 2 + r.width) > this.textWidth && (this.textWidth = l), this.textHeight = r.offsetY - 2 + r.ascent + r.descent } if (this.lineAscents.push(e), this.lineDescents.push(t), this.lineLeadings.push(null != n ? n : 0), this.lineHeights.push(i), this.lineWidths.push(l), 1 == this.numLines ? (this.bottomScrollV = 1, n > 0 && (this.textHeight += n)) : this.textHeight <= this.height - 2 && this.bottomScrollV++, 2 != this.autoSize) switch (this.autoSize) { case 1: case 3: case 0: this.wordWrap || (this.width = this.textWidth + 4), this.height = this.textHeight + 4, this.bottomScrollV = this.numLines } this.textWidth > this.width - 4 ? this.maxScrollH = this.textWidth - this.width + 4 | 0 : this.maxScrollH = 0, this.maxScrollV = this.numLines - this.bottomScrollV + 1 }, getLayoutGroups: function() { var e = this; this.layoutGroups.set_length(0); var t, n, i = -1, l = null, a = openfl_text_TextField.__defaultTextFormat.clone(), s = 0, r = 0, _ = 0, o = null, p = null, h = 0, d = 0, u = 0, c = this.text.indexOf(" "), m = this.getLineBreakIndex(), U = 0, Q = 2, N = 2, F = 0, Z = 0, f = null; i < e.textFormatRanges.get_length() - 1 && (i++, l = e.textFormatRanges.get(i), a.__merge(l.format), openfl__$internal_text_TextEngine.__context.font = openfl__$internal_text_TextEngine.getFont(a), h = (r = a.size) + (_ = .185 * a.size) + (s = a.leading)), f = l.format; var S, g, B = this.text.length; for (this.multiline && B++; F < B; ) if (m > -1 && (-1 == c || m < c) && l.end >= m) { o = new openfl__$internal_text_TextLayoutGroup(l.format,F,m); var b = this.text , v = []; if (null == e.__useIntAdvances && (e.__useIntAdvances = new EReg("Trident/7.0","").match(window.navigator.userAgent)), e.__useIntAdvances) for (var W, T = 0, V = F; V < m; ) { var R = V++; W = openfl__$internal_text_TextEngine.__context.measureText(b.substring(F, R + 1)).width, v.push(W - T), T = W } else for (var y = F; y < m; ) { var D = y++; v.push(openfl__$internal_text_TextEngine.__context.measureText(b.charAt(D)).width) } o.advances = v, o.offsetX = Q, o.ascent = r, o.descent = _, o.leading = s, o.lineIndex = Z, o.offsetY = N; for (var x = o.advances, J = 0, z = 0; z < x.length; ) { var k = x[z]; ++z, J += k } o.width = J, o.height = h, this.layoutGroups.push(o), N += h, Q = 2, l.end == m && (i < e.textFormatRanges.get_length() - 1 && (i++, l = e.textFormatRanges.get(i), a.__merge(l.format), openfl__$internal_text_TextEngine.__context.font = openfl__$internal_text_TextEngine.getFont(a), h = (r = a.size) + (_ = .185 * a.size) + (s = a.leading)), f = l.format), F = m + 1, u = m, m = this.getLineBreakIndex(F), Z++, o = null } else if (l.end >= c && c > -1 && F < l.end) for (null != o && d != u && d == F - 1 && F == l.start && c <= l.end && (o.endIndex = F, o.width += o.advances[o.advances.length - 1]), o = null, n = !1; F != l.end; ) { -1 == c && (c = l.end); var E = this.text , P = c + 1 , M = []; if (null == e.__useIntAdvances && (e.__useIntAdvances = new EReg("Trident/7.0","").match(window.navigator.userAgent)), e.__useIntAdvances) for (var w, $ = 0, C = F; C < P; ) { var G = C++; w = openfl__$internal_text_TextEngine.__context.measureText(E.substring(F, G + 1)).width, M.push(w - $), $ = w } else for (var O = F; O < P; ) { var I = O++; M.push(openfl__$internal_text_TextEngine.__context.measureText(E.charAt(I)).width) } var H = (p = M)[p.length - 1]; if (t = function(e) { for (var t = 0, n = 0; n < p.length; ) { var i = p[n]; ++n, t += i } return t }() - H, this.wordWrap && Q + t > this.width - 2 && (n = !0), n) { N += h; for (var Y = this.layoutGroups.get_length() - 1, A = 0; o = this.layoutGroups.get(Y), Y > 0 && o.startIndex > d; ) A++, Y--; if (Z++, Q = 2, A > 0) { var L; L = (S = this, void 0, g = S.layoutGroups.get_length() - A, S.layoutGroups.get(g)).offsetX; for (var X = this.layoutGroups.get_length() - A, j = this.layoutGroups.get_length(); X < j; ) { var K = X++; (o = this.layoutGroups.get(K)).offsetX -= L, o.offsetY = N, o.lineIndex = Z, Q += o.width } } (o = new openfl__$internal_text_TextLayoutGroup(l.format,F,c)).advances = p, o.offsetX = Q, o.ascent = r, o.descent = _, o.leading = s, o.lineIndex = Z, o.offsetY = N, o.width = t, o.height = h, this.layoutGroups.push(o), Q = t + H, U = H, n = !1 } else { if (l.start == d && F - 1 == d && (t += (p = function(t) { var n = t.text , i = []; if (null == e.__useIntAdvances && (e.__useIntAdvances = new EReg("Trident/7.0","").match(window.navigator.userAgent)), e.__useIntAdvances) for (var l, a = 0, s = d; s < F; ) { var r = s++; l = openfl__$internal_text_TextEngine.__context.measureText(n.substring(d, r + 1)).width, i.push(l - a), a = l } else for (var _ = d; _ < F; ) { var o = _++; i.push(openfl__$internal_text_TextEngine.__context.measureText(n.charAt(o)).width) } return i }(this).concat(p))[0], Q -= p[0], F = d), null != o && F == c) 2 != l.format.align && (o.endIndex = c), U += H; else if (null == o || 2 == f.align) (o = new openfl__$internal_text_TextLayoutGroup(l.format,F,c)).advances = p, o.offsetX = Q, o.ascent = r, o.descent = _, o.leading = s, o.lineIndex = Z, o.offsetY = N, o.width = t, o.height = h, this.layoutGroups.push(o), U = H; else { o.endIndex = c, o.advances = o.advances.concat(p); for (var q = o.advances, ee = 0, te = 0; te < q.length; ) { var ne = q[te]; ++te, ee += ne } o.width = ee, U = H } Q += t + H } F = c + 1, d = c; var ie = this.text.indexOf(" ", d + 1); if (d != m && m > -1 && (-1 == ie || ie > m) ? c = m : (m == d && (F = m), c = ie), l.end <= d && (o = null, i < e.textFormatRanges.get_length() - 1 && (i++, l = e.textFormatRanges.get(i), a.__merge(l.format), openfl__$internal_text_TextEngine.__context.font = openfl__$internal_text_TextEngine.getFont(a), h = (r = a.size) + (_ = .185 * a.size) + (s = a.leading))), c > m && m > -1 || F > this.text.length || c > l.end || -1 == c && m > -1) break } else { if (F > l.end) break; if (F < l.end || F == this.text.length) { if (null == o) { o = new openfl__$internal_text_TextLayoutGroup(l.format,F,l.end); var le = this.text , ae = l.end , se = []; if (null == e.__useIntAdvances && (e.__useIntAdvances = new EReg("Trident/7.0","").match(window.navigator.userAgent)), e.__useIntAdvances) for (var re, _e = 0, oe = F; oe < ae; ) { var pe = oe++; re = openfl__$internal_text_TextEngine.__context.measureText(le.substring(F, pe + 1)).width, se.push(re - _e), _e = re } else for (var he = F; he < ae; ) { var de = he++; se.push(openfl__$internal_text_TextEngine.__context.measureText(le.charAt(de)).width) } o.advances = se, o.offsetX = Q, o.ascent = r, o.descent = _, o.leading = s, o.lineIndex = Z, o.offsetY = N; for (var ue = o.advances, ce = 0, me = 0; me < ue.length; ) { var Ue = ue[me]; ++me, ce += Ue } o.width = ce, o.height = h, this.layoutGroups.push(o), Q += o.width } else if (o.startIndex != o.endIndex) { var Qe = this.text , Ne = l.end , Fe = []; if (null == e.__useIntAdvances && (e.__useIntAdvances = new EReg("Trident/7.0","").match(window.navigator.userAgent)), e.__useIntAdvances) for (var Ze, fe = 0, Se = F; Se < Ne; ) { var ge = Se++; Ze = openfl__$internal_text_TextEngine.__context.measureText(Qe.substring(F, ge + 1)).width, Fe.push(Ze - fe), fe = Ze } else for (var Be = F; Be < Ne; ) { var be = Be++; Fe.push(openfl__$internal_text_TextEngine.__context.measureText(Qe.charAt(be)).width) } p = Fe; for (var ve = 0, We = 0; We < p.length; ) { var Te = p[We]; ++We, ve += Te } t = ve, o.advances = o.advances.concat(p), o.width += U + t, o.endIndex = l.end, Q += t } F = l.end } if (i < e.textFormatRanges.get_length() - 1 && (i++, l = e.textFormatRanges.get(i), a.__merge(l.format), openfl__$internal_text_TextEngine.__context.font = openfl__$internal_text_TextEngine.getFont(a), h = (r = a.size) + (_ = .185 * a.size) + (s = a.leading)), F == l.end) { F++; break } } }, setTextAlignment: function() { for (var e, t, n = -1, i = 0, l = 0, a = this.layoutGroups.get_length(); l < a; ) { var s = l++; if ((e = this.layoutGroups.get(s)).lineIndex != n) switch (n = e.lineIndex, e.format.align) { case 0: i = this.lineWidths.get(n) < this.width - 4 ? Math.round((this.width - 4 - this.lineWidths.get(n)) / 2) : 0; break; case 4: i = this.lineWidths.get(n) < this.width - 4 ? Math.round(this.width - 4 - this.lineWidths.get(n)) : 0; break; case 2: if (this.lineWidths.get(n) < this.width - 4) { t = 1; for (var r = s + 1, _ = this.layoutGroups.get_length(); r < _; ) { var o = r++; if (this.layoutGroups.get(o).lineIndex != n) break; t++ } if (t > 1) { e = this.layoutGroups.get(s + t - 1); var p = this.text.charAt(e.endIndex); if (e.endIndex < this.text.length && "\n" != p && "\r" != p) { i = (this.width - 4 - this.lineWidths.get(n)) / (t - 1); for (var h = 1; h < t; ) { var d = h++; this.layoutGroups.get(s + d).offsetX += i * d } } } } i = 0; break; default: i = 0 } i > 0 && (e.offsetX += i) } }, update: function() { null == this.text || !this.multiline && "" == StringTools.trim(this.text) || 0 == this.textFormatRanges.get_length() ? (this.lineAscents.set_length(0), this.lineBreaks.set_length(0), this.lineDescents.set_length(0), this.lineLeadings.set_length(0), this.lineHeights.set_length(0), this.lineWidths.set_length(0), this.layoutGroups.set_length(0), this.textWidth = 0, this.textHeight = 0, this.numLines = 1, this.maxScrollH = 0, this.maxScrollV = 1, this.bottomScrollV = 1) : (this.getLayoutGroups(), this.getLineMeasurements(), this.setTextAlignment()), this.getBounds() }, __class__: openfl__$internal_text_TextEngine }; var openfl__$internal_text_TextFormatRange = function(e, t, n) { this.format = e, this.start = t, this.end = n }; $hxClasses["openfl._internal.text.TextFormatRange"] = openfl__$internal_text_TextFormatRange, openfl__$internal_text_TextFormatRange.__name__ = ["openfl", "_internal", "text", "TextFormatRange"], openfl__$internal_text_TextFormatRange.prototype = { end: null, format: null, start: null, __class__: openfl__$internal_text_TextFormatRange }; var openfl__$internal_text_TextLayoutGroup = function(e, t, n) { this.format = e, this.startIndex = t, this.endIndex = n }; $hxClasses["openfl._internal.text.TextLayoutGroup"] = openfl__$internal_text_TextLayoutGroup, openfl__$internal_text_TextLayoutGroup.__name__ = ["openfl", "_internal", "text", "TextLayoutGroup"], openfl__$internal_text_TextLayoutGroup.prototype = { advances: null, ascent: null, descent: null, endIndex: null, format: null, height: null, leading: null, lineIndex: null, offsetX: null, offsetY: null, startIndex: null, width: null, __class__: openfl__$internal_text_TextLayoutGroup }; var openfl__$internal_timeline_Frame = function() { this.objects = [] }; $hxClasses["openfl._internal.timeline.Frame"] = openfl__$internal_timeline_Frame, openfl__$internal_timeline_Frame.__name__ = ["openfl", "_internal", "timeline", "Frame"], openfl__$internal_timeline_Frame.prototype = { label: null, objects: null, __class__: openfl__$internal_timeline_Frame }; var openfl__$internal_timeline_FrameObject = function() {}; $hxClasses["openfl._internal.timeline.FrameObject"] = openfl__$internal_timeline_FrameObject, openfl__$internal_timeline_FrameObject.__name__ = ["openfl", "_internal", "timeline", "FrameObject"], openfl__$internal_timeline_FrameObject.prototype = { clipDepth: null, colorTransform: null, depth: null, filters: null, id: null, matrix: null, name: null, symbol: null, type: null, visible: null, __class__: openfl__$internal_timeline_FrameObject }; var openfl__$internal_timeline_FrameObjectType = $hxClasses["openfl._internal.timeline.FrameObjectType"] = { __ename__: ["openfl", "_internal", "timeline", "FrameObjectType"], __constructs__: ["CREATE", "UPDATE", "DESTROY"] }; openfl__$internal_timeline_FrameObjectType.CREATE = ["CREATE", 0], openfl__$internal_timeline_FrameObjectType.CREATE.toString = $estr, openfl__$internal_timeline_FrameObjectType.CREATE.__enum__ = openfl__$internal_timeline_FrameObjectType, openfl__$internal_timeline_FrameObjectType.UPDATE = ["UPDATE", 1], openfl__$internal_timeline_FrameObjectType.UPDATE.toString = $estr, openfl__$internal_timeline_FrameObjectType.UPDATE.__enum__ = openfl__$internal_timeline_FrameObjectType, openfl__$internal_timeline_FrameObjectType.DESTROY = ["DESTROY", 2], openfl__$internal_timeline_FrameObjectType.DESTROY.toString = $estr, openfl__$internal_timeline_FrameObjectType.DESTROY.__enum__ = openfl__$internal_timeline_FrameObjectType; var openfl_display_Application = function() { lime_app_Application.call(this), null == openfl_Lib.application && (openfl_Lib.application = this) }; $hxClasses["openfl.display.Application"] = openfl_display_Application, openfl_display_Application.__name__ = ["openfl", "display", "Application"], openfl_display_Application.__super__ = lime_app_Application, openfl_display_Application.prototype = $extend(lime_app_Application.prototype, { create: function(e) { if (this.config = e, this.backend.create(e), openfl_Lib.current.__loaderInfo = openfl_display_LoaderInfo.create(null), openfl_Lib.current.__loaderInfo.content = openfl_Lib.current, null != e) { if (Object.prototype.hasOwnProperty.call(e, "fps") && this.backend.setFrameRate(e.fps), Object.prototype.hasOwnProperty.call(e, "windows")) for (var t = 0, n = e.windows; t < n.length; ) { var i = n[t]; ++t; var l = new openfl_display_Window(i); this.createWindow(l); break } (null == this.__preloader || this.__preloader.complete) && this.onPreloadComplete() } }, __class__: openfl_display_Application }); var openfl_display__$CapsStyle_CapsStyle_$Impl_$ = {}; $hxClasses["openfl.display._CapsStyle.CapsStyle_Impl_"] = openfl_display__$CapsStyle_CapsStyle_$Impl_$, openfl_display__$CapsStyle_CapsStyle_$Impl_$.__name__ = ["openfl", "display", "_CapsStyle", "CapsStyle_Impl_"], openfl_display__$CapsStyle_CapsStyle_$Impl_$.toString = function(e) { switch (e) { case 0: return "none"; case 1: return "round"; case 2: return "square"; default: return null } } ; var openfl_text_TextField = function() { openfl_display_InteractiveObject.call(this), this.__caretIndex = -1, this.__displayAsPassword = !1, this.__graphics = new openfl_display_Graphics(this), this.__textEngine = new openfl__$internal_text_TextEngine(this), this.__layoutDirty = !0, this.__offsetX = 0, this.__offsetY = 0, this.__tabEnabled = !0, this.__mouseWheelEnabled = !0, this.__text = "", null == openfl_text_TextField.__defaultTextFormat && (openfl_text_TextField.__defaultTextFormat = new openfl_text_TextFormat("Times New Roman",12,0,!1,!1,!1,"","",3,0,0,0,0), openfl_text_TextField.__defaultTextFormat.blockIndent = 0, openfl_text_TextField.__defaultTextFormat.bullet = !1, openfl_text_TextField.__defaultTextFormat.letterSpacing = 0, openfl_text_TextField.__defaultTextFormat.kerning = !1), this.__textFormat = openfl_text_TextField.__defaultTextFormat.clone(); var e = new openfl__$internal_text_TextFormatRange(this.__textFormat,0,0); this.__textEngine.textFormatRanges.push(e), this.addEventListener("mouseDown", $bind(this, this.this_onMouseDown)) }; $hxClasses["openfl.text.TextField"] = openfl_text_TextField, openfl_text_TextField.__name__ = ["openfl", "text", "TextField"], openfl_text_TextField.__super__ = openfl_display_InteractiveObject, openfl_text_TextField.prototype = $extend(openfl_display_InteractiveObject.prototype, { __caretIndex: null, __cursorTimer: null, __dirty: null, __displayAsPassword: null, __inputEnabled: null, __isHTML: null, __layoutDirty: null, __mouseWheelEnabled: null, __offsetX: null, __offsetY: null, __selectionIndex: null, __showCursor: null, __symbol: null, __text: null, __textEngine: null, __textFormat: null, __div: null, getCharBoundaries: function(e) { if (e < 0 || e > this.__text.length - 1) return null; this.__updateLayout(); for (var t = 0, n = this.__textEngine.layoutGroups; t < n.get_length(); ) { var i = n.get(t); if (++t, e >= i.startIndex && e <= i.endIndex) { for (var l = i.offsetX, a = 0, s = e - i.startIndex; a < s; ) { var r = a++; l += i.advances[r] } return new openfl_geom_Rectangle(l,i.offsetY,i.advances[e - i.startIndex],i.ascent + i.descent) } } return null }, getLineIndexOfChar: function(e) { if (e < 0 || e > this.__text.length) return -1; this.__updateLayout(); for (var t = 0, n = this.__textEngine.layoutGroups; t < n.get_length(); ) { var i = n.get(t); if (++t, i.startIndex <= e && i.endIndex >= e) return i.lineIndex } return -1 }, getLineOffset: function(e) { if (this.__updateLayout(), e < 0 || e > this.__textEngine.numLines - 1) return -1; for (var t = 0, n = this.__textEngine.layoutGroups; t < n.get_length(); ) { var i = n.get(t); if (++t, i.lineIndex == e) return i.startIndex } return 0 }, replaceSelectedText: function(e) { if ("" != e || this.__selectionIndex != this.__caretIndex) { var t, n; t = this.__caretIndex < this.__selectionIndex ? this.__caretIndex : this.__selectionIndex, n = this.__caretIndex > this.__selectionIndex ? this.__caretIndex : this.__selectionIndex, this.replaceText(t, n, e); var i = t + e.length; this.setSelection(i, i) } }, replaceText: function(e, t, n) { if (!(t < e || e < 0 || t > this.__text.length || null == n)) { this.__updateText(this.__text.substring(0, e) + n + this.__text.substring(t)); for (var i, l = n.length - (t - e), a = 0; a < this.__textEngine.textFormatRanges.get_length(); ) (i = this.__textEngine.textFormatRanges.get(a)).start <= e && i.end >= t ? (i.end += l, a++) : i.start >= e && i.end <= t ? (a > 0 ? this.__textEngine.textFormatRanges.splice(a, 1) : (i.start = 0, i.end = 0), l -= i.end - i.start) : i.start > e && i.start <= t ? (i.start += l, a++) : a++; this.__dirty = !0, this.__layoutDirty = !0 } }, setSelection: function(e, t) { this.__selectionIndex = e, this.__caretIndex = t }, __caretBeginningOfLine: function() { this.__selectionIndex == this.__caretIndex || this.__caretIndex < this.__selectionIndex ? this.__caretIndex = this.getLineOffset(this.getLineIndexOfChar(this.__caretIndex)) : this.__selectionIndex = this.getLineOffset(this.getLineIndexOfChar(this.__selectionIndex)) }, __caretEndOfLine: function() { var e; (e = this.__selectionIndex == this.__caretIndex ? this.getLineIndexOfChar(this.__caretIndex) : this.getLineIndexOfChar(Std.int(Math.max(this.__caretIndex, this.__selectionIndex)))) < this.__textEngine.numLines - 1 ? this.__caretIndex = this.getLineOffset(e + 1) - 1 : this.__caretIndex = this.__text.length }, __caretNextCharacter: function() { this.__caretIndex < this.__text.length && this.__caretIndex++ }, __caretNextLine: function(e, t) { null == e && (e = this.getLineIndexOfChar(this.__caretIndex)), e < this.__textEngine.numLines - 1 ? (null == t && (t = this.__caretIndex), this.__caretIndex = this.__getCharIndexOnDifferentLine(t, e + 1)) : this.__caretIndex = this.__text.length }, __caretPreviousCharacter: function() { this.__caretIndex > 0 && this.__caretIndex-- }, __caretPreviousLine: function(e, t) { null == e && (e = this.getLineIndexOfChar(this.__caretIndex)), e > 0 ? (null == t && (t = this.__caretIndex), this.__caretIndex = this.__getCharIndexOnDifferentLine(t, e - 1)) : this.__caretIndex = 0 }, __dispatch: function(e) { if (2 == e.eventPhase && "mouseUp" == e.type) { var t = this.__getGroup(this.get_mouseX(), this.get_mouseY(), !0); if (null != t) { var n = t.format.url; "" != n && (StringTools.startsWith(n, "event:") ? this.dispatchEvent(new openfl_events_TextEvent("link",!1,!1,HxOverrides.substr(n, 6, null))) : openfl_Lib.getURL(new openfl_net_URLRequest(n))) } } return openfl_display_InteractiveObject.prototype.__dispatch.call(this, e) }, __fromSymbol: function(e, t) { this.__symbol = t, this.set_width(t.width), this.set_height(t.height), this.__offsetX = t.x, this.__offsetY = t.y, this.set_multiline(t.multiline), this.set_wordWrap(t.wordWrap), this.set_displayAsPassword(t.password), t.border && (this.set_border(!0), this.set_background(!0)), this.set_selectable(t.selectable), t.input && this.set_type(1); var n = new openfl_text_TextFormat; null != t.color && (n.color = 16777215 & t.color), n.size = Math.round(t.fontHeight / 20); e.symbols.h[t.fontID]; n.font = t.fontName; var i = !1 , l = n.font; if (null == l) i = !0; else switch (l) { case "_sans": case "_serif": case "_typewriter": case "": i = !0; break; default: for (var a = 0, s = openfl_text_Font.enumerateFonts(); a < s.length; ) { var r = s[a]; if (++a, r.name == n.font) { i = !0; break } } } i ? this.set_embedFonts(!0) : lime_utils_Log.warn('Could not find required font "' + n.font + '", it has not been embedded', { fileName: "TextField.hx", lineNumber: 975, className: "openfl.text.TextField", methodName: "__fromSymbol" }), null != t.align && ("center" == t.align ? n.align = 0 : "right" == t.align ? n.align = 4 : "justify" == t.align && (n.align = 2), n.leftMargin = t.leftMargin / 20 | 0, n.rightMargin = t.rightMargin / 20 | 0, n.indent = t.indent / 20 | 0, n.leading = t.leading / 20 | 0, this.get_embedFonts() && (n.leading += 4)), this.set_defaultTextFormat(n), null != t.text && (t.html ? this.set_htmlText(t.text) : this.set_text(t.text)) }, __getAttributeMatch: function(e) { return null != e.matched(2) ? e.matched(2) : e.matched(3) }, __getBounds: function(e, t) { this.__updateLayout(); var n = openfl_geom_Rectangle.__temp; n.copyFrom(this.__textEngine.bounds), n.x += this.__offsetX, n.y += this.__offsetY, n.__transform(n, t), e.__expand(n.x, n.y, n.width, n.height) }, __getCharIndexOnDifferentLine: function(e, t) { if (e < 0 || e > this.__text.length) return -1; if (t < 0 || t > this.__textEngine.numLines - 1) return -1; for (var n = null, i = null, l = 0, a = this.__textEngine.layoutGroups; l < a.get_length(); ) { var s = a.get(l); if (++l, e >= s.startIndex && e <= s.endIndex) { n = s.offsetX; for (var r = 0, _ = e - s.startIndex; r < _; ) { var o = r++; n += s.advances[o] } if (null != i) return this.__getPosition(n, i) } if (s.lineIndex == t && (i = s.offsetY + s.height / 2, null != n)) return this.__getPosition(n, i) } return -1 }, __getCursor: function() { var e = this.__getGroup(this.get_mouseX(), this.get_mouseY(), !0); return null != e && "" != e.format.url ? lime_ui_MouseCursor.POINTER : this.__textEngine.selectable ? lime_ui_MouseCursor.TEXT : null }, __getGroup: function(e, t, n) { null == n && (n = !1), this.__updateLayout(), e += this.get_scrollH(); for (var i = 0, l = this.get_scrollV() - 1; i < l; ) { var a = i++; t += this.__textEngine.lineHeights.get(a) } !n && t > this.__textEngine.textHeight && (t = this.__textEngine.textHeight); for (var s, r, _ = !0, o = 0, p = this.__textEngine.layoutGroups.get_length(); o < p; ) { var h = o++; if (s = this.__textEngine.layoutGroups.get(h), r = h < this.__textEngine.layoutGroups.get_length() - 1 ? this.__textEngine.layoutGroups.get(h + 1) : null, _ && (t < s.offsetY && (t = s.offsetY), e < s.offsetX && (e = s.offsetX), _ = !1), (t >= s.offsetY && t <= s.offsetY + s.height || !n && null == r) && (e >= s.offsetX && e <= s.offsetX + s.width || !n && (null == r || r.lineIndex != s.lineIndex))) return s } return null }, __getPosition: function(e, t) { var n = this.__getGroup(e, t); if (null == n) return this.__text.length; for (var i = 0, l = 0, a = n.advances.length; l < a; ) { var s = l++; if (i += n.advances[s], e <= n.offsetX + i) return e <= n.offsetX + (i - n.advances[s]) + n.advances[s] / 2 ? n.startIndex + s : n.startIndex + s < n.endIndex ? n.startIndex + s + 1 : n.endIndex } return n.endIndex }, __hitTest: function(e, t, n, i, l, a) { if (!a.get_visible() || this.__isMask || l && !this.mouseEnabled) return !1; if (null != this.get_mask() && !this.get_mask().__hitTestMask(e, t)) return !1; this.__getRenderTransform(), this.__updateLayout(); var s = this.__renderTransform.__transformInverseX(e, t) , r = this.__renderTransform.__transformInverseY(e, t); return !!this.__textEngine.bounds.contains(s, r) && (null != i && i.push(a), !0) }, __hitTestMask: function(e, t) { this.__getRenderTransform(), this.__updateLayout(); var n = this.__renderTransform.__transformInverseX(e, t) , i = this.__renderTransform.__transformInverseY(e, t); return !!this.__textEngine.bounds.contains(n, i) }, __renderCanvas: function(e) { if (openfl__$internal_renderer_canvas_CanvasTextField.render(this, e, this.__worldTransform), 0 == this.__textEngine.antiAliasType && 1 == this.__textEngine.gridFitType) { var t = e.context.imageSmoothingEnabled; t && (e.context.mozImageSmoothingEnabled = !1, e.context.msImageSmoothingEnabled = !1, e.context.imageSmoothingEnabled = !1), openfl_display_InteractiveObject.prototype.__renderCanvas.call(this, e), t && (e.context.mozImageSmoothingEnabled = !0, e.context.msImageSmoothingEnabled = !0, e.context.imageSmoothingEnabled = !0) } else openfl_display_InteractiveObject.prototype.__renderCanvas.call(this, e) }, __renderGL: function(e) { openfl__$internal_renderer_canvas_CanvasTextField.render(this, e, this.__worldTransform), openfl_display_InteractiveObject.prototype.__renderGL.call(this, e) }, __startCursorTimer: function() { this.__cursorTimer = haxe_Timer.delay($bind(this, this.__startCursorTimer), 600), this.__showCursor = !this.__showCursor, this.__dirty = !0 }, __startTextInput: function() { this.__caretIndex < 0 && (this.__caretIndex = this.__text.length, this.__selectionIndex = this.__caretIndex), null != this.stage && (this.stage.window.backend.setEnableTextEvents(!0), this.__inputEnabled || (this.stage.window.backend.setEnableTextEvents(!0), this.stage.window.onTextInput.has($bind(this, this.window_onTextInput)) || (this.stage.window.onTextInput.add($bind(this, this.window_onTextInput)), this.stage.window.onKeyDown.add($bind(this, this.window_onKeyDown))), this.__inputEnabled = !0, this.__startCursorTimer())) }, __stopCursorTimer: function() { null != this.__cursorTimer && (this.__cursorTimer.stop(), this.__cursorTimer = null), this.__showCursor && (this.__showCursor = !1, this.__dirty = !0) }, __stopTextInput: function() { this.__inputEnabled && null != this.stage && (this.stage.window.backend.setEnableTextEvents(!1), this.stage.window.onTextInput.remove($bind(this, this.window_onTextInput)), this.stage.window.onKeyDown.remove($bind(this, this.window_onKeyDown)), this.__inputEnabled = !1, this.__stopCursorTimer()) }, __updateLayout: function() { if (this.__layoutDirty) { var e = this.__textEngine.width; this.__textEngine.height; if (this.__textEngine.update(), 2 != this.__textEngine.autoSize) { if (this.__textEngine.width != e) switch (this.__textEngine.autoSize) { case 3: this.set_x(this.get_x() + (e - this.__textEngine.width)); break; case 0: this.set_x(this.get_x() + (e - this.__textEngine.width) / 2) } this.__textEngine.getBounds() } this.__layoutDirty = !1 } }, __updateText: function(e) { if (this.__text = e, this.__text.length < this.__caretIndex && (this.__selectionIndex = this.__caretIndex = this.__text.length), this.__displayAsPassword) { for (var t = this.get_text().length, n = "", i = 0; i < t; ) { i++; n += "*" } this.__textEngine.text = n } else this.__textEngine.text = this.__text }, __updateTransforms: function(e) { openfl_display_InteractiveObject.prototype.__updateTransforms.call(this, e), this.__renderTransform.__translateTransformed(this.__offsetX, this.__offsetY) }, set_background: function(e) { return e != this.__textEngine.background && (this.__dirty = !0), this.__textEngine.background = e }, set_border: function(e) { return e != this.__textEngine.border && (this.__dirty = !0), this.__textEngine.border = e }, get_defaultTextFormat: function() { return this.__textFormat.clone() }, set_defaultTextFormat: function(e) { return this.__textFormat.__merge(e), this.__layoutDirty = !0, this.__dirty = !0, e }, set_displayAsPassword: function(e) { return e != this.__displayAsPassword && (this.__dirty = !0, this.__layoutDirty = !0, this.__displayAsPassword = e, this.__updateText(this.__text)), e }, get_embedFonts: function() { return this.__textEngine.embedFonts }, set_embedFonts: function(e) { return this.__textEngine.embedFonts = e }, get_height: function() { return this.__updateLayout(), this.__textEngine.height * Math.abs(this.get_scaleY()) }, set_height: function(e) { return e != this.__textEngine.height && (this.__transformDirty || (this.__transformDirty = !0, openfl_display_DisplayObject.__worldTransformDirty++), this.__dirty = !0, this.__layoutDirty = !0, this.__textEngine.height = e), this.__textEngine.height * Math.abs(this.get_scaleY()) }, set_htmlText: function(e) { if (this.__isHTML && this.__text == e || (this.__dirty = !0, this.__layoutDirty = !0), this.__isHTML = !0, null == this.__div) { e = openfl_text_TextField.__regexBreakTag.replace(e, "\n"), e = openfl_text_TextField.__regexEntities[0].replace(e, '"'), e = openfl_text_TextField.__regexEntities[1].replace(e, "'"); var t = (e = openfl_text_TextField.__regexEntities[2].replace(e, "&")).split("<"); if (1 == t.length) { if (e = openfl_text_TextField.__regexHTMLTag.replace(e, ""), this.__textEngine.textFormatRanges.get_length() > 1) { var n = this.__textEngine.textFormatRanges.get_length() - 1; this.__textEngine.textFormatRanges.splice(1, n) } e = openfl_text_TextField.__regexEntities[3].replace(e, "<"), e = openfl_text_TextField.__regexEntities[4].replace(e, ">"); var i = this.__textEngine.textFormatRanges.get(0); return i.format = this.__textFormat, i.start = 0, i.end = e.length, this.__updateText(e), e } var l, a = this.__textEngine.textFormatRanges.get_length(); this.__textEngine.textFormatRanges.splice(0, a), e = ""; for (var s = 0, r = t.length; s < r; ) { var _ = s++; l = t[_], l = openfl_text_TextField.__regexEntities[3].replace(l, "<"), l = openfl_text_TextField.__regexEntities[4].replace(l, ">"), t[_] = l } for (var o, p = [this.__textFormat.clone()], h = !1, d = 0; d < t.length; ) { var u = t[d]; if (++d, "" != u) { var c, m = "/" == HxOverrides.substr(u, 0, 1), U = u.indexOf(">"), Q = U + 1, N = u.indexOf(" "), F = u.substring(m ? 1 : 0, N > -1 && N < U ? N : U); if (m) { if (p.pop(), c = p[p.length - 1].clone(), "p" == F.toLowerCase() && this.__textEngine.textFormatRanges.get_length() > 0 && (e += "\n", h = !0), Q < u.length) { o = HxOverrides.substr(u, Q, null); var Z = new openfl__$internal_text_TextFormatRange(c,e.length,e.length + o.length); this.__textEngine.textFormatRanges.push(Z), e += o, h = !1 } } else if (c = p[p.length - 1].clone(), U > -1) { switch (F.toLowerCase()) { case "a": openfl_text_TextField.__regexHref.match(u) && (c.url = this.__getAttributeMatch(openfl_text_TextField.__regexHref)); break; case "p": this.__textEngine.textFormatRanges.get_length() > 0 && !h && (e += "\n"), openfl_text_TextField.__regexAlign.match(u) && (c.align = openfl_text__$TextFormatAlign_TextFormatAlign_$Impl_$.fromString(this.__getAttributeMatch(openfl_text_TextField.__regexAlign).toLowerCase())); break; case "font": if (openfl_text_TextField.__regexFace.match(u) && (c.font = this.__getAttributeMatch(openfl_text_TextField.__regexFace)), openfl_text_TextField.__regexColor.match(u) && (c.color = Std.parseInt("0x" + this.__getAttributeMatch(openfl_text_TextField.__regexColor))), openfl_text_TextField.__regexSize.match(u)) { var f, S = this.__getAttributeMatch(openfl_text_TextField.__regexSize), g = HxOverrides.cca(S, 0); if (43 == g || 45 == g) f = p.length >= 2 ? p[p.length - 2] : this.__textFormat, c.size = f.size + Std.parseInt(S); else c.size = Std.parseInt(S) } break; case "b": c.bold = !0; break; case "u": c.underline = !0; break; case "i": case "em": c.italic = !0; break; case "textformat": if (openfl_text_TextField.__regexBlockIndent.match(u) && (c.blockIndent = Std.parseInt(this.__getAttributeMatch(openfl_text_TextField.__regexBlockIndent))), openfl_text_TextField.__regexIndent.match(u) && (c.indent = Std.parseInt(this.__getAttributeMatch(openfl_text_TextField.__regexIndent))), openfl_text_TextField.__regexLeading.match(u) && (c.leading = Std.parseInt(this.__getAttributeMatch(openfl_text_TextField.__regexLeading))), openfl_text_TextField.__regexLeftMargin.match(u) && (c.leftMargin = Std.parseInt(this.__getAttributeMatch(openfl_text_TextField.__regexLeftMargin))), openfl_text_TextField.__regexRightMargin.match(u) && (c.rightMargin = Std.parseInt(this.__getAttributeMatch(openfl_text_TextField.__regexRightMargin))), openfl_text_TextField.__regexTabStops.match(u)) { for (var B = this.__getAttributeMatch(openfl_text_TextField.__regexTabStops).split(" "), b = [], v = 0; v < B.length; ) { var W = B[v]; ++v, b.push(Std.parseInt(W)) } c.tabStops = b } } if (p.push(c), Q < u.length) { o = u.substring(Q); var T = new openfl__$internal_text_TextFormatRange(c,e.length,e.length + o.length); this.__textEngine.textFormatRanges.push(T), e += o, h = !1 } } else { var V = new openfl__$internal_text_TextFormatRange(c,e.length,e.length + u.length); this.__textEngine.textFormatRanges.push(V), e += u, h = !1 } } } if (0 == this.__textEngine.textFormatRanges.get_length()) { var R = new openfl__$internal_text_TextFormatRange(p[0],0,0); this.__textEngine.textFormatRanges.push(R) } } return this.__updateText(e), e }, set_multiline: function(e) { return e != this.__textEngine.multiline && (this.__dirty = !0, this.__layoutDirty = !0), this.__textEngine.multiline = e }, get_scrollH: function() { return this.__textEngine.scrollH }, get_scrollV: function() { return this.__textEngine.scrollV }, get_selectable: function() { return this.__textEngine.selectable }, set_selectable: function(e) { return e != this.__textEngine.selectable && 1 == this.get_type() && (null != this.stage && this.stage.get_focus() == this ? this.__startTextInput() : e || this.__stopTextInput()), this.__textEngine.selectable = e }, get_text: function() { return this.__text }, set_text: function(e) { if (!this.__isHTML && this.__text == e) return e; if (this.__dirty = !0, this.__layoutDirty = !0, this.__textEngine.textFormatRanges.get_length() > 1) { var t = this.__textEngine.textFormatRanges.get_length() - 1; this.__textEngine.textFormatRanges.splice(1, t) } var n = this.__textEngine.textFormatRanges.get(0); return n.format = this.__textFormat, n.start = 0, n.end = e.length, this.__isHTML = !1, this.__updateText(e), e }, get_type: function() { return this.__textEngine.type }, set_type: function(e) { return e != this.__textEngine.type && (1 == e ? (this.addEventListener("focusIn", $bind(this, this.this_onFocusIn)), this.addEventListener("focusOut", $bind(this, this.this_onFocusOut)), this.addEventListener("addedToStage", $bind(this, this.this_onAddedToStage)), this.this_onFocusIn(null), this.__textEngine.__useIntAdvances = !0) : (this.removeEventListener("focusIn", $bind(this, this.this_onFocusIn)), this.removeEventListener("focusOut", $bind(this, this.this_onFocusOut)), this.removeEventListener("addedToStage", $bind(this, this.this_onAddedToStage)), this.__stopTextInput(), this.__textEngine.__useIntAdvances = null), this.__dirty = !0), this.__textEngine.type = e }, get_width: function() { return this.__updateLayout(), this.__textEngine.width * Math.abs(this.__scaleX) }, set_width: function(e) { return e != this.__textEngine.width && (this.__transformDirty || (this.__transformDirty = !0, openfl_display_DisplayObject.__worldTransformDirty++), this.__dirty = !0, this.__layoutDirty = !0, this.__textEngine.width = e), this.__textEngine.width * Math.abs(this.__scaleX) }, set_wordWrap: function(e) { return e != this.__textEngine.wordWrap && (this.__dirty = !0, this.__layoutDirty = !0), this.__textEngine.wordWrap = e }, stage_onMouseMove: function(e) { if (null != this.stage && this.__textEngine.selectable && this.__selectionIndex >= 0) { this.__updateLayout(); var t = this.__getPosition(this.get_mouseX(), this.get_mouseY()); t != this.__caretIndex && (this.__caretIndex = t, this.__dirty = !0) } }, stage_onMouseUp: function(e) { if (null != this.stage && (this.stage.removeEventListener("mouseMove", $bind(this, this.stage_onMouseMove)), this.stage.removeEventListener("mouseUp", $bind(this, this.stage_onMouseUp)), this.stage.get_focus() == this)) { this.__getWorldTransform(), this.__updateLayout(); this.__worldTransform.__transformInverseX(this.get_x(), this.get_y()), this.__worldTransform.__transformInverseY(this.get_x(), this.get_y()); var t, n, i = this.__getPosition(this.get_mouseX(), this.get_mouseY()); t = Std.int(Math.min(this.__selectionIndex, i)), n = Std.int(Math.max(this.__selectionIndex, i)), this.__selectionIndex = t, this.__caretIndex = n, this.__inputEnabled && (this.this_onFocusIn(null), this.__stopCursorTimer(), this.__startCursorTimer()) } }, this_onAddedToStage: function(e) { this.this_onFocusIn(null) }, this_onFocusIn: function(e) { this.get_selectable() && 1 == this.get_type() && null != this.stage && this.stage.get_focus() == this && this.__startTextInput() }, this_onFocusOut: function(e) { this.__stopTextInput() }, this_onMouseDown: function(e) { this.get_selectable() && (this.__updateLayout(), this.__caretIndex = this.__getPosition(this.get_mouseX(), this.get_mouseY()), this.__selectionIndex = this.__caretIndex, this.__dirty = !0, this.stage.addEventListener("mouseMove", $bind(this, this.stage_onMouseMove)), this.stage.addEventListener("mouseUp", $bind(this, this.stage_onMouseUp))) }, window_onKeyDown: function(e, t) { switch (e) { case 13: case 1073741912: this.__textEngine.multiline && (this.replaceSelectedText("\n"), this.dispatchEvent(new openfl_events_Event("change",!0))); break; case 8: this.__selectionIndex == this.__caretIndex && this.__caretIndex > 0 && (this.__selectionIndex = this.__caretIndex - 1), this.__selectionIndex != this.__caretIndex && (this.replaceSelectedText(""), this.__selectionIndex = this.__caretIndex, this.dispatchEvent(new openfl_events_Event("change",!0))); break; case 127: this.__selectionIndex == this.__caretIndex && this.__caretIndex < this.__text.length && (this.__selectionIndex = this.__caretIndex + 1), this.__selectionIndex != this.__caretIndex && (this.replaceSelectedText(""), this.__selectionIndex = this.__caretIndex, this.dispatchEvent(new openfl_events_Event("change",!0))); break; case 1073741904: lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey(t) ? (this.__caretBeginningOfLine(), lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(t) || (this.__selectionIndex = this.__caretIndex)) : lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(t) ? this.__caretPreviousCharacter() : (this.__selectionIndex == this.__caretIndex ? this.__caretPreviousCharacter() : this.__caretIndex = Std.int(Math.min(this.__caretIndex, this.__selectionIndex)), this.__selectionIndex = this.__caretIndex), this.__stopCursorTimer(), this.__startCursorTimer(); break; case 1073741903: lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey(t) ? (this.__caretEndOfLine(), lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(t) || (this.__selectionIndex = this.__caretIndex)) : lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(t) ? this.__caretNextCharacter() : (this.__selectionIndex == this.__caretIndex ? this.__caretNextCharacter() : this.__caretIndex = Std.int(Math.max(this.__caretIndex, this.__selectionIndex)), this.__selectionIndex = this.__caretIndex), this.__stopCursorTimer(), this.__startCursorTimer(); break; case 1073741905: if (lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(t)) this.__caretNextLine(); else { if (this.__selectionIndex == this.__caretIndex) this.__caretNextLine(); else { var n = this.getLineIndexOfChar(Std.int(Math.max(this.__caretIndex, this.__selectionIndex))); this.__caretNextLine(n, Std.int(Math.min(this.__caretIndex, this.__selectionIndex))) } this.__selectionIndex = this.__caretIndex } this.__stopCursorTimer(), this.__startCursorTimer(); break; case 1073741906: if (lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(t)) this.__caretPreviousLine(); else { if (this.__selectionIndex == this.__caretIndex) this.__caretPreviousLine(); else { var i = this.getLineIndexOfChar(Std.int(Math.min(this.__caretIndex, this.__selectionIndex))); this.__caretPreviousLine(i, Std.int(Math.min(this.__caretIndex, this.__selectionIndex))) } this.__selectionIndex = this.__caretIndex } this.__stopCursorTimer(), this.__startCursorTimer(); break; case 1073741898: this.__caretBeginningOfLine(), this.__stopCursorTimer(), this.__startCursorTimer(); break; case 1073741901: this.__caretEndOfLine(), this.__stopCursorTimer(), this.__startCursorTimer(); break; case 99: (lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey(t) || lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_ctrlKey(t)) && lime_system_Clipboard.set_text(this.__text.substring(this.__caretIndex, this.__selectionIndex)); break; case 120: (lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey(t) || lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_ctrlKey(t)) && (lime_system_Clipboard.set_text(this.__text.substring(this.__caretIndex, this.__selectionIndex)), this.__caretIndex != this.__selectionIndex && (this.replaceSelectedText(""), this.dispatchEvent(new openfl_events_Event("change",!0)))); break; case 97: (lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey(t) || lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_ctrlKey(t)) && (this.__caretIndex = this.__text.length, this.__selectionIndex = 0) } }, window_onTextInput: function(e) { this.replaceSelectedText(e), this.dispatchEvent(new openfl_events_Event("change",!0)) }, __class__: openfl_text_TextField, __properties__: $extend(openfl_display_InteractiveObject.prototype.__properties__, { set_wordWrap: "set_wordWrap", set_type: "set_type", get_type: "get_type", set_text: "set_text", get_text: "get_text", set_selectable: "set_selectable", get_selectable: "get_selectable", get_scrollV: "get_scrollV", get_scrollH: "get_scrollH", set_multiline: "set_multiline", set_htmlText: "set_htmlText", set_embedFonts: "set_embedFonts", get_embedFonts: "get_embedFonts", set_displayAsPassword: "set_displayAsPassword", set_defaultTextFormat: "set_defaultTextFormat", get_defaultTextFormat: "get_defaultTextFormat", set_border: "set_border", set_background: "set_background" }) }); var openfl_display_FrameLabel = function(e, t) { openfl_events_EventDispatcher.call(this), this.__name = e, this.__frame = t }; $hxClasses["openfl.display.FrameLabel"] = openfl_display_FrameLabel, openfl_display_FrameLabel.__name__ = ["openfl", "display", "FrameLabel"], openfl_display_FrameLabel.__super__ = openfl_events_EventDispatcher, openfl_display_FrameLabel.prototype = $extend(openfl_events_EventDispatcher.prototype, { __frame: null, __name: null, get_frame: function() { return this.__frame }, get_name: function() { return this.__name }, __class__: openfl_display_FrameLabel, __properties__: { get_name: "get_name", get_frame: "get_frame" } }); var openfl_display_Graphics = function(e) { this.__dirty = !0, this.__owner = e, this.__commands = new openfl__$internal_renderer_DrawCommandBuffer, this.__strokePadding = 0, this.__positionX = 0, this.__positionY = 0, this.__renderTransform = new openfl_geom_Matrix, this.__worldTransform = new openfl_geom_Matrix, this.__width = 0, this.__height = 0, this.moveTo(0, 0) }; $hxClasses["openfl.display.Graphics"] = openfl_display_Graphics, openfl_display_Graphics.__name__ = ["openfl", "display", "Graphics"], openfl_display_Graphics.prototype = { __bounds: null, __commands: null, __dirty: null, __height: null, __positionX: null, __positionY: null, __renderTransform: null, __strokePadding: null, __transformDirty: null, __visible: null, __owner: null, __width: null, __worldTransform: null, __canvas: null, __context: null, __bitmap: null, beginBitmapFill: function(e, t, n, i) { null == i && (i = !1), null == n && (n = !0), this.__commands.beginBitmapFill(e, null != t ? t.clone() : null, n, i), this.__visible = !0 }, beginFill: function(e, t) { null == t && (t = 1), null == e && (e = 0), this.__commands.beginFill(16777215 & e, t), t > 0 && (this.__visible = !0) }, beginGradientFill: function(e, t, n, i, l, a, s, r) { null == r && (r = 0), null == s && (s = 1), null == a && (a = 0), this.__commands.beginGradientFill(e, t, n, i, l, a, s, r); for (var _ = 0; _ < n.length; ) { var o = n[_]; if (++_, o > 0) { this.__visible = !0; break } } }, copyFrom: function(e) { null != e.__bounds ? this.__bounds = e.__bounds.clone() : this.__bounds = null, this.__commands = e.__commands.copy(), this.set___dirty(!0), this.__strokePadding = e.__strokePadding, this.__positionX = e.__positionX, this.__positionY = e.__positionY, this.__transformDirty = !0, this.__visible = e.__visible }, curveTo: function(e, t, n, i) { var l, a; if (this.__inflateBounds(this.__positionX - this.__strokePadding, this.__positionY - this.__strokePadding), this.__inflateBounds(this.__positionX + this.__strokePadding, this.__positionY + this.__strokePadding), e < n && e > this.__positionX || e > n && e < this.__positionX) l = n; else { var s = (this.__positionX - e) / (this.__positionX - 2 * e + n); l = this.__calculateBezierQuadPoint(s, this.__positionX, e, n) } if (t < i && t > this.__positionY || t > i && t < this.__positionY) a = i; else { var r = (this.__positionY - t) / (this.__positionY - 2 * t + i); a = this.__calculateBezierQuadPoint(r, this.__positionY, t, i) } this.__inflateBounds(l - this.__strokePadding, a - this.__strokePadding), this.__inflateBounds(l + this.__strokePadding, a + this.__strokePadding), this.__positionX = n, this.__positionY = i, this.__commands.curveTo(e, t, n, i), this.set___dirty(!0) }, drawRect: function(e, t, n, i) { n <= 0 || i <= 0 || (this.__inflateBounds(e - this.__strokePadding, t - this.__strokePadding), this.__inflateBounds(e + n + this.__strokePadding, t + i + this.__strokePadding), this.__commands.drawRect(e, t, n, i), this.set___dirty(!0)) }, endFill: function() { this.__commands.endFill() }, lineStyle: function(e, t, n, i, l, a, s, r) { null == r && (r = 3), null == l && (l = 2), null == i && (i = !1), null == n && (n = 1), null == t && (t = 0), null != e && (1 == s ? e > this.__strokePadding && (this.__strokePadding = e) : e / 2 > this.__strokePadding && (this.__strokePadding = e / 2)), this.__commands.lineStyle(e, t, n, i, l, a, s, r), null != e && (this.__visible = !0) }, lineTo: function(e, t) { isFinite(e) && isFinite(t) && (this.__inflateBounds(this.__positionX - this.__strokePadding, this.__positionY - this.__strokePadding), this.__inflateBounds(this.__positionX + this.__strokePadding, this.__positionY + this.__strokePadding), this.__positionX = e, this.__positionY = t, this.__inflateBounds(this.__positionX - this.__strokePadding, this.__positionY - this.__strokePadding), this.__inflateBounds(this.__positionX + 2 * this.__strokePadding, this.__positionY + this.__strokePadding), this.__commands.lineTo(e, t), this.set___dirty(!0)) }, moveTo: function(e, t) { this.__positionX = e, this.__positionY = t, this.__commands.moveTo(e, t) }, __calculateBezierQuadPoint: function(e, t, n, i) { var l = 1 - e; return l * l * t + 2 * l * e * n + e * e * i }, __cleanup: function() { null != this.__bounds && (this.set___dirty(!0), this.__transformDirty = !0), this.__bitmap = null, this.__canvas = null, this.__context = null }, __getBounds: function(e, t) { if (null != this.__bounds) { var n = openfl_geom_Rectangle.__temp; this.__bounds.__transform(n, t), e.__expand(n.x, n.y, n.width, n.height) } }, __hitTest: function(e, t, n, i) { if (null == this.__bounds) return !1; var l = i.__transformInverseX(e, t) , a = i.__transformInverseY(e, t); return !!(l > this.__bounds.x && a > this.__bounds.y && this.__bounds.contains(l, a)) && (!n || openfl__$internal_renderer_canvas_CanvasGraphics.hitTest(this, l, a)) }, __inflateBounds: function(e, t) { if (null == this.__bounds) return this.__bounds = new openfl_geom_Rectangle(e,t,0,0), void (this.__transformDirty = !0); e < this.__bounds.x && (this.__bounds.width += this.__bounds.x - e, this.__bounds.x = e, this.__transformDirty = !0), t < this.__bounds.y && (this.__bounds.height += this.__bounds.y - t, this.__bounds.y = t, this.__transformDirty = !0), e > this.__bounds.x + this.__bounds.width && (this.__bounds.width = e - this.__bounds.x), t > this.__bounds.y + this.__bounds.height && (this.__bounds.height = t - this.__bounds.y) }, __update: function() { if (!(null == this.__bounds || this.__bounds.width <= 0 || this.__bounds.height <= 0)) { var e = this.__owner.__renderTransform , t = 1 , n = 1; if (null != e) { t = 0 == e.b ? Math.abs(e.a) : Math.sqrt(e.a * e.a + e.b * e.b), n = 0 == e.c ? Math.abs(e.d) : Math.sqrt(e.c * e.c + e.d * e.d); var i = this.__bounds.width * t , l = this.__bounds.height * n; if (i < 1 || l < 1) return (this.__width >= 1 || this.__height >= 1) && this.set___dirty(!0), this.__width = 0, void (this.__height = 0); this.__renderTransform.a = i / this.__bounds.width, this.__renderTransform.d = l / this.__bounds.height; var a = 1 / this.__renderTransform.a , s = 1 / this.__renderTransform.d; this.__worldTransform.a = a * e.a, this.__worldTransform.b = a * e.b, this.__worldTransform.c = s * e.c, this.__worldTransform.d = s * e.d; var r = this.__bounds.x , _ = this.__bounds.y , o = r * e.a + _ * e.c + e.tx , p = r * e.b + _ * e.d + e.ty; this.__worldTransform.tx = Math.floor(o), this.__worldTransform.ty = Math.floor(p), this.__renderTransform.tx = this.__worldTransform.__transformInverseX(o, p), this.__renderTransform.ty = this.__worldTransform.__transformInverseY(o, p); var h = Math.ceil(i + this.__renderTransform.tx) , d = Math.ceil(l + this.__renderTransform.ty); h == this.__width && d == this.__height || this.set___dirty(!0), this.__width = h, this.__height = d } } }, set___dirty: function(e) { return e && null != this.__owner && this.__owner.__setRenderDirty(), this.__dirty = e }, __class__: openfl_display_Graphics, __properties__: { set___dirty: "set___dirty" } }; var openfl_display__$JointStyle_JointStyle_$Impl_$ = {}; $hxClasses["openfl.display._JointStyle.JointStyle_Impl_"] = openfl_display__$JointStyle_JointStyle_$Impl_$, openfl_display__$JointStyle_JointStyle_$Impl_$.__name__ = ["openfl", "display", "_JointStyle", "JointStyle_Impl_"], openfl_display__$JointStyle_JointStyle_$Impl_$.toString = function(e) { switch (e) { case 0: return "bevel"; case 1: return "miter"; case 2: return "round"; default: return null } } ; var openfl_display_Loader = function() {}; $hxClasses["openfl.display.Loader"] = openfl_display_Loader, openfl_display_Loader.__name__ = ["openfl", "display", "Loader"], openfl_display_Loader.__super__ = openfl_display_DisplayObjectContainer, openfl_display_Loader.prototype = $extend(openfl_display_DisplayObjectContainer.prototype, { __class__: openfl_display_Loader }); var openfl_display_LoaderInfo = function() { openfl_events_EventDispatcher.call(this), this.applicationDomain = openfl_system_ApplicationDomain.currentDomain, this.bytesLoaded = 0, this.bytesTotal = 0, this.childAllowsParent = !0, this.parameters = {} }; $hxClasses["openfl.display.LoaderInfo"] = openfl_display_LoaderInfo, openfl_display_LoaderInfo.__name__ = ["openfl", "display", "LoaderInfo"], openfl_display_LoaderInfo.create = function(e) { var t = new openfl_display_LoaderInfo; return t.uncaughtErrorEvents = new openfl_events_UncaughtErrorEvents, null != e ? t.loader = e : t.url = openfl_display_LoaderInfo.__rootURL, t } , openfl_display_LoaderInfo.__super__ = openfl_events_EventDispatcher, openfl_display_LoaderInfo.prototype = $extend(openfl_events_EventDispatcher.prototype, { applicationDomain: null, bytesLoaded: null, bytesTotal: null, childAllowsParent: null, content: null, loader: null, parameters: null, uncaughtErrorEvents: null, url: null, __completed: null, __complete: function() { this.__completed || (this.bytesLoaded < this.bytesTotal && (this.bytesLoaded = this.bytesTotal), this.__update(this.bytesLoaded, this.bytesTotal), this.__completed = !0, this.dispatchEvent(new openfl_events_Event("complete"))) }, __update: function(e, t) { this.bytesLoaded = e, this.bytesTotal = t, this.dispatchEvent(new openfl_events_ProgressEvent("progress",!1,!1,e,t)) }, __class__: openfl_display_LoaderInfo }); var openfl_display__$MovieClip_TimelineObject = function(e, t, n) { this.id = e, this.depth = t, this.displayObject = n }; $hxClasses["openfl.display._MovieClip.TimelineObject"] = openfl_display__$MovieClip_TimelineObject, openfl_display__$MovieClip_TimelineObject.__name__ = ["openfl", "display", "_MovieClip", "TimelineObject"], openfl_display__$MovieClip_TimelineObject.prototype = { depth: null, displayObject: null, id: null, __class__: openfl_display__$MovieClip_TimelineObject }; var openfl_display_Preloader = function(e) { lime_app_Preloader.call(this), this.display = e, null != e && (e.addEventListener("unload", $bind(this, this.display_onUnload)), openfl_Lib.current.addChild(e)) }; $hxClasses["openfl.display.Preloader"] = openfl_display_Preloader, openfl_display_Preloader.__name__ = ["openfl", "display", "Preloader"], openfl_display_Preloader.__super__ = lime_app_Preloader, openfl_display_Preloader.prototype = $extend(lime_app_Preloader.prototype, { display: null, ready: null, start: function() { if (!this.simulateProgress) if (this.ready = !0, openfl_Lib.current.get_loaderInfo().__complete(), null != this.display) { var e = new openfl_events_Event("complete",!0,!0); this.display.dispatchEvent(e), e.isDefaultPrevented() || this.display.dispatchEvent(new openfl_events_Event("unload")) } else lime_app_Preloader.prototype.start.call(this) }, update: function(e, t) { openfl_Lib.current.get_loaderInfo().__update(e, t), null != this.display && this.display.dispatchEvent(new openfl_events_ProgressEvent("progress",!0,!0,e,t)) }, display_onUnload: function(e) { null != this.display && (this.display.removeEventListener("unload", $bind(this, this.display_onUnload)), this.display.parent == openfl_Lib.current && openfl_Lib.current.removeChild(this.display), openfl_Lib.current.stage.set_focus(null), this.display = null), this.ready && !this.simulateProgress && lime_app_Preloader.prototype.start.call(this) }, __class__: openfl_display_Preloader }); var openfl_display_Shader = function(e) { this.__data = new openfl_display_ShaderData(null), null == this.__glFragmentSource && (this.__glFragmentSource = "varying float vAlpha;\n\t\tvarying vec2 vTexCoord;\n\t\tuniform sampler2D uImage0;\n\t\t\n\t\tvoid main(void) {\n\t\t\t\n\t\t\tvec4 color = texture2D (uImage0, vTexCoord);\n\t\t\t\n\t\t\tif (color.a == 0.0) {\n\t\t\t\t\n\t\t\t\tgl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tgl_FragColor = color * vAlpha;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}"), null == this.__glVertexSource && (this.__glVertexSource = "attribute float aAlpha;\n\t\tattribute vec4 aPosition;\n\t\tattribute vec2 aTexCoord;\n\t\tvarying float vAlpha;\n\t\tvarying vec2 vTexCoord;\n\t\t\n\t\tuniform mat4 uMatrix;\n\t\t\n\t\tvoid main(void) {\n\t\t\t\n\t\t\tvAlpha = aAlpha;\n\t\t\tvTexCoord = aTexCoord;\n\t\t\tgl_Position = uMatrix * aPosition;\n\t\t\t\n\t\t}"), this.byteCode = e, this.precisionHint = 1, this.__glSourceDirty = !0, this.__numPasses = 1 }; $hxClasses["openfl.display.Shader"] = openfl_display_Shader, openfl_display_Shader.__name__ = ["openfl", "display", "Shader"], openfl_display_Shader.prototype = { byteCode: null, glProgram: null, precisionHint: null, gl: null, __data: null, __glFragmentSource: null, __glSourceDirty: null, __glVertexSource: null, __isUniform: null, __inputBitmapData: null, __numPasses: null, __paramBool: null, __paramFloat: null, __paramInt: null, __uniformMatrix2: null, __uniformMatrix3: null, __uniformMatrix4: null, __disable: function() { null != this.glProgram && this.__disableGL() }, __disableGL: function() { null != this.get_data().uImage0 && (this.get_data().uImage0.input = null); for (var e = 0, t = this.__paramBool; e < t.length; ) { var n = t[e]; ++e, this.gl.disableVertexAttribArray(n.index) } for (var i = 0, l = this.__paramFloat; i < l.length; ) { var a = l[i]; ++i, this.gl.disableVertexAttribArray(a.index) } for (var s = 0, r = this.__paramInt; s < r.length; ) { var _ = r[s]; ++s, this.gl.disableVertexAttribArray(_.index) } this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null), this.gl.bindTexture(this.gl.TEXTURE_2D, null) }, __enable: function() { this.__init(), null != this.glProgram && this.__enableGL() }, __enableGL: function() { for (var e = 0, t = 0, n = this.__inputBitmapData; t < n.length; ) { var i = n[t]; ++t, this.gl.uniform1i(i.index, e), e++ } }, __init: function() { null == this.__data && (this.__data = new openfl_display_ShaderData(null)), null == this.__glFragmentSource || null == this.__glVertexSource || null != this.glProgram && !this.__glSourceDirty || this.__initGL() }, __initGL: function() { var e, t, n, i; (this.__glSourceDirty || null == this.__isUniform) && (this.__glSourceDirty = !1, this.glProgram = null, this.__isUniform = new haxe_ds_StringMap, this.__inputBitmapData = [], this.__paramBool = [], this.__paramFloat = [], this.__paramInt = [], e = new Float32Array(4), this.__uniformMatrix2 = e, t = new Float32Array(9), this.__uniformMatrix3 = t, n = new Float32Array(16), this.__uniformMatrix4 = n, this.__processGLData(this.get_glVertexSource(), "attribute"), this.__processGLData(this.get_glVertexSource(), "uniform"), this.__processGLData(this.get_glFragmentSource(), "uniform")); if (null != this.gl && null == this.glProgram && (i = "#ifdef GL_ES\n\t\t\t\tprecision " + (1 == this.precisionHint ? "mediump" : "lowp") + " float;\n\t\t\t\t#endif\n\t\t\t\t" + this.get_glFragmentSource(), this.glProgram = lime_utils_GLUtils.createProgram(this.get_glVertexSource(), i), null != this.glProgram)) { for (var l = 0, a = this.__inputBitmapData; l < a.length; ) { var s = a[l]; ++l, this.__isUniform.get(s.name) ? s.index = this.gl.getUniformLocation(this.glProgram, s.name) : s.index = this.gl.getAttribLocation(this.glProgram, s.name) } for (var r = 0, _ = this.__paramBool; r < _.length; ) { var o = _[r]; ++r, this.__isUniform.get(o.name) ? o.index = this.gl.getUniformLocation(this.glProgram, o.name) : o.index = this.gl.getAttribLocation(this.glProgram, o.name) } for (var p = 0, h = this.__paramFloat; p < h.length; ) { var d = h[p]; ++p, this.__isUniform.get(d.name) ? d.index = this.gl.getUniformLocation(this.glProgram, d.name) : d.index = this.gl.getAttribLocation(this.glProgram, d.name) } for (var u = 0, c = this.__paramInt; u < c.length; ) { var m = c[u]; ++u, this.__isUniform.get(m.name) ? m.index = this.gl.getUniformLocation(this.glProgram, m.name) : m.index = this.gl.getAttribLocation(this.glProgram, m.name) } } }, __processGLData: function(e, t) { var n, i, l, a, s = 0; for (i = new EReg("uniform" == t ? "uniform ([A-Za-z0-9]+) ([A-Za-z0-9]+)" : "attribute ([A-Za-z0-9]+) ([A-Za-z0-9]+)",""); i.matchSub(e, s); ) { if (a = i.matched(1), l = i.matched(2), StringTools.startsWith(a, "sampler")) { var r = new openfl_display_ShaderInput; r.name = l, this.__inputBitmapData.push(r), Reflect.setField(this.get_data(), l, r) } else { var _; switch (a) { case "bool": _ = 0; break; case "double": case "float": _ = 4; break; case "int": case "uint": _ = 8; break; case "bvec2": _ = 1; break; case "bvec3": _ = 2; break; case "bvec4": _ = 3; break; case "ivec2": case "uvec2": _ = 9; break; case "ivec3": case "uvec3": _ = 10; break; case "ivec4": case "uvec4": _ = 11; break; case "vec2": case "dvec2": _ = 5; break; case "vec3": case "dvec3": _ = 6; break; case "vec4": case "dvec4": _ = 7; break; case "mat2": case "mat2x2": _ = 12; break; case "mat2x3": _ = 13; break; case "mat2x4": _ = 14; break; case "mat3x2": _ = 15; break; case "mat3": case "mat3x3": _ = 16; break; case "mat3x4": _ = 17; break; case "mat4x2": _ = 18; break; case "mat4x3": _ = 19; break; case "mat4": case "mat4x4": _ = 20; break; default: _ = null } switch (_) { case 0: case 1: case 2: case 3: var o = new openfl_display_ShaderParameter; o.name = l, o.type = _, this.__paramBool.push(o), Reflect.setField(this.get_data(), l, o); break; case 8: case 9: case 10: case 11: var p = new openfl_display_ShaderParameter; p.name = l, p.type = _, this.__paramInt.push(p), Reflect.setField(this.get_data(), l, p); break; default: var h = new openfl_display_ShaderParameter; h.name = l, h.type = _, this.__paramFloat.push(h), Reflect.setField(this.get_data(), l, h) } } this.__isUniform.set(l, "uniform" == t), s = (n = i.matchedPos()).pos + n.len } }, __update: function() { null != this.glProgram && this.__updateGL() }, __updateGL: function() { for (var e = 0, t = 0, n = this.__inputBitmapData; t < n.length; ) { var i = n[t]; ++t, null != i.input && (this.gl.activeTexture(this.gl.TEXTURE0 + e), this.gl.bindTexture(this.gl.TEXTURE_2D, i.input.getTexture(this.gl)), i.smoothing ? (this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR), this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR)) : (this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.NEAREST), this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.NEAREST))), e++ } for (var l = 0, a = 0, s = this.__paramBool; a < s.length; ) { var r = s[a]; ++a; var _ = r.value; if (l = r.index, null != _) switch (r.type) { case 0: this.gl.uniform1i(l, _[0] ? 1 : 0); break; case 1: this.gl.uniform2i(l, _[0] ? 1 : 0, _[1] ? 1 : 0); break; case 2: this.gl.uniform3i(l, _[0] ? 1 : 0, _[1] ? 1 : 0, _[2] ? 1 : 0); break; case 3: this.gl.uniform4i(l, _[0] ? 1 : 0, _[1] ? 1 : 0, _[2] ? 1 : 0, _[3] ? 1 : 0) } else this.__isUniform.get(r.name) || this.gl.enableVertexAttribArray(r.index) } for (var o = 0, p = this.__paramFloat; o < p.length; ) { var h = p[o]; ++o; var d = h.value; if (l = h.index, null != d) switch (h.type) { case 4: this.gl.uniform1f(l, d[0]); break; case 5: this.gl.uniform2f(l, d[0], d[1]); break; case 6: this.gl.uniform3f(l, d[0], d[1], d[2]); break; case 7: this.gl.uniform4f(l, d[0], d[1], d[2], d[3]); break; case 12: for (var u = 0; u < 4; ) { var c = u++; this.__uniformMatrix2[c] = d[c] } this.gl.uniformMatrix2fv(l, !1, this.__uniformMatrix2); break; case 16: for (var m = 0; m < 9; ) { var U = m++; this.__uniformMatrix3[U] = d[U] } this.gl.uniformMatrix3fv(l, !1, this.__uniformMatrix3); break; case 20: for (var Q = 0; Q < 16; ) { var N = Q++; this.__uniformMatrix4[N] = d[N] } this.gl.uniformMatrix4fv(l, !1, this.__uniformMatrix4) } else this.__isUniform.get(h.name) || this.gl.enableVertexAttribArray(h.index) } for (var F = 0, Z = this.__paramInt; F < Z.length; ) { var f = Z[F]; ++F; var S = f.value; if (null != S) switch (f.type) { case 8: this.gl.uniform1i(l, S[0]); break; case 9: this.gl.uniform2i(l, S[0], S[1]); break; case 10: this.gl.uniform3i(l, S[0], S[1], S[2]); break; case 11: this.gl.uniform4i(l, S[0], S[1], S[2], S[3]) } else this.__isUniform.get(f.name) || this.gl.enableVertexAttribArray(f.index) } }, get_data: function() { return (this.__glSourceDirty || null == this.__data) && this.__init(), this.__data }, get_glFragmentSource: function() { return this.__glFragmentSource }, get_glVertexSource: function() { return this.__glVertexSource }, __class__: openfl_display_Shader, __properties__: { get_glVertexSource: "get_glVertexSource", get_glFragmentSource: "get_glFragmentSource", get_data: "get_data" } }; var openfl_display_ShaderData = function(e) {}; $hxClasses["openfl.display.ShaderData"] = openfl_display_ShaderData, openfl_display_ShaderData.__name__ = ["openfl", "display", "ShaderData"], openfl_display_ShaderData.prototype = { aAlpha: null, aPosition: null, aTexCoord: null, uImage0: null, uMatrix: null, __class__: openfl_display_ShaderData }; var openfl_display_ShaderInput = function() { this.channels = 0, this.height = 0, this.index = 0, this.width = 0 }; $hxClasses["openfl.display.ShaderInput"] = openfl_display_ShaderInput, openfl_display_ShaderInput.__name__ = ["openfl", "display", "ShaderInput"], openfl_display_ShaderInput.prototype = { channels: null, height: null, index: null, input: null, name: null, smoothing: null, width: null, __class__: openfl_display_ShaderInput }; var openfl_display_ShaderParameter = function() { this.index = 0 }; $hxClasses["openfl.display.ShaderParameter"] = openfl_display_ShaderParameter, openfl_display_ShaderParameter.__name__ = ["openfl", "display", "ShaderParameter"], openfl_display_ShaderParameter.prototype = { index: null, name: null, type: null, value: null, __class__: openfl_display_ShaderParameter }; var openfl_display_Shape = function() { openfl_display_DisplayObject.call(this) }; $hxClasses["openfl.display.Shape"] = openfl_display_Shape, openfl_display_Shape.__name__ = ["openfl", "display", "Shape"], openfl_display_Shape.__super__ = openfl_display_DisplayObject, openfl_display_Shape.prototype = $extend(openfl_display_DisplayObject.prototype, { get_graphics: function() { return null == this.__graphics && (this.__graphics = new openfl_display_Graphics(this)), this.__graphics }, __class__: openfl_display_Shape, __properties__: $extend(openfl_display_DisplayObject.prototype.__properties__, { get_graphics: "get_graphics" }) }); var openfl_display_SimpleButton = function(e, t, n, i) { if (openfl_display_InteractiveObject.call(this), this.enabled = !0, this.trackAsMenu = !1, this.useHandCursor = !0, this.set_upState(null != e ? e : new openfl_display_DisplayObject), this.set_overState(t), this.set_downState(n), this.set_hitTestState(null != i ? i : new openfl_display_DisplayObject), this.addEventListener("mouseDown", $bind(this, this.__this_onMouseDown)), this.addEventListener("mouseOut", $bind(this, this.__this_onMouseOut)), this.addEventListener("mouseOver", $bind(this, this.__this_onMouseOver)), this.addEventListener("mouseUp", $bind(this, this.__this_onMouseUp)), this.set___currentState(this.upState), null != openfl_display_SimpleButton.__initSymbol) { var l = openfl_display_SimpleButton.__initSWF; this.__symbol = openfl_display_SimpleButton.__initSymbol, openfl_display_SimpleButton.__initSWF = null, openfl_display_SimpleButton.__initSymbol = null, this.__fromSymbol(l, this.__symbol) } }; $hxClasses["openfl.display.SimpleButton"] = openfl_display_SimpleButton, openfl_display_SimpleButton.__name__ = ["openfl", "display", "SimpleButton"], openfl_display_SimpleButton.__super__ = openfl_display_InteractiveObject, openfl_display_SimpleButton.prototype = $extend(openfl_display_InteractiveObject.prototype, { downState: null, enabled: null, hitTestState: null, overState: null, trackAsMenu: null, upState: null, useHandCursor: null, __currentState: null, __ignoreEvent: null, __symbol: null, __fromSymbol: function(e, t) { this.__symbol = t, null != t.downState && this.set_downState(t.downState.__createObject(e)), null != t.hitState && this.set_hitTestState(t.hitState.__createObject(e)), null != t.overState && this.set_overState(t.overState.__createObject(e)), null != t.upState && this.set_upState(t.upState.__createObject(e)) }, __getBounds: function(e, t) { openfl_display_InteractiveObject.prototype.__getBounds.call(this, e, t), null != t && (this.__updateTransforms(t), this.__updateChildren(!0)), this.__currentState.__getBounds(e, this.__currentState.__worldTransform), null != t && (this.__updateTransforms(), this.__updateChildren(!0)) }, __getCursor: function() { return this.useHandCursor && !this.__ignoreEvent ? lime_ui_MouseCursor.POINTER : null }, __hitTest: function(e, t, n, i, l, a) { var s = !1; if (null != this.hitTestState) { var r = this.__updateTransform(this.hitTestState); this.hitTestState.__hitTest(e, t, n, i, l, a) && (null != i && (i[i.length - 1] = a), s = !0), this.__resetTransform(this.hitTestState, r) } else if (null != this.__currentState) { if (!a.get_visible() || this.__isMask || l && !this.mouseEnabled) return !1; if (null != this.get_mask() && !this.get_mask().__hitTestMask(e, t)) return !1; var _ = this.__updateTransform(this.__currentState); this.__currentState.__hitTest(e, t, n, i, l, a) && (s = l), this.__resetTransform(this.__currentState, _) } if (null != i) for (; i.length > 1 && i[i.length - 1] == i[i.length - 2]; ) i.pop(); return s }, __hitTestMask: function(e, t) { var n = !1 , i = this.__updateTransform(this.__currentState); return this.__currentState.__hitTestMask(e, t) && (n = !0), this.__resetTransform(this.__currentState, i), n }, __renderCanvas: function(e) { !this.__renderable || this.__worldAlpha <= 0 || (e.maskManager.pushObject(this), this.__currentState.__renderCanvas(e), e.maskManager.popObject(this)) }, __renderCanvasMask: function(e) { var t = new openfl_geom_Rectangle; this.__getBounds(t, this.__transform), e.context.rect(0, 0, t.width, t.height), this.__currentState.__renderCanvasMask(e) }, __renderGL: function(e) { !this.__renderable || this.__worldAlpha <= 0 || (e.maskManager.pushObject(this), this.__currentState.__renderGL(e), e.maskManager.popObject(this)) }, __resetTransform: function(e, t) { e.__updateTransforms(t), e.__updateChildren(!1) }, __setStageReference: function(e) { openfl_display_InteractiveObject.prototype.__setStageReference.call(this, e), null != this.__currentState && this.__currentState.__setStageReference(e) }, __updateTransform: function(e) { e.__worldTransform; var t = e.__transform , n = this.__worldTransform , i = openfl_geom_Matrix.__temp; i.a = t.a * n.a + t.b * n.c, i.b = t.a * n.b + t.b * n.d, i.c = t.c * n.a + t.d * n.c, i.d = t.c * n.b + t.d * n.d, i.tx = t.tx * n.a + t.ty * n.c + n.tx, i.ty = t.tx * n.b + t.ty * n.d + n.ty; var l = e.__transform; return e.__transform = i, e.__update(!1, !0), e.__transform = l, l }, __updateTransforms: function(e) { openfl_display_InteractiveObject.prototype.__updateTransforms.call(this, e), this.__updateTransform(this.__currentState) }, set_downState: function(e) { return null != this.downState && this.__currentState == this.downState && this.set___currentState(e), this.downState = e }, set_hitTestState: function(e) { return this.hitTestState = e }, set_overState: function(e) { return null != this.overState && this.__currentState == this.overState && this.set___currentState(e), this.overState = e }, set_upState: function(e) { return null != this.upState && this.__currentState == this.upState && this.set___currentState(e), this.upState = e }, set___currentState: function(e) { return null != this.__currentState && (this.__currentState.__renderParent = null), null != e.parent && e.parent.removeChild(e), e.__renderParent = this, this.__currentState = e }, __this_onMouseDown: function(e) { null != this.downState && this.set___currentState(this.downState) }, __this_onMouseOut: function(e) { this.__ignoreEvent = !1, this.upState != this.__currentState && this.set___currentState(this.upState) }, __this_onMouseOver: function(e) { e.buttonDown && (this.__ignoreEvent = !0), this.overState == this.__currentState || null == this.overState || this.__ignoreEvent || this.set___currentState(this.overState) }, __this_onMouseUp: function(e) { this.__ignoreEvent = !1, null != this.overState ? this.set___currentState(this.overState) : this.set___currentState(this.upState) }, __class__: openfl_display_SimpleButton, __properties__: $extend(openfl_display_InteractiveObject.prototype.__properties__, { set___currentState: "set___currentState", set_upState: "set_upState", set_overState: "set_overState", set_hitTestState: "set_hitTestState", set_downState: "set_downState" }) }); var openfl_display_Stage = function(e, t) { openfl_display_DisplayObjectContainer.call(this), this.application = e.application, this.window = e, null == t ? (this.__transparent = !0, this.set_color(0)) : this.set_color(t), this.set_name(null), this.__deltaTime = 0, this.__displayState = 2, this.__mouseX = 0, this.__mouseY = 0, this.__lastClickTime = 0, this.__logicalWidth = 0, this.__logicalHeight = 0, this.__displayMatrix = new openfl_geom_Matrix, this.stage3Ds = openfl__$Vector_Vector_$Impl_$.toObjectVector(null); var n = new openfl_display_Stage3D; this.stage3Ds.push(n), this.__resize(), this.stage = this, this.align = 6, this.allowsFullScreen = !1, this.allowsFullScreenInteractive = !1, this.quality = 1, this.scaleMode = 2, this.showDefaultContextMenu = !0, this.softKeyboardRect = new openfl_geom_Rectangle, this.stageFocusRect = !0, this.__macKeyboard = /AppleWebKit/.test(navigator.userAgent) && /Mobile\/\w+/.test(navigator.userAgent) || /Mac/.test(navigator.platform), this.__clearBeforeRender = !0, this.__stack = [], this.__rollOutStack = [], null == openfl_Lib.current.stage && this.stage.addChild(openfl_Lib.current) }; $hxClasses["openfl.display.Stage"] = openfl_display_Stage, openfl_display_Stage.__name__ = ["openfl", "display", "Stage"], openfl_display_Stage.__interfaces__ = [lime_app_IModule], openfl_display_Stage.__super__ = openfl_display_DisplayObjectContainer, openfl_display_Stage.prototype = $extend(openfl_display_DisplayObjectContainer.prototype, { align: null, allowsFullScreen: null, allowsFullScreenInteractive: null, application: null, quality: null, scaleMode: null, showDefaultContextMenu: null, softKeyboardRect: null, stage3Ds: null, stageFocusRect: null, stageHeight: null, stageWidth: null, window: null, __cacheFocus: null, __clearBeforeRender: null, __color: null, __colorSplit: null, __colorString: null, __deltaTime: null, __dirty: null, __displayMatrix: null, __displayState: null, __dragBounds: null, __dragObject: null, __dragOffsetX: null, __dragOffsetY: null, __focus: null, __invalidated: null, __lastClickTime: null, __logicalWidth: null, __logicalHeight: null, __macKeyboard: null, __mouseDownLeft: null, __mouseDownMiddle: null, __mouseDownRight: null, __mouseOverTarget: null, __mouseX: null, __mouseY: null, __primaryTouch: null, __renderer: null, __rendering: null, __rollOutStack: null, __stack: null, __transparent: null, addRenderer: function(e) { var t, n, i, l, a, s; e.onRender.add((t = $bind(this, this.render), n = e, function() { t(n) } )), e.onContextLost.add((i = $bind(this, this.onRenderContextLost), l = e, function() { i(l) } )), e.onContextRestored.add((a = $bind(this, this.onRenderContextRestored), s = e, function(e) { a(s, e) } )) }, addWindow: function(e) { var t, n, i, l, a, s, r, _, o, p, h, d, u, c, m, U, Q, N, F, Z, f, S, g, B, b, v, W, T, V, R, y, D, x, J, z, k, E, P, M, w, $, C, G, O, I, H; this.window == e && (e.onActivate.add((t = $bind(this, this.onWindowActivate), n = e, function() { t(n) } )), e.onClose.add((i = $bind(this, this.onWindowClose), l = e, function() { i(l) } ), !1, -9e3), e.onCreate.add((a = $bind(this, this.onWindowCreate), s = e, function() { a(s) } )), e.onDeactivate.add((r = $bind(this, this.onWindowDeactivate), _ = e, function() { r(_) } )), e.onDropFile.add((o = $bind(this, this.onWindowDropFile), p = e, function(e) { o(p, e) } )), e.onEnter.add((h = $bind(this, this.onWindowEnter), d = e, function() { h(d) } )), e.onFocusIn.add((u = $bind(this, this.onWindowFocusIn), c = e, function() { u(c) } )), e.onFocusOut.add((m = $bind(this, this.onWindowFocusOut), U = e, function() { m(U) } )), e.onFullscreen.add((Q = $bind(this, this.onWindowFullscreen), N = e, function() { Q(N) } )), e.onKeyDown.add((F = $bind(this, this.onKeyDown), Z = e, function(e, t) { F(Z, e, t) } )), e.onKeyUp.add((f = $bind(this, this.onKeyUp), S = e, function(e, t) { f(S, e, t) } )), e.onLeave.add((g = $bind(this, this.onWindowLeave), B = e, function() { g(B) } )), e.onMinimize.add((b = $bind(this, this.onWindowMinimize), v = e, function() { b(v) } )), e.onMouseDown.add((W = $bind(this, this.onMouseDown), T = e, function(e, t, n) { W(T, e, t, n) } )), e.onMouseMove.add((V = $bind(this, this.onMouseMove), R = e, function(e, t) { V(R, e, t) } )), e.onMouseMoveRelative.add((y = $bind(this, this.onMouseMoveRelative), D = e, function(e, t) { y(D, e, t) } )), e.onMouseUp.add((x = $bind(this, this.onMouseUp), J = e, function(e, t, n) { x(J, e, t, n) } )), e.onMouseWheel.add((z = $bind(this, this.onMouseWheel), k = e, function(e, t) { z(k, e, t) } )), e.onMove.add((E = $bind(this, this.onWindowMove), P = e, function(e, t) { E(P, e, t) } )), e.onResize.add((M = $bind(this, this.onWindowResize), w = e, function(e, t) { M(w, e, t) } )), e.onRestore.add(($ = $bind(this, this.onWindowRestore), C = e, function() { $(C) } )), e.onTextEdit.add((G = $bind(this, this.onTextEdit), O = e, function(e, t, n) { G(O, e, t, n) } )), e.onTextInput.add((I = $bind(this, this.onTextInput), H = e, function(e) { I(H, e) } )), e.id > -1 && this.onWindowCreate(e)) }, registerModule: function(e) { e.onExit.add($bind(this, this.onModuleExit), !1, 0), e.onUpdate.add($bind(this, this.update)); for (var t = lime_ui_Gamepad.devices.iterator(); t.hasNext(); ) { var n = t.next(); this.__onGamepadConnect(n) } lime_ui_Gamepad.onConnect.add($bind(this, this.__onGamepadConnect)), lime_ui_Touch.onStart.add($bind(this, this.onTouchStart)), lime_ui_Touch.onMove.add($bind(this, this.onTouchMove)), lime_ui_Touch.onEnd.add($bind(this, this.onTouchEnd)) }, setPreloader: function(e) {}, globalToLocal: function(e) { return e.clone() }, onGamepadAxisMove: function(e, t, n) { try { openfl_ui_GameInput.__onGamepadAxisMove(e, t, n) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onGamepadButtonDown: function(e, t) { try { openfl_ui_GameInput.__onGamepadButtonDown(e, t) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onGamepadButtonUp: function(e, t) { try { openfl_ui_GameInput.__onGamepadButtonUp(e, t) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onGamepadConnect: function(e) { try { openfl_ui_GameInput.__onGamepadConnect(e) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onGamepadDisconnect: function(e) { try { openfl_ui_GameInput.__onGamepadDisconnect(e) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onKeyDown: function(e, t, n) { if (null != this.window && this.window == e) try { this.__onKey("keyDown", t, n) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onKeyUp: function(e, t, n) { if (null != this.window && this.window == e) try { this.__onKey("keyUp", t, n) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onModuleExit: function(e) { if (null != this.window) try { this.__broadcastEvent(new openfl_events_Event("deactivate")) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onMouseDown: function(e, t, n, i) { if (null != this.window && this.window == e) try { var l; switch (i) { case 1: l = "middleMouseDown"; break; case 2: l = "rightMouseDown"; break; default: l = "mouseDown" } this.__onMouse(l, t * e.__scale | 0, n * e.__scale | 0, i) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onMouseMove: function(e, t, n) { if (null != this.window && this.window == e) try { this.__onMouse("mouseMove", t * e.__scale | 0, n * e.__scale | 0, 0) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onMouseMoveRelative: function(e, t, n) {}, onMouseUp: function(e, t, n, i) { if (null != this.window && this.window == e) try { var l; switch (i) { case 1: l = "middleMouseUp"; break; case 2: l = "rightMouseUp"; break; default: l = "mouseUp" } this.__onMouse(l, t * e.__scale | 0, n * e.__scale | 0, i), this.showDefaultContextMenu || 2 != i || e.onMouseUp.cancel() } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onMouseWheel: function(e, t, n) { if (null != this.window && this.window == e) try { this.__onMouseWheel(t * e.__scale | 0, n * e.__scale | 0) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onRenderContextLost: function(e) {}, onRenderContextRestored: function(e, t) {}, onTextEdit: function(e, t, n, i) {}, onTextInput: function(e, t) { if (null != this.window && this.window == e) try { var n = []; null == this.__focus ? this.__getInteractive(n) : this.__focus.__getInteractive(n); var i = new openfl_events_TextEvent("textInput",!0,!1,t); n.length > 0 ? (n.reverse(), this.__fireEvent(i, n)) : this.__dispatchEvent(i) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onTouchMove: function(e) { try { this.__onTouch("touchMove", e) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onTouchEnd: function(e) { try { this.__primaryTouch == e && (this.__primaryTouch = null), this.__onTouch("touchEnd", e) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onTouchStart: function(e) { try { null == this.__primaryTouch && (this.__primaryTouch = e), this.__onTouch("touchBegin", e) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onWindowActivate: function(e) { null != this.window && this.window }, onWindowClose: function(e) { this.window == e && (this.window = null); try { this.__primaryTouch = null, this.__broadcastEvent(new openfl_events_Event("deactivate")) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onWindowCreate: function(e) { if (null != this.window && this.window == e) try { if (null != e.renderer) { var t = e.renderer.context; switch (t[1]) { case 0: t[2]; break; case 1: var n = t[2]; this.__renderer = new openfl__$internal_renderer_canvas_CanvasRenderer(this,n); break; case 2: t[2]; break; case 4: t[2]; break; case 5: t[2] } } } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onWindowDeactivate: function(e) { null != this.window && this.window }, onWindowDropFile: function(e, t) {}, onWindowEnter: function(e) {}, onWindowFocusIn: function(e) { if (null != this.window && this.window == e) try { this.__broadcastEvent(new openfl_events_Event("activate")), this.set_focus(this.__cacheFocus) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onWindowFocusOut: function(e) { if (null != this.window && this.window == e) try { this.__primaryTouch = null, this.__broadcastEvent(new openfl_events_Event("deactivate")); var t = this.get_focus(); this.set_focus(null), this.__cacheFocus = t } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onWindowFullscreen: function(e) { if (null != this.window && this.window == e) try { this.__resize(), 2 == this.__displayState && (this.__displayState = 1, this.__dispatchEvent(new openfl_events_FullScreenEvent("fullScreen",!1,!1,!1,!0))) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onWindowLeave: function(e) { if (null != this.window && this.window == e) try { this.__dispatchEvent(new openfl_events_Event("mouseLeave")) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onWindowMinimize: function(e) { null != this.window && this.window }, onWindowMove: function(e, t, n) {}, onWindowResize: function(e, t, n) { if (null != this.window && this.window == e) try { this.__resize(), 2 == this.__displayState || e.__fullscreen || (this.__displayState = 2, this.__dispatchEvent(new openfl_events_FullScreenEvent("fullScreen",!1,!1,!0,!0))) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, onWindowRestore: function(e) { null != this.window && this.window }, render: function(e) { if (null != e.window && e.window == this.window) try { if (null != this.application && this.application.__windows.length > 0 && (this.__transformDirty || (this.__transformDirty = !0, openfl_display_DisplayObject.__worldTransformDirty++), this.__renderDirty || (this.__renderDirty = !0, openfl_display_DisplayObject.__worldRenderDirty++)), this.__rendering) return; if (this.__rendering = !0, null != this.__renderer && this.__renderer.clear(), this.__broadcastEvent(new openfl_events_Event("enterFrame")), this.__broadcastEvent(new openfl_events_Event("frameConstructed")), this.__broadcastEvent(new openfl_events_Event("exitFrame")), this.__invalidated && (this.__invalidated = !1, this.__broadcastEvent(new openfl_events_Event("render"))), this.__renderable = !0, this.__enterFrame(this.__deltaTime), this.__deltaTime = 0, this.__update(!1, !0), null != this.__renderer) { if (e.type == lime_graphics_RendererType.CAIRO) { var t = e.context; switch (t[1]) { case 4: t[2] } } this.__renderer.render() } this.__rendering = !1 } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val), this.__handleError(e) } }, update: function(e) { this.__deltaTime = e }, __broadcastEvent: function(e) { if (openfl_display_DisplayObject.__broadcastEvents.exists(e.type)) for (var t = openfl_display_DisplayObject.__broadcastEvents.get(e.type), n = 0; n < t.length; ) { var i = t[n]; ++n, i.__dispatch(e) } }, __drag: function(e) { var t = this.__dragObject.parent; null != t && t.__getWorldTransform().__transformInversePoint(e); var n = e.x + this.__dragOffsetX , i = e.y + this.__dragOffsetY; null != this.__dragBounds && (n < this.__dragBounds.x ? n = this.__dragBounds.x : n > this.__dragBounds.get_right() && (n = this.__dragBounds.get_right()), i < this.__dragBounds.y ? i = this.__dragBounds.y : i > this.__dragBounds.get_bottom() && (i = this.__dragBounds.get_bottom())), this.__dragObject.set_x(n), this.__dragObject.set_y(i) }, __fireEvent: function(e, t) { var n = t.length; if (0 == n) e.eventPhase = 2, e.target.__dispatch(e); else { e.eventPhase = 1, e.target = t[t.length - 1]; for (var i = 0, l = n - 1; i < l; ) { if (t[i++].__dispatch(e), e.__isCanceled) return } if (e.eventPhase = 2, e.target.__dispatch(e), e.__isCanceled) return; if (e.bubbles) { e.eventPhase = 3; for (var a = n - 2; a >= 0; ) { if (t[a].__dispatch(e), e.__isCanceled) return; a-- } } } }, __getInteractive: function(e) { return null != e && e.push(this), !0 }, __handleError: function(e) { var t = new openfl_events_UncaughtErrorEvent("uncaughtError",!0,!0,e); if (openfl_Lib.current.__loaderInfo.uncaughtErrorEvents.dispatchEvent(t), !t.__preventDefault) throw e }, __onKey: function(e, t, n) { openfl_events_MouseEvent.__altKey = lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_altKey(n), openfl_events_MouseEvent.__commandKey = lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey(n), openfl_events_MouseEvent.__ctrlKey = lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_ctrlKey(n), openfl_events_MouseEvent.__shiftKey = lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(n); var i = []; if (null == this.__focus ? this.__getInteractive(i) : this.__focus.__getInteractive(i), i.length > 0) { var l, a; switch (t) { case 1073742048: case 1073742049: case 1073742050: case 1073742051: l = 1; break; case 1073742052: case 1073742053: case 1073742054: case 1073742055: l = 2; break; case 1073741908: case 1073741909: case 1073741910: case 1073741911: case 1073741912: case 1073741913: case 1073741914: case 1073741915: case 1073741916: case 1073741917: case 1073741918: case 1073741919: case 1073741920: case 1073741921: case 1073741922: case 1073741923: case 1073742044: l = 3; break; default: l = 0 } switch (t) { case 8: a = 8; break; case 9: a = 9; break; case 13: a = 13; break; case 27: a = 27; break; case 32: a = 32; break; case 33: a = 49; break; case 34: a = 222; break; case 35: a = 51; break; case 36: a = 52; break; case 37: a = 53; break; case 38: a = 55; break; case 39: a = 222; break; case 40: a = 57; break; case 41: a = 48; break; case 42: a = 56; break; case 44: a = 188; break; case 45: a = 189; break; case 46: a = 190; break; case 47: a = 191; break; case 48: a = 48; break; case 49: a = 49; break; case 50: a = 50; break; case 51: a = 51; break; case 52: a = 52; break; case 53: a = 53; break; case 54: a = 54; break; case 55: a = 55; break; case 56: a = 56; break; case 57: a = 57; break; case 58: case 59: a = 186; break; case 60: a = 60; break; case 61: a = 187; break; case 62: a = 190; break; case 63: a = 191; break; case 64: a = 50; break; case 91: a = 219; break; case 92: a = 220; break; case 93: a = 221; break; case 94: a = 54; break; case 95: a = 189; break; case 96: a = 192; break; case 97: a = 65; break; case 98: a = 66; break; case 99: a = 67; break; case 100: a = 68; break; case 101: a = 69; break; case 102: a = 70; break; case 103: a = 71; break; case 104: a = 72; break; case 105: a = 73; break; case 106: a = 74; break; case 107: a = 75; break; case 108: a = 76; break; case 109: a = 77; break; case 110: a = 78; break; case 111: a = 79; break; case 112: a = 80; break; case 113: a = 81; break; case 114: a = 82; break; case 115: a = 83; break; case 116: a = 84; break; case 117: a = 85; break; case 118: a = 86; break; case 119: a = 87; break; case 120: a = 88; break; case 121: a = 89; break; case 122: a = 90; break; case 127: a = 46; break; case 1073741881: a = 20; break; case 1073741882: a = 112; break; case 1073741883: a = 113; break; case 1073741884: a = 114; break; case 1073741885: a = 115; break; case 1073741886: a = 116; break; case 1073741887: a = 117; break; case 1073741888: a = 118; break; case 1073741889: a = 119; break; case 1073741890: a = 120; break; case 1073741891: a = 121; break; case 1073741892: a = 122; break; case 1073741893: a = 123; break; case 1073741894: a = 301; break; case 1073741895: a = 145; break; case 1073741896: a = 19; break; case 1073741897: a = 45; break; case 1073741898: a = 36; break; case 1073741899: a = 33; break; case 1073741901: a = 35; break; case 1073741902: a = 34; break; case 1073741903: a = 39; break; case 1073741904: a = 37; break; case 1073741905: a = 40; break; case 1073741906: a = 38; break; case 1073741907: a = 144; break; case 1073741908: a = 111; break; case 1073741909: a = 106; break; case 1073741910: a = 109; break; case 1073741911: a = 107; break; case 1073741912: a = 108; break; case 1073741913: a = 97; break; case 1073741914: a = 98; break; case 1073741915: a = 99; break; case 1073741916: a = 100; break; case 1073741917: a = 101; break; case 1073741918: a = 102; break; case 1073741919: a = 103; break; case 1073741920: a = 104; break; case 1073741921: a = 105; break; case 1073741922: a = 96; break; case 1073741923: a = 110; break; case 1073741925: a = 302; break; case 1073741928: a = 124; break; case 1073741929: a = 125; break; case 1073741930: a = 126; break; case 1073741982: a = 13; break; case 1073742044: a = 110; break; case 1073742048: a = 17; break; case 1073742049: a = 16; break; case 1073742050: a = 18; break; case 1073742051: a = 15; break; case 1073742052: a = 17; break; case 1073742053: a = 16; break; case 1073742054: a = 18; break; case 1073742055: a = 15; break; default: a = t } var s = openfl_ui_Keyboard.__getCharCode(a, lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(n)) , r = new openfl_events_KeyboardEvent(e,!0,!0,s,a,l,this.__macKeyboard ? lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_ctrlKey(n) || lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey(n) : lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_ctrlKey(n),lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_altKey(n),lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(n),lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_ctrlKey(n),lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey(n)); i.reverse(), this.__fireEvent(r, i), r.__preventDefault && ("keyDown" == e ? this.window.onKeyDown.cancel() : this.window.onKeyUp.cancel()) } }, __onGamepadConnect: function(e) { var t, n, i, l, a, s, r, _; this.onGamepadConnect(e), e.onAxisMove.add((t = $bind(this, this.onGamepadAxisMove), n = e, function(e, i) { t(n, e, i) } )), e.onButtonDown.add((i = $bind(this, this.onGamepadButtonDown), l = e, function(e) { i(l, e) } )), e.onButtonUp.add((a = $bind(this, this.onGamepadButtonUp), s = e, function(e) { a(s, e) } )), e.onDisconnect.add((r = $bind(this, this.onGamepadDisconnect), _ = e, function() { r(_) } )) }, __onMouse: function(e, t, n, i) { if (!(i > 2)) { var l = new openfl_geom_Point(t,n); this.__displayMatrix.__transformInversePoint(l), this.__mouseX = l.x, this.__mouseY = l.y; var a = [] , s = null; this.__hitTest(this.__mouseX, this.__mouseY, !0, a, !0, this) ? s = a[a.length - 1] : (s = this, a = [this]), null == s && (s = this); var r, _, o = null; switch (e) { case "mouseDown": s.get_tabEnabled() ? this.set_focus(s) : this.set_focus(null), this.__mouseDownLeft = s; break; case "middleMouseDown": this.__mouseDownMiddle = s; break; case "rightMouseDown": this.__mouseDownRight = s; break; case "mouseUp": this.__mouseDownLeft == s && (o = "click"), this.__mouseDownLeft = null; break; case "middleMouseUp": this.__mouseDownMiddle == s && (o = "middleClick"), this.__mouseDownMiddle = null; break; case "rightMouseUp": this.__mouseDownRight == s && (o = "rightClick"), this.__mouseDownRight = null } if (this.__fireEvent(openfl_events_MouseEvent.__create(e, i, this.__mouseX, this.__mouseY, s == this ? l : s.globalToLocal(l), s), a), null != o && (this.__fireEvent(openfl_events_MouseEvent.__create(o, i, this.__mouseX, this.__mouseY, s == this ? l : s.globalToLocal(l), s), a), "mouseUp" == e && js_Boot.__cast(s, openfl_display_InteractiveObject).doubleClickEnabled)) { var p = openfl_Lib.getTimer(); p - this.__lastClickTime < 500 ? (this.__fireEvent(openfl_events_MouseEvent.__create("doubleClick", i, this.__mouseX, this.__mouseY, s == this ? l : s.globalToLocal(l), s), a), this.__lastClickTime = 0) : this.__lastClickTime = p } if ("auto" == openfl_ui_Mouse.__cursor) { var h = null; if (null != this.__mouseDownLeft) h = this.__mouseDownLeft.__getCursor(); else for (var d = 0; d < a.length; ) { var u = a[d]; if (++d, null != (h = u.__getCursor())) { lime_ui_Mouse.set_cursor(h); break } } null == h && lime_ui_Mouse.set_cursor(lime_ui_MouseCursor.ARROW) } s != this.__mouseOverTarget && null != this.__mouseOverTarget && (_ = this.__mouseOverTarget == this ? l : this.__mouseOverTarget.globalToLocal(l), r = openfl_events_MouseEvent.__create("mouseOut", i, this.__mouseX, this.__mouseY, _, this.__mouseOverTarget), this.__mouseOverTarget.__dispatchEvent(r)); for (var c = 0, m = this.__rollOutStack; c < m.length; ) { var U = m[c]; ++c, -1 == HxOverrides.indexOf(a, U, 0) && (HxOverrides.remove(this.__rollOutStack, U), _ = this.__mouseOverTarget.globalToLocal(l), (r = openfl_events_MouseEvent.__create("rollOut", i, this.__mouseX, this.__mouseY, _, this.__mouseOverTarget)).bubbles = !1, U.__dispatchEvent(r)) } for (var Q = 0; Q < a.length; ) { var N = a[Q]; ++Q, -1 == HxOverrides.indexOf(this.__rollOutStack, N, 0) && (N.hasEventListener("rollOver") && (_ = N.globalToLocal(l), (r = openfl_events_MouseEvent.__create("rollOver", i, this.__mouseX, this.__mouseY, _, N)).bubbles = !1, N.__dispatchEvent(r)), N.hasEventListener("rollOut") && this.__rollOutStack.push(N)) } if (s != this.__mouseOverTarget && (null != s && (_ = s == this ? l : s.globalToLocal(l), (r = openfl_events_MouseEvent.__create("mouseOver", i, this.__mouseX, this.__mouseY, _, s)).bubbles = !0, s.__dispatchEvent(r)), this.__mouseOverTarget = s), null != this.__dragObject) { this.__drag(l); var F = null; if (this.__mouseOverTarget == this.__dragObject) { var Z = this.__dragObject.mouseEnabled , f = this.__dragObject.mouseChildren; this.__dragObject.mouseEnabled = !1, this.__dragObject.mouseChildren = !1; var S = []; this.__hitTest(this.__mouseX, this.__mouseY, !0, S, !0, this) && (F = S[S.length - 1]), this.__dragObject.mouseEnabled = Z, this.__dragObject.mouseChildren = f } else this.__mouseOverTarget != this && (F = this.__mouseOverTarget); this.__dragObject.dropTarget = F } } }, __onMouseWheel: function(e, t) { var n = this.__mouseX , i = this.__mouseY , l = [] , a = null; this.__hitTest(this.__mouseX, this.__mouseY, !0, l, !0, this) ? a = l[l.length - 1] : (a = this, l = [this]), null == a && (a = this); var s = new openfl_geom_Point(n,i); this.__displayMatrix.__transformInversePoint(s); var r = 0 | t; this.__fireEvent(openfl_events_MouseEvent.__create("mouseWheel", 0, this.__mouseX, this.__mouseY, a == this ? s : a.globalToLocal(s), a, r), l) }, __onTouch: function(e, t) { var n = new openfl_geom_Point(Math.round(t.x * this.window.__width * this.window.__scale),Math.round(t.y * this.window.__height * this.window.__scale)); this.__displayMatrix.__transformInversePoint(n); var i = n.x , l = n.y , a = []; if (this.__hitTest(i, l, !1, a, !0, this)) { var s = a[a.length - 1]; null == s && (s = this); var r = s.globalToLocal(n) , _ = openfl_events_TouchEvent.__create(e, null, i, l, r, s); _.touchPointID = t.id, _.isPrimaryTouchPoint = this.__primaryTouch == t, this.__fireEvent(_, a) } else { var o = openfl_events_TouchEvent.__create(e, null, i, l, n, this); o.touchPointID = t.id, o.isPrimaryTouchPoint = this.__primaryTouch == t, this.__fireEvent(o, [this.stage]) } }, __resize: function() { var e = this.stageWidth , t = this.stageHeight , n = this.window.__width * this.window.__scale | 0 , i = this.window.__height * this.window.__scale | 0; if (this.__logicalWidth = n, this.__logicalHeight = i, this.__displayMatrix.identity(), 0 == this.__logicalWidth && 0 == this.__logicalHeight) this.stageWidth = n, this.stageHeight = i; else { this.stageWidth = this.__logicalWidth, this.stageHeight = this.__logicalHeight; var l = n / this.stageWidth , a = i / this.stageHeight , s = Math.min(l, a) , r = Math.round((n - this.stageWidth * s) / 2) , _ = Math.round((i - this.stageHeight * s) / 2); this.__displayMatrix.scale(s, s), this.__displayMatrix.translate(r, _) } for (var o = 0, p = this.stage3Ds; o < p.get_length(); ) { var h = p.get(o); ++o, h.__resize(this.stageWidth, this.stageHeight) } null != this.__renderer && this.__renderer.resize(n, i), this.stageWidth == e && this.stageHeight == t || this.__dispatchEvent(new openfl_events_Event("resize")) }, __setLogicalSize: function(e, t) { this.__logicalWidth = e, this.__logicalHeight = t, this.__resize() }, __update: function(e, t, n) { e ? openfl_display_DisplayObject.__worldTransformDirty > 0 && (openfl_display_DisplayObjectContainer.prototype.__update.call(this, !0, t, n), t && (openfl_display_DisplayObject.__worldTransformDirty = 0, this.__dirty = !0)) : (openfl_display_DisplayObject.__worldTransformDirty > 0 || this.__dirty || openfl_display_DisplayObject.__worldRenderDirty > 0) && (openfl_display_DisplayObjectContainer.prototype.__update.call(this, !1, t, n), t && (openfl_display_DisplayObject.__worldTransformDirty = 0, openfl_display_DisplayObject.__worldRenderDirty = 0, this.__dirty = !1)) }, set_color: function(e) { var t = (16711680 & e) >>> 16 , n = (65280 & e) >>> 8 , i = 255 & e; return this.__colorSplit = [t / 255, n / 255, i / 255], this.__colorString = "#" + StringTools.hex(16777215 & e, 6), this.__color = e }, get_focus: function() { return this.__focus }, set_focus: function(e) { if (e != this.__focus) { var t = this.__focus; if (this.__focus = e, this.__cacheFocus = e, null != t) { var n = new openfl_events_FocusEvent("focusOut",!0,!1,this.__focus,!1,0) , i = []; t.__getInteractive(i), i.reverse(), this.__fireEvent(n, i) } if (null != this.__focus) { var l = new openfl_events_FocusEvent("focusIn",!0,!1,t,!1,0) , a = []; e.__getInteractive(a), a.reverse(), this.__fireEvent(l, a) } } return this.__focus }, get_frameRate: function() { return null != this.application ? this.application.backend.getFrameRate() : 0 }, set_height: function(e) { return this.get_height() }, get_mouseX: function() { return this.__mouseX }, get_mouseY: function() { return this.__mouseY }, set_rotation: function(e) { return 0 }, set_scaleX: function(e) { return 0 }, set_scaleY: function(e) { return 0 }, set_width: function(e) { return this.get_width() }, set_x: function(e) { return 0 }, set_y: function(e) { return 0 }, __class__: openfl_display_Stage, __properties__: $extend(openfl_display_DisplayObjectContainer.prototype.__properties__, { get_frameRate: "get_frameRate", set_focus: "set_focus", get_focus: "get_focus", set_color: "set_color" }) }); var openfl_display_Stage3D = function() { openfl_events_EventDispatcher.call(this), this.set_x(0), this.set_y(0), this.visible = !0 }; $hxClasses["openfl.display.Stage3D"] = openfl_display_Stage3D, openfl_display_Stage3D.__name__ = ["openfl", "display", "Stage3D"], openfl_display_Stage3D.__super__ = openfl_events_EventDispatcher, openfl_display_Stage3D.prototype = $extend(openfl_events_EventDispatcher.prototype, { context3D: null, visible: null, x: null, y: null, __contextRequested: null, __canvas: null, __style: null, __webgl: null, __createContext: function(e, t) { if (null != t.gl) this.context3D = new openfl_display3D_Context3D(this,t), this.__dispatchCreate(); else { this.__canvas = window.document.createElement("canvas"), this.__canvas.width = e.stageWidth, this.__canvas.height = e.stageHeight; var n = e.window , i = { alpha: !(!Object.prototype.hasOwnProperty.call(n.config, "background") || null != n.config.background), antialias: !!Object.prototype.hasOwnProperty.call(n.config, "antialiasing") && n.config.antialiasing > 0, depth: !Object.prototype.hasOwnProperty.call(n.config, "depthBuffer") || n.config.depthBuffer, premultipliedAlpha: !0, stencil: !!Object.prototype.hasOwnProperty.call(n.config, "stencilBuffer") && n.config.stencilBuffer, preserveDrawingBuffer: !1 }; this.__webgl = js_html__$CanvasElement_CanvasUtil.getContextWebGL(this.__canvas, i), null != this.__webgl ? (lime_graphics_opengl_GL.context = this.__webgl, this.context3D = new openfl_display3D_Context3D(this,t), t.element.appendChild(this.__canvas), this.__style = this.__canvas.style, this.__style.setProperty("position", "absolute", null), this.__style.setProperty("top", "0", null), this.__style.setProperty("left", "0", null), this.__style.setProperty(t.transformOriginProperty, "0 0 0", null), this.__style.setProperty("z-index", "-1", null), this.__dispatchCreate()) : this.__dispatchError() } }, __dispatchError: function() { this.__contextRequested = !1, this.dispatchEvent(new openfl_events_ErrorEvent("error",!1,!1,"Context3D not available")) }, __dispatchCreate: function() { this.__contextRequested && (this.__contextRequested = !1, this.dispatchEvent(new openfl_events_Event("context3DCreate"))) }, __renderCanvas: function(e, t) { this.visible && this.__contextRequested && (this.__dispatchError(), this.__contextRequested = !1) }, __renderGL: function(e, t) { this.visible && (this.__contextRequested && null == this.context3D && this.__createContext(e, t), null != this.context3D && (this.__resetContext3DStates(), null != this.context3D && (t.blendModeManager.setBlendMode(null), null != t.shaderManager.currentShader && (t.shaderManager.setShader(null), null != this.context3D.__program && this.context3D.__program.__use())))) }, __resize: function(e, t) { null != this.__canvas && (this.__canvas.width = e, this.__canvas.height = t) }, __resetContext3DStates: function() { this.context3D.__updateBlendFactors(), this.context3D.__updateBackbufferViewport() }, set_x: function(e) { return this.x = e, null != this.context3D && this.context3D.__updateBackbufferViewport(), e }, set_y: function(e) { return this.y = e, null != this.context3D && this.context3D.__updateBackbufferViewport(), e }, __class__: openfl_display_Stage3D, __properties__: { set_y: "set_y", set_x: "set_x" } }); var openfl_display_Tile = function(e, t, n, i, l, a, s, r) { null == r && (r = 0), null == s && (s = 0), null == a && (a = 0), null == l && (l = 1), null == i && (i = 1), null == n && (n = 0), null == t && (t = 0), null == e && (e = 0), this.set_id(e), this.set_matrix(new openfl_geom_Matrix), 0 != t && this.set_x(t), 0 != n && this.set_y(n), 1 != i && this.set_scaleX(i), 1 != l && this.set_scaleY(l), 0 != a && this.set_rotation(a), this.set_originX(s), this.set_originY(r), this.set_alpha(1), this.visible = !0, this.__alphaDirty = !0, this.__sourceDirty = !0, this.__transformDirty = !0, this.__transform = [] }; $hxClasses["openfl.display.Tile"] = openfl_display_Tile, openfl_display_Tile.__name__ = ["openfl", "display", "Tile"], openfl_display_Tile.prototype = { alpha: null, id: null, matrix: null, originX: null, originY: null, tileset: null, visible: null, __alphaDirty: null, __rotation: null, __rotationCosine: null, __rotationSine: null, __scaleX: null, __scaleY: null, __sourceDirty: null, __transform: null, __transformDirty: null, set_alpha: function(e) { return this.__alphaDirty = !0, this.alpha = e }, set_id: function(e) { return this.__sourceDirty = !0, this.id = e }, set_matrix: function(e) { return this.__rotation = null, this.__scaleX = null, this.__scaleY = null, this.__transformDirty = !0, this.matrix = e }, set_originX: function(e) { return this.__transformDirty = !0, this.originX = e }, set_originY: function(e) { return this.__transformDirty = !0, this.originY = e }, get_rotation: function() { if (null == this.__rotation) if (0 == this.matrix.b && 0 == this.matrix.c) this.__rotation = 0, this.__rotationSine = 0, this.__rotationCosine = 1; else { var e = Math.atan2(this.matrix.d, this.matrix.c) - Math.PI / 2; this.__rotation = e * (180 / Math.PI), this.__rotationSine = Math.sin(e), this.__rotationCosine = Math.cos(e) } return this.__rotation }, set_rotation: function(e) { if (e != this.__rotation) { this.__rotation = e; var t = e * (Math.PI / 180); this.__rotationSine = Math.sin(t), this.__rotationCosine = Math.cos(t); var n = this.get_scaleX() , i = this.get_scaleY(); this.matrix.a = this.__rotationCosine * n, this.matrix.b = this.__rotationSine * n, this.matrix.c = -this.__rotationSine * i, this.matrix.d = this.__rotationCosine * i, this.__transformDirty = !0 } return e }, get_scaleX: function() { return null == this.__scaleX && (0 == this.matrix.b ? this.__scaleX = this.matrix.a : this.__scaleX = Math.sqrt(this.matrix.a * this.matrix.a + this.matrix.b * this.matrix.b)), this.__scaleX }, set_scaleX: function(e) { if (this.__scaleX != e) { if (this.__scaleX = e, 0 == this.matrix.b) this.matrix.a = e; else { this.get_rotation(); var t = this.__rotationCosine * e , n = this.__rotationSine * e; this.matrix.a = t, this.matrix.b = n } this.__transformDirty = !0 } return e }, get_scaleY: function() { return null == this.__scaleY && (0 == this.matrix.c ? this.__scaleY = this.matrix.d : this.__scaleY = Math.sqrt(this.matrix.c * this.matrix.c + this.matrix.d * this.matrix.d)), this.__scaleY }, set_scaleY: function(e) { if (this.__scaleY != e) { if (this.__scaleY = e, 0 == this.matrix.c) this.matrix.d = e; else { this.get_rotation(); var t = -this.__rotationSine * e , n = this.__rotationCosine * e; this.matrix.c = t, this.matrix.d = n } this.__transformDirty = !0 } return e }, set_x: function(e) { return this.__transformDirty = !0, this.matrix.tx = e }, set_y: function(e) { return this.__transformDirty = !0, this.matrix.ty = e }, __class__: openfl_display_Tile, __properties__: { set_y: "set_y", set_x: "set_x", set_scaleY: "set_scaleY", get_scaleY: "get_scaleY", set_scaleX: "set_scaleX", get_scaleX: "get_scaleX", set_rotation: "set_rotation", get_rotation: "get_rotation", set_originY: "set_originY", set_originX: "set_originX", set_matrix: "set_matrix", set_id: "set_id", set_alpha: "set_alpha" } }; var openfl_display_Tilemap = function(e, t, n, i) { null == i && (i = !0), openfl_display_DisplayObject.call(this), this.set_tileset(n), this.smoothing = i, this.__tiles = [], this.numTiles = 0, this.__width = e, this.__height = t }; $hxClasses["openfl.display.Tilemap"] = openfl_display_Tilemap, openfl_display_Tilemap.__name__ = ["openfl", "display", "Tilemap"], openfl_display_Tilemap.__super__ = openfl_display_DisplayObject, openfl_display_Tilemap.prototype = $extend(openfl_display_DisplayObject.prototype, { numTiles: null, tileset: null, smoothing: null, __buffer: null, __bufferData: null, __cacheAlpha: null, __dirty: null, __tiles: null, __height: null, __width: null, addTile: function(e) { return this.__tiles.push(e), this.__dirty = !0, this.numTiles++, e }, getTileAt: function(e) { return e >= 0 && e < this.numTiles ? this.__tiles[e] : null }, __getBounds: function(e, t) { var n = openfl_geom_Rectangle.__temp; n.setTo(0, 0, this.__width, this.__height), n.__transform(n, t), e.__expand(n.x, n.y, n.width, n.height) }, __hitTest: function(e, t, n, i, l, a) { if (!a.get_visible() || this.__isMask) return !1; if (null != this.get_mask() && !this.get_mask().__hitTestMask(e, t)) return !1; this.__getRenderTransform(); var s = this.__renderTransform.__transformInverseX(e, t) , r = this.__renderTransform.__transformInverseY(e, t); return s > 0 && r > 0 && s <= this.__width && r <= this.__height && (null == i || l || i.push(a), !0) }, __renderCanvas: function(e) { openfl__$internal_renderer_canvas_CanvasTilemap.render(this, e) }, __renderGL: function(e) { openfl__$internal_renderer_opengl_GLTilemap.render(this, e) }, get_height: function() { return this.__height * Math.abs(this.get_scaleY()) }, set_height: function(e) { return this.__height = 0 | e, this.__height * Math.abs(this.get_scaleY()) }, set_tileset: function(e) { return this.__dirty = !0, this.tileset = e }, get_width: function() { return this.__width * Math.abs(this.__scaleX) }, set_width: function(e) { return this.__width = 0 | e, this.__width * Math.abs(this.__scaleX) }, __class__: openfl_display_Tilemap, __properties__: $extend(openfl_display_DisplayObject.prototype.__properties__, { set_tileset: "set_tileset" }) }); var openfl_display_Tileset = function(e, t) { if (this.__data = [], this.set_bitmapData(e), null != t) for (var n = 0; n < t.length; ) { var i = t[n]; ++n, this.addRect(i) } }; $hxClasses["openfl.display.Tileset"] = openfl_display_Tileset, openfl_display_Tileset.__name__ = ["openfl", "display", "Tileset"], openfl_display_Tileset.prototype = { bitmapData: null, __data: null, addRect: function(e) { if (null == e) return -1; var t = new openfl_display__$Tileset_TileData(e); return t.__update(this.bitmapData), this.__data.push(t), this.__data.length - 1 }, getRect: function(e) { return e < this.__data.length && e >= 0 ? new openfl_geom_Rectangle(this.__data[e].x,this.__data[e].y,this.__data[e].width,this.__data[e].height) : null }, set_bitmapData: function(e) { this.bitmapData = e; for (var t = 0, n = this.__data; t < n.length; ) { var i = n[t]; ++t, i.__update(this.bitmapData) } return e }, __class__: openfl_display_Tileset, __properties__: { set_bitmapData: "set_bitmapData" } }; var openfl_display__$Tileset_TileData = function(e) { null != e && (this.x = 0 | e.x, this.y = 0 | e.y, this.width = 0 | e.width, this.height = 0 | e.height) }; $hxClasses["openfl.display._Tileset.TileData"] = openfl_display__$Tileset_TileData, openfl_display__$Tileset_TileData.__name__ = ["openfl", "display", "_Tileset", "TileData"], openfl_display__$Tileset_TileData.prototype = { height: null, width: null, x: null, y: null, __uvHeight: null, __uvWidth: null, __uvX: null, __uvY: null, __update: function(e) { null != e && (this.__uvX = this.x / e.width, this.__uvY = this.y / e.height, this.__uvWidth = (this.x + this.width) / e.width, this.__uvHeight = (this.y + this.height) / e.height) }, __class__: openfl_display__$Tileset_TileData }; var openfl_display_Window = function(e) { lime_ui_Window.call(this, e) }; $hxClasses["openfl.display.Window"] = openfl_display_Window, openfl_display_Window.__name__ = ["openfl", "display", "Window"], openfl_display_Window.__super__ = lime_ui_Window, openfl_display_Window.prototype = $extend(lime_ui_Window.prototype, { create: function(e) { lime_ui_Window.prototype.create.call(this, e), this.stage = new openfl_display_Stage(this,Object.prototype.hasOwnProperty.call(this.config, "background") ? this.config.background : 16777215), Object.prototype.hasOwnProperty.call(this.config, "resizable") && !this.config.resizable && this.stage.__setLogicalSize(this.config.width, this.config.height), e.addModule(this.stage) }, __class__: openfl_display_Window }); var openfl_display3D_Context3D = function(e, t) { var n, i; this.driverInfo = "OpenGL (Direct blitting)", this.backBufferWidth = 0, this.backBufferHeight = 0, openfl_events_EventDispatcher.call(this), this.__stage3D = e, this.__renderSession = t, n = new Float32Array(512), this.__vertexConstants = n, i = new Float32Array(512), this.__fragmentConstants = i; var l, a = [1, 1, 1, 1]; l = null != a ? new Float32Array(a) : null, this.__positionScale = l, this.__samplerDirty = 0, this.__samplerTextures = openfl__$Vector_Vector_$Impl_$.toObjectVector(null, 8), this.__samplerStates = []; for (var s = 0; s < 8; ) { var r = s++; this.__samplerStates[r] = new openfl__$internal_stage3D_SamplerState(9729,9729,33071,33071) } this.maxBackBufferHeight = this.maxBackBufferWidth = lime_graphics_opengl_GL.context.getParameter(3386), this.__backBufferAntiAlias = 0, this.__backBufferEnableDepthAndStencil = !0, this.__backBufferWantsBestResolution = !1, this.__frameCount = 0, this.__rttDepthAndStencil = !1, this.__samplerDirty = 0, this.__stencilCompareMode = 0, this.__stencilRef = 0, this.__stencilReadMask = 255, this.__supportsPackedDepthStencil = !0; var _ = lime_graphics_opengl_GL.context.getExtension("EXT_texture_filter_anisotropic"); null != _ && null != Reflect.field(_, "MAX_TEXTURE_MAX_ANISOTROPY_EXT") || (_ = lime_graphics_opengl_GL.context.getExtension("MOZ_EXT_texture_filter_anisotropic")), null != _ && null != Reflect.field(_, "MAX_TEXTURE_MAX_ANISOTROPY_EXT") || (_ = lime_graphics_opengl_GL.context.getExtension("WEBKIT_EXT_texture_filter_anisotropic")), this.__supportsAnisotropicFiltering = null != _, this.__supportsAnisotropicFiltering && (this.__maxAnisotropyTexture2D = this.__maxAnisotropyCubeTexture = lime_graphics_opengl_GL.context.getParameter(lime_graphics_opengl_ExtensionAnisotropicFiltering.MAX_TEXTURE_MAX_ANISOTROPY_EXT)), this.__stats = openfl__$Vector_Vector_$Impl_$.toIntVector(null, 11), this.__statsCache = openfl__$Vector_Vector_$Impl_$.toIntVector(null, 11), openfl__$internal_stage3D_GLUtils.CheckGLError(); var o = lime_graphics_opengl_GL.context.getParameter(7936); openfl__$internal_stage3D_GLUtils.CheckGLError(); var p = lime_graphics_opengl_GL.context.getParameter(7938); openfl__$internal_stage3D_GLUtils.CheckGLError(); var h = lime_graphics_opengl_GL.context.getParameter(7937); openfl__$internal_stage3D_GLUtils.CheckGLError(); var d = lime_graphics_opengl_GL.context.getParameter(35724); openfl__$internal_stage3D_GLUtils.CheckGLError(), this.driverInfo = "OpenGL Vendor=" + o + " Version=" + p + " Renderer=" + h + " GLSL=" + d; for (var u = 0, c = this.__stats.get_length(); u < c; ) { var m = u++; this.__stats.set(m, 0) } openfl_display3D_Context3D.__stateCache.clearSettings() }; $hxClasses["openfl.display3D.Context3D"] = openfl_display3D_Context3D, openfl_display3D_Context3D.__name__ = ["openfl", "display3D", "Context3D"], openfl_display3D_Context3D.__super__ = openfl_events_EventDispatcher, openfl_display3D_Context3D.prototype = $extend(openfl_events_EventDispatcher.prototype, { backBufferHeight: null, backBufferWidth: null, driverInfo: null, maxBackBufferHeight: null, maxBackBufferWidth: null, __backBufferAntiAlias: null, __backBufferEnableDepthAndStencil: null, __backBufferWantsBestResolution: null, __fragmentConstants: null, __frameCount: null, __maxAnisotropyCubeTexture: null, __maxAnisotropyTexture2D: null, __positionScale: null, __program: null, __renderSession: null, __renderToTexture: null, __rttDepthAndStencil: null, __samplerDirty: null, __samplerTextures: null, __samplerStates: null, __stage3D: null, __stats: null, __statsCache: null, __stencilCompareMode: null, __stencilRef: null, __stencilReadMask: null, __supportsAnisotropicFiltering: null, __supportsPackedDepthStencil: null, __vertexConstants: null, createRectangleTexture: function(e, t, n, i) { return new openfl_display3D_textures_RectangleTexture(this,e,t,openfl_display3D__$Context3DTextureFormat_Context3DTextureFormat_$Impl_$.toString(n),i) }, __setViewport: function(e, t, n, i) { null != this.__renderToTexture && (t *= -1), openfl_display3D_Context3D.__stateCache.updateViewport(e, t, n, i) && (lime_graphics_opengl_GL.context.viewport(e, t, n, i), openfl__$internal_stage3D_GLUtils.CheckGLError()) }, __statsAdd: function(e, t) { var n = e , i = this.__stats.get(n) + t; return this.__stats.set(n, i), this.__stats.get(e) }, __statsIncrement: function(e) { var t = e , n = this.__stats.get(t) + 1; this.__stats.set(t, n) }, __updateBlendFactors: function() { if (null != openfl_display3D_Context3D.__stateCache._srcBlendFactor && null != openfl_display3D_Context3D.__stateCache._destBlendFactor) { var e = 1 , t = 0; switch (openfl_display3D_Context3D.__stateCache._srcBlendFactor) { case 2: e = 1; break; case 9: e = 0; break; case 7: e = 770; break; case 0: e = 772; break; case 1: e = 774; break; case 5: e = 771; break; case 3: e = 773; break; case 4: e = 775; break; default: throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError) } switch (openfl_display3D_Context3D.__stateCache._destBlendFactor) { case 2: t = 1; break; case 9: t = 0; break; case 7: t = 770; break; case 8: t = 768; break; case 0: t = 772; break; case 5: t = 771; break; case 6: t = 769; break; case 3: t = 773; break; default: throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError) } lime_graphics_opengl_GL.context.enable(3042), openfl__$internal_stage3D_GLUtils.CheckGLError(), lime_graphics_opengl_GL.context.blendFunc(e, t), openfl__$internal_stage3D_GLUtils.CheckGLError() } }, __updateBackbufferViewport: function() { null == this.__renderToTexture && this.__setViewport(0 | this.__stage3D.x, 0 | this.__stage3D.y, this.backBufferWidth, this.backBufferHeight) }, __class__: openfl_display3D_Context3D }); var openfl_display3D__$Context3DTextureFormat_Context3DTextureFormat_$Impl_$ = {}; $hxClasses["openfl.display3D._Context3DTextureFormat.Context3DTextureFormat_Impl_"] = openfl_display3D__$Context3DTextureFormat_Context3DTextureFormat_$Impl_$, openfl_display3D__$Context3DTextureFormat_Context3DTextureFormat_$Impl_$.__name__ = ["openfl", "display3D", "_Context3DTextureFormat", "Context3DTextureFormat_Impl_"], openfl_display3D__$Context3DTextureFormat_Context3DTextureFormat_$Impl_$.toString = function(e) { switch (e) { case 0: return "bgrPacked565"; case 1: return "bgra"; case 2: return "bgraPacked4444"; case 3: return "compressed"; case 4: return "compressedAlpha"; case 5: return "rgbaHalfFloat"; default: return null } } ; var openfl_display3D_Program3D = function() {}; $hxClasses["openfl.display3D.Program3D"] = openfl_display3D_Program3D, openfl_display3D_Program3D.__name__ = ["openfl", "display3D", "Program3D"], openfl_display3D_Program3D.prototype = { __alphaSamplerUniforms: null, __fragmentUniformMap: null, __programID: null, __samplerUniforms: null, __vertexUniformMap: null, __use: function() { lime_graphics_opengl_GL.useProgram(this.__programID), openfl__$internal_stage3D_GLUtils.CheckGLError(), this.__vertexUniformMap.markAllDirty(), this.__fragmentUniformMap.markAllDirty(); for (var e = this.__samplerUniforms.h, t = null; null != e; ) { var n; if (t = e[0], e = e[1], 1 != (n = t).regCount) throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("!!! TODO: uniform location on webgl")); lime_graphics_opengl_GL.context.uniform1i(n.location, n.regIndex), openfl__$internal_stage3D_GLUtils.CheckGLError() } for (var i = this.__alphaSamplerUniforms.h, l = null; null != i; ) { var a; if (l = i[0], i = i[1], 1 != (a = l).regCount) throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("!!! TODO: uniform location on webgl")); lime_graphics_opengl_GL.context.uniform1i(a.location, a.regIndex), openfl__$internal_stage3D_GLUtils.CheckGLError() } }, __class__: openfl_display3D_Program3D }; var openfl_display3D__$Program3D_Uniform = function() {}; $hxClasses["openfl.display3D._Program3D.Uniform"] = openfl_display3D__$Program3D_Uniform, openfl_display3D__$Program3D_Uniform.__name__ = ["openfl", "display3D", "_Program3D", "Uniform"], openfl_display3D__$Program3D_Uniform.prototype = { location: null, regIndex: null, regCount: null, __class__: openfl_display3D__$Program3D_Uniform }; var openfl_display3D__$Program3D_UniformMap = function() {}; $hxClasses["openfl.display3D._Program3D.UniformMap"] = openfl_display3D__$Program3D_UniformMap, openfl_display3D__$Program3D_UniformMap.__name__ = ["openfl", "display3D", "_Program3D", "UniformMap"], openfl_display3D__$Program3D_UniformMap.prototype = { __allDirty: null, __anyDirty: null, markAllDirty: function() { this.__allDirty = !0, this.__anyDirty = !0 }, __class__: openfl_display3D__$Program3D_UniformMap }; var openfl_display3D_textures_TextureBase = function(e, t) { openfl_events_EventDispatcher.call(this), this.__context = e, this.__textureTarget = t, this.__textureID = lime_graphics_opengl_GL.context.createTexture(), this.__internalFormat = 6408, this.__format = 6408, this.__memoryUsage = 0, this.__compressedMemoryUsage = 0 }; $hxClasses["openfl.display3D.textures.TextureBase"] = openfl_display3D_textures_TextureBase, openfl_display3D_textures_TextureBase.__name__ = ["openfl", "display3D", "textures", "TextureBase"], openfl_display3D_textures_TextureBase.__super__ = openfl_events_EventDispatcher, openfl_display3D_textures_TextureBase.prototype = $extend(openfl_events_EventDispatcher.prototype, { __compressedMemoryUsage: null, __context: null, __format: null, __height: null, __internalFormat: null, __memoryUsage: null, __optimizeForRenderToTexture: null, __textureID: null, __textureTarget: null, __width: null, __trackMemoryUsage: function(e) { 0 == this.__memoryUsage && this.__context.__statsIncrement(3), this.__memoryUsage += e; this.__context.__statsAdd(8, e) }, __class__: openfl_display3D_textures_TextureBase }); var openfl_display3D_textures_RectangleTexture = function(e, t, n, i, l) { openfl_display3D_textures_TextureBase.call(this, e, 3553), this.__width = t, this.__height = n, this.__optimizeForRenderToTexture = l, this.uploadFromTypedArray(null) }; $hxClasses["openfl.display3D.textures.RectangleTexture"] = openfl_display3D_textures_RectangleTexture, openfl_display3D_textures_RectangleTexture.__name__ = ["openfl", "display3D", "textures", "RectangleTexture"], openfl_display3D_textures_RectangleTexture.__super__ = openfl_display3D_textures_TextureBase, openfl_display3D_textures_RectangleTexture.prototype = $extend(openfl_display3D_textures_TextureBase.prototype, { uploadFromTypedArray: function(e) { lime_graphics_opengl_GL.context.bindTexture(this.__textureTarget, this.__textureID), openfl__$internal_stage3D_GLUtils.CheckGLError(), lime_graphics_opengl_GL.context.texImage2D(this.__textureTarget, 0, this.__internalFormat, this.__width, this.__height, 0, this.__format, 5121, e), openfl__$internal_stage3D_GLUtils.CheckGLError(), lime_graphics_opengl_GL.context.bindTexture(this.__textureTarget, null), openfl__$internal_stage3D_GLUtils.CheckGLError(); var t = this.__width * this.__height * 4; this.__trackMemoryUsage(t) }, __class__: openfl_display3D_textures_RectangleTexture }); var openfl_errors_Error = function(e, t) { null == t && (t = 0), null == e && (e = ""), this.message = e, this.errorID = t, this.name = "Error" }; $hxClasses["openfl.errors.Error"] = openfl_errors_Error, openfl_errors_Error.__name__ = ["openfl", "errors", "Error"], openfl_errors_Error.prototype = { errorID: null, message: null, name: null, toString: function() { return null != this.message ? this.message : "Error" }, __class__: openfl_errors_Error }; var openfl_errors_IllegalOperationError = function(e) { null == e && (e = ""), openfl_errors_Error.call(this, e, 0), this.name = "IllegalOperationError" }; $hxClasses["openfl.errors.IllegalOperationError"] = openfl_errors_IllegalOperationError, openfl_errors_IllegalOperationError.__name__ = ["openfl", "errors", "IllegalOperationError"], openfl_errors_IllegalOperationError.__super__ = openfl_errors_Error, openfl_errors_IllegalOperationError.prototype = $extend(openfl_errors_Error.prototype, { __class__: openfl_errors_IllegalOperationError }); var openfl_events_Event = function(e, t, n) { null == n && (n = !1), null == t && (t = !1), this.type = e, this.bubbles = t, this.cancelable = n, this.eventPhase = 2 }; $hxClasses["openfl.events.Event"] = openfl_events_Event, openfl_events_Event.__name__ = ["openfl", "events", "Event"], openfl_events_Event.prototype = { bubbles: null, cancelable: null, currentTarget: null, eventPhase: null, target: null, type: null, __isCanceled: null, __isCanceledNow: null, __preventDefault: null, isDefaultPrevented: function() { return this.__preventDefault }, preventDefault: function() { this.cancelable && (this.__preventDefault = !0) }, __class__: openfl_events_Event }; var openfl_events_ActivityEvent = function(e, t, n, i) { null == i && (i = !1), null == n && (n = !1), null == t && (t = !1), openfl_events_Event.call(this, e, t, n), this.activating = i }; $hxClasses["openfl.events.ActivityEvent"] = openfl_events_ActivityEvent, openfl_events_ActivityEvent.__name__ = ["openfl", "events", "ActivityEvent"], openfl_events_ActivityEvent.__super__ = openfl_events_Event, openfl_events_ActivityEvent.prototype = $extend(openfl_events_Event.prototype, { activating: null, __class__: openfl_events_ActivityEvent }); var openfl_events_TextEvent = function(e, t, n, i) { null == i && (i = ""), null == n && (n = !1), null == t && (t = !1), openfl_events_Event.call(this, e, t, n), this.text = i }; $hxClasses["openfl.events.TextEvent"] = openfl_events_TextEvent, openfl_events_TextEvent.__name__ = ["openfl", "events", "TextEvent"], openfl_events_TextEvent.__super__ = openfl_events_Event, openfl_events_TextEvent.prototype = $extend(openfl_events_Event.prototype, { text: null, __class__: openfl_events_TextEvent }); var openfl_events_ErrorEvent = function(e, t, n, i, l) { null == l && (l = 0), null == i && (i = ""), null == n && (n = !1), null == t && (t = !1), openfl_events_TextEvent.call(this, e, t, n, i), this.errorID = l }; $hxClasses["openfl.events.ErrorEvent"] = openfl_events_ErrorEvent, openfl_events_ErrorEvent.__name__ = ["openfl", "events", "ErrorEvent"], openfl_events_ErrorEvent.__super__ = openfl_events_TextEvent, openfl_events_ErrorEvent.prototype = $extend(openfl_events_TextEvent.prototype, { errorID: null, __class__: openfl_events_ErrorEvent }); var openfl_events__$EventDispatcher_DispatchIterator = function(e) { this.list = e, this.index = e.length }; $hxClasses["openfl.events._EventDispatcher.DispatchIterator"] = openfl_events__$EventDispatcher_DispatchIterator, openfl_events__$EventDispatcher_DispatchIterator.__name__ = ["openfl", "events", "_EventDispatcher", "DispatchIterator"], openfl_events__$EventDispatcher_DispatchIterator.prototype = { active: null, index: null, isCopy: null, list: null, copy: function() { this.index < this.list.length && !this.isCopy && (this.list = this.list.slice(), this.isCopy = !0) }, hasNext: function() { return this.index < this.list.length || (this.active = !1, !1) }, next: function() { return this.list[this.index++] }, remove: function(e, t) { if (this.active) if (this.isCopy) for (var n = this.index, i = this.list.length; n < i; ) { var l = n++; if (this.list[l] == e) { this.list.splice(l, 1); break } } else t < this.index && this.index-- }, reset: function(e) { this.list = e, this.active = !0, this.index = 0 }, __class__: openfl_events__$EventDispatcher_DispatchIterator }; var openfl_events__$EventDispatcher_Listener = function(e, t, n) { this.callback = e, this.useCapture = t, this.priority = n }; $hxClasses["openfl.events._EventDispatcher.Listener"] = openfl_events__$EventDispatcher_Listener, openfl_events__$EventDispatcher_Listener.__name__ = ["openfl", "events", "_EventDispatcher", "Listener"], openfl_events__$EventDispatcher_Listener.prototype = { callback: null, priority: null, useCapture: null, match: function(e, t) { return Reflect.compareMethods(this.callback, e) && this.useCapture == t }, __class__: openfl_events__$EventDispatcher_Listener }; var openfl_events_FocusEvent = function(e, t, n, i, l, a) { null == a && (a = 0), null == l && (l = !1), null == n && (n = !1), null == t && (t = !1), openfl_events_Event.call(this, e, t, n), this.keyCode = a, this.shiftKey = l, this.relatedObject = i }; $hxClasses["openfl.events.FocusEvent"] = openfl_events_FocusEvent, openfl_events_FocusEvent.__name__ = ["openfl", "events", "FocusEvent"], openfl_events_FocusEvent.__super__ = openfl_events_Event, openfl_events_FocusEvent.prototype = $extend(openfl_events_Event.prototype, { keyCode: null, relatedObject: null, shiftKey: null, __class__: openfl_events_FocusEvent }); var openfl_events_FullScreenEvent = function(e, t, n, i, l) { null == l && (l = !1), null == i && (i = !1), null == n && (n = !1), null == t && (t = !1), openfl_events_ActivityEvent.call(this, e, t, n), this.fullScreen = i, this.interactive = l }; $hxClasses["openfl.events.FullScreenEvent"] = openfl_events_FullScreenEvent, openfl_events_FullScreenEvent.__name__ = ["openfl", "events", "FullScreenEvent"], openfl_events_FullScreenEvent.__super__ = openfl_events_ActivityEvent, openfl_events_FullScreenEvent.prototype = $extend(openfl_events_ActivityEvent.prototype, { fullScreen: null, interactive: null, __class__: openfl_events_FullScreenEvent }); var openfl_events_GameInputEvent = function(e, t, n, i) { null == n && (n = !1), null == t && (t = !0), openfl_events_Event.call(this, e, t, n), this.device = i }; $hxClasses["openfl.events.GameInputEvent"] = openfl_events_GameInputEvent, openfl_events_GameInputEvent.__name__ = ["openfl", "events", "GameInputEvent"], openfl_events_GameInputEvent.__super__ = openfl_events_Event, openfl_events_GameInputEvent.prototype = $extend(openfl_events_Event.prototype, { device: null, __class__: openfl_events_GameInputEvent }); var openfl_events_KeyboardEvent = function(e, t, n, i, l, a, s, r, _, o, p) { null == p && (p = !1), null == o && (o = !1), null == _ && (_ = !1), null == r && (r = !1), null == s && (s = !1), null == l && (l = 0), null == i && (i = 0), null == n && (n = !1), null == t && (t = !1), openfl_events_Event.call(this, e, t, n), this.charCode = i, this.keyCode = l, this.keyLocation = null != a ? a : 0, this.ctrlKey = s, this.altKey = r, this.shiftKey = _, this.controlKey = o, this.commandKey = p }; $hxClasses["openfl.events.KeyboardEvent"] = openfl_events_KeyboardEvent, openfl_events_KeyboardEvent.__name__ = ["openfl", "events", "KeyboardEvent"], openfl_events_KeyboardEvent.__super__ = openfl_events_Event, openfl_events_KeyboardEvent.prototype = $extend(openfl_events_Event.prototype, { altKey: null, charCode: null, ctrlKey: null, commandKey: null, controlKey: null, keyCode: null, keyLocation: null, shiftKey: null, __class__: openfl_events_KeyboardEvent }); var openfl_events_MouseEvent = function(e, t, n, i, l, a, s, r, _, o, p, h, d) { null == d && (d = 0), null == h && (h = !1), null == p && (p = 0), null == o && (o = !1), null == _ && (_ = !1), null == r && (r = !1), null == s && (s = !1), null == l && (l = 0), null == i && (i = 0), null == n && (n = !1), null == t && (t = !0), openfl_events_Event.call(this, e, t, n), this.shiftKey = _, this.altKey = r, this.ctrlKey = s, this.bubbles = t, this.relatedObject = a, this.delta = p, this.localX = i, this.localY = l, this.buttonDown = o, this.commandKey = h, this.clickCount = d, this.stageX = NaN, this.stageY = NaN }; $hxClasses["openfl.events.MouseEvent"] = openfl_events_MouseEvent, openfl_events_MouseEvent.__name__ = ["openfl", "events", "MouseEvent"], openfl_events_MouseEvent.__create = function(e, t, n, i, l, a, s) { switch (null == s && (s = 0), e) { case "mouseDown": openfl_events_MouseEvent.__buttonDown = !0; break; case "mouseUp": openfl_events_MouseEvent.__buttonDown = !1 } var r = new openfl_events_MouseEvent(e,!0,!1,l.x,l.y,null,openfl_events_MouseEvent.__ctrlKey,openfl_events_MouseEvent.__altKey,openfl_events_MouseEvent.__shiftKey,openfl_events_MouseEvent.__buttonDown,s,openfl_events_MouseEvent.__commandKey); return r.stageX = n, r.stageY = i, r.target = a, r } , openfl_events_MouseEvent.__super__ = openfl_events_Event, openfl_events_MouseEvent.prototype = $extend(openfl_events_Event.prototype, { altKey: null, buttonDown: null, commandKey: null, clickCount: null, ctrlKey: null, delta: null, localX: null, localY: null, relatedObject: null, shiftKey: null, stageX: null, stageY: null, __class__: openfl_events_MouseEvent }); var openfl_events_ProgressEvent = function(e, t, n, i, l) { null == l && (l = 0), null == i && (i = 0), null == n && (n = !1), null == t && (t = !1), openfl_events_Event.call(this, e, t, n), this.bytesLoaded = i, this.bytesTotal = l }; $hxClasses["openfl.events.ProgressEvent"] = openfl_events_ProgressEvent, openfl_events_ProgressEvent.__name__ = ["openfl", "events", "ProgressEvent"], openfl_events_ProgressEvent.__super__ = openfl_events_Event, openfl_events_ProgressEvent.prototype = $extend(openfl_events_Event.prototype, { bytesLoaded: null, bytesTotal: null, __class__: openfl_events_ProgressEvent }); var openfl_events_TouchEvent = function(e, t, n, i, l, a, s, r, _, o, p, h, d, u, c, m, U, Q, N, F) { null == F && (F = !1), null == U && (U = 0), null == m && (m = !1), null == c && (c = !1), null == u && (u = !1), null == d && (d = !1), null == h && (h = !1), null == o && (o = 0), null == _ && (_ = 0), null == r && (r = 0), null == s && (s = 0), null == a && (a = 0), null == l && (l = !1), null == i && (i = 0), null == n && (n = !1), null == t && (t = !0), openfl_events_Event.call(this, e, t, n), this.touchPointID = i, this.isPrimaryTouchPoint = l, this.localX = a, this.localY = s, this.sizeX = r, this.sizeY = _, this.pressure = o, this.relatedObject = p, this.ctrlKey = h, this.altKey = d, this.shiftKey = u, this.commandKey = c, this.controlKey = m, this.stageX = NaN, this.stageY = NaN }; $hxClasses["openfl.events.TouchEvent"] = openfl_events_TouchEvent, openfl_events_TouchEvent.__name__ = ["openfl", "events", "TouchEvent"], openfl_events_TouchEvent.__create = function(e, t, n, i, l, a) { var s = new openfl_events_TouchEvent(e,!0,!1,0,!0,l.x,l.y,1,1,1); return s.stageX = n, s.stageY = i, s.target = a, s } , openfl_events_TouchEvent.__super__ = openfl_events_Event, openfl_events_TouchEvent.prototype = $extend(openfl_events_Event.prototype, { altKey: null, commandKey: null, controlKey: null, ctrlKey: null, isPrimaryTouchPoint: null, localX: null, localY: null, pressure: null, relatedObject: null, shiftKey: null, sizeX: null, sizeY: null, stageX: null, stageY: null, touchPointID: null, __class__: openfl_events_TouchEvent }); var openfl_events_UncaughtErrorEvent = function(e, t, n, i) { null == n && (n = !0), null == t && (t = !0), openfl_events_ErrorEvent.call(this, e, t, n), this.error = i }; $hxClasses["openfl.events.UncaughtErrorEvent"] = openfl_events_UncaughtErrorEvent, openfl_events_UncaughtErrorEvent.__name__ = ["openfl", "events", "UncaughtErrorEvent"], openfl_events_UncaughtErrorEvent.__super__ = openfl_events_ErrorEvent, openfl_events_UncaughtErrorEvent.prototype = $extend(openfl_events_ErrorEvent.prototype, { error: null, __class__: openfl_events_UncaughtErrorEvent }); var openfl_events_UncaughtErrorEvents = function() { openfl_events_EventDispatcher.call(this) }; $hxClasses["openfl.events.UncaughtErrorEvents"] = openfl_events_UncaughtErrorEvents, openfl_events_UncaughtErrorEvents.__name__ = ["openfl", "events", "UncaughtErrorEvents"], openfl_events_UncaughtErrorEvents.__super__ = openfl_events_EventDispatcher, openfl_events_UncaughtErrorEvents.prototype = $extend(openfl_events_EventDispatcher.prototype, { __class__: openfl_events_UncaughtErrorEvents }); var openfl_filters_BitmapFilter = function() { this.__numPasses = 0 }; $hxClasses["openfl.filters.BitmapFilter"] = openfl_filters_BitmapFilter, openfl_filters_BitmapFilter.__name__ = ["openfl", "filters", "BitmapFilter"], openfl_filters_BitmapFilter.prototype = { __cacheObject: null, __numPasses: null, __initShader: function(e, t) { return e.shaderManager.defaultShader }, __class__: openfl_filters_BitmapFilter }; var openfl_filters__$BlurFilter_BlurShader = function() { null == this.__glFragmentSource && (this.__glFragmentSource = "varying float vAlpha;\n\t\tvarying vec2 vTexCoord;\n\t\tuniform sampler2D uImage0;\n\t\t\n\t\tvarying vec2 vBlurCoords[7];\n\t\t\n\t\tvoid main(void) {\n\t\t\t\n\t\t\tvec4 sum = vec4(0.0);\n\t\t\tsum += texture2D(uImage0, vBlurCoords[0]) * 0.00443;\n\t\t\tsum += texture2D(uImage0, vBlurCoords[1]) * 0.05399;\n\t\t\tsum += texture2D(uImage0, vBlurCoords[2]) * 0.24197;\n\t\t\tsum += texture2D(uImage0, vBlurCoords[3]) * 0.39894;\n\t\t\tsum += texture2D(uImage0, vBlurCoords[4]) * 0.24197;\n\t\t\tsum += texture2D(uImage0, vBlurCoords[5]) * 0.05399;\n\t\t\tsum += texture2D(uImage0, vBlurCoords[6]) * 0.00443;\n\t\t\t\n\t\t\tgl_FragColor = sum;\n\t\t\t\n\t\t}"), null == this.__glVertexSource && (this.__glVertexSource = "attribute float aAlpha;\n\t\tattribute vec4 aPosition;\n\t\tattribute vec2 aTexCoord;\n\t\tvarying float vAlpha;\n\t\tvarying vec2 vTexCoord;\n\t\t\n\t\tuniform mat4 uMatrix;\n\t\t\n\t\tuniform vec2 uRadius;\n\t\tvarying vec2 vBlurCoords[7];\n\t\tuniform vec2 uTextureSize;\n\t\t\n\t\tvoid main(void) {\n\t\t\t\n\t\t\tvAlpha = aAlpha;\n\t\t\tvTexCoord = aTexCoord;\n\t\t\tgl_Position = uMatrix * aPosition;\n\t\t\t\n\t\t\tvec2 r = uRadius / uTextureSize;\n\t\t\tvBlurCoords[0] = aTexCoord - r * 1.0;\n\t\t\tvBlurCoords[1] = aTexCoord - r * 0.75;\n\t\t\tvBlurCoords[2] = aTexCoord - r * 0.5;\n\t\t\tvBlurCoords[3] = aTexCoord;\n\t\t\tvBlurCoords[4] = aTexCoord + r * 0.5;\n\t\t\tvBlurCoords[5] = aTexCoord + r * 0.75;\n\t\t\tvBlurCoords[6] = aTexCoord + r * 1.0;\n\t\t\t\n\t\t}"), openfl_display_Shader.call(this), this.get_data().uRadius.value = [0, 0] }; $hxClasses["openfl.filters._BlurFilter.BlurShader"] = openfl_filters__$BlurFilter_BlurShader, openfl_filters__$BlurFilter_BlurShader.__name__ = ["openfl", "filters", "_BlurFilter", "BlurShader"], openfl_filters__$BlurFilter_BlurShader.__super__ = openfl_display_Shader, openfl_filters__$BlurFilter_BlurShader.prototype = $extend(openfl_display_Shader.prototype, { __update: function() { this.get_data().uTextureSize.value = [this.get_data().uImage0.input.width, this.get_data().uImage0.input.height], openfl_display_Shader.prototype.__update.call(this) }, __class__: openfl_filters__$BlurFilter_BlurShader }); var openfl_filters_BlurFilter = function(e, t, n) { null == n && (n = 1), null == t && (t = 4), null == e && (e = 4), openfl_filters_BitmapFilter.call(this), this.blurX = e, this.blurY = t, this.set_quality(n) }; $hxClasses["openfl.filters.BlurFilter"] = openfl_filters_BlurFilter, openfl_filters_BlurFilter.__name__ = ["openfl", "filters", "BlurFilter"], openfl_filters_BlurFilter.__super__ = openfl_filters_BitmapFilter, openfl_filters_BlurFilter.prototype = $extend(openfl_filters_BitmapFilter.prototype, { blurX: null, blurY: null, quality: null, horizontalPasses: null, verticalPasses: null, __initShader: function(e, t) { var n = openfl_filters_BlurFilter.__blurShader.get_data(); if (t <= this.horizontalPasses) { var i = Math.pow(.5, t >> 1); n.uRadius.value[0] = this.blurX * i, n.uRadius.value[1] = 0 } else { var l = Math.pow(.5, t - this.horizontalPasses >> 1); n.uRadius.value[0] = 0, n.uRadius.value[1] = this.blurY * l } return openfl_filters_BlurFilter.__blurShader }, set_quality: function(e) { return this.blurX <= 0 ? this.horizontalPasses = 0 : this.horizontalPasses = Math.round(this.blurX * (e / 4)) + 1, this.blurY <= 0 ? this.verticalPasses = 0 : this.verticalPasses = Math.round(this.blurY * (e / 4)) + 1, this.__numPasses = this.horizontalPasses + this.verticalPasses, this.quality = e }, __class__: openfl_filters_BlurFilter, __properties__: { set_quality: "set_quality" } }); var openfl_filters__$ColorMatrixFilter_ColorMatrixShader = function() { null == this.__glFragmentSource && (this.__glFragmentSource = "varying float vAlpha;\n\t\tvarying vec2 vTexCoord;\n\t\tuniform sampler2D uImage0;\n\t\t\n\t\tuniform mat4 uMultipliers;\n\t\tuniform vec4 uOffsets;\n\t\t\n\t\tvoid main(void) {\n\t\t\t\n\t\t\tvec4 color = texture2D (uImage0, vTexCoord);\n\t\t\t\n\t\t\tif (color.a == 0.0) {\n\t\t\t\t\n\t\t\t\tgl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tcolor = vec4 (color.rgb / color.a, color.a);\n\t\t\t\tcolor = uOffsets + color * uMultipliers;\n\t\t\t\t\n\t\t\t\tgl_FragColor = vec4 (color.rgb * color.a * vAlpha, color.a * vAlpha);\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}"), openfl_display_Shader.call(this), this.get_data().uMultipliers.value = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], this.get_data().uOffsets.value = [0, 0, 0, 0] }; $hxClasses["openfl.filters._ColorMatrixFilter.ColorMatrixShader"] = openfl_filters__$ColorMatrixFilter_ColorMatrixShader, openfl_filters__$ColorMatrixFilter_ColorMatrixShader.__name__ = ["openfl", "filters", "_ColorMatrixFilter", "ColorMatrixShader"], openfl_filters__$ColorMatrixFilter_ColorMatrixShader.__super__ = openfl_display_Shader, openfl_filters__$ColorMatrixFilter_ColorMatrixShader.prototype = $extend(openfl_display_Shader.prototype, { init: function(e) { var t = this.get_data().uMultipliers.value , n = this.get_data().uOffsets.value; t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[5], t[5] = e[6], t[6] = e[7], t[7] = e[8], t[8] = e[10], t[9] = e[11], t[10] = e[12], t[11] = e[13], t[12] = e[15], t[13] = e[16], t[14] = e[17], t[15] = e[18], n[0] = e[4] / 255, n[1] = e[9] / 255, n[2] = e[14] / 255, n[3] = e[19] / 255 }, __class__: openfl_filters__$ColorMatrixFilter_ColorMatrixShader }); var openfl_filters_ColorMatrixFilter = function(e) { openfl_filters_BitmapFilter.call(this), this.set_matrix(e), this.__numPasses = 0 }; $hxClasses["openfl.filters.ColorMatrixFilter"] = openfl_filters_ColorMatrixFilter, openfl_filters_ColorMatrixFilter.__name__ = ["openfl", "filters", "ColorMatrixFilter"], openfl_filters_ColorMatrixFilter.__super__ = openfl_filters_BitmapFilter, openfl_filters_ColorMatrixFilter.prototype = $extend(openfl_filters_BitmapFilter.prototype, { matrix: null, __initShader: function(e, t) { return openfl_filters_ColorMatrixFilter.__colorMatrixShader.init(this.matrix), openfl_filters_ColorMatrixFilter.__colorMatrixShader }, set_matrix: function(e) { return null == e && (e = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]), this.matrix = e }, __class__: openfl_filters_ColorMatrixFilter, __properties__: { set_matrix: "set_matrix" } }); var openfl_filters_DropShadowFilter = function(e, t, n, i, l, a, s, r, _, o, p) { null == p && (p = !1), null == o && (o = !1), null == _ && (_ = !1), null == r && (r = 1), null == s && (s = 1), null == a && (a = 4), null == l && (l = 4), null == i && (i = 1), null == n && (n = 0), null == t && (t = 45), null == e && (e = 4), openfl_filters_BitmapFilter.call(this), this.distance = e, this.angle = t, this.color = n, this.alpha = i, this.blurX = l, this.blurY = a, this.strength = s, this.set_quality(r), this.inner = _, this.set_knockout(o), this.set_hideObject(p) }; $hxClasses["openfl.filters.DropShadowFilter"] = openfl_filters_DropShadowFilter, openfl_filters_DropShadowFilter.__name__ = ["openfl", "filters", "DropShadowFilter"], openfl_filters_DropShadowFilter.__super__ = openfl_filters_BitmapFilter, openfl_filters_DropShadowFilter.prototype = $extend(openfl_filters_BitmapFilter.prototype, { alpha: null, angle: null, blurX: null, blurY: null, color: null, distance: null, hideObject: null, inner: null, knockout: null, quality: null, strength: null, set_knockout: function(e) { return this.knockout = e }, set_hideObject: function(e) { return this.hideObject = e }, set_quality: function(e) { return this.quality = e }, __class__: openfl_filters_DropShadowFilter, __properties__: { set_quality: "set_quality", set_knockout: "set_knockout", set_hideObject: "set_hideObject" } }); var openfl_filters__$GlowFilter_GlowShader = function() { null == this.__glFragmentSource && (this.__glFragmentSource = "varying float vAlpha;\n\t\tvarying vec2 vTexCoord;\n\t\tuniform sampler2D uImage0;\n\t\t\n\t\tuniform vec4 uColor;\n\t\t\n\t\tvarying vec2 vBlurCoords[7];\n\t\t\n\t\tvoid main(void) {\n\t\t\t\n\t\t\tfloat a = 0.0;\n\t\t\ta += texture2D(uImage0, vBlurCoords[0]).a * 0.00443;\n\t\t\ta += texture2D(uImage0, vBlurCoords[1]).a * 0.05399;\n\t\t\ta += texture2D(uImage0, vBlurCoords[2]).a * 0.24197;\n\t\t\ta += texture2D(uImage0, vBlurCoords[3]).a * 0.39894;\n\t\t\ta += texture2D(uImage0, vBlurCoords[4]).a * 0.24197;\n\t\t\ta += texture2D(uImage0, vBlurCoords[5]).a * 0.05399;\n\t\t\ta += texture2D(uImage0, vBlurCoords[6]).a * 0.00443;\n\t\t\ta *= uColor.a;\n\t\t\t\n\t\t\tgl_FragColor = vec4(uColor.rgb * a, a);\n\t\t\t\n\t\t}"), null == this.__glVertexSource && (this.__glVertexSource = "attribute float aAlpha;\n\t\tattribute vec4 aPosition;\n\t\tattribute vec2 aTexCoord;\n\t\tvarying float vAlpha;\n\t\tvarying vec2 vTexCoord;\n\t\t\n\t\tuniform mat4 uMatrix;\n\t\t\n\t\tuniform vec2 uRadius;\n\t\tvarying vec2 vBlurCoords[7];\n\t\tuniform vec2 uTextureSize;\n\t\t\n\t\tvoid main(void) {\n\t\t\t\n\t\t\tvAlpha = aAlpha;\n\t\t\tvTexCoord = aTexCoord;\n\t\t\tgl_Position = uMatrix * aPosition;\n\t\t\t\n\t\t\tvec2 r = uRadius / uTextureSize;\n\t\t\tvBlurCoords[0] = aTexCoord - r * 1.0;\n\t\t\tvBlurCoords[1] = aTexCoord - r * 0.75;\n\t\t\tvBlurCoords[2] = aTexCoord - r * 0.5;\n\t\t\tvBlurCoords[3] = aTexCoord;\n\t\t\tvBlurCoords[4] = aTexCoord + r * 0.5;\n\t\t\tvBlurCoords[5] = aTexCoord + r * 0.75;\n\t\t\tvBlurCoords[6] = aTexCoord + r * 1.0;\n\t\t\t\n\t\t}"), openfl_display_Shader.call(this), this.get_data().uRadius.value = [0, 0], this.get_data().uColor.value = [0, 0, 0, 0] }; $hxClasses["openfl.filters._GlowFilter.GlowShader"] = openfl_filters__$GlowFilter_GlowShader, openfl_filters__$GlowFilter_GlowShader.__name__ = ["openfl", "filters", "_GlowFilter", "GlowShader"], openfl_filters__$GlowFilter_GlowShader.__super__ = openfl_display_Shader, openfl_filters__$GlowFilter_GlowShader.prototype = $extend(openfl_display_Shader.prototype, { __update: function() { this.get_data().uTextureSize.value = [this.get_data().uImage0.input.width, this.get_data().uImage0.input.height], openfl_display_Shader.prototype.__update.call(this) }, __class__: openfl_filters__$GlowFilter_GlowShader }); var openfl_filters_GlowFilter = function(e, t, n, i, l, a, s, r) { null == r && (r = !1), null == s && (s = !1), null == a && (a = 1), null == l && (l = 2), null == i && (i = 6), null == n && (n = 6), null == t && (t = 1), null == e && (e = 16711680), openfl_filters_BitmapFilter.call(this), this.color = e, this.alpha = t, this.blurX = n, this.blurY = i, this.strength = l, this.set_quality(a), this.inner = s, this.set_knockout(r), this.__cacheObject = !0 }; $hxClasses["openfl.filters.GlowFilter"] = openfl_filters_GlowFilter, openfl_filters_GlowFilter.__name__ = ["openfl", "filters", "GlowFilter"], openfl_filters_GlowFilter.__super__ = openfl_filters_BitmapFilter, openfl_filters_GlowFilter.prototype = $extend(openfl_filters_BitmapFilter.prototype, { alpha: null, blurX: null, blurY: null, color: null, inner: null, knockout: null, quality: null, strength: null, horizontalPasses: null, verticalPasses: null, __initShader: function(e, t) { var n = openfl_filters_GlowFilter.__glowShader.get_data(); if (t <= this.horizontalPasses) { var i = Math.pow(.5, t >> 1); n.uRadius.value[0] = this.blurX * i, n.uRadius.value[1] = 0 } else { var l = Math.pow(.5, t - this.horizontalPasses >> 1); n.uRadius.value[0] = 0, n.uRadius.value[1] = this.blurY * l } return n.uColor.value[0] = (this.color >> 16 & 255) / 255, n.uColor.value[1] = (this.color >> 8 & 255) / 255, n.uColor.value[2] = (255 & this.color) / 255, n.uColor.value[3] = this.alpha, openfl_filters_GlowFilter.__glowShader }, set_knockout: function(e) { return this.knockout = e }, set_quality: function(e) { return this.blurX <= 0 ? this.horizontalPasses = 0 : this.horizontalPasses = Math.round(this.blurX * (e / 4)) + 1, this.blurY <= 0 ? this.verticalPasses = 0 : this.verticalPasses = Math.round(this.blurY * (e / 4)) + 1, this.__numPasses = this.horizontalPasses + this.verticalPasses, this.quality = e }, __class__: openfl_filters_GlowFilter, __properties__: { set_quality: "set_quality", set_knockout: "set_knockout" } }); var openfl_geom_Matrix3D = function() {}; $hxClasses["openfl.geom.Matrix3D"] = openfl_geom_Matrix3D, openfl_geom_Matrix3D.__name__ = ["openfl", "geom", "Matrix3D"], openfl_geom_Matrix3D.prototype = { __class__: openfl_geom_Matrix3D }; var openfl_geom_Vector3D = function() {}; $hxClasses["openfl.geom.Vector3D"] = openfl_geom_Vector3D, openfl_geom_Vector3D.__name__ = ["openfl", "geom", "Vector3D"], openfl_geom_Vector3D.prototype = { __class__: openfl_geom_Vector3D }; var openfl_media_ID3Info = function() {}; $hxClasses["openfl.media.ID3Info"] = openfl_media_ID3Info, openfl_media_ID3Info.__name__ = ["openfl", "media", "ID3Info"]; var openfl_media_Sound = function() {}; $hxClasses["openfl.media.Sound"] = openfl_media_Sound, openfl_media_Sound.__name__ = ["openfl", "media", "Sound"], openfl_media_Sound.__super__ = openfl_events_EventDispatcher, openfl_media_Sound.prototype = $extend(openfl_events_EventDispatcher.prototype, { __class__: openfl_media_Sound }); var openfl_media_SoundChannel = function(e, t) { openfl_events_EventDispatcher.call(this, this), this.leftPeak = 1, this.rightPeak = 1, this.__soundTransform = null != t ? t : new openfl_media_SoundTransform, null != e && (this.__source = e, this.__source.onComplete.add($bind(this, this.source_onComplete)), this.__isValid = !0, this.__source.play()), openfl_media_SoundMixer.__registerSoundChannel(this) }; $hxClasses["openfl.media.SoundChannel"] = openfl_media_SoundChannel, openfl_media_SoundChannel.__name__ = ["openfl", "media", "SoundChannel"], openfl_media_SoundChannel.__super__ = openfl_events_EventDispatcher, openfl_media_SoundChannel.prototype = $extend(openfl_events_EventDispatcher.prototype, { leftPeak: null, rightPeak: null, __isValid: null, __soundTransform: null, __source: null, stop: function() { openfl_media_SoundMixer.__unregisterSoundChannel(this), this.__isValid && (this.__source.stop(), this.__dispose()) }, __dispose: function() { this.__isValid && (this.__source.onComplete.remove($bind(this, this.source_onComplete)), this.__source.dispose(), this.__isValid = !1) }, __updateTransform: function() { this.set_soundTransform(this.get_soundTransform()) }, get_position: function() { return this.__isValid ? this.__source.get_currentTime() + this.__source.offset : 0 }, set_position: function(e) { return this.__isValid ? (this.__source.set_currentTime((0 | e) - this.__source.offset), e) : 0 }, get_soundTransform: function() { return this.__soundTransform.clone() }, set_soundTransform: function(e) { if (null != e) { this.__soundTransform.pan = e.pan, this.__soundTransform.volume = e.volume; var t = openfl_media_SoundMixer.__soundTransform.pan + this.__soundTransform.pan; t < -1 && (t = -1), t > 1 && (t = 1); var n = openfl_media_SoundMixer.__soundTransform.volume * this.__soundTransform.volume; if (this.__isValid) { this.__source.set_gain(n); var i = this.__source.get_position(); return i.x = t, i.z = -1 * Math.sqrt(1 - Math.pow(t, 2)), this.__source.set_position(i), e } } return e }, source_onComplete: function() { openfl_media_SoundMixer.__unregisterSoundChannel(this), this.__dispose(), this.dispatchEvent(new openfl_events_Event("soundComplete")) }, __class__: openfl_media_SoundChannel, __properties__: { set_soundTransform: "set_soundTransform", get_soundTransform: "get_soundTransform", set_position: "set_position", get_position: "get_position" } }); var openfl_media_SoundTransform = function(e, t) { null == t && (t = 0), null == e && (e = 1), this.volume = e, this.pan = t, this.leftToLeft = 0, this.leftToRight = 0, this.rightToLeft = 0, this.rightToRight = 0 }; $hxClasses["openfl.media.SoundTransform"] = openfl_media_SoundTransform, openfl_media_SoundTransform.__name__ = ["openfl", "media", "SoundTransform"], openfl_media_SoundTransform.prototype = { leftToLeft: null, leftToRight: null, pan: null, rightToLeft: null, rightToRight: null, volume: null, clone: function() { return new openfl_media_SoundTransform(this.volume,this.pan) }, __class__: openfl_media_SoundTransform }; var openfl_media_SoundMixer = function() {}; $hxClasses["openfl.media.SoundMixer"] = openfl_media_SoundMixer, openfl_media_SoundMixer.__name__ = ["openfl", "media", "SoundMixer"], openfl_media_SoundMixer.__registerSoundChannel = function(e) { openfl_media_SoundMixer.__soundChannels.push(e) } , openfl_media_SoundMixer.__unregisterSoundChannel = function(e) { HxOverrides.remove(openfl_media_SoundMixer.__soundChannels, e) } ; var openfl_net_SharedObject = function() { openfl_events_EventDispatcher.call(this), this.client = this, this.objectEncoding = 3 }; $hxClasses["openfl.net.SharedObject"] = openfl_net_SharedObject, openfl_net_SharedObject.__name__ = ["openfl", "net", "SharedObject"], openfl_net_SharedObject.getLocal = function(e, t, n) { null == n && (n = !1); var i = [" ", "~", "%", "&", "\\", ";", ":", '"', "'", ",", "<", ">", "?", "#"] , l = !0; if (null == e || "" == e) l = !1; else for (var a = 0; a < i.length; ) { var s = i[a]; if (++a, e.indexOf(s) > -1) { l = !1; break } } if (!l) throw new js__$Boot_HaxeError(new openfl_errors_Error("Error #2134: Cannot create SharedObject.")); null == t && (t = window.location.href), null == openfl_net_SharedObject.__sharedObjects && (openfl_net_SharedObject.__sharedObjects = new haxe_ds_StringMap, openfl_Lib.application.onExit.add(openfl_net_SharedObject.application_onExit)); var r = t + "/" + e; if (!openfl_net_SharedObject.__sharedObjects.exists(r)) { var _ = new openfl_net_SharedObject; _.data = {}, _.__localPath = t, _.__name = e; var o = null; try { var p = js_Browser.getLocalStorage(); null != p && (o = p.getItem(t + ":" + e)) } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val) } if (null != o && "" != o) try { var h = new haxe_Unserializer(o); h.setResolver({ resolveEnum: Type.resolveEnum, resolveClass: openfl_net_SharedObject.__resolveClass }), _.data = h.unserialize() } catch (e) { e instanceof js__$Boot_HaxeError && (e = e.val) } openfl_net_SharedObject.__sharedObjects.set(r, _) } return openfl_net_SharedObject.__sharedObjects.get(r) } , openfl_net_SharedObject.__resolveClass = function(e) { return null != e ? (StringTools.startsWith(e, "neash.") && (e = StringTools.replace(e, "neash.", "openfl.")), StringTools.startsWith(e, "native.") && (e = StringTools.replace(e, "native.", "openfl.")), StringTools.startsWith(e, "flash.") && (e = StringTools.replace(e, "flash.", "openfl.")), StringTools.startsWith(e, "openfl._v2.") && (e = StringTools.replace(e, "openfl._v2.", "openfl.")), StringTools.startsWith(e, "openfl._legacy.") && (e = StringTools.replace(e, "openfl._legacy.", "openfl.")), Type.resolveClass(e)) : null } , openfl_net_SharedObject.application_onExit = function(e) { for (var t = openfl_net_SharedObject.__sharedObjects.iterator(); t.hasNext(); ) { t.next().flush() } } , openfl_net_SharedObject.__super__ = openfl_events_EventDispatcher, openfl_net_SharedObject.prototype = $extend(openfl_events_EventDispatcher.prototype, { client: null, data: null, objectEncoding: null, __localPath: null, __name: null, flush: function(e) { if (null == e && (e = 0), 0 == Reflect.fields(this.data).length) return 0; var t = haxe_Serializer.run(this.data); try { var n = js_Browser.getLocalStorage(); null != n && (n.removeItem(this.__localPath + ":" + this.__name), n.setItem(this.__localPath + ":" + this.__name, t)) } catch (e) { return e instanceof js__$Boot_HaxeError && (e = e.val), 1 } return 0 }, __class__: openfl_net_SharedObject }); var openfl_net_URLRequest = function(e) { null != e && (this.url = e), this.requestHeaders = [], this.method = "GET", this.contentType = null }; $hxClasses["openfl.net.URLRequest"] = openfl_net_URLRequest, openfl_net_URLRequest.__name__ = ["openfl", "net", "URLRequest"], openfl_net_URLRequest.prototype = { contentType: null, method: null, requestHeaders: null, url: null, __class__: openfl_net_URLRequest }; var openfl_net_URLRequestHeader = function() {}; $hxClasses["openfl.net.URLRequestHeader"] = openfl_net_URLRequestHeader, openfl_net_URLRequestHeader.__name__ = ["openfl", "net", "URLRequestHeader"]; var openfl_system_ApplicationDomain = function(e) { this.parentDomain = null != e ? e : openfl_system_ApplicationDomain.currentDomain }; $hxClasses["openfl.system.ApplicationDomain"] = openfl_system_ApplicationDomain, openfl_system_ApplicationDomain.__name__ = ["openfl", "system", "ApplicationDomain"], openfl_system_ApplicationDomain.prototype = { parentDomain: null, __class__: openfl_system_ApplicationDomain }; var openfl_text_Font = function(e) { lime_text_Font.call(this, e) }; $hxClasses["openfl.text.Font"] = openfl_text_Font, openfl_text_Font.__name__ = ["openfl", "text", "Font"], openfl_text_Font.enumerateFonts = function(e) { return null == e && (e = !1), openfl_text_Font.__registeredFonts } , openfl_text_Font.fromFile = function(e) { var t = new openfl_text_Font; return t.__fromFile(e), t } , openfl_text_Font.__super__ = lime_text_Font, openfl_text_Font.prototype = $extend(lime_text_Font.prototype, { __class__: openfl_text_Font }); var openfl_text_TextFormat = function(e, t, n, i, l, a, s, r, _, o, p, h, d) { this.font = e, this.size = t, this.color = n, this.bold = i, this.italic = l, this.underline = a, this.url = s, this.target = r, this.align = _, this.leftMargin = o, this.rightMargin = p, this.indent = h, this.leading = d }; $hxClasses["openfl.text.TextFormat"] = openfl_text_TextFormat, openfl_text_TextFormat.__name__ = ["openfl", "text", "TextFormat"], openfl_text_TextFormat.prototype = { align: null, blockIndent: null, bold: null, bullet: null, color: null, font: null, indent: null, italic: null, kerning: null, leading: null, leftMargin: null, letterSpacing: null, rightMargin: null, size: null, tabStops: null, target: null, underline: null, url: null, clone: function() { var e = new openfl_text_TextFormat(this.font,this.size,this.color,this.bold,this.italic,this.underline,this.url,this.target); return e.align = this.align, e.leftMargin = this.leftMargin, e.rightMargin = this.rightMargin, e.indent = this.indent, e.leading = this.leading, e.blockIndent = this.blockIndent, e.bullet = this.bullet, e.kerning = this.kerning, e.letterSpacing = this.letterSpacing, e.tabStops = this.tabStops, e }, __merge: function(e) { null != e.font && (this.font = e.font), null != e.size && (this.size = e.size), null != e.color && (this.color = e.color), null != e.bold && (this.bold = e.bold), null != e.italic && (this.italic = e.italic), null != e.underline && (this.underline = e.underline), null != e.url && (this.url = e.url), null != e.target && (this.target = e.target), null != e.align && (this.align = e.align), null != e.leftMargin && (this.leftMargin = e.leftMargin), null != e.rightMargin && (this.rightMargin = e.rightMargin), null != e.indent && (this.indent = e.indent), null != e.leading && (this.leading = e.leading), null != e.blockIndent && (this.blockIndent = e.blockIndent), null != e.bullet && (this.bullet = e.bullet), null != e.kerning && (this.kerning = e.kerning), null != e.letterSpacing && (this.letterSpacing = e.letterSpacing), null != e.tabStops && (this.tabStops = e.tabStops) }, __class__: openfl_text_TextFormat }; var openfl_text__$TextFormatAlign_TextFormatAlign_$Impl_$ = {}; $hxClasses["openfl.text._TextFormatAlign.TextFormatAlign_Impl_"] = openfl_text__$TextFormatAlign_TextFormatAlign_$Impl_$, openfl_text__$TextFormatAlign_TextFormatAlign_$Impl_$.__name__ = ["openfl", "text", "_TextFormatAlign", "TextFormatAlign_Impl_"], openfl_text__$TextFormatAlign_TextFormatAlign_$Impl_$.fromString = function(e) { switch (e) { case "center": return 0; case "end": return 1; case "justify": return 2; case "left": return 3; case "right": return 4; case "start": return 5; default: return null } } ; var openfl_ui_GameInput = function() {}; $hxClasses["openfl.ui.GameInput"] = openfl_ui_GameInput, openfl_ui_GameInput.__name__ = ["openfl", "ui", "GameInput"], openfl_ui_GameInput.__getDevice = function(e) { if (null == e) return null; if (null == openfl_ui_GameInput.__devices.h.__keys__[e.__id__]) { var t = new openfl_ui_GameInputDevice(e.get_guid(),e.get_name()); openfl_ui_GameInput.__deviceList.push(t), openfl_ui_GameInput.__devices.set(e, t), openfl_ui_GameInput.numDevices = openfl_ui_GameInput.__deviceList.length } return openfl_ui_GameInput.__devices.h[e.__id__] } , openfl_ui_GameInput.__onGamepadAxisMove = function(e, t, n) { var i = openfl_ui_GameInput.__getDevice(e); if (null != i && i.enabled) { if (!i.__axis.h.hasOwnProperty(t)) { var l = new openfl_ui_GameInputControl(i,"AXIS_" + function(e) { var n; switch (t) { case 0: n = "LEFT_X"; break; case 1: n = "LEFT_Y"; break; case 2: n = "RIGHT_X"; break; case 3: n = "RIGHT_Y"; break; case 4: n = "TRIGGER_LEFT"; break; case 5: n = "TRIGGER_RIGHT"; break; default: n = "UNKNOWN (" + t + ")" } return n }(),-1,1); i.__axis.h[t] = l, i.__controls.push(l) } var a = i.__axis.h[t]; a.value = n, a.dispatchEvent(new openfl_events_Event("change")) } } , openfl_ui_GameInput.__onGamepadButtonDown = function(e, t) { var n = openfl_ui_GameInput.__getDevice(e); if (null != n && n.enabled) { if (!n.__button.h.hasOwnProperty(t)) { var i = new openfl_ui_GameInputControl(n,"BUTTON_" + function(e) { var n; switch (t) { case 0: n = "A"; break; case 1: n = "B"; break; case 2: n = "X"; break; case 3: n = "Y"; break; case 4: n = "BACK"; break; case 5: n = "GUIDE"; break; case 6: n = "START"; break; case 7: n = "LEFT_STICK"; break; case 8: n = "RIGHT_STICK"; break; case 9: n = "LEFT_SHOULDER"; break; case 10: n = "RIGHT_SHOULDER"; break; case 11: n = "DPAD_UP"; break; case 12: n = "DPAD_DOWN"; break; case 13: n = "DPAD_LEFT"; break; case 14: n = "DPAD_RIGHT"; break; default: n = "UNKNOWN (" + t + ")" } return n }(),0,1); n.__button.h[t] = i, n.__controls.push(i) } var l = n.__button.h[t]; l.value = 1, l.dispatchEvent(new openfl_events_Event("change")) } } , openfl_ui_GameInput.__onGamepadButtonUp = function(e, t) { var n = openfl_ui_GameInput.__getDevice(e); if (null != n && n.enabled) { if (!n.__button.h.hasOwnProperty(t)) { var i = new openfl_ui_GameInputControl(n,"BUTTON_" + function(e) { var n; switch (t) { case 0: n = "A"; break; case 1: n = "B"; break; case 2: n = "X"; break; case 3: n = "Y"; break; case 4: n = "BACK"; break; case 5: n = "GUIDE"; break; case 6: n = "START"; break; case 7: n = "LEFT_STICK"; break; case 8: n = "RIGHT_STICK"; break; case 9: n = "LEFT_SHOULDER"; break; case 10: n = "RIGHT_SHOULDER"; break; case 11: n = "DPAD_UP"; break; case 12: n = "DPAD_DOWN"; break; case 13: n = "DPAD_LEFT"; break; case 14: n = "DPAD_RIGHT"; break; default: n = "UNKNOWN (" + t + ")" } return n }(),0,1); n.__button.h[t] = i, n.__controls.push(i) } var l = n.__button.h[t]; l.value = 0, l.dispatchEvent(new openfl_events_Event("change")) } } , openfl_ui_GameInput.__onGamepadConnect = function(e) { var t = openfl_ui_GameInput.__getDevice(e); if (null != t) for (var n = 0, i = openfl_ui_GameInput.__instances; n < i.length; ) { var l = i[n]; ++n, l.dispatchEvent(new openfl_events_GameInputEvent("deviceAdded",null,null,t)) } } , openfl_ui_GameInput.__onGamepadDisconnect = function(e) { var t = openfl_ui_GameInput.__devices.h[e.__id__]; if (null != t) { if (null != openfl_ui_GameInput.__devices.h.__keys__[e.__id__]) { var n = openfl_ui_GameInput.__devices.h[e.__id__]; HxOverrides.remove(openfl_ui_GameInput.__deviceList, n), openfl_ui_GameInput.__devices.remove(e) } openfl_ui_GameInput.numDevices = openfl_ui_GameInput.__deviceList.length; for (var i = 0, l = openfl_ui_GameInput.__instances; i < l.length; ) { var a = l[i]; ++i, a.dispatchEvent(new openfl_events_GameInputEvent("deviceRemoved",null,null,t)) } } } , openfl_ui_GameInput.__super__ = openfl_events_EventDispatcher, openfl_ui_GameInput.prototype = $extend(openfl_events_EventDispatcher.prototype, { __class__: openfl_ui_GameInput }); var openfl_ui_GameInputControl = function(e, t, n, i, l) { null == l && (l = 0), openfl_events_EventDispatcher.call(this), this.device = e, this.id = t, this.minValue = n, this.maxValue = i, this.value = l }; $hxClasses["openfl.ui.GameInputControl"] = openfl_ui_GameInputControl, openfl_ui_GameInputControl.__name__ = ["openfl", "ui", "GameInputControl"], openfl_ui_GameInputControl.__super__ = openfl_events_EventDispatcher, openfl_ui_GameInputControl.prototype = $extend(openfl_events_EventDispatcher.prototype, { device: null, id: null, maxValue: null, minValue: null, value: null, __class__: openfl_ui_GameInputControl }); var openfl_ui_GameInputDevice = function(e, t) { var n; this.__controls = [], this.__button = new haxe_ds_IntMap, this.__axis = new haxe_ds_IntMap, this.id = e, this.name = t; for (var i = 0; i < 6; ) { var l = i++; n = new openfl_ui_GameInputControl(this,"AXIS_" + l,-1,1), this.__axis.h[l] = n, this.__controls.push(n) } for (var a = 0; a < 15; ) { var s = a++; n = new openfl_ui_GameInputControl(this,"BUTTON_" + s,0,1), this.__button.h[s] = n, this.__controls.push(n) } }; $hxClasses["openfl.ui.GameInputDevice"] = openfl_ui_GameInputDevice, openfl_ui_GameInputDevice.__name__ = ["openfl", "ui", "GameInputDevice"], openfl_ui_GameInputDevice.prototype = { enabled: null, id: null, name: null, __axis: null, __button: null, __controls: null, __class__: openfl_ui_GameInputDevice }; var openfl_ui_Keyboard = function() {}; $hxClasses["openfl.ui.Keyboard"] = openfl_ui_Keyboard, openfl_ui_Keyboard.__name__ = ["openfl", "ui", "Keyboard"], openfl_ui_Keyboard.__getCharCode = function(e, t) { if (null == t && (t = !1), t) { switch (e) { case 48: return 41; case 49: return 33; case 50: return 64; case 51: return 35; case 52: return 36; case 53: return 37; case 54: return 94; case 55: return 38; case 56: return 42; case 57: return 40; case 186: return 58; case 187: return 43; case 188: return 60; case 189: return 95; case 190: return 62; case 191: return 63; case 192: return 126; case 219: return 123; case 220: return 124; case 221: return 125; case 222: return 34 } if (e >= 65 && e <= 90) return e - 65 + 65 } else { switch (e) { case 8: return 8; case 9: return 9; case 13: return 13; case 27: return 27; case 32: return 32; case 186: return 59; case 187: return 61; case 188: return 44; case 189: return 45; case 190: return 46; case 191: return 47; case 192: return 96; case 219: return 91; case 220: return 92; case 221: return 93; case 222: return 39 } if (e >= 48 && e <= 57) return e - 48 + 48; if (e >= 65 && e <= 90) return e - 65 + 97 } if (e >= 96 && e <= 105) return e - 96 + 48; switch (e) { case 106: return 42; case 107: return 43; case 108: return 44; case 110: return 45; case 111: return 46; case 46: return 127; case 13: return 13; case 8: return 8 } return 0 } ; var openfl_ui_Mouse = function() {}; $hxClasses["openfl.ui.Mouse"] = openfl_ui_Mouse, openfl_ui_Mouse.__name__ = ["openfl", "ui", "Mouse"]; var openfl_ui_Multitouch = function() {}; $hxClasses["openfl.ui.Multitouch"] = openfl_ui_Multitouch, openfl_ui_Multitouch.__name__ = ["openfl", "ui", "Multitouch"], openfl_ui_Multitouch.__properties__ = { get_supportsTouchEvents: "get_supportsTouchEvents" }, openfl_ui_Multitouch.get_supportsTouchEvents = function() { return !!("ontouchstart"in document.documentElement || window.DocumentTouch && document instanceof DocumentTouch) } ; var haxe_lang_Iterator = function() {}; $hxClasses["haxe.lang.Iterator"] = haxe_lang_Iterator, haxe_lang_Iterator.__name__ = ["haxe", "lang", "Iterator"], haxe_lang_Iterator.prototype = { hasNext: null, next: null, __class__: haxe_lang_Iterator }; var haxe_lang_Iterable = function() {}; $hxClasses["haxe.lang.Iterable"] = haxe_lang_Iterable, haxe_lang_Iterable.__name__ = ["haxe", "lang", "Iterable"], haxe_lang_Iterable.prototype = { iterator: null, __class__: haxe_lang_Iterable }; var tools_Tool = function(e) { this.toolCompleted = !1, this.dragSound = null, this.draggingObject = null, this.toolData = e, this.desk = Desk.current, this.main = Main.current, this.draggingObject = this.desk.getElementByName(e.dragingObject), null != this.draggingObject && this.draggingObject.totalFrames > 1 && this.draggingObject.play(), Object.prototype.hasOwnProperty.call(e, "dragSound") ? this.dragSound = e.dragSound : this.dragSound = null }; $hxClasses["tools.Tool"] = tools_Tool, tools_Tool.__name__ = ["tools", "Tool"], tools_Tool.prototype = { toolData: null, desk: null, main: null, draggingObject: null, dragSound: null, onMDown: function() {}, onMUp: function() {}, playDragSound: function() { null != this.dragSound && null != this.desk && this.desk.playSoundData(this.dragSound, !0) }, stopDragSound: function() { null != this.dragSound && null != this.desk && this.desk.stopSoundData(this.dragSound) }, update: function(e) { if (null != this.draggingObject) { var t = this.draggingObject.get_visible(); if (this.draggingObject.set_visible(this.main.isMouseDown), !t && this.draggingObject.get_visible() && this.playDragSound(), t && !this.draggingObject.get_visible() && this.stopDragSound(), this.draggingObject.get_visible()) { var n = this.desk.getMouseCoordsInLevels(); this.draggingObject.set_x(n.x), this.draggingObject.set_y(n.y) } } }, toolCompleted: null, destroy: function() { null != this.dragSound && this.stopDragSound(), this.dragSound = null, this.toolData = null, this.desk = null, this.main = null, null != this.draggingObject && this.draggingObject.set_visible(!1), this.draggingObject = null }, getTargets: function(e) { var t = e.split(":"); return t.length > 1 && ("folder" == t[0] || "layer" == t[0]) ? "layer" == t[0] ? this.desk.getElementsByLayerName(t[1]) : "folder" == t[0] ? this.desk.getElementsByFolderName(t[1]) : null : [this.desk.getElementByName(e)] }, __class__: tools_Tool }; var tools_HitHitzoneAnimation = function(e) { this.showTutorIddleTime = 1e3, this.iddleTime = 0, this.frameRemoveTragets = [], this.targets = [], tools_Tool.call(this, e), this.targets = this.getTargets(e.target[HxOverrides.indexOf(e.sequenceIndex, this.desk.currentSequent, 0)]); var t = e.label[HxOverrides.indexOf(e.sequenceIndex, this.desk.currentSequent, 0)]; null != e.tutorName && (this.tutorMC = this.desk.getElementByName(e.tutorName)); for (var n = 0; n < this.targets.length; ) this.targets[n].hasLabel(t) ? n++ : HxOverrides.remove(this.targets, this.targets[n]); for (var i = 0, l = this.targets; i < l.length; ) { var a = l[i]; ++i, a.playLabel(t, $bind(this, this.onMCPlayEnd)), a.isPlaying = !1 } }; $hxClasses["tools.HitHitzoneAnimation"] = tools_HitHitzoneAnimation, tools_HitHitzoneAnimation.__name__ = ["tools", "HitHitzoneAnimation"], tools_HitHitzoneAnimation.__super__ = tools_Tool, tools_HitHitzoneAnimation.prototype = $extend(tools_Tool.prototype, { targets: null, frameRemoveTragets: null, iddleTime: null, showTutorIddleTime: null, tutorMC: null, onMCPlayEnd: function(e) { this.frameRemoveTragets.push(e) }, showTutor: function() { if (null != this.tutorMC) { var e = this.targets[Std.random(this.targets.length)].getBounds(this.desk.levels); this.tutorMC.play(), this.tutorMC.set_visible(!0), this.tutorMC.set_x(e.x + e.width / 2), this.tutorMC.set_y(e.y + e.height / 2) } }, hideTutor: function() { null != this.tutorMC && this.tutorMC.set_visible(!1) }, update: function(e) { for (tools_Tool.prototype.update.call(this, e); this.frameRemoveTragets.length > 0; ) { var t = this.frameRemoveTragets.pop(); HxOverrides.remove(this.targets, t) } for (var n = !1, i = 0, l = this.targets; i < l.length; ) { var a = l[i]; ++i, a.isPlaying = this.main.isMouseDown && this.desk.hitsMouse(a), a.isPlaying && (n = !0) } null != this.tutorMC && (n ? (this.iddleTime = 0, this.hideTutor()) : this.tutorMC.get_visible() || (this.iddleTime += e, this.iddleTime > this.showTutorIddleTime && (this.iddleTime = 0, this.showTutor()))), 0 == this.targets.length && (this.toolCompleted = !0) }, destroy: function() { tools_Tool.prototype.destroy.call(this), this.targets = null, this.frameRemoveTragets = null, null != this.tutorMC && this.tutorMC.set_visible(!1), this.tutorMC = null }, __class__: tools_HitHitzoneAnimation }); var zpp_$nape_callbacks_ZPP_$Callback = function() { this.constraint = null, this.body = null, this.pre_swapped = !1, this.pre_arbiter = null, this.wrap_arbiters = null, this.set = null, this.int2 = null, this.int1 = null, this.length = 0, this.prev = null, this.next = null, this.listener = null, this.event = 0, this.outer_int = null, this.outer_con = null, this.outer_body = null, this.length = 0 }; $hxClasses["zpp_nape.callbacks.ZPP_Callback"] = zpp_$nape_callbacks_ZPP_$Callback, zpp_$nape_callbacks_ZPP_$Callback.__name__ = ["zpp_nape", "callbacks", "ZPP_Callback"], zpp_$nape_callbacks_ZPP_$Callback.prototype = { outer_body: null, outer_con: null, outer_int: null, wrapper_body: function() { return null == this.outer_body && (this.outer_body = new nape_callbacks_BodyCallback, this.outer_body.zpp_inner = this), this.outer_body }, wrapper_con: function() { return null == this.outer_con && (this.outer_con = new nape_callbacks_ConstraintCallback, this.outer_con.zpp_inner = this), this.outer_con }, wrapper_int: function() { return null == this.outer_int && (this.outer_int = new nape_callbacks_InteractionCallback, this.outer_int.zpp_inner = this), null == this.wrap_arbiters ? this.wrap_arbiters = zpp_$nape_util_ZPP_$ArbiterList.get(this.set.arbiters, !0) : this.wrap_arbiters.zpp_inner.inner = this.set.arbiters, this.wrap_arbiters.zpp_inner.zip_length = !0, this.wrap_arbiters.zpp_inner.at_ite = null, this.outer_int }, event: null, listener: null, next: null, prev: null, length: null, push: function(e) { null != this.prev ? this.prev.next = e : this.next = e, e.prev = this.prev, e.next = null, this.prev = e, this.length++ }, pop: function() { var e = this.next; return this.next = e.next, null == this.next ? this.prev = null : this.next.prev = null, this.length--, e }, empty: function() { return null == this.next }, int1: null, int2: null, set: null, wrap_arbiters: null, pre_arbiter: null, pre_swapped: null, body: null, constraint: null, __class__: zpp_$nape_callbacks_ZPP_$Callback }; var zpp_$nape_callbacks_ZPP_$CbSet = function() { this.constraints = null, this.interactors = null, this.zip_conlisteners = !1, this.conlisteners = null, this.zip_bodylisteners = !1, this.bodylisteners = null, this.zip_listeners = !1, this.listeners = null, this.cbpairs = null, this.manager = null, this.id = 0, this.next = null, this.count = 0, this.cbTypes = null, this.cbTypes = new zpp_$nape_util_ZNPList_$ZPP_$CbType, this.listeners = new zpp_$nape_util_ZNPList_$ZPP_$InteractionListener, this.zip_listeners = !0, this.bodylisteners = new zpp_$nape_util_ZNPList_$ZPP_$BodyListener, this.zip_bodylisteners = !0, this.conlisteners = new zpp_$nape_util_ZNPList_$ZPP_$ConstraintListener, this.zip_conlisteners = !0, this.constraints = new zpp_$nape_util_ZNPList_$ZPP_$Constraint, this.interactors = new zpp_$nape_util_ZNPList_$ZPP_$Interactor, this.id = zpp_$nape_ZPP_$ID.CbSet(), this.cbpairs = new zpp_$nape_util_ZNPList_$ZPP_$CbSetPair }; $hxClasses["zpp_nape.callbacks.ZPP_CbSet"] = zpp_$nape_callbacks_ZPP_$CbSet, zpp_$nape_callbacks_ZPP_$CbSet.__name__ = ["zpp_nape", "callbacks", "ZPP_CbSet"], zpp_$nape_callbacks_ZPP_$CbSet.setlt = function(e, t) { for (var n = e.cbTypes.head, i = t.cbTypes.head; null != n && null != i; ) { var l = n.elt , a = i.elt; if (l.id < a.id) return !0; if (a.id < l.id) return !1; n = n.next, i = i.next } return null != i && null == n } , zpp_$nape_callbacks_ZPP_$CbSet.get = function(e) { var t; null == zpp_$nape_callbacks_ZPP_$CbSet.zpp_pool ? t = new zpp_$nape_callbacks_ZPP_$CbSet : (t = zpp_$nape_callbacks_ZPP_$CbSet.zpp_pool, zpp_$nape_callbacks_ZPP_$CbSet.zpp_pool = t.next, t.next = null); for (var n = null, i = e.head; null != i; ) { var l = i.elt; n = t.cbTypes.insert(n, l), l.cbsets.add(t), i = i.next } return t } , zpp_$nape_callbacks_ZPP_$CbSet.single_intersection = function(e, t, n) { return e.manager.pair(e, t).single_intersection(n) } , zpp_$nape_callbacks_ZPP_$CbSet.find_all = function(e, t, n, i) { e.manager.pair(e, t).forall(n, i) } , zpp_$nape_callbacks_ZPP_$CbSet.prototype = { cbTypes: null, count: null, next: null, id: null, manager: null, cbpairs: null, invalidate_pairs: function() { for (var e = this.cbpairs.head; null != e; ) { e.elt.zip_listeners = !0, e = e.next } }, listeners: null, zip_listeners: null, realvalidate_listeners: function() { this.listeners.clear(); for (var e = this.cbTypes.head; null != e; ) { for (var t = e.elt, n = null, i = this.listeners.head, l = t.listeners.head; null != l; ) { var a = l.elt; null != i && i.elt == a ? (l = l.next, n = i, i = i.next) : null == i || zpp_$nape_callbacks_ZPP_$Listener.setlt(a, i.elt) ? (a.space == this.manager.space && (n = this.listeners.inlined_insert(n, a)), l = l.next) : (n = i, i = i.next) } e = e.next } }, bodylisteners: null, zip_bodylisteners: null, realvalidate_bodylisteners: function() { this.bodylisteners.clear(); for (var e = this.cbTypes.head; null != e; ) { for (var t = e.elt, n = null, i = this.bodylisteners.head, l = t.bodylisteners.head; null != l; ) { var a = l.elt; null != i && i.elt == a ? (l = l.next, n = i, i = i.next) : null == i || zpp_$nape_callbacks_ZPP_$Listener.setlt(a, i.elt) ? (a.options.excluded(this.cbTypes) || a.space != this.manager.space || (n = this.bodylisteners.inlined_insert(n, a)), l = l.next) : (n = i, i = i.next) } e = e.next } }, conlisteners: null, zip_conlisteners: null, realvalidate_conlisteners: function() { this.conlisteners.clear(); for (var e = this.cbTypes.head; null != e; ) { for (var t = e.elt, n = null, i = this.conlisteners.head, l = t.conlisteners.head; null != l; ) { var a = l.elt; null != i && i.elt == a ? (l = l.next, n = i, i = i.next) : null == i || zpp_$nape_callbacks_ZPP_$Listener.setlt(a, i.elt) ? (a.options.excluded(this.cbTypes) || a.space != this.manager.space || (n = this.conlisteners.inlined_insert(n, a)), l = l.next) : (n = i, i = i.next) } e = e.next } }, validate: function() { this.zip_listeners && (this.zip_listeners = !1, this.realvalidate_listeners()), this.zip_bodylisteners && (this.zip_bodylisteners = !1, this.realvalidate_bodylisteners()), this.zip_conlisteners && (this.zip_conlisteners = !1, this.realvalidate_conlisteners()) }, interactors: null, constraints: null, free: function() { for (this.listeners.clear(), this.zip_listeners = !0, this.bodylisteners.clear(), this.zip_bodylisteners = !0, this.conlisteners.clear(), this.zip_conlisteners = !0; null != this.cbTypes.head; ) { this.cbTypes.pop_unsafe().cbsets.remove(this) } }, __class__: zpp_$nape_callbacks_ZPP_$CbSet }; var zpp_$nape_callbacks_ZPP_$CbSetPair = function() { this.listeners = null, this.zip_listeners = !1, this.next = null, this.b = null, this.a = null, this.listeners = new zpp_$nape_util_ZNPList_$ZPP_$InteractionListener }; $hxClasses["zpp_nape.callbacks.ZPP_CbSetPair"] = zpp_$nape_callbacks_ZPP_$CbSetPair, zpp_$nape_callbacks_ZPP_$CbSetPair.__name__ = ["zpp_nape", "callbacks", "ZPP_CbSetPair"], zpp_$nape_callbacks_ZPP_$CbSetPair.get = function(e, t) { var n; return null == zpp_$nape_callbacks_ZPP_$CbSetPair.zpp_pool ? n = new zpp_$nape_callbacks_ZPP_$CbSetPair : (n = zpp_$nape_callbacks_ZPP_$CbSetPair.zpp_pool, zpp_$nape_callbacks_ZPP_$CbSetPair.zpp_pool = n.next, n.next = null), n.zip_listeners = !0, zpp_$nape_callbacks_ZPP_$CbSet.setlt(e, t) ? (n.a = e, n.b = t) : (n.a = t, n.b = e), n } , zpp_$nape_callbacks_ZPP_$CbSetPair.setlt = function(e, t) { return zpp_$nape_callbacks_ZPP_$CbSet.setlt(e.a, t.a) || e.a == t.a && zpp_$nape_callbacks_ZPP_$CbSet.setlt(e.b, t.b) } , zpp_$nape_callbacks_ZPP_$CbSetPair.prototype = { a: null, b: null, next: null, zip_listeners: null, listeners: null, __validate: function() { this.listeners.clear(); for (var e = this.a.listeners.head, t = this.b.listeners.head; null != e && null != t; ) { var n = e.elt , i = t.elt; n == i ? ((n.options1.compatible(this.a.cbTypes) && n.options2.compatible(this.b.cbTypes) || n.options2.compatible(this.a.cbTypes) && n.options1.compatible(this.b.cbTypes)) && this.listeners.add(n), e = e.next, t = t.next) : n.precedence > i.precedence || n.precedence == i.precedence && n.id > i.id ? e = e.next : t = t.next } }, empty_intersection: function() { return null == this.listeners.head }, single_intersection: function(e) { var t = this.listeners.head; return null != t && t.elt == e && null == t.next }, forall: function(e, t) { for (var n = this.listeners.head; null != n; ) { var i = n.elt; i.event == e && t(i), n = n.next } }, __class__: zpp_$nape_callbacks_ZPP_$CbSetPair }; var zpp_$nape_util_ZPP_$Flags = function() {}; $hxClasses["zpp_nape.util.ZPP_Flags"] = zpp_$nape_util_ZPP_$Flags, zpp_$nape_util_ZPP_$Flags.__name__ = ["zpp_nape", "util", "ZPP_Flags"]; var zpp_$nape_callbacks_ZPP_$Listener = function() { this.space = null, this.interaction = null, this.constraint = null, this.body = null, this.precedence = 0, this.event = 0, this.type = 0, this.id = 0, this.outer = null, this.id = zpp_$nape_ZPP_$ID.Listener() }; $hxClasses["zpp_nape.callbacks.ZPP_Listener"] = zpp_$nape_callbacks_ZPP_$Listener, zpp_$nape_callbacks_ZPP_$Listener.__name__ = ["zpp_nape", "callbacks", "ZPP_Listener"], zpp_$nape_callbacks_ZPP_$Listener.setlt = function(e, t) { return e.precedence > t.precedence || e.precedence == t.precedence && e.id > t.id } , zpp_$nape_callbacks_ZPP_$Listener.prototype = { outer: null, id: null, type: null, event: null, precedence: null, body: null, constraint: null, interaction: null, space: null, addedToSpace: function() {}, removedFromSpace: function() {}, __class__: zpp_$nape_callbacks_ZPP_$Listener }; var zpp_$nape_callbacks_ZPP_$BodyListener = function() { this.handler = null, this.options = null, this.outer_zn = null }; $hxClasses["zpp_nape.callbacks.ZPP_BodyListener"] = zpp_$nape_callbacks_ZPP_$BodyListener, zpp_$nape_callbacks_ZPP_$BodyListener.__name__ = ["zpp_nape", "callbacks", "ZPP_BodyListener"], zpp_$nape_callbacks_ZPP_$BodyListener.__super__ = zpp_$nape_callbacks_ZPP_$Listener, zpp_$nape_callbacks_ZPP_$BodyListener.prototype = $extend(zpp_$nape_callbacks_ZPP_$Listener.prototype, { outer_zn: null, options: null, handler: null, addedToSpace: function() { this.options.handler = $bind(this, this.cbtype_change); for (var e = this.options.includes.head; null != e; ) { e.elt.addbody(this), e = e.next } }, removedFromSpace: function() { for (var e = this.options.includes.head; null != e; ) { var t = e.elt; t.bodylisteners.remove(this), t.invalidatebody(), e = e.next } this.options.handler = null }, cbtype_change: function(e, t, n) { this.removedFromSpace(), this.options.effect_change(e, t, n), this.addedToSpace() }, __class__: zpp_$nape_callbacks_ZPP_$BodyListener }); var zpp_$nape_callbacks_ZPP_$ConstraintListener = function() { this.handler = null, this.options = null, this.outer_zn = null }; $hxClasses["zpp_nape.callbacks.ZPP_ConstraintListener"] = zpp_$nape_callbacks_ZPP_$ConstraintListener, zpp_$nape_callbacks_ZPP_$ConstraintListener.__name__ = ["zpp_nape", "callbacks", "ZPP_ConstraintListener"], zpp_$nape_callbacks_ZPP_$ConstraintListener.__super__ = zpp_$nape_callbacks_ZPP_$Listener, zpp_$nape_callbacks_ZPP_$ConstraintListener.prototype = $extend(zpp_$nape_callbacks_ZPP_$Listener.prototype, { outer_zn: null, options: null, handler: null, addedToSpace: function() { this.options.handler = $bind(this, this.cbtype_change); for (var e = this.options.includes.head; null != e; ) { e.elt.addconstraint(this), e = e.next } }, removedFromSpace: function() { for (var e = this.options.includes.head; null != e; ) { var t = e.elt; t.conlisteners.remove(this), t.invalidateconstraint(), e = e.next } this.options.handler = null }, cbtype_change: function(e, t, n) { this.removedFromSpace(), this.options.effect_change(e, t, n), this.addedToSpace() }, __class__: zpp_$nape_callbacks_ZPP_$ConstraintListener }); var zpp_$nape_util_ZNPList_$ZPP_$CbType = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_CbType"] = zpp_$nape_util_ZNPList_$ZPP_$CbType, zpp_$nape_util_ZNPList_$ZPP_$CbType.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_CbType"], zpp_$nape_util_ZNPList_$ZPP_$CbType.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$CbType.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$CbType : (n = zpp_$nape_util_ZNPNode_$ZPP_$CbType.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$CbType.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, insert: function(e, t) { return this.inlined_insert(e, t) }, inlined_insert: function(e, t) { var n, i; return null == zpp_$nape_util_ZNPNode_$ZPP_$CbType.zpp_pool ? i = new zpp_$nape_util_ZNPNode_$ZPP_$CbType : (i = zpp_$nape_util_ZNPNode_$ZPP_$CbType.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$CbType.zpp_pool = i.next, i.next = null), i.elt = t, n = i, null == e ? (n.next = this.head, this.head = n) : (n.next = e.next, e.next = n), this.pushmod = this.modified = !0, this.length++, n }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$CbType.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$CbType.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, pop_unsafe: function() { return this.inlined_pop_unsafe() }, inlined_pop_unsafe: function() { var e = this.head.elt; return this.pop(), e }, remove: function(e) { this.inlined_try_remove(e) }, inlined_try_remove: function(e) { for (var t = null, n = this.head, i = !1; null != n; ) { if (n.elt == e) { this.inlined_erase(t), i = !0; break } t = n, n = n.next } return i }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$CbType.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$CbType.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, clear: function() { for (; null != this.head; ) this.inlined_pop(); this.pushmod = !0 }, has: function(e) { return this.inlined_has(e) }, inlined_has: function(e) { var t; t = !1; for (var n = this.head; null != n; ) { if (n.elt == e) { t = !0; break } n = n.next } return t }, iterator_at: function(e) { for (var t = this.head; e-- > 0 && null != t; ) t = t.next; return t }, __class__: zpp_$nape_util_ZNPList_$ZPP_$CbType }; var zpp_$nape_callbacks_ZPP_$InteractionListener = function(e, t, n, i) { this.handlerp = null, this.pure = !1, this.allowSleepingCallbacks = !1, this.handleri = null, this.options2 = null, this.options1 = null, this.itype = 0, this.outer_znp = null, this.outer_zni = null, zpp_$nape_callbacks_ZPP_$Listener.call(this), this.type = i, this.interaction = this, this.event = n, this.options1 = e.zpp_inner, this.options2 = t.zpp_inner, this.allowSleepingCallbacks = !1 }; $hxClasses["zpp_nape.callbacks.ZPP_InteractionListener"] = zpp_$nape_callbacks_ZPP_$InteractionListener, zpp_$nape_callbacks_ZPP_$InteractionListener.__name__ = ["zpp_nape", "callbacks", "ZPP_InteractionListener"], zpp_$nape_callbacks_ZPP_$InteractionListener.__super__ = zpp_$nape_callbacks_ZPP_$Listener, zpp_$nape_callbacks_ZPP_$InteractionListener.prototype = $extend(zpp_$nape_callbacks_ZPP_$Listener.prototype, { outer_zni: null, outer_znp: null, itype: null, options1: null, options2: null, handleri: null, allowSleepingCallbacks: null, pure: null, handlerp: null, CbSetset: function(e, t, n) { for (var i = zpp_$nape_callbacks_ZPP_$InteractionListener.UCbSet, l = zpp_$nape_callbacks_ZPP_$InteractionListener.VCbSet, a = zpp_$nape_callbacks_ZPP_$InteractionListener.WCbSet, s = e.head, r = t.head; null != s && null != r; ) { var _ = s.elt , o = r.elt; _ == o ? (a.inlined_add(_), s = s.next, r = r.next) : zpp_$nape_callbacks_ZPP_$CbSet.setlt(_, o) ? (i.inlined_add(_), s = s.next) : (l.inlined_add(o), r = r.next) } for (; null != s; ) i.inlined_add(s.elt), s = s.next; for (; null != r; ) l.inlined_add(r.elt), r = r.next; for (; null != i.head; ) for (var p = i.pop_unsafe(), h = t.head; null != h; ) { n(p, h.elt), h = h.next } for (; null != l.head; ) for (var d = l.pop_unsafe(), u = a.head; null != u; ) { n(d, u.elt), u = u.next } for (; null != a.head; ) { var c = a.pop_unsafe(); n(c, c); for (var m = a.head; null != m; ) { n(c, m.elt), m = m.next } } }, CbTypeset: function(e, t, n) { for (var i = zpp_$nape_callbacks_ZPP_$InteractionListener.UCbType, l = zpp_$nape_callbacks_ZPP_$InteractionListener.VCbType, a = zpp_$nape_callbacks_ZPP_$InteractionListener.WCbType, s = e.head, r = t.head; null != s && null != r; ) { var _ = s.elt , o = r.elt; _ == o ? (a.inlined_add(_), s = s.next, r = r.next) : _.id < o.id ? (i.inlined_add(_), s = s.next) : (l.inlined_add(o), r = r.next) } for (; null != s; ) i.inlined_add(s.elt), s = s.next; for (; null != r; ) l.inlined_add(r.elt), r = r.next; for (; null != i.head; ) for (var p = i.pop_unsafe(), h = t.head; null != h; ) { n(p, h.elt), h = h.next } for (; null != l.head; ) for (var d = l.pop_unsafe(), u = a.head; null != u; ) { n(d, u.elt), u = u.next } for (; null != a.head; ) { var c = a.pop_unsafe(); n(c, c); for (var m = a.head; null != m; ) { n(c, m.elt), m = m.next } } }, with_uniquesets: function(e) { var t, n = this; null == zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.zpp_pool ? t = new zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair : (t = zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.zpp_pool, zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.zpp_pool = t.next, t.next = null), t.lt = zpp_$nape_callbacks_ZPP_$CbSetPair.setlt, this.CbTypeset(this.options1.includes, this.options2.includes, function(e, i) { n.CbSetset(e.cbsets, i.cbsets, function(e, i) { e.validate(), i.validate(), zpp_$nape_callbacks_ZPP_$CbSet.single_intersection(e, i, n) && t.try_insert(zpp_$nape_callbacks_ZPP_$CbSetPair.get(e, i)) }) }), t.clear_with(function(t) { e ? n.space.freshListenerType(t.a, t.b) : n.space.nullListenerType(t.a, t.b); var i = t; i.a = i.b = null, i.listeners.clear(), i.next = zpp_$nape_callbacks_ZPP_$CbSetPair.zpp_pool, zpp_$nape_callbacks_ZPP_$CbSetPair.zpp_pool = i }); var i = t; i.data = null, i.lt = null, i.swapped = null, i.next = zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.zpp_pool, zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.zpp_pool = i }, with_union: function(e) { for (var t = this.options1.includes.head, n = this.options2.includes.head; null != t && null != n; ) { var i = t.elt , l = n.elt; i == l ? (e(i), t = t.next, n = n.next) : i.id < l.id ? (e(i), t = t.next) : (e(l), n = n.next) } for (; null != t; ) e(t.elt), t = t.next; for (; null != n; ) e(n.elt), n = n.next }, addedToSpace: function() { var e = this , t = 3 == this.type; this.with_union(function(n) { if (n.addint(e), t) for (var i = n.interactors.head; null != i; ) { i.elt.wake(), i = i.next } }), this.options1.handler = $bind(this, this.cbtype_change1), this.options2.handler = $bind(this, this.cbtype_change2), this.with_uniquesets(!0) }, removedFromSpace: function() { var e = this; this.with_uniquesets(!1); var t = 3 == this.type; this.with_union(function(n) { if (n.listeners.remove(e), n.invalidateint(), t) for (var i = n.interactors.head; null != i; ) { i.elt.wake(), i = i.next } }), this.options1.handler = null, this.options2.handler = null }, cbtype_change1: function(e, t, n) { this.cbtype_change(this.options1, e, t, n) }, cbtype_change2: function(e, t, n) { this.cbtype_change(this.options2, e, t, n) }, cbtype_change: function(e, t, n, i) { this.removedFromSpace(), e.effect_change(t, n, i), this.addedToSpace() }, __class__: zpp_$nape_callbacks_ZPP_$InteractionListener }); var zpp_$nape_callbacks_ZPP_$OptionType = function() { this.wrap_excludes = null, this.wrap_includes = null, this.excludes = null, this.includes = null, this.handler = null, this.outer = null, this.includes = new zpp_$nape_util_ZNPList_$ZPP_$CbType, this.excludes = new zpp_$nape_util_ZNPList_$ZPP_$CbType }; $hxClasses["zpp_nape.callbacks.ZPP_OptionType"] = zpp_$nape_callbacks_ZPP_$OptionType, zpp_$nape_callbacks_ZPP_$OptionType.__name__ = ["zpp_nape", "callbacks", "ZPP_OptionType"], zpp_$nape_callbacks_ZPP_$OptionType.argument = function(e) { return null == e ? new nape_callbacks_OptionType : js_Boot.__instanceof(e, nape_callbacks_OptionType) ? e : (new nape_callbacks_OptionType).including(e) } , zpp_$nape_callbacks_ZPP_$OptionType.prototype = { outer: null, handler: null, includes: null, excludes: null, wrap_includes: null, wrap_excludes: null, setup_includes: function() { this.wrap_includes = zpp_$nape_util_ZPP_$CbTypeList.get(this.includes, !0) }, setup_excludes: function() { this.wrap_excludes = zpp_$nape_util_ZPP_$CbTypeList.get(this.excludes, !0) }, excluded: function(e) { return this.nonemptyintersection(e, this.excludes) }, compatible: function(e) { return this.nonemptyintersection(e, this.includes) && !this.nonemptyintersection(e, this.excludes) }, nonemptyintersection: function(e, t) { for (var n = !1, i = e.head, l = t.head; null != l && null != i; ) { var a = l.elt , s = i.elt; if (a == s) { n = !0; break } a.id < s.id ? l = l.next : i = i.next } return n }, effect_change: function(e, t, n) { if (t) if (n) { for (var i = null, l = this.includes.head; null != l; ) { var a = l.elt; if (e.id < a.id) break; i = l, l = l.next } this.includes.inlined_insert(i, e) } else this.includes.remove(e); else if (n) { for (var s = null, r = this.excludes.head; null != r; ) { var _ = r.elt; if (e.id < _.id) break; s = r, r = r.next } this.excludes.inlined_insert(s, e) } else this.excludes.remove(e) }, append_type: function(e, t) { e == this.includes ? this.includes.has(t) || (this.excludes.has(t) ? null != this.handler ? this.handler(t, !1, !1) : this.effect_change(t, !1, !1) : null != this.handler ? this.handler(t, !0, !0) : this.effect_change(t, !0, !0)) : this.excludes.has(t) || (this.includes.has(t) ? null != this.handler ? this.handler(t, !0, !1) : this.effect_change(t, !0, !1) : null != this.handler ? this.handler(t, !1, !0) : this.effect_change(t, !1, !0)) }, append: function(e, t) { if (js_Boot.__instanceof(t, nape_callbacks_CbType)) { var n = t; this.append_type(e, n.zpp_inner) } else if (js_Boot.__instanceof(t, nape_callbacks_CbTypeList)) { var i, l = t; for (l.zpp_inner.valmod(), i = nape_callbacks_CbTypeIterator.get(l); i.hasNext(); ) { var a; i.zpp_critical = !1, a = i.zpp_inner.at(i.zpp_i++), this.append_type(e, a.zpp_inner) } } else if (t instanceof Array && null == t.__enum__) for (var s = t, r = 0; r < s.length; ) { var _ = s[r]; ++r; var o = _; this.append_type(e, o.zpp_inner) } }, __class__: zpp_$nape_callbacks_ZPP_$OptionType }; var zpp_$nape_constraint_ZPP_$Constraint = function() { this.pre_dt = 0, this.cbSet = null, this.cbTypes = null, this.__velocity = !1, this.ignore = !1, this.component = null, this.removeOnBreak = !1, this.breakUnderError = !1, this.breakUnderForce = !1, this.maxError = 0, this.maxForce = 0, this.damping = 0, this.frequency = 0, this.stiff = !1, this.active = !1, this.space = null, this.compound = null, this.id = 0, this.outer = null, this.__velocity = !1, this.id = zpp_$nape_ZPP_$ID.Constraint(), this.stiff = !0, this.active = !0, this.ignore = !1, this.frequency = 10, this.damping = 1, this.maxForce = 1 / 0, this.maxError = 1 / 0, this.breakUnderForce = !1, this.removeOnBreak = !0, this.pre_dt = -1, this.cbTypes = new zpp_$nape_util_ZNPList_$ZPP_$CbType }; $hxClasses["zpp_nape.constraint.ZPP_Constraint"] = zpp_$nape_constraint_ZPP_$Constraint, zpp_$nape_constraint_ZPP_$Constraint.__name__ = ["zpp_nape", "constraint", "ZPP_Constraint"], zpp_$nape_constraint_ZPP_$Constraint.prototype = { outer: null, id: null, compound: null, space: null, active: null, stiff: null, frequency: null, damping: null, maxForce: null, maxError: null, breakUnderForce: null, breakUnderError: null, removeOnBreak: null, component: null, ignore: null, __velocity: null, immutable_midstep: function(e) {}, cbTypes: null, cbSet: null, insert_cbtype: function(e) { if (!this.cbTypes.has(e)) { null != this.space && (this.dealloc_cbSet(), e.constraints.add(this)); for (var t = null, n = this.cbTypes.head; null != n; ) { var i = n.elt; if (e.id < i.id) break; t = n, n = n.next } this.cbTypes.inlined_insert(t, e), null != this.space && (this.alloc_cbSet(), this.wake()) } }, alloc_cbSet: function() { null != (this.cbSet = this.space.cbsets.get(this.cbTypes)) && (this.cbSet.count++, this.cbSet.constraints.add(this)) }, dealloc_cbSet: function() { if (null != this.cbSet) { if (this.cbSet.constraints.remove(this), 0 == --this.cbSet.count) { this.space.cbsets.remove(this.cbSet); var e = this.cbSet; e.free(), e.next = zpp_$nape_callbacks_ZPP_$CbSet.zpp_pool, zpp_$nape_callbacks_ZPP_$CbSet.zpp_pool = e } this.cbSet = null } }, activate: function() { null != this.space && this.activeInSpace() }, deactivate: function() { null != this.space && this.inactiveOrOutSpace() }, addedToSpace: function() { this.active && this.activeInSpace(), this.activeBodies(); for (var e = this.cbTypes.head; null != e; ) { e.elt.constraints.add(this), e = e.next } }, removedFromSpace: function() { this.active && this.inactiveOrOutSpace(), this.inactiveBodies(); for (var e = this.cbTypes.head; null != e; ) { e.elt.constraints.remove(this), e = e.next } }, activeInSpace: function() { this.alloc_cbSet(), null == zpp_$nape_space_ZPP_$Component.zpp_pool ? this.component = new zpp_$nape_space_ZPP_$Component : (this.component = zpp_$nape_space_ZPP_$Component.zpp_pool, zpp_$nape_space_ZPP_$Component.zpp_pool = this.component.next, this.component.next = null), this.component.isBody = !1, this.component.constraint = this }, inactiveOrOutSpace: function() { this.dealloc_cbSet(); var e = this.component; e.body = null, e.constraint = null, e.next = zpp_$nape_space_ZPP_$Component.zpp_pool, zpp_$nape_space_ZPP_$Component.zpp_pool = e, this.component = null }, activeBodies: function() {}, inactiveBodies: function() {}, clearcache: function() {}, wake_connected: function() {}, forest: function() {}, pair_exists: function(e, t) { return !1 }, broken: function() {}, warmStart: function() {}, pre_dt: null, preStep: function(e) { return !1 }, applyImpulseVel: function() { return !1 }, applyImpulsePos: function() { return !1 }, wake: function() { null != this.space && this.space.wake_constraint(this) }, __class__: zpp_$nape_constraint_ZPP_$Constraint }; var zpp_$nape_constraint_ZPP_$AngleJoint = function() { this.stepped = !1, this.bias = 0, this.gamma = 0, this.jMax = 0, this.jAcc = 0, this.kMass = 0, this.b2 = null, this.b1 = null, this.scale = 0, this.equal = !1, this.slack = !1, this.jointMax = 0, this.jointMin = 0, this.ratio = 0, this.outer_zn = null, zpp_$nape_constraint_ZPP_$Constraint.call(this), this.ratio = 1, this.jAcc = 0, this.slack = !1, this.jMax = 1 / 0, this.stepped = !1 }; $hxClasses["zpp_nape.constraint.ZPP_AngleJoint"] = zpp_$nape_constraint_ZPP_$AngleJoint, zpp_$nape_constraint_ZPP_$AngleJoint.__name__ = ["zpp_nape", "constraint", "ZPP_AngleJoint"], zpp_$nape_constraint_ZPP_$AngleJoint.__super__ = zpp_$nape_constraint_ZPP_$Constraint, zpp_$nape_constraint_ZPP_$AngleJoint.prototype = $extend(zpp_$nape_constraint_ZPP_$Constraint.prototype, { outer_zn: null, ratio: null, jointMin: null, jointMax: null, slack: null, equal: null, scale: null, activeBodies: function() { null != this.b1 && this.b1.constraints.add(this), this.b2 != this.b1 && null != this.b2 && this.b2.constraints.add(this) }, inactiveBodies: function() { null != this.b1 && this.b1.constraints.remove(this), this.b2 != this.b1 && null != this.b2 && this.b2.constraints.remove(this) }, b1: null, b2: null, kMass: null, jAcc: null, jMax: null, gamma: null, bias: null, stepped: null, wake_connected: function() { null != this.b1 && 2 == this.b1.type && this.b1.wake(), null != this.b2 && 2 == this.b2.type && this.b2.wake() }, forest: function() { if (2 == this.b1.type) { var e, t; if (this.b1.component == this.b1.component.parent) e = this.b1.component; else { for (var n = this.b1.component, i = null; n != n.parent; ) { var l = n.parent; n.parent = i, i = n, n = l } for (; null != i; ) { var a = i.parent; i.parent = n, i = a } e = n } if (this.component == this.component.parent) t = this.component; else { for (var s = this.component, r = null; s != s.parent; ) { var _ = s.parent; s.parent = r, r = s, s = _ } for (; null != r; ) { var o = r.parent; r.parent = s, r = o } t = s } e != t && (e.rank < t.rank ? e.parent = t : e.rank > t.rank ? t.parent = e : (t.parent = e, e.rank++)) } if (2 == this.b2.type) { var p, h; if (this.b2.component == this.b2.component.parent) p = this.b2.component; else { for (var d = this.b2.component, u = null; d != d.parent; ) { var c = d.parent; d.parent = u, u = d, d = c } for (; null != u; ) { var m = u.parent; u.parent = d, u = m } p = d } if (this.component == this.component.parent) h = this.component; else { for (var U = this.component, Q = null; U != U.parent; ) { var N = U.parent; U.parent = Q, Q = U, U = N } for (; null != Q; ) { var F = Q.parent; Q.parent = U, Q = F } h = U } p != h && (p.rank < h.rank ? p.parent = h : p.rank > h.rank ? h.parent = p : (h.parent = p, p.rank++)) } }, pair_exists: function(e, t) { return this.b1.id == e && this.b2.id == t || this.b1.id == t && this.b2.id == e }, clearcache: function() { this.jAcc = 0, this.pre_dt = -1, this.slack = !1 }, preStep: function(e) { -1 == this.pre_dt && (this.pre_dt = e); var t, n = e / this.pre_dt; this.pre_dt = e, this.stepped = !0, this.equal = this.jointMin == this.jointMax; var i = this.ratio * this.b2.rot - this.b1.rot; if (this.equal ? (i -= this.jointMax, this.slack = !1, this.scale = 1) : i < this.jointMin ? (i = this.jointMin - i, this.scale = -1, this.slack = !1) : i > this.jointMax ? (i -= this.jointMax, this.scale = 1, this.slack = !1) : (this.scale = 0, i = 0, this.slack = !0), t = i, !this.slack) { if (this.kMass = this.b1.sinertia + this.ratio * this.ratio * this.b2.sinertia, 0 != this.kMass ? this.kMass = 1 / this.kMass : this.jAcc = 0, this.stiff) this.bias = 0, this.gamma = 0; else { if (this.breakUnderError && t * t > this.maxError * this.maxError) return !0; var l, a = 2 * Math.PI * this.frequency; this.gamma = 1 / (e * a * (2 * this.damping + a * e)); var s = 1 / (1 + this.gamma); l = e * a * a * this.gamma, this.gamma *= s, this.kMass *= s, this.bias = -t * l, this.bias < -this.maxError ? this.bias = -this.maxError : this.bias > this.maxError && (this.bias = this.maxError) } this.jAcc *= n, this.jMax = this.maxForce * e } return !1 }, warmStart: function() { this.slack || (this.b1.angvel -= this.scale * this.b1.iinertia * this.jAcc, this.b2.angvel += this.ratio * this.scale * this.b2.iinertia * this.jAcc) }, applyImpulseVel: function() { if (this.slack) return !1; var e = this.scale * (this.ratio * (this.b2.angvel + this.b2.kinangvel) - this.b1.angvel - this.b1.kinangvel) , t = this.kMass * (this.bias - e) - this.jAcc * this.gamma , n = this.jAcc; return this.jAcc += t, !this.equal && this.jAcc > 0 && (this.jAcc = 0), !(!this.breakUnderForce || !(this.jAcc > this.jMax || this.jAcc < -this.jMax)) || (this.stiff || (this.jAcc > this.jMax ? this.jAcc = this.jMax : this.jAcc < -this.jMax && (this.jAcc = -this.jMax)), t = this.jAcc - n, this.b1.angvel -= this.scale * this.b1.iinertia * t, this.b2.angvel += this.ratio * this.scale * this.b2.iinertia * t, !1) }, applyImpulsePos: function() { var e, t, n, i = this.ratio * this.b2.rot - this.b1.rot; if (this.equal ? (i -= this.jointMax, n = !1, this.scale = 1) : i < this.jointMin ? (i = this.jointMin - i, this.scale = -1, n = !1) : i > this.jointMax ? (i -= this.jointMax, this.scale = 1, n = !1) : (this.scale = 0, i = 0, n = !0), e = i, !n) { if (this.breakUnderError && e * e > this.maxError * this.maxError) return !0; t = -(e *= .5) * this.kMass, (this.equal || t < 0) && (this.b1.delta_rot(-this.scale * t * this.b1.iinertia), this.b2.delta_rot(this.ratio * this.scale * t * this.b2.iinertia)) } return !1 }, __class__: zpp_$nape_constraint_ZPP_$AngleJoint }); var zpp_$nape_constraint_ZPP_$PivotJoint = function() { this.stepped = !1, this.biasy = 0, this.biasx = 0, this.gamma = 0, this.jMax = 0, this.jAccy = 0, this.jAccx = 0, this.kMassc = 0, this.kMassb = 0, this.kMassa = 0, this.wrap_a2 = null, this.a2rely = 0, this.a2relx = 0, this.a2localy = 0, this.a2localx = 0, this.b2 = null, this.wrap_a1 = null, this.a1rely = 0, this.a1relx = 0, this.a1localy = 0, this.a1localx = 0, this.b1 = null, this.outer_zn = null, zpp_$nape_constraint_ZPP_$Constraint.call(this), this.stepped = !1, this.jAccx = 0, this.jAccy = 0, this.jMax = 1 / 0, this.a1localx = 0, this.a1localy = 0, this.a1relx = 0, this.a1rely = 0, this.a2localx = 0, this.a2localy = 0, this.a2relx = 0, this.a2rely = 0 }; $hxClasses["zpp_nape.constraint.ZPP_PivotJoint"] = zpp_$nape_constraint_ZPP_$PivotJoint, zpp_$nape_constraint_ZPP_$PivotJoint.__name__ = ["zpp_nape", "constraint", "ZPP_PivotJoint"], zpp_$nape_constraint_ZPP_$PivotJoint.__super__ = zpp_$nape_constraint_ZPP_$Constraint, zpp_$nape_constraint_ZPP_$PivotJoint.prototype = $extend(zpp_$nape_constraint_ZPP_$Constraint.prototype, { outer_zn: null, activeBodies: function() { null != this.b1 && this.b1.constraints.add(this), this.b2 != this.b1 && null != this.b2 && this.b2.constraints.add(this) }, inactiveBodies: function() { null != this.b1 && this.b1.constraints.remove(this), this.b2 != this.b1 && null != this.b2 && this.b2.constraints.remove(this) }, b1: null, a1localx: null, a1localy: null, a1relx: null, a1rely: null, validate_a1: function() { this.wrap_a1.zpp_inner.x = this.a1localx, this.wrap_a1.zpp_inner.y = this.a1localy }, invalidate_a1: function(e) { this.immutable_midstep("Constraint::a1"), this.a1localx = e.x, this.a1localy = e.y, this.wake() }, setup_a1: function() { this.wrap_a1 = nape_geom_Vec2.get(this.a1localx, this.a1localy, null), this.wrap_a1.zpp_inner._inuse = !0, this.wrap_a1.zpp_inner._validate = $bind(this, this.validate_a1), this.wrap_a1.zpp_inner._invalidate = $bind(this, this.invalidate_a1) }, wrap_a1: null, b2: null, a2localx: null, a2localy: null, a2relx: null, a2rely: null, validate_a2: function() { this.wrap_a2.zpp_inner.x = this.a2localx, this.wrap_a2.zpp_inner.y = this.a2localy }, invalidate_a2: function(e) { this.immutable_midstep("Constraint::a2"), this.a2localx = e.x, this.a2localy = e.y, this.wake() }, setup_a2: function() { this.wrap_a2 = nape_geom_Vec2.get(this.a2localx, this.a2localy, null), this.wrap_a2.zpp_inner._inuse = !0, this.wrap_a2.zpp_inner._validate = $bind(this, this.validate_a2), this.wrap_a2.zpp_inner._invalidate = $bind(this, this.invalidate_a2) }, wrap_a2: null, kMassa: null, kMassb: null, kMassc: null, jAccx: null, jAccy: null, jMax: null, gamma: null, biasx: null, biasy: null, stepped: null, wake_connected: function() { null != this.b1 && 2 == this.b1.type && this.b1.wake(), null != this.b2 && 2 == this.b2.type && this.b2.wake() }, forest: function() { if (2 == this.b1.type) { var e, t; if (this.b1.component == this.b1.component.parent) e = this.b1.component; else { for (var n = this.b1.component, i = null; n != n.parent; ) { var l = n.parent; n.parent = i, i = n, n = l } for (; null != i; ) { var a = i.parent; i.parent = n, i = a } e = n } if (this.component == this.component.parent) t = this.component; else { for (var s = this.component, r = null; s != s.parent; ) { var _ = s.parent; s.parent = r, r = s, s = _ } for (; null != r; ) { var o = r.parent; r.parent = s, r = o } t = s } e != t && (e.rank < t.rank ? e.parent = t : e.rank > t.rank ? t.parent = e : (t.parent = e, e.rank++)) } if (2 == this.b2.type) { var p, h; if (this.b2.component == this.b2.component.parent) p = this.b2.component; else { for (var d = this.b2.component, u = null; d != d.parent; ) { var c = d.parent; d.parent = u, u = d, d = c } for (; null != u; ) { var m = u.parent; u.parent = d, u = m } p = d } if (this.component == this.component.parent) h = this.component; else { for (var U = this.component, Q = null; U != U.parent; ) { var N = U.parent; U.parent = Q, Q = U, U = N } for (; null != Q; ) { var F = Q.parent; Q.parent = U, Q = F } h = U } p != h && (p.rank < h.rank ? p.parent = h : p.rank > h.rank ? h.parent = p : (h.parent = p, p.rank++)) } }, pair_exists: function(e, t) { return this.b1.id == e && this.b2.id == t || this.b1.id == t && this.b2.id == e }, clearcache: function() { this.jAccx = 0, this.jAccy = 0, this.pre_dt = -1 }, preStep: function(e) { -1 == this.pre_dt && (this.pre_dt = e); var t = e / this.pre_dt; this.pre_dt = e, this.stepped = !0, this.a1relx = this.b1.axisy * this.a1localx - this.b1.axisx * this.a1localy, this.a1rely = this.a1localx * this.b1.axisx + this.a1localy * this.b1.axisy, this.a2relx = this.b2.axisy * this.a2localx - this.b2.axisx * this.a2localy, this.a2rely = this.a2localx * this.b2.axisx + this.a2localy * this.b2.axisy; var n, i = this.b1.smass + this.b2.smass; if (this.kMassa = i, this.kMassb = 0, this.kMassc = i, 0 != this.b1.sinertia) { var l = this.a1relx * this.b1.sinertia , a = this.a1rely * this.b1.sinertia; this.kMassa += a * this.a1rely, this.kMassb += -a * this.a1relx, this.kMassc += l * this.a1relx } if (0 != this.b2.sinertia) { var s = this.a2relx * this.b2.sinertia , r = this.a2rely * this.b2.sinertia; this.kMassa += r * this.a2rely, this.kMassb += -r * this.a2relx, this.kMassc += s * this.a2relx } var _ = this.kMassa * this.kMassc - this.kMassb * this.kMassb; if (_ != _) this.kMassa = this.kMassb = this.kMassc = 0, n = 3; else if (0 == _) { var o = 0; 0 != this.kMassa ? this.kMassa = 1 / this.kMassa : (this.kMassa = 0, o |= 1), 0 != this.kMassc ? this.kMassc = 1 / this.kMassc : (this.kMassc = 0, o |= 2), this.kMassb = 0, n = o } else { _ = 1 / _; var p = this.kMassc * _; this.kMassc = this.kMassa * _, this.kMassa = p, this.kMassb *= -_, n = 0 } if (0 != (1 & n) && (this.jAccx = 0), 0 != (2 & n) && (this.jAccy = 0), this.stiff) this.biasx = 0, this.biasy = 0, this.gamma = 0; else { var h, d, u = 2 * Math.PI * this.frequency; this.gamma = 1 / (e * u * (2 * this.damping + u * e)); var c = 1 / (1 + this.gamma); if (h = e * u * u * this.gamma, this.gamma *= c, d = c, this.kMassa *= d, this.kMassb *= d, this.kMassc *= d, this.biasx = this.b2.posx + this.a2relx - (this.b1.posx + this.a1relx), this.biasy = this.b2.posy + this.a2rely - (this.b1.posy + this.a1rely), this.breakUnderError && this.biasx * this.biasx + this.biasy * this.biasy > this.maxError * this.maxError) return !0; var m = -h; this.biasx *= m, this.biasy *= m; var U = this.maxError , Q = this.biasx * this.biasx + this.biasy * this.biasy; if (Q > U * U) { var N = U * (1 / Math.sqrt(Q)); this.biasx *= N, this.biasy *= N } } var F = t; return this.jAccx *= F, this.jAccy *= F, this.jMax = this.maxForce * e, !1 }, warmStart: function() { var e = this.b1.imass; this.b1.velx -= this.jAccx * e, this.b1.vely -= this.jAccy * e; var t = this.b2.imass; this.b2.velx += this.jAccx * t, this.b2.vely += this.jAccy * t, this.b1.angvel -= (this.jAccy * this.a1relx - this.jAccx * this.a1rely) * this.b1.iinertia, this.b2.angvel += (this.jAccy * this.a2relx - this.jAccx * this.a2rely) * this.b2.iinertia }, applyImpulseVel: function() { var e, t; e = this.b2.velx + this.b2.kinvelx - this.a2rely * (this.b2.angvel + this.b2.kinangvel) - (this.b1.velx + this.b1.kinvelx - this.a1rely * (this.b1.angvel + this.b1.kinangvel)), t = this.b2.vely + this.b2.kinvely + this.a2relx * (this.b2.angvel + this.b2.kinangvel) - (this.b1.vely + this.b1.kinvely + this.a1relx * (this.b1.angvel + this.b1.kinangvel)); var n = 0 , i = 0; n = this.biasx - e, i = this.biasy - t; var l = this.kMassa * n + this.kMassb * i; i = this.kMassb * n + this.kMassc * i, n = l; var a = this.gamma; n -= this.jAccx * a, i -= this.jAccy * a; var s, r; s = this.jAccx, r = this.jAccy; if (this.jAccx += 1 * n, this.jAccy += 1 * i, this.breakUnderForce) { if (this.jAccx * this.jAccx + this.jAccy * this.jAccy > this.jMax * this.jMax) return !0 } else if (!this.stiff) { var _ = this.jMax , o = this.jAccx * this.jAccx + this.jAccy * this.jAccy; if (o > _ * _) { var p = _ * (1 / Math.sqrt(o)); this.jAccx *= p, this.jAccy *= p } } n = this.jAccx - s, i = this.jAccy - r; var h = this.b1.imass; this.b1.velx -= n * h, this.b1.vely -= i * h; var d = this.b2.imass; return this.b2.velx += n * d, this.b2.vely += i * d, this.b1.angvel -= (i * this.a1relx - n * this.a1rely) * this.b1.iinertia, this.b2.angvel += (i * this.a2relx - n * this.a2rely) * this.b2.iinertia, !1 }, applyImpulsePos: function() { var e, t; e = this.b1.axisy * this.a1localx - this.b1.axisx * this.a1localy, t = this.a1localx * this.b1.axisx + this.a1localy * this.b1.axisy; var n, i; n = this.b2.axisy * this.a2localx - this.b2.axisx * this.a2localy, i = this.a2localx * this.b2.axisx + this.a2localy * this.b2.axisy; var l = 0 , a = 0; if (l = this.b2.posx + n - (this.b1.posx + e), a = this.b2.posy + i - (this.b1.posy + t), this.breakUnderError && l * l + a * a > this.maxError * this.maxError) return !0; if (l * l + a * a < nape_Config.constraintLinearSlop * nape_Config.constraintLinearSlop) return !1; var s = 0 , r = 0; if ((l *= .5) * l + (a *= .5) * a > 6) { var _ = this.b1.smass + this.b2.smass; if (_ > nape_Config.epsilon) { var o = (s = -l * (_ = .75 / _)) * s + (r = -a * _) * r; if (o > 400) { var p = 1 / Math.sqrt(o) * 20; s *= p, r *= p } var h = this.b1.imass; this.b1.posx -= s * h, this.b1.posy -= r * h; var d = this.b2.imass; this.b2.posx += s * d, this.b2.posy += r * d, l = this.b2.posx + n - (this.b1.posx + e), a = this.b2.posy + i - (this.b1.posy + t); l *= .5, a *= .5 } } var u = 0 , c = 0 , m = 0 , U = this.b1.smass + this.b2.smass; if (u = U, c = 0, m = U, 0 != this.b1.sinertia) { var Q = e * this.b1.sinertia , N = t * this.b1.sinertia; u += N * t, c += -N * e, m += Q * e } if (0 != this.b2.sinertia) { var F = n * this.b2.sinertia , Z = i * this.b2.sinertia; u += Z * i, c += -Z * n, m += F * n } var f = (s = -l) * s + (r = -a) * r; if (f > 36) { var S = 1 / Math.sqrt(f) * 6; s *= S, r *= S } var g = u * m - c * c; if (g != g) s = r = 0; else if (0 == g) 0 != u ? s /= u : s = 0, 0 != m ? r /= m : r = 0; else { var B = (g = 1 / g) * (m * s - c * r); r = g * (u * r - c * s), s = B } var b = this.b1.imass; this.b1.posx -= s * b, this.b1.posy -= r * b; var v = this.b2.imass; return this.b2.posx += s * v, this.b2.posy += r * v, this.b1.delta_rot(-(r * e - s * t) * this.b1.iinertia), this.b2.delta_rot((r * n - s * i) * this.b2.iinertia), !1 }, __class__: zpp_$nape_constraint_ZPP_$PivotJoint }); var zpp_$nape_constraint_ZPP_$WeldJoint = function() { this.stepped = !1, this.biasz = 0, this.biasy = 0, this.biasx = 0, this.gamma = 0, this.jMax = 0, this.jAccz = 0, this.jAccy = 0, this.jAccx = 0, this.kMassf = 0, this.kMasse = 0, this.kMassc = 0, this.kMassd = 0, this.kMassb = 0, this.kMassa = 0, this.phase = 0, this.wrap_a2 = null, this.a2rely = 0, this.a2relx = 0, this.a2localy = 0, this.a2localx = 0, this.b2 = null, this.wrap_a1 = null, this.a1rely = 0, this.a1relx = 0, this.a1localy = 0, this.a1localx = 0, this.b1 = null, this.outer_zn = null, zpp_$nape_constraint_ZPP_$Constraint.call(this), this.phase = 0, this.jAccx = 0, this.jAccy = 0, this.jAccz = 0, this.jMax = 1 / 0, this.stepped = !1, this.a1localx = 0, this.a1localy = 0, this.a1relx = 0, this.a1rely = 0, this.a2localx = 0, this.a2localy = 0, this.a2relx = 0, this.a2rely = 0 }; $hxClasses["zpp_nape.constraint.ZPP_WeldJoint"] = zpp_$nape_constraint_ZPP_$WeldJoint, zpp_$nape_constraint_ZPP_$WeldJoint.__name__ = ["zpp_nape", "constraint", "ZPP_WeldJoint"], zpp_$nape_constraint_ZPP_$WeldJoint.__super__ = zpp_$nape_constraint_ZPP_$Constraint, zpp_$nape_constraint_ZPP_$WeldJoint.prototype = $extend(zpp_$nape_constraint_ZPP_$Constraint.prototype, { outer_zn: null, activeBodies: function() { null != this.b1 && this.b1.constraints.add(this), this.b2 != this.b1 && null != this.b2 && this.b2.constraints.add(this) }, inactiveBodies: function() { null != this.b1 && this.b1.constraints.remove(this), this.b2 != this.b1 && null != this.b2 && this.b2.constraints.remove(this) }, b1: null, a1localx: null, a1localy: null, a1relx: null, a1rely: null, validate_a1: function() { this.wrap_a1.zpp_inner.x = this.a1localx, this.wrap_a1.zpp_inner.y = this.a1localy }, invalidate_a1: function(e) { this.immutable_midstep("Constraint::a1"), this.a1localx = e.x, this.a1localy = e.y, this.wake() }, setup_a1: function() { this.wrap_a1 = nape_geom_Vec2.get(this.a1localx, this.a1localy, null), this.wrap_a1.zpp_inner._inuse = !0, this.wrap_a1.zpp_inner._validate = $bind(this, this.validate_a1), this.wrap_a1.zpp_inner._invalidate = $bind(this, this.invalidate_a1) }, wrap_a1: null, b2: null, a2localx: null, a2localy: null, a2relx: null, a2rely: null, validate_a2: function() { this.wrap_a2.zpp_inner.x = this.a2localx, this.wrap_a2.zpp_inner.y = this.a2localy }, invalidate_a2: function(e) { this.immutable_midstep("Constraint::a2"), this.a2localx = e.x, this.a2localy = e.y, this.wake() }, setup_a2: function() { this.wrap_a2 = nape_geom_Vec2.get(this.a2localx, this.a2localy, null), this.wrap_a2.zpp_inner._inuse = !0, this.wrap_a2.zpp_inner._validate = $bind(this, this.validate_a2), this.wrap_a2.zpp_inner._invalidate = $bind(this, this.invalidate_a2) }, wrap_a2: null, phase: null, kMassa: null, kMassb: null, kMassd: null, kMassc: null, kMasse: null, kMassf: null, jAccx: null, jAccy: null, jAccz: null, jMax: null, gamma: null, biasx: null, biasy: null, biasz: null, stepped: null, wake_connected: function() { null != this.b1 && 2 == this.b1.type && this.b1.wake(), null != this.b2 && 2 == this.b2.type && this.b2.wake() }, forest: function() { if (2 == this.b1.type) { var e, t; if (this.b1.component == this.b1.component.parent) e = this.b1.component; else { for (var n = this.b1.component, i = null; n != n.parent; ) { var l = n.parent; n.parent = i, i = n, n = l } for (; null != i; ) { var a = i.parent; i.parent = n, i = a } e = n } if (this.component == this.component.parent) t = this.component; else { for (var s = this.component, r = null; s != s.parent; ) { var _ = s.parent; s.parent = r, r = s, s = _ } for (; null != r; ) { var o = r.parent; r.parent = s, r = o } t = s } e != t && (e.rank < t.rank ? e.parent = t : e.rank > t.rank ? t.parent = e : (t.parent = e, e.rank++)) } if (2 == this.b2.type) { var p, h; if (this.b2.component == this.b2.component.parent) p = this.b2.component; else { for (var d = this.b2.component, u = null; d != d.parent; ) { var c = d.parent; d.parent = u, u = d, d = c } for (; null != u; ) { var m = u.parent; u.parent = d, u = m } p = d } if (this.component == this.component.parent) h = this.component; else { for (var U = this.component, Q = null; U != U.parent; ) { var N = U.parent; U.parent = Q, Q = U, U = N } for (; null != Q; ) { var F = Q.parent; Q.parent = U, Q = F } h = U } p != h && (p.rank < h.rank ? p.parent = h : p.rank > h.rank ? h.parent = p : (h.parent = p, p.rank++)) } }, pair_exists: function(e, t) { return this.b1.id == e && this.b2.id == t || this.b1.id == t && this.b2.id == e }, clearcache: function() { this.jAccx = 0, this.jAccy = 0, this.jAccz = 0, this.pre_dt = -1 }, preStep: function(e) { -1 == this.pre_dt && (this.pre_dt = e); var t = e / this.pre_dt; this.pre_dt = e, this.stepped = !0, this.a1relx = this.b1.axisy * this.a1localx - this.b1.axisx * this.a1localy, this.a1rely = this.a1localx * this.b1.axisx + this.a1localy * this.b1.axisy, this.a2relx = this.b2.axisy * this.a2localx - this.b2.axisx * this.a2localy, this.a2rely = this.a2localx * this.b2.axisx + this.a2localy * this.b2.axisy; var n, i = this.b1.smass + this.b2.smass; if (this.kMassa = i, this.kMassb = 0, this.kMassd = i, this.kMassc = 0, this.kMasse = 0, this.kMassf = 0, 0 != this.b1.sinertia) { var l = this.a1relx * this.b1.sinertia , a = this.a1rely * this.b1.sinertia; this.kMassa += a * this.a1rely, this.kMassb += -a * this.a1relx, this.kMassd += l * this.a1relx, this.kMassc += -a, this.kMasse += l, this.kMassf += this.b1.sinertia } if (0 != this.b2.sinertia) { var s = this.a2relx * this.b2.sinertia , r = this.a2rely * this.b2.sinertia; this.kMassa += r * this.a2rely, this.kMassb += -r * this.a2relx, this.kMassd += s * this.a2relx, this.kMassc += -r, this.kMasse += s, this.kMassf += this.b2.sinertia } var _ = this.kMassa * (this.kMassd * this.kMassf - this.kMasse * this.kMasse) + this.kMassb * (this.kMassc * this.kMasse - this.kMassb * this.kMassf) + this.kMassc * (this.kMassb * this.kMasse - this.kMassc * this.kMassd); if (_ != _) this.kMassa = 0, this.kMassb = 0, this.kMassd = 0, this.kMassc = 0, this.kMasse = 0, this.kMassf = 0, n = 7; else if (0 == _) { var o = 0; 0 != this.kMassa ? this.kMassa = 1 / this.kMassa : (this.kMassa = 0, o |= 1), 0 != this.kMassd ? this.kMassd = 1 / this.kMassd : (this.kMassd = 0, o |= 2), 0 != this.kMassf ? this.kMassf = 1 / this.kMassf : (this.kMassf = 0, o |= 4), this.kMassb = this.kMassc = this.kMasse = 0, n = o } else { var p = (_ = 1 / _) * (this.kMassd * this.kMassf - this.kMasse * this.kMasse) , h = _ * (this.kMasse * this.kMassc - this.kMassb * this.kMassf) , d = _ * (this.kMassa * this.kMassf - this.kMassc * this.kMassc) , u = _ * (this.kMassb * this.kMasse - this.kMassc * this.kMassd) , c = _ * (this.kMassb * this.kMassc - this.kMassa * this.kMasse) , m = _ * (this.kMassa * this.kMassd - this.kMassb * this.kMassb); this.kMassa = p, this.kMassb = h, this.kMassd = d, this.kMassc = u, this.kMasse = c, this.kMassf = m, n = 0 } if (0 != (1 & n) && (this.jAccx = 0), 0 != (2 & n) && (this.jAccy = 0), 0 != (4 & n) && (this.jAccz = 0), this.stiff) this.biasx = 0, this.biasy = 0, this.biasz = 0, this.gamma = 0; else { var U, Q, N = 2 * Math.PI * this.frequency; this.gamma = 1 / (e * N * (2 * this.damping + N * e)); var F = 1 / (1 + this.gamma); if (U = e * N * N * this.gamma, this.gamma *= F, Q = F, this.kMassa *= Q, this.kMassb *= Q, this.kMassd *= Q, this.kMassc *= Q, this.kMasse *= Q, this.kMassf *= Q, this.biasx = this.b2.posx + this.a2relx - (this.b1.posx + this.a1relx), this.biasy = this.b2.posy + this.a2rely - (this.b1.posy + this.a1rely), this.biasz = this.b2.rot - this.b1.rot - this.phase, this.breakUnderError && this.biasx * this.biasx + this.biasy * this.biasy + this.biasz * this.biasz > this.maxError * this.maxError) return !0; var Z = -U , f = Z; this.biasx *= f, this.biasy *= f, this.biasz *= Z; var S = this.maxError , g = this.biasx * this.biasx + this.biasy * this.biasy + this.biasz * this.biasz; if (g > S * S) { var B = S * (1 / Math.sqrt(g)) , b = B; this.biasx *= b, this.biasy *= b, this.biasz *= B } } var v = t , W = v; return this.jAccx *= W, this.jAccy *= W, this.jAccz *= v, this.jMax = this.maxForce * e, !1 }, warmStart: function() { var e = this.b1.imass; this.b1.velx -= this.jAccx * e, this.b1.vely -= this.jAccy * e; var t = this.b2.imass; this.b2.velx += this.jAccx * t, this.b2.vely += this.jAccy * t, this.b1.angvel -= (this.jAccy * this.a1relx - this.jAccx * this.a1rely + this.jAccz) * this.b1.iinertia, this.b2.angvel += (this.jAccy * this.a2relx - this.jAccx * this.a2rely + this.jAccz) * this.b2.iinertia }, applyImpulseVel: function() { var e, t, n; e = this.b2.velx + this.b2.kinvelx - this.a2rely * (this.b2.angvel + this.b2.kinangvel) - (this.b1.velx + this.b1.kinvelx - this.a1rely * (this.b1.angvel + this.b1.kinangvel)), t = this.b2.vely + this.b2.kinvely + this.a2relx * (this.b2.angvel + this.b2.kinangvel) - (this.b1.vely + this.b1.kinvely + this.a1relx * (this.b1.angvel + this.b1.kinangvel)), n = this.b2.angvel + this.b2.kinangvel - this.b1.angvel - this.b1.kinangvel; var i = 0 , l = 0 , a = 0; i = this.biasx - e, l = this.biasy - t, a = this.biasz - n; var s = this.kMassa * i + this.kMassb * l + this.kMassc * a , r = this.kMassb * i + this.kMassd * l + this.kMasse * a; a = this.kMassc * i + this.kMasse * l + this.kMassf * a, i = s, l = r; var _ = this.gamma , o = _; i -= this.jAccx * o, l -= this.jAccy * o, a -= this.jAccz * _; var p, h, d; p = this.jAccx, h = this.jAccy, d = this.jAccz; if (this.jAccx += 1 * i, this.jAccy += 1 * l, this.jAccz += 1 * a, this.breakUnderForce) { if (this.jAccx * this.jAccx + this.jAccy * this.jAccy + this.jAccz * this.jAccz > this.jMax * this.jMax) return !0 } else if (!this.stiff) { var u = this.jMax , c = this.jAccx * this.jAccx + this.jAccy * this.jAccy + this.jAccz * this.jAccz; if (c > u * u) { var m = u * (1 / Math.sqrt(c)) , U = m; this.jAccx *= U, this.jAccy *= U, this.jAccz *= m } } i = this.jAccx - p, l = this.jAccy - h, a = this.jAccz - d; var Q = this.b1.imass; this.b1.velx -= i * Q, this.b1.vely -= l * Q; var N = this.b2.imass; return this.b2.velx += i * N, this.b2.vely += l * N, this.b1.angvel -= (l * this.a1relx - i * this.a1rely + a) * this.b1.iinertia, this.b2.angvel += (l * this.a2relx - i * this.a2rely + a) * this.b2.iinertia, !1 }, applyImpulsePos: function() { var e, t; e = this.b1.axisy * this.a1localx - this.b1.axisx * this.a1localy, t = this.a1localx * this.b1.axisx + this.a1localy * this.b1.axisy; var n, i; n = this.b2.axisy * this.a2localx - this.b2.axisx * this.a2localy, i = this.a2localx * this.b2.axisx + this.a2localy * this.b2.axisy; var l = 0 , a = 0 , s = 0; l = this.b2.posx + n - (this.b1.posx + e), a = this.b2.posy + i - (this.b1.posy + t), s = this.b2.rot - this.b1.rot - this.phase; var r = 0 , _ = 0 , o = 0; if (this.breakUnderError && l * l + a * a + s * s > this.maxError * this.maxError) return !0; var p = !0; if (l * l + a * a < nape_Config.constraintLinearSlop * nape_Config.constraintLinearSlop && (p = !1, l = 0, a = 0), s * s < zpp_$nape_util_ZPP_$Math.sqr(nape_Config.constraintAngularSlop)) { if (!p) return !1; s = 0 } if (s *= .5, (l *= .5) * l + (a *= .5) * a > 6) { var h = this.b1.smass + this.b2.smass; if (h > nape_Config.epsilon) { var d = (r = -l * (h = .75 / h)) * r + (_ = -a * h) * _; if (d > 400) { var u = 1 / Math.sqrt(d) * 20; r *= u, _ *= u } var c = this.b1.imass; this.b1.posx -= r * c, this.b1.posy -= _ * c; var m = this.b2.imass; this.b2.posx += r * m, this.b2.posy += _ * m, l = this.b2.posx + n - (this.b1.posx + e), a = this.b2.posy + i - (this.b1.posy + t), s = this.b2.rot - this.b1.rot - this.phase; l *= .5, a *= .5, s *= .5 } } var U = 0 , Q = 0 , N = 0 , F = 0 , Z = 0 , f = 0 , S = this.b1.smass + this.b2.smass; if (U = S, Q = 0, N = S, F = 0, Z = 0, f = 0, 0 != this.b1.sinertia) { var g = e * this.b1.sinertia , B = t * this.b1.sinertia; U += B * t, Q += -B * e, N += g * e, F += -B, Z += g, f += this.b1.sinertia } if (0 != this.b2.sinertia) { var b = n * this.b2.sinertia , v = i * this.b2.sinertia; U += v * i, Q += -v * n, N += b * n, F += -v, Z += b, f += this.b2.sinertia } o = -s; var W = (r = -l) * r + (_ = -a) * _; if (W > 36) { var T = 1 / Math.sqrt(W) * 6; r *= T, _ *= T } zpp_$nape_util_ZPP_$Math.clamp(o, -.25, .25); var V = U * (N * f - Z * Z) + Q * (F * Z - Q * f) + F * (Q * Z - F * N); if (V != V) r = _ = o = 0; else if (0 == V) 0 != U ? r /= U : r = 0, 0 != N ? _ /= N : _ = 0, 0 != f ? o /= f : o = 0; else { var R = Z * F - Q * f , y = Q * Z - F * N , D = Q * F - U * Z , x = (V = 1 / V) * (r * (N * f - Z * Z) + _ * R + o * y) , J = V * (r * R + _ * (U * f - F * F) + o * D); o = V * (r * y + _ * D + o * (U * N - Q * Q)), r = x, _ = J } var z = this.b1.imass; this.b1.posx -= r * z, this.b1.posy -= _ * z; var k = this.b2.imass; return this.b2.posx += r * k, this.b2.posy += _ * k, this.b1.delta_rot(-(_ * e - r * t + o) * this.b1.iinertia), this.b2.delta_rot((_ * n - r * i + o) * this.b2.iinertia), !1 }, __class__: zpp_$nape_constraint_ZPP_$WeldJoint }); var zpp_$nape_dynamics_ZPP_$Arbiter = function() { this.sensorarb = null, this.fluidarb = null, this.colarb = null, this.type = 0, this.pair = null, this.ws2 = null, this.ws1 = null, this.b2 = null, this.b1 = null, this.invalidated = !1, this.immState = 0, this.fresh = !1, this.continuous = !1, this.presentable = !1, this.intchange = !1, this.present = 0, this.sleeping = !1, this.cleared = !1, this.active = !1, this.endGenerated = 0, this.sleep_stamp = 0, this.up_stamp = 0, this.stamp = 0, this.di = 0, this.id = 0, this.outer = null }; $hxClasses["zpp_nape.dynamics.ZPP_Arbiter"] = zpp_$nape_dynamics_ZPP_$Arbiter, zpp_$nape_dynamics_ZPP_$Arbiter.__name__ = ["zpp_nape", "dynamics", "ZPP_Arbiter"], zpp_$nape_dynamics_ZPP_$Arbiter.prototype = { outer: null, wrapper: function() { return null == this.outer && (zpp_$nape_dynamics_ZPP_$Arbiter.internal = !0, this.type == zpp_$nape_dynamics_ZPP_$Arbiter.COL ? (this.colarb.outer_zn = new nape_dynamics_CollisionArbiter, this.outer = this.colarb.outer_zn) : this.type == zpp_$nape_dynamics_ZPP_$Arbiter.FLUID ? (this.fluidarb.outer_zn = new nape_dynamics_FluidArbiter, this.outer = this.fluidarb.outer_zn) : this.outer = new nape_dynamics_Arbiter, this.outer.zpp_inner = this, zpp_$nape_dynamics_ZPP_$Arbiter.internal = !1), this.outer }, id: null, di: null, stamp: null, up_stamp: null, sleep_stamp: null, endGenerated: null, active: null, cleared: null, sleeping: null, present: null, intchange: null, presentable: null, continuous: null, fresh: null, immState: null, invalidated: null, b1: null, b2: null, ws1: null, ws2: null, pair: null, type: null, colarb: null, fluidarb: null, sensorarb: null, __class__: zpp_$nape_dynamics_ZPP_$Arbiter }; var zpp_$nape_dynamics_ZPP_$SensorArbiter = function() { this.next = null, zpp_$nape_dynamics_ZPP_$Arbiter.call(this), this.type = zpp_$nape_dynamics_ZPP_$Arbiter.SENSOR, this.sensorarb = this }; $hxClasses["zpp_nape.dynamics.ZPP_SensorArbiter"] = zpp_$nape_dynamics_ZPP_$SensorArbiter, zpp_$nape_dynamics_ZPP_$SensorArbiter.__name__ = ["zpp_nape", "dynamics", "ZPP_SensorArbiter"], zpp_$nape_dynamics_ZPP_$SensorArbiter.__super__ = zpp_$nape_dynamics_ZPP_$Arbiter, zpp_$nape_dynamics_ZPP_$SensorArbiter.prototype = $extend(zpp_$nape_dynamics_ZPP_$Arbiter.prototype, { next: null, retire: function() { this.cleared || (this.b1.arbiters.inlined_try_remove(this), this.b2.arbiters.inlined_try_remove(this), null != this.pair && (this.pair.arb = null, this.pair = null)), this.b1 = this.b2 = null, this.active = !1, this.intchange = !1; this.next = zpp_$nape_dynamics_ZPP_$SensorArbiter.zpp_pool, zpp_$nape_dynamics_ZPP_$SensorArbiter.zpp_pool = this }, __class__: zpp_$nape_dynamics_ZPP_$SensorArbiter }); var zpp_$nape_dynamics_ZPP_$FluidArbiter = function() { this.pre_dt = 0, this.buoyy = 0, this.buoyx = 0, this.ny = 0, this.nx = 0, this.lgamma = 0, this.dampy = 0, this.dampx = 0, this.vMassc = 0, this.vMassb = 0, this.vMassa = 0, this.agamma = 0, this.adamp = 0, this.wMass = 0, this.nodrag = !1, this.r2y = 0, this.r2x = 0, this.r1y = 0, this.r1x = 0, this.overlap = 0, this.centroidy = 0, this.centroidx = 0, this.next = null, this.outer_zn = null, zpp_$nape_dynamics_ZPP_$Arbiter.call(this), this.type = zpp_$nape_dynamics_ZPP_$Arbiter.FLUID, this.fluidarb = this, this.buoyx = 0, this.buoyy = 0, this.pre_dt = -1 }; $hxClasses["zpp_nape.dynamics.ZPP_FluidArbiter"] = zpp_$nape_dynamics_ZPP_$FluidArbiter, zpp_$nape_dynamics_ZPP_$FluidArbiter.__name__ = ["zpp_nape", "dynamics", "ZPP_FluidArbiter"], zpp_$nape_dynamics_ZPP_$FluidArbiter.__super__ = zpp_$nape_dynamics_ZPP_$Arbiter, zpp_$nape_dynamics_ZPP_$FluidArbiter.prototype = $extend(zpp_$nape_dynamics_ZPP_$Arbiter.prototype, { outer_zn: null, next: null, centroidx: null, centroidy: null, overlap: null, r1x: null, r1y: null, r2x: null, r2y: null, nodrag: null, wMass: null, adamp: null, agamma: null, vMassa: null, vMassb: null, vMassc: null, dampx: null, dampy: null, lgamma: null, nx: null, ny: null, buoyx: null, buoyy: null, retire: function() { this.cleared || (this.b1.arbiters.inlined_try_remove(this), this.b2.arbiters.inlined_try_remove(this), null != this.pair && (this.pair.arb = null, this.pair = null)), this.b1 = this.b2 = null, this.active = !1, this.intchange = !1; this.next = zpp_$nape_dynamics_ZPP_$FluidArbiter.zpp_pool, zpp_$nape_dynamics_ZPP_$FluidArbiter.zpp_pool = this, this.pre_dt = -1 }, pre_dt: null, preStep: function(e, t) { -1 == this.pre_dt && (this.pre_dt = t); var n = t / this.pre_dt; this.pre_dt = t, this.r1x = this.centroidx - this.b1.posx, this.r1y = this.centroidy - this.b1.posy, this.r2x = this.centroidx - this.b2.posx, this.r2y = this.centroidy - this.b2.posy; var i = 0 , l = 0; this.ws1.fluidEnabled && null != this.ws1.fluidProperties.wrap_gravity ? (i = this.ws1.fluidProperties.gravityx, l = this.ws1.fluidProperties.gravityy) : (i = e.gravityx, l = e.gravityy); var a = 0 , s = 0; this.ws2.fluidEnabled && null != this.ws2.fluidProperties.wrap_gravity ? (a = this.ws2.fluidProperties.gravityx, s = this.ws2.fluidProperties.gravityy) : (a = e.gravityx, s = e.gravityy); var r = 0 , _ = 0; if (this.ws1.fluidEnabled && this.ws2.fluidEnabled) { var o = this.overlap * this.ws1.fluidProperties.density , p = this.overlap * this.ws2.fluidProperties.density; if (o > p) { var h = o + p; r -= i * h, _ -= l * h } else if (o < p) { var d = o + p; r += a * d, _ += s * d } else { var u = 0 , c = 0; u = i + a, c = l + s; if (u *= .5, c *= .5, this.ws1.worldCOMx * u + this.ws1.worldCOMy * c > this.ws2.worldCOMx * u + this.ws2.worldCOMy * c) { var m = o + p; r -= u * m, _ -= c * m } else { var U = o + p; r += u * U, _ += c * U } } } else if (this.ws1.fluidEnabled) { var Q = this.overlap * this.ws1.fluidProperties.density; r -= i * Q, _ -= l * Q } else if (this.ws2.fluidEnabled) { var N = this.overlap * this.ws2.fluidProperties.density; r += a * N, _ += s * N } if (r *= t, _ *= t, this.buoyx = r, this.buoyy = _, 2 == this.b1.type) { var F = this.b1.imass; this.b1.velx -= r * F, this.b1.vely -= _ * F, this.b1.angvel -= (_ * this.r1x - r * this.r1y) * this.b1.iinertia } if (2 == this.b2.type) { var Z = this.b2.imass; this.b2.velx += r * Z, this.b2.vely += _ * Z, this.b2.angvel += (_ * this.r2x - r * this.r2y) * this.b2.iinertia } if (this.ws1.fluidEnabled && 0 != this.ws1.fluidProperties.viscosity || this.ws2.fluidEnabled && 0 != this.ws2.fluidProperties.viscosity) { this.nodrag = !1; var f = 0; if (this.ws1.fluidEnabled && (this.ws2.validate_angDrag(), f += this.ws1.fluidProperties.viscosity * this.ws2.angDrag * this.overlap / this.ws2.area), this.ws2.fluidEnabled && (this.ws1.validate_angDrag(), f += this.ws2.fluidProperties.viscosity * this.ws1.angDrag * this.overlap / this.ws1.area), 0 != f) { var S = this.b1.sinertia + this.b2.sinertia; this.wMass = 0 != S ? 1 / S : 0, f *= 4e-4; var g = 2 * Math.PI * f; this.agamma = 1 / (t * g * (2 + g * t)); var B = 1 / (1 + this.agamma); t * g * g * this.agamma, this.agamma *= B, this.wMass *= B } else this.wMass = 0, this.agamma = 0; var b = this.b2.velx + this.b2.kinvelx - this.r2y * (this.b2.angvel + this.b2.kinangvel) - (this.b1.velx + this.b1.kinvelx - this.r1y * (this.b2.angvel + this.b2.kinangvel)) , v = this.b2.vely + this.b2.kinvely + this.r2x * (this.b2.angvel + this.b2.kinangvel) - (this.b1.vely + this.b1.kinvely + this.r1x * (this.b1.angvel + this.b1.kinangvel)); if (b * b + v * v < nape_Config.epsilon * nape_Config.epsilon) ; else { var W = b * b + v * v , T = 1 / Math.sqrt(W); b *= T, v *= T, this.nx = b, this.ny = v } var V = 0; if (this.ws1.fluidEnabled) { var R = -this.ws1.fluidProperties.viscosity * this.overlap / this.ws2.area; if (0 == this.ws2.type) V -= R * this.ws2.circle.radius * nape_Config.fluidLinearDrag / (2 * this.ws2.circle.radius * Math.PI); else { for (var y = 0, D = 0, x = this.ws2.polygon.edges.head; null != x; ) { var J = x.elt; y += J.length; var z = R * J.length * (J.gnormx * this.nx + J.gnormy * this.ny); z > 0 && (z = z *= -nape_Config.fluidVacuumDrag), D -= .5 * z * nape_Config.fluidLinearDrag, x = x.next } V += D / y } } if (this.ws2.fluidEnabled) { var k = -this.ws2.fluidProperties.viscosity * this.overlap / this.ws1.area; if (0 == this.ws1.type) V -= k * this.ws1.circle.radius * nape_Config.fluidLinearDrag / (2 * this.ws1.circle.radius * Math.PI); else { for (var E = 0, P = 0, M = this.ws1.polygon.edges.head; null != M; ) { var w = M.elt; E += w.length; var $ = k * w.length * (w.gnormx * this.nx + w.gnormy * this.ny); $ > 0 && ($ = $ *= -nape_Config.fluidVacuumDrag), P -= .5 * $ * nape_Config.fluidLinearDrag, M = M.next } V += P / E } } if (0 != V) { var C = this.b1.smass + this.b2.smass , G = 0 , O = 0 , I = 0; if (G = C, O = 0, I = C, 0 != this.b1.sinertia) { var H = this.r1x * this.b1.sinertia , Y = this.r1y * this.b1.sinertia; G += Y * this.r1y, O += -Y * this.r1x, I += H * this.r1x } if (0 != this.b2.sinertia) { var A = this.r2x * this.b2.sinertia , L = this.r2y * this.b2.sinertia; G += L * this.r2y, O += -L * this.r2x, I += A * this.r2x } var X, j = G * I - O * O; if (j != j) G = O = I = 0; else if (0 == j) { 0 != G ? G = 1 / G : (G = 0, 1), 0 != I ? I = 1 / I : (I = 0, 2), O = 0 } else { var K = I * (j = 1 / j); I = G * j, G = K, O *= -j } this.vMassa = G, this.vMassb = O, this.vMassc = I; var q = 2 * Math.PI * V; this.lgamma = 1 / (t * q * (2 + q * t)); var ee = 1 / (1 + this.lgamma); t * q * q * this.lgamma, this.lgamma *= ee, X = ee, this.vMassa *= X, this.vMassb *= X, this.vMassc *= X } else this.vMassa = 0, this.vMassb = 0, this.vMassc = 0, this.lgamma = 0 } else this.nodrag = !0, this.dampx = 0, this.dampy = 0, this.adamp = 0; var te = n; this.dampx *= te, this.dampy *= te, this.adamp *= n }, warmStart: function() { var e = this.b1.imass; this.b1.velx -= this.dampx * e, this.b1.vely -= this.dampy * e; var t = this.b2.imass; this.b2.velx += this.dampx * t, this.b2.vely += this.dampy * t, this.b1.angvel -= this.b1.iinertia * (this.dampy * this.r1x - this.dampx * this.r1y), this.b2.angvel += this.b2.iinertia * (this.dampy * this.r2x - this.dampx * this.r2y), this.b1.angvel -= this.adamp * this.b1.iinertia, this.b2.angvel += this.adamp * this.b2.iinertia }, applyImpulseVel: function() { if (!this.nodrag) { var e = this.b1.angvel + this.b1.kinangvel , t = this.b2.angvel + this.b2.kinangvel , n = this.b1.velx + this.b1.kinvelx - this.r1y * e - (this.b2.velx + this.b2.kinvelx - this.r2y * t) , i = this.b1.vely + this.b1.kinvely + this.r1x * e - (this.b2.vely + this.b2.kinvely + this.r2x * t) , l = this.vMassa * n + this.vMassb * i; i = this.vMassb * n + this.vMassc * i, n = l; var a = this.lgamma; n -= this.dampx * a, i -= this.dampy * a; this.dampx += 1 * n, this.dampy += 1 * i; var s = this.b1.imass; this.b1.velx -= n * s, this.b1.vely -= i * s; var r = this.b2.imass; this.b2.velx += n * r, this.b2.vely += i * r, this.b1.angvel -= this.b1.iinertia * (i * this.r1x - n * this.r1y), this.b2.angvel += this.b2.iinertia * (i * this.r2x - n * this.r2y); var _ = (e - t) * this.wMass - this.adamp * this.agamma; this.adamp += _, this.b1.angvel -= _ * this.b1.iinertia, this.b2.angvel += _ * this.b2.iinertia } }, __class__: zpp_$nape_dynamics_ZPP_$FluidArbiter }); var zpp_$nape_dynamics_ZPP_$ColArbiter = function() { this.pre_dt = 0, this.stat = !1, this.next = null, this.hpc2 = !1, this.hc2 = !1, this.oc2 = null, this.c2 = null, this.oc1 = null, this.c1 = null, this.__ref_vertex = 0, this.__ref_edge2 = null, this.__ref_edge1 = null, this.biasCoef = 0, this.rev = !1, this.radius = 0, this.lproj = 0, this.lnormy = 0, this.lnormx = 0, this.surfacey = 0, this.surfacex = 0, this.k2y = 0, this.k2x = 0, this.k1y = 0, this.k1x = 0, this.rt2b = 0, this.rn2b = 0, this.rt2a = 0, this.rn2a = 0, this.rt1b = 0, this.rn1b = 0, this.rt1a = 0, this.rn1a = 0, this.jrAcc = 0, this.rMass = 0, this.Kc = 0, this.Kb = 0, this.Ka = 0, this.kMassc = 0, this.kMassb = 0, this.kMassa = 0, this.ny = 0, this.nx = 0, this.innards = null, this.contacts = null, this.s2 = null, this.s1 = null, this.userdef_rfric = !1, this.userdef_restitution = !1, this.userdef_stat_fric = !1, this.userdef_dyn_fric = !1, this.rfric = 0, this.restitution = 0, this.stat_fric = 0, this.dyn_fric = 0, this.outer_zn = null, zpp_$nape_dynamics_ZPP_$Arbiter.call(this), this.pre_dt = -1, this.contacts = new zpp_$nape_dynamics_ZPP_$Contact, this.innards = new zpp_$nape_dynamics_ZPP_$IContact, this.type = zpp_$nape_dynamics_ZPP_$Arbiter.COL, this.colarb = this }; $hxClasses["zpp_nape.dynamics.ZPP_ColArbiter"] = zpp_$nape_dynamics_ZPP_$ColArbiter, zpp_$nape_dynamics_ZPP_$ColArbiter.__name__ = ["zpp_nape", "dynamics", "ZPP_ColArbiter"], zpp_$nape_dynamics_ZPP_$ColArbiter.__super__ = zpp_$nape_dynamics_ZPP_$Arbiter, zpp_$nape_dynamics_ZPP_$ColArbiter.prototype = $extend(zpp_$nape_dynamics_ZPP_$Arbiter.prototype, { outer_zn: null, dyn_fric: null, stat_fric: null, restitution: null, rfric: null, userdef_dyn_fric: null, userdef_stat_fric: null, userdef_restitution: null, userdef_rfric: null, s1: null, s2: null, contacts: null, innards: null, nx: null, ny: null, kMassa: null, kMassb: null, kMassc: null, Ka: null, Kb: null, Kc: null, rMass: null, jrAcc: null, rn1a: null, rt1a: null, rn1b: null, rt1b: null, rn2a: null, rt2a: null, rn2b: null, rt2b: null, k1x: null, k1y: null, k2x: null, k2y: null, surfacex: null, surfacey: null, ptype: null, lnormx: null, lnormy: null, lproj: null, radius: null, rev: null, biasCoef: null, __ref_edge1: null, __ref_edge2: null, __ref_vertex: null, c1: null, oc1: null, c2: null, oc2: null, hc2: null, hpc2: null, next: null, stat: null, injectContact: function(e, t, n, i, l, a, s) { null == s && (s = !1); for (var r = null, _ = this.contacts.next; null != _; ) { var o = _; if (a == o.hash) { r = o; break } _ = _.next } if (null == r) { null == zpp_$nape_dynamics_ZPP_$Contact.zpp_pool ? r = new zpp_$nape_dynamics_ZPP_$Contact : (r = zpp_$nape_dynamics_ZPP_$Contact.zpp_pool, zpp_$nape_dynamics_ZPP_$Contact.zpp_pool = r.next, r.next = null); var p = r.inner; p.jnAcc = p.jtAcc = 0, r.hash = a, r.fresh = !0, r.arbiter = this, this.jrAcc = 0, this.contacts.inlined_add(r), this.innards.add(p) } else r.fresh = !1; return r.px = e, r.py = t, this.nx = n, this.ny = i, r.dist = l, r.stamp = this.stamp, r.posOnly = s, r }, retire: function() { for (this.cleared || (this.b1.arbiters.inlined_try_remove(this), this.b2.arbiters.inlined_try_remove(this), null != this.pair && (this.pair.arb = null, this.pair = null)), this.b1 = this.b2 = null, this.active = !1, this.intchange = !1; null != this.contacts.next; ) { var e = this.contacts.inlined_pop_unsafe(); e.arbiter = null, e.next = zpp_$nape_dynamics_ZPP_$Contact.zpp_pool, zpp_$nape_dynamics_ZPP_$Contact.zpp_pool = e, this.innards.inlined_pop() } var t = this; t.userdef_dyn_fric = !1, t.userdef_stat_fric = !1, t.userdef_restitution = !1, t.userdef_rfric = !1, t.__ref_edge1 = t.__ref_edge2 = null, t.next = zpp_$nape_dynamics_ZPP_$ColArbiter.zpp_pool, zpp_$nape_dynamics_ZPP_$ColArbiter.zpp_pool = t, this.pre_dt = -1 }, cleanupContacts: function() { var e = !0 , t = null , n = null , i = this.innards.next; this.hc2 = !1; for (var l = this.contacts.next; null != l; ) { var a = l; if (a.stamp + nape_Config.arbiterExpirationDelay < this.stamp) { l = this.contacts.inlined_erase(t), i = this.innards.inlined_erase(n); var s = a; s.arbiter = null, s.next = zpp_$nape_dynamics_ZPP_$Contact.zpp_pool, zpp_$nape_dynamics_ZPP_$Contact.zpp_pool = s } else { var r = a.inner , _ = a.active; a.active = a.stamp == this.stamp, a.active && (e ? (e = !1, this.c1 = r, this.oc1 = a) : (this.hc2 = !0, this.c2 = r, this.oc2 = a)), _ != a.active && (this.contacts.modified = !0), t = l, n = i, i = i.next, l = l.next } } if (this.hc2) { if (this.hpc2 = !0, this.oc1.posOnly) { var o = this.c1; this.c1 = this.c2, this.c2 = o; var p = this.oc1; this.oc1 = this.oc2, this.oc2 = p, this.hc2 = !1 } else this.oc2.posOnly && (this.hc2 = !1); this.oc1.posOnly && (e = !0) } else this.hpc2 = !1; return e }, pre_dt: null, preStep: function(e) { this.invalidated && (this.invalidated = !1, this.userdef_restitution || (this.s1.material.elasticity <= -1 / 0 || this.s2.material.elasticity <= -1 / 0 ? this.restitution = 0 : this.s1.material.elasticity >= 1 / 0 || this.s2.material.elasticity >= 1 / 0 ? this.restitution = 1 : this.restitution = (this.s1.material.elasticity + this.s2.material.elasticity) / 2, this.restitution < 0 && (this.restitution = 0), this.restitution > 1 && (this.restitution = 1)), this.userdef_dyn_fric || (this.dyn_fric = Math.sqrt(this.s1.material.dynamicFriction * this.s2.material.dynamicFriction)), this.userdef_stat_fric || (this.stat_fric = Math.sqrt(this.s1.material.staticFriction * this.s2.material.staticFriction)), this.userdef_rfric || (this.rfric = Math.sqrt(this.s1.material.rollingFriction * this.s2.material.rollingFriction))), -1 == this.pre_dt && (this.pre_dt = e); var t = e / this.pre_dt; this.pre_dt = e; var n = this.b1.smass + this.b2.smass; this.hc2 = !1; var i, l = !0; i = !(2 == this.b1.type && 2 == this.b2.type) ? this.continuous ? nape_Config.contactContinuousStaticBiasCoef : nape_Config.contactStaticBiasCoef : this.continuous ? nape_Config.contactContinuousBiasCoef : nape_Config.contactBiasCoef, this.biasCoef = i, this.continuous = !1; for (var a = null, s = null, r = this.innards.next, _ = this.contacts.next; null != _; ) { var o = _; if (o.stamp + nape_Config.arbiterExpirationDelay < this.stamp) { _ = this.contacts.inlined_erase(a), r = this.innards.inlined_erase(s); var p = o; p.arbiter = null, p.next = zpp_$nape_dynamics_ZPP_$Contact.zpp_pool, zpp_$nape_dynamics_ZPP_$Contact.zpp_pool = p } else { var h = o.inner , d = o.active; if (o.active = o.stamp == this.stamp, o.active) { l ? (l = !1, this.c1 = h, this.oc1 = o) : (this.hc2 = !0, this.c2 = h, this.oc2 = o), h.r2x = o.px - this.b2.posx, h.r2y = o.py - this.b2.posy, h.r1x = o.px - this.b1.posx, h.r1y = o.py - this.b1.posy; var u = n + this.b2.sinertia * zpp_$nape_util_ZPP_$Math.sqr(h.r2x * this.nx + h.r2y * this.ny); (u += this.b1.sinertia * zpp_$nape_util_ZPP_$Math.sqr(h.r1x * this.nx + h.r1y * this.ny)) < nape_Config.epsilon * nape_Config.epsilon ? h.tMass = 0 : h.tMass = 1 / u; var c = n + this.b2.sinertia * zpp_$nape_util_ZPP_$Math.sqr(this.ny * h.r2x - this.nx * h.r2y); (c += this.b1.sinertia * zpp_$nape_util_ZPP_$Math.sqr(this.ny * h.r1x - this.nx * h.r1y)) < nape_Config.epsilon * nape_Config.epsilon ? h.nMass = 0 : h.nMass = 1 / c; var m = 0 , U = 0 , Q = this.b2.angvel + this.b2.kinangvel; m = this.b2.velx + this.b2.kinvelx - h.r2y * Q, U = this.b2.vely + this.b2.kinvely + h.r2x * Q, Q = this.b1.angvel + this.b1.kinangvel, m -= this.b1.velx + this.b1.kinvelx - h.r1y * Q, U -= this.b1.vely + this.b1.kinvely + h.r1x * Q; var N = this.nx * m + this.ny * U; o.elasticity = this.restitution, h.bounce = N * o.elasticity, h.bounce > -nape_Config.elasticThreshold && (h.bounce = 0), N = U * this.nx - m * this.ny; var F = nape_Config.staticFrictionThreshold; h.friction = N * N > F * F ? this.dyn_fric : this.stat_fric, h.jnAcc *= t, h.jtAcc *= t } d != o.active && (this.contacts.modified = !0), a = _, s = r, r = r.next, _ = _.next } } if (this.hc2) { if (this.hpc2 = !0, this.oc1.posOnly) { var Z = this.c1; this.c1 = this.c2, this.c2 = Z; var f = this.oc1; this.oc1 = this.oc2, this.oc2 = f, this.hc2 = !1 } else this.oc2.posOnly && (this.hc2 = !1); this.oc1.posOnly && (l = !0) } else this.hpc2 = !1; if (this.jrAcc *= t, l || (this.rn1a = this.ny * this.c1.r1x - this.nx * this.c1.r1y, this.rt1a = this.c1.r1x * this.nx + this.c1.r1y * this.ny, this.rn1b = this.ny * this.c1.r2x - this.nx * this.c1.r2y, this.rt1b = this.c1.r2x * this.nx + this.c1.r2y * this.ny, this.k1x = this.b2.kinvelx - this.c1.r2y * this.b2.kinangvel - (this.b1.kinvelx - this.c1.r1y * this.b1.kinangvel), this.k1y = this.b2.kinvely + this.c1.r2x * this.b2.kinangvel - (this.b1.kinvely + this.c1.r1x * this.b1.kinangvel)), this.hc2) if (this.rn2a = this.ny * this.c2.r1x - this.nx * this.c2.r1y, this.rt2a = this.c2.r1x * this.nx + this.c2.r1y * this.ny, this.rn2b = this.ny * this.c2.r2x - this.nx * this.c2.r2y, this.rt2b = this.c2.r2x * this.nx + this.c2.r2y * this.ny, this.k2x = this.b2.kinvelx - this.c2.r2y * this.b2.kinangvel - (this.b1.kinvelx - this.c2.r1y * this.b1.kinangvel), this.k2y = this.b2.kinvely + this.c2.r2x * this.b2.kinangvel - (this.b1.kinvely + this.c2.r1x * this.b1.kinangvel), this.kMassa = n + this.b1.sinertia * this.rn1a * this.rn1a + this.b2.sinertia * this.rn1b * this.rn1b, this.kMassb = n + this.b1.sinertia * this.rn1a * this.rn2a + this.b2.sinertia * this.rn1b * this.rn2b, this.kMassc = n + this.b1.sinertia * this.rn2a * this.rn2a + this.b2.sinertia * this.rn2b * this.rn2b, this.kMassa * this.kMassa + 2 * this.kMassb * this.kMassb + this.kMassc * this.kMassc < nape_Config.illConditionedThreshold * (this.kMassa * this.kMassc - this.kMassb * this.kMassb)) { this.Ka = this.kMassa, this.Kb = this.kMassb, this.Kc = this.kMassc; var S = this.kMassa * this.kMassc - this.kMassb * this.kMassb; if (S != S) this.kMassa = this.kMassb = this.kMassc = 0; else if (0 == S) { 0 != this.kMassa ? this.kMassa = 1 / this.kMassa : (this.kMassa = 0, 1), 0 != this.kMassc ? this.kMassc = 1 / this.kMassc : (this.kMassc = 0, 2), this.kMassb = 0 } else { S = 1 / S; var g = this.kMassc * S; this.kMassc = this.kMassa * S, this.kMassa = g, this.kMassb *= -S } } else { if (this.hc2 = !1, this.oc2.dist < this.oc1.dist) { var B = this.c1; this.c1 = this.c2, this.c2 = B } this.oc2.active = !1, this.contacts.modified = !0 } this.surfacex = this.b2.svelx, this.surfacey = this.b2.svely; return this.surfacex += 1 * this.b1.svelx, this.surfacey += 1 * this.b1.svely, this.surfacex = -this.surfacex, this.surfacey = -this.surfacey, this.rMass = this.b1.sinertia + this.b2.sinertia, 0 != this.rMass && (this.rMass = 1 / this.rMass), l }, warmStart: function() { var e = this.nx * this.c1.jnAcc - this.ny * this.c1.jtAcc , t = this.ny * this.c1.jnAcc + this.nx * this.c1.jtAcc , n = this.b1.imass; this.b1.velx -= e * n, this.b1.vely -= t * n, this.b1.angvel -= this.b1.iinertia * (t * this.c1.r1x - e * this.c1.r1y); var i = this.b2.imass; if (this.b2.velx += e * i, this.b2.vely += t * i, this.b2.angvel += this.b2.iinertia * (t * this.c1.r2x - e * this.c1.r2y), this.hc2) { var l = this.nx * this.c2.jnAcc - this.ny * this.c2.jtAcc , a = this.ny * this.c2.jnAcc + this.nx * this.c2.jtAcc , s = this.b1.imass; this.b1.velx -= l * s, this.b1.vely -= a * s, this.b1.angvel -= this.b1.iinertia * (a * this.c2.r1x - l * this.c2.r1y); var r = this.b2.imass; this.b2.velx += l * r, this.b2.vely += a * r, this.b2.angvel += this.b2.iinertia * (a * this.c2.r2x - l * this.c2.r2y) } this.b2.angvel += this.jrAcc * this.b2.iinertia, this.b1.angvel -= this.jrAcc * this.b1.iinertia }, applyImpulseVel: function() { var e, t, n, i, l, a, s = this.k1x + this.b2.velx - this.c1.r2y * this.b2.angvel - (this.b1.velx - this.c1.r1y * this.b1.angvel), r = this.k1y + this.b2.vely + this.c1.r2x * this.b2.angvel - (this.b1.vely + this.c1.r1x * this.b1.angvel); if (n = (r * this.nx - s * this.ny + this.surfacex) * this.c1.tMass, i = this.c1.friction * this.c1.jnAcc, (a = (l = this.c1.jtAcc) - n) > i ? a = i : a < -i && (a = -i), n = a - l, this.c1.jtAcc = a, e = -this.ny * n, t = this.nx * n, this.b2.velx += e * this.b2.imass, this.b2.vely += t * this.b2.imass, this.b1.velx -= e * this.b1.imass, this.b1.vely -= t * this.b1.imass, this.b2.angvel += this.rt1b * n * this.b2.iinertia, this.b1.angvel -= this.rt1a * n * this.b1.iinertia, this.hc2) { var _ = this.k2x + this.b2.velx - this.c2.r2y * this.b2.angvel - (this.b1.velx - this.c2.r1y * this.b1.angvel) , o = this.k2y + this.b2.vely + this.c2.r2x * this.b2.angvel - (this.b1.vely + this.c2.r1x * this.b1.angvel); n = (o * this.nx - _ * this.ny + this.surfacex) * this.c2.tMass, i = this.c2.friction * this.c2.jnAcc, (a = (l = this.c2.jtAcc) - n) > i ? a = i : a < -i && (a = -i), n = a - l, this.c2.jtAcc = a, e = -this.ny * n, t = this.nx * n, this.b2.velx += e * this.b2.imass, this.b2.vely += t * this.b2.imass, this.b1.velx -= e * this.b1.imass, this.b1.vely -= t * this.b1.imass, this.b2.angvel += this.rt2b * n * this.b2.iinertia, this.b1.angvel -= this.rt2a * n * this.b1.iinertia, s = this.k1x + this.b2.velx - this.c1.r2y * this.b2.angvel - (this.b1.velx - this.c1.r1y * this.b1.angvel), r = this.k1y + this.b2.vely + this.c1.r2x * this.b2.angvel - (this.b1.vely + this.c1.r1x * this.b1.angvel), _ = this.k2x + this.b2.velx - this.c2.r2y * this.b2.angvel - (this.b1.velx - this.c2.r1y * this.b1.angvel), o = this.k2y + this.b2.vely + this.c2.r2x * this.b2.angvel - (this.b1.vely + this.c2.r1x * this.b1.angvel); var p = this.c1.jnAcc , h = this.c2.jnAcc , d = s * this.nx + r * this.ny + this.surfacey + this.c1.bounce - (this.Ka * p + this.Kb * h) , u = _ * this.nx + o * this.ny + this.surfacey + this.c2.bounce - (this.Kb * p + this.Kc * h) , c = -(this.kMassa * d + this.kMassb * u) , m = -(this.kMassb * d + this.kMassc * u); c >= 0 && m >= 0 ? (d = c - p, u = m - h, this.c1.jnAcc = c, this.c2.jnAcc = m) : (c = -this.c1.nMass * d) >= 0 && this.Kb * c + u >= 0 ? (d = c - p, u = -h, this.c1.jnAcc = c, this.c2.jnAcc = 0) : (m = -this.c2.nMass * u) >= 0 && this.Kb * m + d >= 0 ? (d = -p, u = m - h, this.c1.jnAcc = 0, this.c2.jnAcc = m) : d >= 0 && u >= 0 ? (d = -p, u = -h, this.c1.jnAcc = this.c2.jnAcc = 0) : (d = 0, u = 0), n = d + u, e = this.nx * n, t = this.ny * n, this.b2.velx += e * this.b2.imass, this.b2.vely += t * this.b2.imass, this.b1.velx -= e * this.b1.imass, this.b1.vely -= t * this.b1.imass, this.b2.angvel += (this.rn1b * d + this.rn2b * u) * this.b2.iinertia, this.b1.angvel -= (this.rn1a * d + this.rn2a * u) * this.b1.iinertia } else { if (0 != this.radius) n = (this.b2.angvel - this.b1.angvel) * this.rMass, i = this.rfric * this.c1.jnAcc, l = this.jrAcc, this.jrAcc -= n, this.jrAcc > i ? this.jrAcc = i : this.jrAcc < -i && (this.jrAcc = -i), n = this.jrAcc - l, this.b2.angvel += n * this.b2.iinertia, this.b1.angvel -= n * this.b1.iinertia; s = this.k1x + this.b2.velx - this.c1.r2y * this.b2.angvel - (this.b1.velx - this.c1.r1y * this.b1.angvel), r = this.k1y + this.b2.vely + this.c1.r2x * this.b2.angvel - (this.b1.vely + this.c1.r1x * this.b1.angvel), n = (this.c1.bounce + (this.nx * s + this.ny * r) + this.surfacey) * this.c1.nMass, (a = (l = this.c1.jnAcc) - n) < 0 && (a = 0), n = a - l, this.c1.jnAcc = a, e = this.nx * n, t = this.ny * n, this.b2.velx += e * this.b2.imass, this.b2.vely += t * this.b2.imass, this.b1.velx -= e * this.b1.imass, this.b1.vely -= t * this.b1.imass, this.b2.angvel += this.rn1b * n * this.b2.iinertia, this.b1.angvel -= this.rn1a * n * this.b1.iinertia } }, applyImpulsePos: function() { if (2 == this.ptype) { var e = this.c1 , t = 0 , n = 0; t = this.b2.axisy * e.lr2x - this.b2.axisx * e.lr2y, n = e.lr2x * this.b2.axisx + e.lr2y * this.b2.axisy; t += 1 * this.b2.posx, n += 1 * this.b2.posy; var i = 0 , l = 0; i = this.b1.axisy * e.lr1x - this.b1.axisx * e.lr1y, l = e.lr1x * this.b1.axisx + e.lr1y * this.b1.axisy; var a = 0 , s = 0; a = t - (i += 1 * this.b1.posx), s = n - (l += 1 * this.b1.posy); var r = Math.sqrt(a * a + s * s) , _ = this.radius - nape_Config.collisionSlop , o = r - _; if (a * this.nx + s * this.ny < 0 && (a = -a, s = -s, o -= this.radius), o < 0) if (r < nape_Config.epsilon) 0 != this.b1.smass ? this.b1.posx += 10 * nape_Config.epsilon : this.b2.posx += 10 * nape_Config.epsilon; else { var p = 1 / r; a *= p; var h = .5 * (i + t) , d = .5 * (l + n) , u = r - _ , c = (s *= p) * (i = h - this.b1.posx) - a * (l = d - this.b1.posy) , m = s * (t = h - this.b2.posx) - a * (n = d - this.b2.posy) , U = this.b2.smass + m * m * this.b2.sinertia + this.b1.smass + c * c * this.b1.sinertia; if (0 != U) { var Q, N, F = -this.biasCoef * u / U; Q = a * F, N = s * F; var Z = this.b1.imass; this.b1.posx -= Q * Z, this.b1.posy -= N * Z, this.b1.delta_rot(-c * this.b1.iinertia * F); var f = this.b2.imass; this.b2.posx += Q * f, this.b2.posy += N * f, this.b2.delta_rot(m * this.b2.iinertia * F) } } } else { var S, g = 0, B = 0, b = 0, v = 0, W = 0, T = 0; if (0 == this.ptype) { g = this.b1.axisy * this.lnormx - this.b1.axisx * this.lnormy, B = this.lnormx * this.b1.axisx + this.lnormy * this.b1.axisy, S = this.lproj + (g * this.b1.posx + B * this.b1.posy), b = this.b2.axisy * this.c1.lr1x - this.b2.axisx * this.c1.lr1y, v = this.c1.lr1x * this.b2.axisx + this.c1.lr1y * this.b2.axisy; if (b += 1 * this.b2.posx, v += 1 * this.b2.posy, this.hpc2) { W = this.b2.axisy * this.c2.lr1x - this.b2.axisx * this.c2.lr1y, T = this.c2.lr1x * this.b2.axisx + this.c2.lr1y * this.b2.axisy; W += 1 * this.b2.posx, T += 1 * this.b2.posy } } else { g = this.b2.axisy * this.lnormx - this.b2.axisx * this.lnormy, B = this.lnormx * this.b2.axisx + this.lnormy * this.b2.axisy, S = this.lproj + (g * this.b2.posx + B * this.b2.posy), b = this.b1.axisy * this.c1.lr1x - this.b1.axisx * this.c1.lr1y, v = this.c1.lr1x * this.b1.axisx + this.c1.lr1y * this.b1.axisy; if (b += 1 * this.b1.posx, v += 1 * this.b1.posy, this.hpc2) { W = this.b1.axisy * this.c2.lr1x - this.b1.axisx * this.c2.lr1y, T = this.c2.lr1x * this.b1.axisx + this.c2.lr1y * this.b1.axisy; W += 1 * this.b1.posx, T += 1 * this.b1.posy } } var V = b * g + v * B - S - this.radius; V += nape_Config.collisionSlop; var R = 0; if (this.hpc2 && (R = W * g + T * B - S - this.radius, R += nape_Config.collisionSlop), V < 0 || R < 0) { this.rev && (g = -g, B = -B); var y, D; y = b - this.b1.posx, D = v - this.b1.posy; var x, J; x = b - this.b2.posx, J = v - this.b2.posy; if (this.hpc2) { var z = B * y - g * D , k = B * x - g * J , E = B * (W - this.b1.posx) - g * (T - this.b1.posy) , P = B * (W - this.b2.posx) - g * (T - this.b2.posy) , M = this.b1.smass + this.b2.smass; this.kMassa = M + this.b1.sinertia * z * z + this.b2.sinertia * k * k, this.kMassb = M + this.b1.sinertia * z * E + this.b2.sinertia * k * P, this.kMassc = M + this.b1.sinertia * E * E + this.b2.sinertia * P * P; var w, $, C; w = this.kMassa, $ = this.kMassb, C = this.kMassc; var G = V * this.biasCoef , O = R * this.biasCoef; do { var I = 0 , H = 0; I = -(I = G), H = -(H = O); var Y = this.kMassa * this.kMassc - this.kMassb * this.kMassb; if (Y != Y) I = H = 0; else if (0 == Y) 0 != this.kMassa ? I /= this.kMassa : I = 0, 0 != this.kMassc ? H /= this.kMassc : H = 0; else { var A = (Y = 1 / Y) * (this.kMassc * I - this.kMassb * H); H = Y * (this.kMassa * H - this.kMassb * I), I = A } if (I >= 0 && H >= 0) { var L = (I + H) * this.b1.imass; this.b1.posx -= g * L, this.b1.posy -= B * L, this.b1.delta_rot(-this.b1.iinertia * (z * I + E * H)); var X = (I + H) * this.b2.imass; this.b2.posx += g * X, this.b2.posy += B * X, this.b2.delta_rot(this.b2.iinertia * (k * I + P * H)); break } if (H = 0, (I = -G / w) >= 0 && $ * I + O >= 0) { var j = (I + H) * this.b1.imass; this.b1.posx -= g * j, this.b1.posy -= B * j, this.b1.delta_rot(-this.b1.iinertia * (z * I + E * H)); var K = (I + H) * this.b2.imass; this.b2.posx += g * K, this.b2.posy += B * K, this.b2.delta_rot(this.b2.iinertia * (k * I + P * H)); break } if (I = 0, (H = -O / C) >= 0 && $ * H + G >= 0) { var q = (I + H) * this.b1.imass; this.b1.posx -= g * q, this.b1.posy -= B * q, this.b1.delta_rot(-this.b1.iinertia * (z * I + E * H)); var ee = (I + H) * this.b2.imass; this.b2.posx += g * ee, this.b2.posy += B * ee, this.b2.delta_rot(this.b2.iinertia * (k * I + P * H)); break } } while (0) } else { var te = B * y - g * D , ne = B * x - g * J , ie = this.b2.smass + ne * ne * this.b2.sinertia + this.b1.smass + te * te * this.b1.sinertia; if (0 != ie) { var le, ae, se = -this.biasCoef * V / ie; le = g * se, ae = B * se; var re = this.b1.imass; this.b1.posx -= le * re, this.b1.posy -= ae * re, this.b1.delta_rot(-te * this.b1.iinertia * se); var _e = this.b2.imass; this.b2.posx += le * _e, this.b2.posy += ae * _e, this.b2.delta_rot(ne * this.b2.iinertia * se) } } } } }, __class__: zpp_$nape_dynamics_ZPP_$ColArbiter }); var zpp_$nape_dynamics_ZPP_$Contact = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this._inuse = !1, this.next = null, this.elasticity = 0, this.dist = 0, this.fresh = !1, this.hash = 0, this.stamp = 0, this.posOnly = !1, this.active = !1, this.inner = null, this.arbiter = null, this.py = 0, this.px = 0, this.outer = null, this.inner = new zpp_$nape_dynamics_ZPP_$IContact }; $hxClasses["zpp_nape.dynamics.ZPP_Contact"] = zpp_$nape_dynamics_ZPP_$Contact, zpp_$nape_dynamics_ZPP_$Contact.__name__ = ["zpp_nape", "dynamics", "ZPP_Contact"], zpp_$nape_dynamics_ZPP_$Contact.prototype = { outer: null, wrapper: function() { return null == this.outer && (zpp_$nape_dynamics_ZPP_$Contact.internal = !0, this.outer = new nape_dynamics_Contact, zpp_$nape_dynamics_ZPP_$Contact.internal = !1, this.outer.zpp_inner = this), this.outer }, px: null, py: null, arbiter: null, inner: null, active: null, posOnly: null, stamp: null, hash: null, fresh: null, dist: null, elasticity: null, next: null, _inuse: null, modified: null, pushmod: null, length: null, inlined_add: function(e) { var t; return e._inuse = !0, (t = e).next = this.next, this.next = t, this.modified = !0, this.length++, e }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.next; this.next = e.next, e._inuse = !1, null == this.next && (this.pushmod = !0), this.modified = !0, this.length-- }, inlined_pop_unsafe: function() { var e = this.next; return this.pop(), e }, inlined_erase: function(e) { var t, n; return null == e ? (n = (t = this.next).next, this.next = n, null == this.next && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)), t._inuse = !1, this.modified = !0, this.length--, this.pushmod = !0, n }, __class__: zpp_$nape_dynamics_ZPP_$Contact }; var zpp_$nape_dynamics_ZPP_$IContact = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this._inuse = !1, this.next = null, this.lr2y = 0, this.lr2x = 0, this.lr1y = 0, this.lr1x = 0, this.jtAcc = 0, this.jnAcc = 0, this.friction = 0, this.bounce = 0, this.tMass = 0, this.nMass = 0, this.r2y = 0, this.r2x = 0, this.r1y = 0, this.r1x = 0 }; $hxClasses["zpp_nape.dynamics.ZPP_IContact"] = zpp_$nape_dynamics_ZPP_$IContact, zpp_$nape_dynamics_ZPP_$IContact.__name__ = ["zpp_nape", "dynamics", "ZPP_IContact"], zpp_$nape_dynamics_ZPP_$IContact.prototype = { r1x: null, r1y: null, r2x: null, r2y: null, nMass: null, tMass: null, bounce: null, friction: null, jnAcc: null, jtAcc: null, lr1x: null, lr1y: null, lr2x: null, lr2y: null, next: null, _inuse: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t; return e._inuse = !0, (t = e).next = this.next, this.next = t, this.modified = !0, this.length++, e }, inlined_pop: function() { var e = this.next; this.next = e.next, e._inuse = !1, null == this.next && (this.pushmod = !0), this.modified = !0, this.length-- }, inlined_erase: function(e) { var t, n; return null == e ? (n = (t = this.next).next, this.next = n, null == this.next && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)), t._inuse = !1, this.modified = !0, this.length--, this.pushmod = !0, n }, __class__: zpp_$nape_dynamics_ZPP_$IContact }; var zpp_$nape_dynamics_ZPP_$InteractionFilter = function() { this.fluidMask = 0, this.fluidGroup = 0, this.sensorMask = 0, this.sensorGroup = 0, this.collisionMask = 0, this.collisionGroup = 0, this.shapes = null, this.outer = null, this.next = null, this.shapes = new zpp_$nape_util_ZNPList_$ZPP_$Shape, this.collisionGroup = this.sensorGroup = this.fluidGroup = 1, this.collisionMask = this.sensorMask = this.fluidMask = -1 }; $hxClasses["zpp_nape.dynamics.ZPP_InteractionFilter"] = zpp_$nape_dynamics_ZPP_$InteractionFilter, zpp_$nape_dynamics_ZPP_$InteractionFilter.__name__ = ["zpp_nape", "dynamics", "ZPP_InteractionFilter"], zpp_$nape_dynamics_ZPP_$InteractionFilter.prototype = { next: null, outer: null, wrapper: function() { if (null == this.outer) { this.outer = new nape_dynamics_InteractionFilter; var e = this.outer.zpp_inner; e.outer = null, e.next = zpp_$nape_dynamics_ZPP_$InteractionFilter.zpp_pool, zpp_$nape_dynamics_ZPP_$InteractionFilter.zpp_pool = e, this.outer.zpp_inner = this } return this.outer }, shapes: null, collisionGroup: null, collisionMask: null, shouldCollide: function(e) { return 0 != (this.collisionMask & e.collisionGroup) && 0 != (e.collisionMask & this.collisionGroup) }, sensorGroup: null, sensorMask: null, shouldSense: function(e) { return 0 != (this.sensorMask & e.sensorGroup) && 0 != (e.sensorMask & this.sensorGroup) }, fluidGroup: null, fluidMask: null, shouldFlow: function(e) { return 0 != (this.fluidMask & e.fluidGroup) && 0 != (e.fluidMask & this.fluidGroup) }, invalidate: function() { for (var e = this.shapes.head; null != e; ) { e.elt.invalidate_filter(), e = e.next } }, __class__: zpp_$nape_dynamics_ZPP_$InteractionFilter }; var zpp_$nape_geom_ZPP_$AABB = function() { this.wrap_max = null, this.maxy = 0, this.maxx = 0, this.wrap_min = null, this.miny = 0, this.minx = 0, this.next = null, this.outer = null, this._immutable = !1, this._validate = null, this._invalidate = null }; $hxClasses["zpp_nape.geom.ZPP_AABB"] = zpp_$nape_geom_ZPP_$AABB, zpp_$nape_geom_ZPP_$AABB.__name__ = ["zpp_nape", "geom", "ZPP_AABB"], zpp_$nape_geom_ZPP_$AABB.get = function(e, t, n, i) { var l; return null == zpp_$nape_geom_ZPP_$AABB.zpp_pool ? l = new zpp_$nape_geom_ZPP_$AABB : (l = zpp_$nape_geom_ZPP_$AABB.zpp_pool, zpp_$nape_geom_ZPP_$AABB.zpp_pool = l.next, l.next = null), l.minx = e, l.miny = t, l.maxx = n, l.maxy = i, l } , zpp_$nape_geom_ZPP_$AABB.prototype = { _invalidate: null, _validate: null, _immutable: null, validate: function() { null != this._validate && this._validate() }, invalidate: function() { null != this._invalidate && this._invalidate(this) }, outer: null, wrapper: function() { if (null == this.outer) { this.outer = new nape_geom_AABB; var e = this.outer.zpp_inner; null != e.outer && (e.outer.zpp_inner = null, e.outer = null), e.wrap_min = e.wrap_max = null, e._invalidate = null, e._validate = null, e.next = zpp_$nape_geom_ZPP_$AABB.zpp_pool, zpp_$nape_geom_ZPP_$AABB.zpp_pool = e, this.outer.zpp_inner = this } return this.outer }, next: null, width: function() { return this.maxx - this.minx }, height: function() { return this.maxy - this.miny }, perimeter: function() { return 2 * (this.maxx - this.minx + (this.maxy - this.miny)) }, minx: null, miny: null, wrap_min: null, maxx: null, maxy: null, wrap_max: null, intersectY: function(e) { return !(e.miny > this.maxy || this.miny > e.maxy) }, intersect: function(e) { return e.miny <= this.maxy && this.miny <= e.maxy && e.minx <= this.maxx && this.minx <= e.maxx }, combine: function(e) { e.minx < this.minx && (this.minx = e.minx), e.maxx > this.maxx && (this.maxx = e.maxx), e.miny < this.miny && (this.miny = e.miny), e.maxy > this.maxy && (this.maxy = e.maxy) }, contains: function(e) { return e.minx >= this.minx && e.miny >= this.miny && e.maxx <= this.maxx && e.maxy <= this.maxy }, setCombine: function(e, t) { e.minx < t.minx ? this.minx = e.minx : this.minx = t.minx, e.miny < t.miny ? this.miny = e.miny : this.miny = t.miny, e.maxx > t.maxx ? this.maxx = e.maxx : this.maxx = t.maxx, e.maxy > t.maxy ? this.maxy = e.maxy : this.maxy = t.maxy }, setExpand: function(e, t) { this.minx = e.minx - t, this.miny = e.miny - t, this.maxx = e.maxx + t, this.maxy = e.maxy + t }, toString: function() { return "{ x: " + this.minx + " y: " + this.miny + " w: " + (this.maxx - this.minx) + " h: " + (this.maxy - this.miny) + " }" }, __class__: zpp_$nape_geom_ZPP_$AABB }; var zpp_$nape_util_ZNPList_$ZPP_$Vec2 = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_Vec2"] = zpp_$nape_util_ZNPList_$ZPP_$Vec2, zpp_$nape_util_ZNPList_$ZPP_$Vec2.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_Vec2"], zpp_$nape_util_ZNPList_$ZPP_$Vec2.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$Vec2.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$Vec2 : (n = zpp_$nape_util_ZNPNode_$ZPP_$Vec2.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Vec2.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, insert: function(e, t) { return this.inlined_insert(e, t) }, inlined_insert: function(e, t) { var n, i; return null == zpp_$nape_util_ZNPNode_$ZPP_$Vec2.zpp_pool ? i = new zpp_$nape_util_ZNPNode_$ZPP_$Vec2 : (i = zpp_$nape_util_ZNPNode_$ZPP_$Vec2.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Vec2.zpp_pool = i.next, i.next = null), i.elt = t, n = i, null == e ? (n.next = this.head, this.head = n) : (n.next = e.next, e.next = n), this.pushmod = this.modified = !0, this.length++, n }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$Vec2.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Vec2.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, pop_unsafe: function() { return this.inlined_pop_unsafe() }, inlined_pop_unsafe: function() { var e = this.head.elt; return this.pop(), e }, erase: function(e) { return this.inlined_erase(e) }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$Vec2.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Vec2.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, clear: function() { for (; null != this.head; ) this.inlined_pop(); this.pushmod = !0 }, iterator_at: function(e) { for (var t = this.head; e-- > 0 && null != t; ) t = t.next; return t }, __class__: zpp_$nape_util_ZNPList_$ZPP_$Vec2 }; var zpp_$nape_geom_ZPP_$Collide = function() {}; $hxClasses["zpp_nape.geom.ZPP_Collide"] = zpp_$nape_geom_ZPP_$Collide, zpp_$nape_geom_ZPP_$Collide.__name__ = ["zpp_nape", "geom", "ZPP_Collide"], zpp_$nape_geom_ZPP_$Collide.containTest = function(e, t) { if (e.aabb.contains(t.aabb)) { if (0 == e.type) { if (0 == t.type) { var n, i, l = e.circle.radius + -t.circle.radius; return (n = t.circle.worldCOMx - e.circle.worldCOMx) * n + (i = t.circle.worldCOMy - e.circle.worldCOMy) * i <= l * l } var a; a = !0; for (var s = t.polygon.gverts.next; null != s; ) { var r = s; if (c = void 0, m = void 0, void 0, U = e.circle.radius, !((c = r.x - e.circle.worldCOMx) * c + (m = r.y - e.circle.worldCOMy) * m <= U * U)) { a = !1; break } s = s.next } return a } if (0 == t.type) { var _; _ = !0; for (var o = e.polygon.edges.head; null != o; ) { var p = o.elt; if (!(p.gnormx * t.circle.worldCOMx + p.gnormy * t.circle.worldCOMy + t.circle.radius <= p.gprojection)) { _ = !1; break } o = o.next } return _ } var h; h = !0; for (var d = e.polygon.edges.head; null != d; ) { var u = d.elt; if (!function(e) { for (var n = -1e100, i = t.polygon.gverts.next; null != i; ) { var l = i , a = u.gnormx * l.x + u.gnormy * l.y; a > n && (n = a), i = i.next } return n <= u.gprojection }()) { h = !1; break } d = d.next } return h } return !1; var c, m, U } , zpp_$nape_geom_ZPP_$Collide.contactCollide = function(e, t, n, i) { if (1 == t.type) { if (1 == e.type) { for (var l = !0, a = -1e100, s = -1, r = null, _ = null, o = e.polygon.edges.head; null != o; ) { for (var p = o.elt, h = 1e100, d = t.polygon.gverts.next; null != d; ) { var u = d , c = p.gnormx * u.x + p.gnormy * u.y; if (c < h && (h = c), h - p.gprojection <= a) break; d = d.next } if ((h -= p.gprojection) >= 0) { l = !1; break } h > a && (a = h, r = p, s = 1), o = o.next } if (l) { for (var m = t.polygon.edges.head; null != m; ) { for (var U = m.elt, Q = 1e100, N = e.polygon.gverts.next; null != N; ) { var F = N , Z = U.gnormx * F.x + U.gnormy * F.y; if (Z < Q && (Q = Z), Q - U.gprojection <= a) break; N = N.next } if ((Q -= U.gprojection) >= 0) { l = !1; break } Q > a && (a = Q, _ = U, s = 2), m = m.next } if (l) { var f, S, g; 1 == s ? (e.polygon, f = t.polygon, S = r, g = 1) : (t.polygon, f = e.polygon, S = _, g = -1); for (var B = null, b = 1e100, v = f.edges.head; null != v; ) { var W = v.elt , T = S.gnormx * W.gnormx + S.gnormy * W.gnormy; T < b && (b = T, B = W), v = v.next } var V = 0 , R = 0; V = B.gp0.x, R = B.gp0.y; var y, D, x = 0, J = 0; y = (x = B.gp1.x) - V, D = (J = B.gp1.y) - R; var z = S.gnormy * V - S.gnormx * R , k = S.gnormy * x - S.gnormx * J , E = 1 / (k - z) , P = (-S.tp1 - z) * E; if (P > nape_Config.epsilon) { V += y * P, R += D * P } var M = (-S.tp0 - k) * E; if (M < -nape_Config.epsilon) { x += y * M, J += D * M } var w = 0 , $ = 0 , C = g; w = S.gnormx * C, $ = S.gnormy * C, n.lnormx = S.lnormx, n.lnormy = S.lnormy, n.lproj = S.lprojection, n.radius = 0, n.rev = i != (-1 == g), n.rev ? n.ptype = 1 : n.ptype = 0; var G = V * S.gnormx + R * S.gnormy - S.gprojection , O = x * S.gnormx + J * S.gnormy - S.gprojection; if (G > 0 && O > 0) return !1; i && (w = -w, $ = -$); var I = n.injectContact(V - S.gnormx * G * .5, R - S.gnormy * G * .5, w, $, G, n.rev ? 1 : 0, G > 0); V -= 1 * f.body.posx, R -= 1 * f.body.posy, I.inner.lr1x = V * f.body.axisy + R * f.body.axisx, I.inner.lr1y = R * f.body.axisy - V * f.body.axisx, I = n.injectContact(x - S.gnormx * O * .5, J - S.gnormy * O * .5, w, $, O, n.rev ? 0 : 1, O > 0); return x -= 1 * f.body.posx, J -= 1 * f.body.posy, I.inner.lr1x = x * f.body.axisy + J * f.body.axisx, I.inner.lr1y = J * f.body.axisy - x * f.body.axisx, 1 == s ? (n.__ref_edge1 = S, n.__ref_edge2 = B) : (n.__ref_edge2 = S, n.__ref_edge1 = B), !0 } return !1 } return !1 } for (var H = -1e100, Y = !0, A = null, L = null, X = t.polygon.gverts.next, j = t.polygon.edges.head; null != j; ) { var K = j.elt , q = K.gnormx * e.circle.worldCOMx + K.gnormy * e.circle.worldCOMy - K.gprojection - e.circle.radius; if (q > 0) { Y = !1; break } q > H && (H = q, A = K, L = X), X = X.next, j = j.next } if (Y) { var ee, te = L; ee = null == L.next ? t.polygon.gverts.next : L.next; var ne = e.circle.worldCOMy * A.gnormx - e.circle.worldCOMx * A.gnormy; if (ne <= te.y * A.gnormx - te.x * A.gnormy) { var ie, le, ae, se = e.circle.radius, re = (le = te.x - e.circle.worldCOMx) * le + (ae = te.y - e.circle.worldCOMy) * ae; if (re > se * se) ie = null; else if (re < nape_Config.epsilon * nape_Config.epsilon) ie = n.injectContact(e.circle.worldCOMx, e.circle.worldCOMy, 1, 0, -se, 0, null); else { var _e, oe = 1 / Math.sqrt(re); _e = oe < nape_Config.epsilon ? 1e100 : 1 / oe; var pe = .5 + (e.circle.radius - .5 * se) * oe; ie = i ? n.injectContact(e.circle.worldCOMx + le * pe, e.circle.worldCOMy + ae * pe, -le * oe, -ae * oe, _e - se, 0, null) : n.injectContact(e.circle.worldCOMx + le * pe, e.circle.worldCOMy + ae * pe, le * oe, ae * oe, _e - se, 0, null) } if (null != ie) { var he = ie.inner; n.ptype = 2; var de, ue; de = te.x - t.polygon.body.posx, ue = te.y - t.polygon.body.posy, n.__ref_edge1 = A, n.__ref_vertex = -1, i ? (he.lr1x = de * t.polygon.body.axisy + ue * t.polygon.body.axisx, he.lr1y = ue * t.polygon.body.axisy - de * t.polygon.body.axisx, he.lr2x = e.circle.localCOMx, he.lr2y = e.circle.localCOMy) : (he.lr2x = de * t.polygon.body.axisy + ue * t.polygon.body.axisx, he.lr2y = ue * t.polygon.body.axisy - de * t.polygon.body.axisx, he.lr1x = e.circle.localCOMx, he.lr1y = e.circle.localCOMy), n.radius = e.circle.radius } return null != ie } if (ne >= ee.y * A.gnormx - ee.x * A.gnormy) { var ce, me, Ue, Qe = e.circle.radius, Ne = (me = ee.x - e.circle.worldCOMx) * me + (Ue = ee.y - e.circle.worldCOMy) * Ue; if (Ne > Qe * Qe) ce = null; else if (Ne < nape_Config.epsilon * nape_Config.epsilon) ce = n.injectContact(e.circle.worldCOMx, e.circle.worldCOMy, 1, 0, -Qe, 0, null); else { var Fe, Ze = 1 / Math.sqrt(Ne); Fe = Ze < nape_Config.epsilon ? 1e100 : 1 / Ze; var fe = .5 + (e.circle.radius - .5 * Qe) * Ze; ce = i ? n.injectContact(e.circle.worldCOMx + me * fe, e.circle.worldCOMy + Ue * fe, -me * Ze, -Ue * Ze, Fe - Qe, 0, null) : n.injectContact(e.circle.worldCOMx + me * fe, e.circle.worldCOMy + Ue * fe, me * Ze, Ue * Ze, Fe - Qe, 0, null) } if (null != ce) { var Se = ce.inner; n.ptype = 2; var ge, Be; ge = ee.x - t.polygon.body.posx, Be = ee.y - t.polygon.body.posy, n.__ref_edge1 = A, n.__ref_vertex = 1, i ? (Se.lr1x = ge * t.polygon.body.axisy + Be * t.polygon.body.axisx, Se.lr1y = Be * t.polygon.body.axisy - ge * t.polygon.body.axisx, Se.lr2x = e.circle.localCOMx, Se.lr2y = e.circle.localCOMy) : (Se.lr2x = ge * t.polygon.body.axisy + Be * t.polygon.body.axisx, Se.lr2y = Be * t.polygon.body.axisy - ge * t.polygon.body.axisx, Se.lr1x = e.circle.localCOMx, Se.lr1y = e.circle.localCOMy), n.radius = e.circle.radius } return null != ce } var be, ve, We = e.circle.radius + .5 * H; be = A.gnormx * We, ve = A.gnormy * We; var Te, Ve, Re; return Te = e.circle.worldCOMx - be, Ve = e.circle.worldCOMy - ve, Re = i ? n.injectContact(Te, Ve, A.gnormx, A.gnormy, H, 0, null) : n.injectContact(Te, Ve, -A.gnormx, -A.gnormy, H, 0, null), n.ptype = i ? 0 : 1, n.lnormx = A.lnormx, n.lnormy = A.lnormy, n.rev = !i, n.lproj = A.lprojection, n.radius = e.circle.radius, Re.inner.lr1x = e.circle.localCOMx, Re.inner.lr1y = e.circle.localCOMy, n.__ref_edge1 = A, n.__ref_vertex = 0, !0 } return !1 } var ye, De, xe, Je = e.circle.radius + t.circle.radius, ze = (De = t.circle.worldCOMx - e.circle.worldCOMx) * De + (xe = t.circle.worldCOMy - e.circle.worldCOMy) * xe; if (ze > Je * Je) ye = null; else if (ze < nape_Config.epsilon * nape_Config.epsilon) ye = n.injectContact(e.circle.worldCOMx, e.circle.worldCOMy, 1, 0, -Je, 0, null); else { var ke, Ee = 1 / Math.sqrt(ze); ke = Ee < nape_Config.epsilon ? 1e100 : 1 / Ee; var Pe = .5 + (e.circle.radius - .5 * Je) * Ee; ye = i ? n.injectContact(e.circle.worldCOMx + De * Pe, e.circle.worldCOMy + xe * Pe, -De * Ee, -xe * Ee, ke - Je, 0, null) : n.injectContact(e.circle.worldCOMx + De * Pe, e.circle.worldCOMy + xe * Pe, De * Ee, xe * Ee, ke - Je, 0, null) } if (null != ye) { var Me = ye.inner; return i ? (Me.lr1x = t.circle.localCOMx, Me.lr1y = t.circle.localCOMy, Me.lr2x = e.circle.localCOMx, Me.lr2y = e.circle.localCOMy) : (Me.lr1x = e.circle.localCOMx, Me.lr1y = e.circle.localCOMy, Me.lr2x = t.circle.localCOMx, Me.lr2y = t.circle.localCOMy), n.radius = e.circle.radius + t.circle.radius, n.ptype = 2, !0 } return !1 } , zpp_$nape_geom_ZPP_$Collide.testCollide_safe = function(e, t) { if (0 == t.type) { var n = e; e = t, t = n } return zpp_$nape_geom_ZPP_$Collide.testCollide(e, t) } , zpp_$nape_geom_ZPP_$Collide.testCollide = function(e, t) { if (1 == t.type) { if (1 == e.type) { for (var n = !0, i = e.polygon.edges.head; null != i; ) { for (var l = i.elt, a = 1e100, s = t.polygon.gverts.next; null != s; ) { var r = s , _ = l.gnormx * r.x + l.gnormy * r.y; _ < a && (a = _), s = s.next } if ((a -= l.gprojection) > 0) { n = !1; break } i = i.next } if (n) { for (var o = t.polygon.edges.head; null != o; ) { for (var p = o.elt, h = 1e100, d = e.polygon.gverts.next; null != d; ) { var u = d , c = p.gnormx * u.x + p.gnormy * u.y; c < h && (h = c), d = d.next } if ((h -= p.gprojection) > 0) { n = !1; break } o = o.next } return n } return !1 } for (var m = null, U = null, Q = !0, N = -1e100, F = t.polygon.gverts.next, Z = t.polygon.edges.head; null != Z; ) { var f = Z.elt , S = f.gnormx * e.circle.worldCOMx + f.gnormy * e.circle.worldCOMy - f.gprojection - e.circle.radius; if (S > 0) { Q = !1; break } S > N && (N = S, m = f, U = F), F = F.next, Z = Z.next } if (Q) { var g, B = U; g = null == U.next ? t.polygon.gverts.next : U.next; var b = e.circle.worldCOMy * m.gnormx - e.circle.worldCOMx * m.gnormy; if (b <= B.y * m.gnormx - B.x * m.gnormy) { var v, W, T = e.circle.radius; return (v = B.x - e.circle.worldCOMx) * v + (W = B.y - e.circle.worldCOMy) * W <= T * T } if (b >= g.y * m.gnormx - g.x * m.gnormy) { var V, R, y = e.circle.radius; return (V = g.x - e.circle.worldCOMx) * V + (R = g.y - e.circle.worldCOMy) * R <= y * y } return !0 } return !1 } var D, x, J = e.circle.radius + t.circle.radius; return (D = t.circle.worldCOMx - e.circle.worldCOMx) * D + (x = t.circle.worldCOMy - e.circle.worldCOMy) * x <= J * J } , zpp_$nape_geom_ZPP_$Collide.flowCollide = function(e, t, n) { if (1 == t.type) { if (1 == e.type) { for (var i = [], l = [], a = !0, s = !0, r = e.polygon.edges.head; null != r; ) { for (var _ = r.elt, o = 1e100, p = 0, h = t.polygon.gverts.next; null != h; ) { var d = h , u = _.gnormx * d.x + _.gnormy * d.y; u < o && (o = u), u >= _.gprojection + nape_Config.epsilon && (l[p] = !0, s = !1), p++, h = h.next } if ((o -= _.gprojection) > 0) { a = !1; break } r = r.next } if (s) return t.polygon.validate_worldCOM(), n.overlap = t.polygon.area, n.centroidx = t.polygon.worldCOMx, n.centroidy = t.polygon.worldCOMy, !0; if (a) { s = !0; for (var c = t.polygon.edges.head; null != c; ) { for (var m = c.elt, U = 1e100, Q = 0, N = e.polygon.gverts.next; null != N; ) { var F = N , Z = m.gnormx * F.x + m.gnormy * F.y; Z < U && (U = Z), Z >= m.gprojection + nape_Config.epsilon && (i[Q] = !0, s = !1), Q++, N = N.next } if ((U -= m.gprojection) > 0) { a = !1; break } c = c.next } if (s) return e.polygon.validate_worldCOM(), n.overlap = e.polygon.area, n.centroidx = e.polygon.worldCOMx, n.centroidy = e.polygon.worldCOMy, !0; if (a) { for (; null != zpp_$nape_geom_ZPP_$Collide.flowpoly.head; ) { var f = zpp_$nape_geom_ZPP_$Collide.flowpoly.pop_unsafe(); if (!f._inuse) { var S = f; null != S.outer && (S.outer.zpp_inner = null, S.outer = null), S._isimmutable = null, S._validate = null, S._invalidate = null, S.next = zpp_$nape_geom_ZPP_$Vec2.zpp_pool, zpp_$nape_geom_ZPP_$Vec2.zpp_pool = S } } for (var g = null, B = !1, b = e.polygon.gverts.next, v = 0, W = t.polygon.gverts.next, T = 0, V = 0, R = t.polygon.edgeCnt; V < R; ) { var y = V++; if (!l[y]) { T = y; break } W = W.next } if (null == W) { W = t.polygon.gverts.next, B = !0; for (var D = 0, x = e.polygon.edgeCnt; D < x; ) { var J = D++; if (!i[J]) { v = J; break } b = b.next } null == b ? b = e.polygon.gverts.next : (zpp_$nape_geom_ZPP_$Collide.flowpoly.add(b), g = zpp_$nape_geom_ZPP_$Collide.flowpoly.head.elt) } else zpp_$nape_geom_ZPP_$Collide.flowpoly.add(W), g = zpp_$nape_geom_ZPP_$Collide.flowpoly.head.elt; var z = 1; if (null == zpp_$nape_geom_ZPP_$Collide.flowpoly.head) { for (var k = !0, E = e.polygon.gverts.next, P = E, M = E.next; null != M; ) { for (var w = M, $ = 2, C = t.polygon.gverts.next, G = C, O = C.next; null != O; ) { var I = O , H = 0; (function(e) { var t, n; t = P.x - G.x, n = P.y - G.y; var i, l; i = w.x - P.x, l = w.y - P.y; var a, s; a = I.x - G.x, s = I.y - G.y; var r, _, o = l * a - i * s; return o * o > nape_Config.epsilon * nape_Config.epsilon && ((_ = (s * t - a * n) * (o = 1 / o)) > nape_Config.epsilon && _ < 1 - nape_Config.epsilon && (r = (l * t - i * n) * o) > nape_Config.epsilon && r < 1 - nape_Config.epsilon && (H = _, !0)) } )() && H < $ && ($ = H, W = C), C = O, G = I, O = O.next } var Y = O = t.polygon.gverts.next , A = 0; if (function(e) { var t, n; t = P.x - G.x, n = P.y - G.y; var i, l; i = w.x - P.x, l = w.y - P.y; var a, s; a = Y.x - G.x, s = Y.y - G.y; var r, _, o = l * a - i * s; return o * o > nape_Config.epsilon * nape_Config.epsilon && ((_ = (s * t - a * n) * (o = 1 / o)) > nape_Config.epsilon && _ < 1 - nape_Config.epsilon && (r = (l * t - i * n) * o) > nape_Config.epsilon && r < 1 - nape_Config.epsilon && (A = _, !0)) }() && A < $ && ($ = A, W = C), 2 != $) { var L, X, j = $; L = P.x + (w.x - P.x) * j, X = P.y + (w.y - P.y) * j, g = zpp_$nape_geom_ZPP_$Vec2.get(L, X, null), zpp_$nape_geom_ZPP_$Collide.flowpoly.add(g), B = !0, b = E, k = !1; break } E = M, P = w, M = M.next } if (k) do { for (var K = M = e.polygon.gverts.next, q = 2, ee = t.polygon.gverts.next, te = ee, ne = ee.next; null != ne; ) { var ie = ne , le = 0; (function(e) { var t, n; t = P.x - te.x, n = P.y - te.y; var i, l; i = K.x - P.x, l = K.y - P.y; var a, s; a = ie.x - te.x, s = ie.y - te.y; var r, _, o = l * a - i * s; return o * o > nape_Config.epsilon * nape_Config.epsilon && ((_ = (s * t - a * n) * (o = 1 / o)) > nape_Config.epsilon && _ < 1 - nape_Config.epsilon && (r = (l * t - i * n) * o) > nape_Config.epsilon && r < 1 - nape_Config.epsilon && (le = _, !0)) } )() && le < q && (q = le, W = ee), ee = ne, te = ie, ne = ne.next } var ae = ne = t.polygon.gverts.next , se = 0; if (function(e) { var t, n; t = P.x - te.x, n = P.y - te.y; var i, l; i = K.x - P.x, l = K.y - P.y; var a, s; a = ae.x - te.x, s = ae.y - te.y; var r, _, o = l * a - i * s; return o * o > nape_Config.epsilon * nape_Config.epsilon && ((_ = (s * t - a * n) * (o = 1 / o)) > nape_Config.epsilon && _ < 1 - nape_Config.epsilon && (r = (l * t - i * n) * o) > nape_Config.epsilon && r < 1 - nape_Config.epsilon && (se = _, !0)) }() && se < q && (q = se, W = ee), 2 != q) { var re, _e, oe = q; re = P.x + (K.x - P.x) * oe, _e = P.y + (K.y - P.y) * oe, g = zpp_$nape_geom_ZPP_$Vec2.get(re, _e, null), zpp_$nape_geom_ZPP_$Collide.flowpoly.add(g), B = !0, b = E; break } } while (0);z = 2 } for (; ; ) if (B) if (v++, null == (b = b.next) && (b = e.polygon.gverts.next, v = 0), i[v]) { var pe = zpp_$nape_geom_ZPP_$Collide.flowpoly.head.elt , he = b , de = W , ue = W.next; null == ue && (ue = t.polygon.gverts.next); var ce = -1 , me = null , Ue = 0 , Qe = 0 , Ne = ue , Fe = ue; do { var Ze = Fe , fe = 0; if (function(e) { var t, n; t = de.x - pe.x, n = de.y - pe.y; var i, l; i = Ze.x - de.x, l = Ze.y - de.y; var a, s; a = he.x - pe.x, s = he.y - pe.y; var r, _, o = l * a - i * s; return o * o > nape_Config.epsilon * nape_Config.epsilon && ((_ = (s * t - a * n) * (o = 1 / o)) > nape_Config.epsilon && _ < 1 - nape_Config.epsilon && (r = (l * t - i * n) * o) > nape_Config.epsilon && r < 1 - nape_Config.epsilon && (fe = _, !0)) }() && fe >= ce) { if (me = W, Ue = T, ++Qe == z) { ce = fe, Fe = Ne; break } ce = fe } de = Ze, W = Fe, ++T >= t.polygon.edgeCnt && (T = 0), null == (Fe = Fe.next) && (Fe = t.polygon.gverts.next) } while (0);for (; Fe != Ne; ) { var Se = Fe , ge = 0; if (function(e) { var t, n; t = de.x - pe.x, n = de.y - pe.y; var i, l; i = Se.x - de.x, l = Se.y - de.y; var a, s; a = he.x - pe.x, s = he.y - pe.y; var r, _, o = l * a - i * s; return o * o > nape_Config.epsilon * nape_Config.epsilon && ((_ = (s * t - a * n) * (o = 1 / o)) > nape_Config.epsilon && _ < 1 - nape_Config.epsilon && (r = (l * t - i * n) * o) > nape_Config.epsilon && r < 1 - nape_Config.epsilon && (ge = _, !0)) }() && ge >= ce) { if (me = W, Ue = T, ++Qe == z) { ce = ge, Fe = Ne; break } ce = ge } de = Se, W = Fe, ++T >= t.polygon.edgeCnt && (T = 0), null == (Fe = Fe.next) && (Fe = t.polygon.gverts.next) } if (null == me) break; var Be = me , be = me.next; null == be && (be = t.polygon.gverts.next); var ve, We, Te = be, Ve = ce; if (ve = Be.x + (Te.x - Be.x) * Ve, We = Be.y + (Te.y - Be.y) * Ve, null != g && zpp_$nape_geom_ZPP_$VecMath.vec_dsq(ve, We, g.x, g.y) < nape_Config.epsilon) break; zpp_$nape_geom_ZPP_$Collide.flowpoly.add(zpp_$nape_geom_ZPP_$Vec2.get(ve, We, null)), null == g && (g = zpp_$nape_geom_ZPP_$Collide.flowpoly.head.elt), W = me, T = Ue, B = !B, z = 2 } else { var Re = b; if (null != g && zpp_$nape_geom_ZPP_$VecMath.vec_dsq(Re.x, Re.y, g.x, g.y) < nape_Config.epsilon) break; zpp_$nape_geom_ZPP_$Collide.flowpoly.add(Re), null == g && (g = zpp_$nape_geom_ZPP_$Collide.flowpoly.head.elt), z = 1 } else if (T++, null == (W = W.next) && (W = t.polygon.gverts.next, T = 0), l[T]) { var ye = zpp_$nape_geom_ZPP_$Collide.flowpoly.head.elt , De = W , xe = b , Je = b.next; null == Je && (Je = e.polygon.gverts.next); var ze = -1 , ke = null , Ee = 0 , Pe = 0 , Me = Je , we = Je; do { var $e = we , Ce = 0; if (function(e) { var t, n; t = xe.x - ye.x, n = xe.y - ye.y; var i, l; i = $e.x - xe.x, l = $e.y - xe.y; var a, s; a = De.x - ye.x, s = De.y - ye.y; var r, _, o = l * a - i * s; return o * o > nape_Config.epsilon * nape_Config.epsilon && ((_ = (s * t - a * n) * (o = 1 / o)) > nape_Config.epsilon && _ < 1 - nape_Config.epsilon && (r = (l * t - i * n) * o) > nape_Config.epsilon && r < 1 - nape_Config.epsilon && (Ce = _, !0)) }() && Ce >= ze) { if (ke = b, Ee = v, ++Pe == z) { ze = Ce, we = Me; break } ze = Ce } xe = $e, b = we, ++v >= e.polygon.edgeCnt && (v = 0), null == (we = we.next) && (we = e.polygon.gverts.next) } while (0);for (; we != Me; ) { var Ge = we , Oe = 0; if (function(e) { var t, n; t = xe.x - ye.x, n = xe.y - ye.y; var i, l; i = Ge.x - xe.x, l = Ge.y - xe.y; var a, s; a = De.x - ye.x, s = De.y - ye.y; var r, _, o = l * a - i * s; return o * o > nape_Config.epsilon * nape_Config.epsilon && ((_ = (s * t - a * n) * (o = 1 / o)) > nape_Config.epsilon && _ < 1 - nape_Config.epsilon && (r = (l * t - i * n) * o) > nape_Config.epsilon && r < 1 - nape_Config.epsilon && (Oe = _, !0)) }() && Oe >= ze) { if (ke = b, Ee = v, ++Pe == z) { ze = Oe, we = Me; break } ze = Oe } xe = Ge, b = we, ++v >= e.polygon.edgeCnt && (v = 0), null == (we = we.next) && (we = e.polygon.gverts.next) } if (null == ke) break; var Ie = ke , He = ke.next; null == He && (He = e.polygon.gverts.next); var Ye, Ae, Le = He, Xe = ze; if (Ye = Ie.x + (Le.x - Ie.x) * Xe, Ae = Ie.y + (Le.y - Ie.y) * Xe, null != g && zpp_$nape_geom_ZPP_$VecMath.vec_dsq(Ye, Ae, g.x, g.y) < nape_Config.epsilon) break; zpp_$nape_geom_ZPP_$Collide.flowpoly.add(zpp_$nape_geom_ZPP_$Vec2.get(Ye, Ae, null)), null == g && (g = zpp_$nape_geom_ZPP_$Collide.flowpoly.head.elt), b = ke, v = Ee, B = !B, z = 2 } else { var je = W; if (null != g && zpp_$nape_geom_ZPP_$VecMath.vec_dsq(je.x, je.y, g.x, g.y) < nape_Config.epsilon) break; zpp_$nape_geom_ZPP_$Collide.flowpoly.add(je), null == g && (g = zpp_$nape_geom_ZPP_$Collide.flowpoly.head.elt), z = 1 } if (null != zpp_$nape_geom_ZPP_$Collide.flowpoly.head && null != zpp_$nape_geom_ZPP_$Collide.flowpoly.head.next && null != zpp_$nape_geom_ZPP_$Collide.flowpoly.head.next.next) { var Ke = 0 , qe = 0 , et = 0; qe = 0, et = 0, Ke = 0; var tt = zpp_$nape_geom_ZPP_$Collide.flowpoly.head , nt = tt.elt , it = (tt = tt.next).elt; for (tt = tt.next; null != tt; ) { var lt = tt.elt; Ke += it.x * (lt.y - nt.y); var at = lt.y * it.x - lt.x * it.y; qe += (it.x + lt.x) * at, et += (it.y + lt.y) * at, nt = it, it = lt, tt = tt.next } var st = (tt = zpp_$nape_geom_ZPP_$Collide.flowpoly.head).elt; Ke += it.x * (st.y - nt.y); var rt = st.y * it.x - st.x * it.y; qe += (it.x + st.x) * rt, et += (it.y + st.y) * rt, nt = it, it = st; var _t = (tt = tt.next).elt; Ke += it.x * (_t.y - nt.y); var ot = _t.y * it.x - _t.x * it.y; qe += (it.x + _t.x) * ot, et += (it.y + _t.y) * ot; var pt = 1 / (6 * (Ke *= .5)); return qe *= pt, et *= pt, n.overlap = -Ke, n.centroidx = qe, n.centroidy = et, !0 } return !1 } return !1 } return !1 } for (var ht = [], dt = !0, ut = null, ct = null, mt = -1e100, Ut = !0, Qt = t.polygon.gverts.next, Nt = 0, Ft = t.polygon.edges.head; null != Ft; ) { var Zt = Ft.elt , ft = Zt.gnormx * e.circle.worldCOMx + Zt.gnormy * e.circle.worldCOMy; if (ft > Zt.gprojection + e.circle.radius) { Ut = !1; break } ft + e.circle.radius > Zt.gprojection + nape_Config.epsilon && (dt = !1, ht[Nt] = !0), (ft -= Zt.gprojection + e.circle.radius) > mt && (mt = ft, ut = Zt, ct = Qt), Qt = Qt.next, Nt++, Ft = Ft.next } if (Ut) { if (dt) return n.overlap = e.circle.area, n.centroidx = e.circle.worldCOMx, n.centroidy = e.circle.worldCOMy, !0; var St, gt = ct; St = null == ct.next ? t.polygon.gverts.next : ct.next; var Bt = e.circle.worldCOMy * ut.gnormx - e.circle.worldCOMx * ut.gnormy; if (Bt <= gt.y * ut.gnormx - gt.x * ut.gnormy ? (rl = e.circle.radius, (al = gt.x - e.circle.worldCOMx) * al + (sl = gt.y - e.circle.worldCOMy) * sl <= rl * rl) : !(Bt >= St.y * ut.gnormx - St.x * ut.gnormy) || (ll = e.circle.radius, (nl = St.x - e.circle.worldCOMx) * nl + (il = St.y - e.circle.worldCOMy) * il <= ll * ll)) { for (var bt = [], vt = 0, Wt = !0, Tt = null, Vt = 0, Rt = t.polygon.gverts.next; null != Rt; ) { var yt = Rt , Dt = zpp_$nape_geom_ZPP_$VecMath.vec_dsq(yt.x, yt.y, e.circle.worldCOMx, e.circle.worldCOMy); (bt[vt] = Dt <= e.circle.radius * e.circle.radius) ? (Vt = vt, Tt = Rt) : Wt = !1, vt++, Rt = Rt.next } if (Wt) return t.polygon.validate_worldCOM(), n.overlap = t.polygon.area, n.centroidx = t.polygon.worldCOMx, n.centroidy = t.polygon.worldCOMy, !0; for (; null != zpp_$nape_geom_ZPP_$Collide.flowpoly.head; ) { var xt = zpp_$nape_geom_ZPP_$Collide.flowpoly.pop_unsafe(); if (!xt._inuse) { var Jt = xt; null != Jt.outer && (Jt.outer.zpp_inner = null, Jt.outer = null), Jt._isimmutable = null, Jt._validate = null, Jt._invalidate = null, Jt.next = zpp_$nape_geom_ZPP_$Vec2.zpp_pool, zpp_$nape_geom_ZPP_$Vec2.zpp_pool = Jt } } zpp_$nape_geom_ZPP_$Collide.flowsegs.clear(); var zt = null , kt = 1; for (null == Tt ? (Tt = t.polygon.gverts.next, kt = 2) : zpp_$nape_geom_ZPP_$Collide.flowpoly.add(zt = Tt); 0 != kt; ) if (1 == kt) if (null == (Tt = Tt.next) && (Tt = t.polygon.gverts.next), ++Vt >= t.polygon.edgeCnt && (Vt = 0), bt[Vt]) { if (zpp_$nape_geom_ZPP_$VecMath.vec_dsq(zt.x, zt.y, Tt.x, Tt.y) < nape_Config.epsilon) break; zpp_$nape_geom_ZPP_$Collide.flowpoly.add(Tt) } else { var Et, Pt, Mt, wt, $t, Ct, Gt = zpp_$nape_geom_ZPP_$Collide.flowpoly.head.elt, Ot = Tt, It = (Et = Ot.x - Gt.x) * Et + (Pt = Ot.y - Gt.y) * Pt, Ht = 2 * ((Mt = Gt.x - e.circle.worldCOMx) * Et + (wt = Gt.y - e.circle.worldCOMy) * Pt), Yt = Mt * Mt + wt * wt - e.circle.radius * e.circle.radius, At = Math.sqrt(Ht * Ht - 4 * It * Yt), Lt = (-Ht - At) * (It = 1 / (2 * It)), Xt = Lt < nape_Config.epsilon ? (-Ht + At) * It : Lt; if ($t = Gt.x + (Ot.x - Gt.x) * Xt, Ct = Gt.y + (Ot.y - Gt.y) * Xt, zpp_$nape_geom_ZPP_$VecMath.vec_dsq(zt.x, zt.y, $t, Ct) < nape_Config.epsilon) break; zpp_$nape_geom_ZPP_$Collide.flowpoly.add(zpp_$nape_geom_ZPP_$Vec2.get($t, Ct, null)), kt = 2 } else if (2 == kt) { var jt = Tt.next; null == jt && (jt = t.polygon.gverts.next); var Kt = Tt; kt = 0; var qt = jt , en = jt; do { var tn = en , nn = Vt + 1; if (nn == t.polygon.edgeCnt && (nn = 0), ht[Vt]) { if (bt[nn]) { var ln, an, sn, rn, _n, on, pn = (ln = tn.x - Kt.x) * ln + (an = tn.y - Kt.y) * an, hn = 2 * ((sn = Kt.x - e.circle.worldCOMx) * ln + (rn = Kt.y - e.circle.worldCOMy) * an), dn = sn * sn + rn * rn - e.circle.radius * e.circle.radius, un = Math.sqrt(hn * hn - 4 * pn * dn), cn = (-hn - un) * (pn = 1 / (2 * pn)), mn = cn < nape_Config.epsilon ? (-hn + un) * pn : cn; if (_n = Kt.x + (tn.x - Kt.x) * mn, on = Kt.y + (tn.y - Kt.y) * mn, zpp_$nape_geom_ZPP_$VecMath.vec_dsq(zt.x, zt.y, _n, on) < nape_Config.epsilon) { kt = 0, en = qt; break } var Un = zpp_$nape_geom_ZPP_$Vec2.get(_n, on, null); zpp_$nape_geom_ZPP_$Collide.flowsegs.add(zpp_$nape_geom_ZPP_$Collide.flowpoly.head.elt), zpp_$nape_geom_ZPP_$Collide.flowsegs.add(Un), zpp_$nape_geom_ZPP_$Collide.flowpoly.add(Un), kt = 1, en = qt; break } var Qn, Nn, Fn, Zn, fn, Sn = 0, gn = 0, Bn = (Nn = tn.x - Kt.x) * Nn + (Fn = tn.y - Kt.y) * Fn, bn = 2 * ((Zn = Kt.x - e.circle.worldCOMx) * Nn + (fn = Kt.y - e.circle.worldCOMy) * Fn), vn = bn * bn - 4 * Bn * (Zn * Zn + fn * fn - e.circle.radius * e.circle.radius); if (vn * vn < nape_Config.epsilon ? (Sn = vn < 0 ? 10 : gn = -bn / (2 * Bn), Qn = !1) : (Sn = (-bn - (vn = Math.sqrt(vn))) * (Bn = 1 / (2 * Bn)), gn = (-bn + vn) * Bn, Qn = !0), Sn < 1 - nape_Config.epsilon && gn > nape_Config.epsilon) { var Wn, Tn, Vn = Sn; if (Wn = Kt.x + (tn.x - Kt.x) * Vn, Tn = Kt.y + (tn.y - Kt.y) * Vn, null != zt && zpp_$nape_geom_ZPP_$VecMath.vec_dsq(zt.x, zt.y, Wn, Tn) < nape_Config.epsilon) { kt = 0, en = qt; break } var Rn = zpp_$nape_geom_ZPP_$Vec2.get(Wn, Tn, null); if (null != zpp_$nape_geom_ZPP_$Collide.flowpoly.head && (zpp_$nape_geom_ZPP_$Collide.flowsegs.add(zpp_$nape_geom_ZPP_$Collide.flowpoly.head.elt), zpp_$nape_geom_ZPP_$Collide.flowsegs.add(Rn)), zpp_$nape_geom_ZPP_$Collide.flowpoly.add(Rn), null == zt && (zt = zpp_$nape_geom_ZPP_$Collide.flowpoly.head.elt), Qn) { var yn, Dn, xn = gn; yn = Kt.x + (tn.x - Kt.x) * xn, Dn = Kt.y + (tn.y - Kt.y) * xn, zpp_$nape_geom_ZPP_$Collide.flowpoly.add(zpp_$nape_geom_ZPP_$Vec2.get(yn, Dn, null)) } } } Kt = tn, Tt = en, Vt = nn, null == (en = en.next) && (en = t.polygon.gverts.next) } while (0);for (; en != qt; ) { var Jn = en , zn = Vt + 1; if (zn == t.polygon.edgeCnt && (zn = 0), ht[Vt]) { if (bt[zn]) { var kn, En, Pn, Mn, wn, $n, Cn = (kn = Jn.x - Kt.x) * kn + (En = Jn.y - Kt.y) * En, Gn = 2 * ((Pn = Kt.x - e.circle.worldCOMx) * kn + (Mn = Kt.y - e.circle.worldCOMy) * En), On = Pn * Pn + Mn * Mn - e.circle.radius * e.circle.radius, In = Math.sqrt(Gn * Gn - 4 * Cn * On), Hn = (-Gn - In) * (Cn = 1 / (2 * Cn)), Yn = Hn < nape_Config.epsilon ? (-Gn + In) * Cn : Hn; if (wn = Kt.x + (Jn.x - Kt.x) * Yn, $n = Kt.y + (Jn.y - Kt.y) * Yn, zpp_$nape_geom_ZPP_$VecMath.vec_dsq(zt.x, zt.y, wn, $n) < nape_Config.epsilon) { kt = 0, en = qt; break } var An = zpp_$nape_geom_ZPP_$Vec2.get(wn, $n, null); zpp_$nape_geom_ZPP_$Collide.flowsegs.add(zpp_$nape_geom_ZPP_$Collide.flowpoly.head.elt), zpp_$nape_geom_ZPP_$Collide.flowsegs.add(An), zpp_$nape_geom_ZPP_$Collide.flowpoly.add(An), kt = 1, en = qt; break } var Ln, Xn, jn, Kn, qn, ei = 0, ti = 0, ni = (Xn = Jn.x - Kt.x) * Xn + (jn = Jn.y - Kt.y) * jn, ii = 2 * ((Kn = Kt.x - e.circle.worldCOMx) * Xn + (qn = Kt.y - e.circle.worldCOMy) * jn), li = ii * ii - 4 * ni * (Kn * Kn + qn * qn - e.circle.radius * e.circle.radius); if (li * li < nape_Config.epsilon ? (ei = li < 0 ? 10 : ti = -ii / (2 * ni), Ln = !1) : (ei = (-ii - (li = Math.sqrt(li))) * (ni = 1 / (2 * ni)), ti = (-ii + li) * ni, Ln = !0), ei < 1 - nape_Config.epsilon && ti > nape_Config.epsilon) { var ai, si, ri = ei; if (ai = Kt.x + (Jn.x - Kt.x) * ri, si = Kt.y + (Jn.y - Kt.y) * ri, null != zt && zpp_$nape_geom_ZPP_$VecMath.vec_dsq(zt.x, zt.y, ai, si) < nape_Config.epsilon) { kt = 0, en = qt; break } var _i = zpp_$nape_geom_ZPP_$Vec2.get(ai, si, null); if (null != zpp_$nape_geom_ZPP_$Collide.flowpoly.head && (zpp_$nape_geom_ZPP_$Collide.flowsegs.add(zpp_$nape_geom_ZPP_$Collide.flowpoly.head.elt), zpp_$nape_geom_ZPP_$Collide.flowsegs.add(_i)), zpp_$nape_geom_ZPP_$Collide.flowpoly.add(_i), null == zt && (zt = zpp_$nape_geom_ZPP_$Collide.flowpoly.head.elt), Ln) { var oi, pi, hi = ti; oi = Kt.x + (Jn.x - Kt.x) * hi, pi = Kt.y + (Jn.y - Kt.y) * hi, zpp_$nape_geom_ZPP_$Collide.flowpoly.add(zpp_$nape_geom_ZPP_$Vec2.get(oi, pi, null)) } } } Kt = Jn, Tt = en, Vt = zn, null == (en = en.next) && (en = t.polygon.gverts.next) } } if (null == zpp_$nape_geom_ZPP_$Collide.flowpoly.head) return !1; if (null == zpp_$nape_geom_ZPP_$Collide.flowpoly.head.next) { for (var di = !0, ui = t.polygon.edges.head; null != ui; ) { var ci = ui.elt; if (ci.gnormx * e.circle.worldCOMx + ci.gnormy * e.circle.worldCOMy > ci.gprojection) { di = !1; break } ui = ui.next } return !!di && (n.overlap = e.circle.area, n.centroidx = e.circle.worldCOMx, n.centroidy = e.circle.worldCOMy, !0) } var mi = 0 , Ui = 0 , Qi = 0; if (null != zpp_$nape_geom_ZPP_$Collide.flowpoly.head.next.next) { var Ni = 0 , Fi = 0 , Zi = 0; Fi = 0, Zi = 0, Ni = 0; var fi = zpp_$nape_geom_ZPP_$Collide.flowpoly.head , Si = fi.elt , gi = (fi = fi.next).elt; for (fi = fi.next; null != fi; ) { var Bi = fi.elt; Ni += gi.x * (Bi.y - Si.y); var bi = Bi.y * gi.x - Bi.x * gi.y; Fi += (gi.x + Bi.x) * bi, Zi += (gi.y + Bi.y) * bi, Si = gi, gi = Bi, fi = fi.next } var vi = (fi = zpp_$nape_geom_ZPP_$Collide.flowpoly.head).elt; Ni += gi.x * (vi.y - Si.y); var Wi = vi.y * gi.x - vi.x * gi.y; Fi += (gi.x + vi.x) * Wi, Zi += (gi.y + vi.y) * Wi, Si = gi, gi = vi; var Ti = (fi = fi.next).elt; Ni += gi.x * (Ti.y - Si.y); var Vi = Ti.y * gi.x - Ti.x * gi.y; Fi += (gi.x + Ti.x) * Vi, Zi += (gi.y + Ti.y) * Vi; var Ri = 1 / (6 * (Ni *= .5)) , yi = -Ni; mi += (Fi *= Ri) * yi, Ui += (Zi *= Ri) * yi, Qi -= Ni } else zpp_$nape_geom_ZPP_$Collide.flowsegs.add(zpp_$nape_geom_ZPP_$Collide.flowpoly.head.elt), zpp_$nape_geom_ZPP_$Collide.flowsegs.add(zpp_$nape_geom_ZPP_$Collide.flowpoly.head.next.elt); for (; null != zpp_$nape_geom_ZPP_$Collide.flowsegs.head; ) { var Di, xi, Ji = zpp_$nape_geom_ZPP_$Collide.flowsegs.pop_unsafe(), zi = zpp_$nape_geom_ZPP_$Collide.flowsegs.pop_unsafe(); Di = zi.x - Ji.x, xi = zi.y - Ji.y; var ki = 0 , Ei = 0 , Pi = (ki = Di) * ki + (Ei = xi) * Ei , Mi = 1 / Math.sqrt(Pi) , wi = ki *= Mi; ki = -(Ei *= Mi), Ei = wi; var $i = 0 , Ci = 0; $i = Ji.x + zi.x, Ci = Ji.y + zi.y; $i *= .5, Ci *= .5; var Gi, Oi, Ii = ki * ($i -= 1 * e.circle.worldCOMx) + Ei * (Ci -= 1 * e.circle.worldCOMy), Hi = Ii / e.circle.radius, Yi = Math.sqrt(1 - Hi * Hi), Ai = Math.acos(Hi); Gi = e.circle.radius * (e.circle.radius * Ai - Ii * Yi), Oi = .6666666666666666 * e.circle.radius * Yi * Yi * Yi / (Ai - Hi * Yi), $i = e.circle.worldCOMx, Ci = e.circle.worldCOMy; mi += ($i += ki * Oi) * Gi, Ui += (Ci += Ei * Oi) * Gi, Qi += Gi } var Li = 1 / Qi; return mi *= Li, Ui *= Li, n.overlap = Qi, n.centroidx = mi, n.centroidy = Ui, !0 } return !1 } return !1 } var Xi, ji, Ki = e.circle, qi = t.circle; Xi = qi.worldCOMx - Ki.worldCOMx, ji = qi.worldCOMy - Ki.worldCOMy; var el = Ki.radius + qi.radius , tl = Xi * Xi + ji * ji; if (tl > el * el) return !1; if (tl < nape_Config.epsilon * nape_Config.epsilon) return Ki.radius < qi.radius ? (n.overlap = Ki.area, n.centroidx = Ki.worldCOMx, n.centroidy = Ki.worldCOMy) : (n.overlap = qi.area, n.centroidx = qi.worldCOMx, n.centroidy = qi.worldCOMy), !0; var nl, il, ll, al, sl, rl, _l = Math.sqrt(tl), ol = 1 / _l, pl = .5 * (_l - (qi.radius * qi.radius - Ki.radius * Ki.radius) * ol); if (pl <= -Ki.radius) n.overlap = Ki.area, n.centroidx = Ki.worldCOMx, n.centroidy = Ki.worldCOMy; else { var hl = _l - pl; if (hl <= -qi.radius) n.overlap = qi.area, n.centroidx = qi.worldCOMx, n.centroidy = qi.worldCOMy; else { var dl, ul, cl, ml = pl, Ul = ml / Ki.radius, Ql = Math.sqrt(1 - Ul * Ul), Nl = Math.acos(Ul); dl = Ki.radius * (Ki.radius * Nl - ml * Ql), ul = .6666666666666666 * Ki.radius * Ql * Ql * Ql / (Nl - Ul * Ql); var Fl = hl , Zl = Fl / qi.radius , fl = Math.sqrt(1 - Zl * Zl) , Sl = Math.acos(Zl) , gl = dl + (cl = qi.radius * (qi.radius * Sl - Fl * fl)) , Bl = (ul * dl + (_l - .6666666666666666 * qi.radius * fl * fl * fl / (Sl - Zl * fl)) * cl) / gl * ol; n.overlap = gl, n.centroidx = Ki.worldCOMx + Xi * Bl, n.centroidy = Ki.worldCOMy + ji * Bl } } return !0 } ; var zpp_$nape_geom_ZPP_$Convex = function() {}; $hxClasses["zpp_nape.geom.ZPP_Convex"] = zpp_$nape_geom_ZPP_$Convex, zpp_$nape_geom_ZPP_$Convex.__name__ = ["zpp_nape", "geom", "ZPP_Convex"], zpp_$nape_geom_ZPP_$Convex.isinner = function(e, t, n) { var i, l; i = e.x - t.x, l = e.y - t.y; var a; return a = n.x - t.x, (n.y - t.y) * i - a * l >= 0 } , zpp_$nape_geom_ZPP_$Convex.optimise = function(e) { var t = e.vertices , n = e.vertices; if (null != t) { var i = t; do { i.sort(), i = i.next } while (i != n) } var l = e.vertices , a = e.vertices; if (null != l) { var s = l; do { for (var r = s, _ = r.prev, o = null, p = r.diagonals.head; null != p; ) { var h, d = p.elt; if (h = null == p.next ? r.next : p.next.elt, zpp_$nape_geom_ZPP_$Convex.isinner(h, r, _)) { for (var u = !0, c = d, m = c.prev, U = null, Q = c.diagonals.head; null != Q; ) { var N = Q.elt; if (N == r) { var F; F = null == Q.next ? c.next : Q.next.elt, u = zpp_$nape_geom_ZPP_$Convex.isinner(F, c, m); break } m = N, U = Q, Q = Q.next } u ? (p = r.diagonals.erase(o), c.diagonals.erase(U)) : (_ = d, o = p, p = p.next) } else o = p, _ = d, p = p.next } s = s.next } while (s != a) } } ; var zpp_$nape_geom_ZPP_$ConvexRayResult = function() { this.toiDistance = 0, this.inner = !1, this.shape = null }; $hxClasses["zpp_nape.geom.ZPP_ConvexRayResult"] = zpp_$nape_geom_ZPP_$ConvexRayResult, zpp_$nape_geom_ZPP_$ConvexRayResult.__name__ = ["zpp_nape", "geom", "ZPP_ConvexRayResult"], zpp_$nape_geom_ZPP_$ConvexRayResult.prototype = { shape: null, inner: null, toiDistance: null, __class__: zpp_$nape_geom_ZPP_$ConvexRayResult }; var zpp_$nape_geom_ZPP_$Geom = function() {}; $hxClasses["zpp_nape.geom.ZPP_Geom"] = zpp_$nape_geom_ZPP_$Geom, zpp_$nape_geom_ZPP_$Geom.__name__ = ["zpp_nape", "geom", "ZPP_Geom"], zpp_$nape_geom_ZPP_$Geom.validateShape = function(e) { 1 == e.type && e.polygon.validate_gaxi(), e.zip_aabb && null != e.body && (e.zip_aabb = !1, 0 == e.type ? e.circle.__validate_aabb() : e.polygon.__validate_aabb()), e.zip_worldCOM && null != e.body && (e.zip_worldCOM = !1, e.zip_localCOM && (e.zip_localCOM = !1, 1 == e.type && e.polygon.__validate_localCOM(), null != e.wrap_localCOM && (e.wrap_localCOM.zpp_inner.x = e.localCOMx, e.wrap_localCOM.zpp_inner.y = e.localCOMy)), e.body.validate_axis(), e.worldCOMx = e.body.posx + (e.body.axisy * e.localCOMx - e.body.axisx * e.localCOMy), e.worldCOMy = e.body.posy + (e.localCOMx * e.body.axisx + e.localCOMy * e.body.axisy)) } ; var zpp_$nape_geom_ZPP_$GeomVert = function() { this.forced = !1, this.next = null, this.prev = null, this.y = 0, this.x = 0 }; $hxClasses["zpp_nape.geom.ZPP_GeomVert"] = zpp_$nape_geom_ZPP_$GeomVert, zpp_$nape_geom_ZPP_$GeomVert.__name__ = ["zpp_nape", "geom", "ZPP_GeomVert"], zpp_$nape_geom_ZPP_$GeomVert.get = function(e, t) { var n; return null == zpp_$nape_geom_ZPP_$GeomVert.zpp_pool ? n = new zpp_$nape_geom_ZPP_$GeomVert : (n = zpp_$nape_geom_ZPP_$GeomVert.zpp_pool, zpp_$nape_geom_ZPP_$GeomVert.zpp_pool = n.next, n.next = null), n.forced = !1, n.x = e, n.y = t, n } , zpp_$nape_geom_ZPP_$GeomVert.prototype = { x: null, y: null, prev: null, next: null, forced: null, __class__: zpp_$nape_geom_ZPP_$GeomVert }; var zpp_$nape_geom_ZPP_$GeomPoly = function(e) { this.vertices = null, this.outer = null, this.outer = e }; $hxClasses["zpp_nape.geom.ZPP_GeomPoly"] = zpp_$nape_geom_ZPP_$GeomPoly, zpp_$nape_geom_ZPP_$GeomPoly.__name__ = ["zpp_nape", "geom", "ZPP_GeomPoly"], zpp_$nape_geom_ZPP_$GeomPoly.prototype = { outer: null, vertices: null, __class__: zpp_$nape_geom_ZPP_$GeomPoly }; var zpp_$nape_geom_ZPP_$Mat23 = function() { this.next = null, this._invalidate = null, this.ty = 0, this.tx = 0, this.d = 0, this.c = 0, this.b = 0, this.a = 0, this.outer = null }; $hxClasses["zpp_nape.geom.ZPP_Mat23"] = zpp_$nape_geom_ZPP_$Mat23, zpp_$nape_geom_ZPP_$Mat23.__name__ = ["zpp_nape", "geom", "ZPP_Mat23"], zpp_$nape_geom_ZPP_$Mat23.get = function() { var e; return null == zpp_$nape_geom_ZPP_$Mat23.zpp_pool ? e = new zpp_$nape_geom_ZPP_$Mat23 : (e = zpp_$nape_geom_ZPP_$Mat23.zpp_pool, zpp_$nape_geom_ZPP_$Mat23.zpp_pool = e.next, e.next = null), e } , zpp_$nape_geom_ZPP_$Mat23.prototype = { outer: null, a: null, b: null, c: null, d: null, tx: null, ty: null, _invalidate: null, invalidate: function() { null != this._invalidate && this._invalidate() }, next: null, __class__: zpp_$nape_geom_ZPP_$Mat23 }; var zpp_$nape_geom_ZPP_$MatMN = function() { this.x = null, this.n = 0, this.m = 0 }; $hxClasses["zpp_nape.geom.ZPP_MatMN"] = zpp_$nape_geom_ZPP_$MatMN, zpp_$nape_geom_ZPP_$MatMN.__name__ = ["zpp_nape", "geom", "ZPP_MatMN"], zpp_$nape_geom_ZPP_$MatMN.prototype = { m: null, n: null, x: null, __class__: zpp_$nape_geom_ZPP_$MatMN }; var zpp_$nape_geom_ZPP_$Monotone = function() {}; $hxClasses["zpp_nape.geom.ZPP_Monotone"] = zpp_$nape_geom_ZPP_$Monotone, zpp_$nape_geom_ZPP_$Monotone.__name__ = ["zpp_nape", "geom", "ZPP_Monotone"], zpp_$nape_geom_ZPP_$Monotone.bisector = function(e) { var t, n, i = e.prev, l = e.next; t = e.x - i.x, n = e.y - i.y; var a, s; a = l.x - e.x, s = l.y - e.y; var r = zpp_$nape_geom_ZPP_$Vec2.get(-n - s, t + a, null) , _ = r.x * r.x + r.y * r.y , o = 1 / Math.sqrt(_); return r.x *= o, r.y *= o, s * t - a * n < 0 && (r.x = -r.x, r.y = -r.y), r } , zpp_$nape_geom_ZPP_$Monotone.below = function(e, t) { if (e.y < t.y) return !0; if (e.y > t.y) return !1; if (e.x < t.x) return !0; if (e.x > t.x) return !1; var n = zpp_$nape_geom_ZPP_$Monotone.bisector(e) , i = zpp_$nape_geom_ZPP_$Monotone.bisector(t); n.x += 1 * e.x, n.y += 1 * e.y; i.x += 1 * t.x, i.y += 1 * t.y; var l = n.x < i.x || n.x == i.x && n.y < i.y , a = n; null != a.outer && (a.outer.zpp_inner = null, a.outer = null), a._isimmutable = null, a._validate = null, a._invalidate = null, a.next = zpp_$nape_geom_ZPP_$Vec2.zpp_pool, zpp_$nape_geom_ZPP_$Vec2.zpp_pool = a; var s = i; return null != s.outer && (s.outer.zpp_inner = null, s.outer = null), s._isimmutable = null, s._validate = null, s._invalidate = null, s.next = zpp_$nape_geom_ZPP_$Vec2.zpp_pool, zpp_$nape_geom_ZPP_$Vec2.zpp_pool = s, l } , zpp_$nape_geom_ZPP_$Monotone.above = function(e, t) { return zpp_$nape_geom_ZPP_$Monotone.below(t, e) } , zpp_$nape_geom_ZPP_$Monotone.left_vertex = function(e) { var t = e.prev; return t.y > e.y || t.y == e.y && e.next.y < e.y } , zpp_$nape_geom_ZPP_$Monotone.decompose = function(e, t) { if (null == t ? t = new zpp_$nape_geom_ZPP_$PartitionedPoly(e) : t.init(e), null == t.vertices) return t; null == zpp_$nape_geom_ZPP_$Monotone.queue && (zpp_$nape_geom_ZPP_$Monotone.queue = new zpp_$nape_util_ZNPList_$ZPP_$PartitionVertex); var n = t.vertices , i = t.vertices; if (null != n) { var l = n; do { var a = l; zpp_$nape_geom_ZPP_$Monotone.queue.add(a); var s, r; s = a.next.x - a.x, r = a.next.y - a.y; var _; _ = a.prev.x - a.x; var o = (a.prev.y - a.y) * s - _ * r > 0; zpp_$nape_geom_ZPP_$Monotone.below(a.prev, a) ? zpp_$nape_geom_ZPP_$Monotone.below(a.next, a) ? a.type = o ? 0 : 3 : a.type = 4 : zpp_$nape_geom_ZPP_$Monotone.below(a, a.next) ? a.type = o ? 1 : 2 : a.type = 4, l = l.next } while (l != i) } var p = zpp_$nape_geom_ZPP_$Monotone.queue; if (null != p.head && null != p.head.next) { var h, d, u, c = p.head, m = null, U = null, Q = null, N = null, F = 1; do { for (h = 0, U = c, m = c = null; null != U; ) { for (h++, Q = U, d = 0, u = F; null != Q && d < F; ) d++, Q = Q.next; for (; d > 0 || u > 0 && null != Q; ) 0 == d ? (N = Q, Q = Q.next, u--) : 0 == u || null == Q ? (N = U, U = U.next, d--) : zpp_$nape_geom_ZPP_$Monotone.above(U.elt, Q.elt) ? (N = U, U = U.next, d--) : (N = Q, Q = Q.next, u--), null != m ? m.next = N : c = N, m = N; U = Q } m.next = null, F <<= 1 } while (h > 1);p.head = c, p.modified = !0, p.pushmod = !0 } for (null == zpp_$nape_geom_ZPP_$Monotone.edges && (null == zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionVertex.zpp_pool ? zpp_$nape_geom_ZPP_$Monotone.edges = new zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionVertex : (zpp_$nape_geom_ZPP_$Monotone.edges = zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionVertex.zpp_pool, zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionVertex.zpp_pool = zpp_$nape_geom_ZPP_$Monotone.edges.next, zpp_$nape_geom_ZPP_$Monotone.edges.next = null), zpp_$nape_geom_ZPP_$Monotone.edges.lt = zpp_$nape_geom_ZPP_$PartitionVertex.edge_lt, zpp_$nape_geom_ZPP_$Monotone.edges.swapped = zpp_$nape_geom_ZPP_$PartitionVertex.edge_swap); null != zpp_$nape_geom_ZPP_$Monotone.queue.head; ) { var Z = zpp_$nape_geom_ZPP_$Monotone.queue.pop_unsafe(); switch (Z.type) { case 0: Z.helper = Z, Z.node = zpp_$nape_geom_ZPP_$Monotone.edges.insert(Z); break; case 1: var f = Z.prev; 2 == f.helper.type && t.add_diagonal(Z, f.helper), zpp_$nape_geom_ZPP_$Monotone.edges.remove_node(f.node); break; case 3: var S, g = null; if (!zpp_$nape_geom_ZPP_$Monotone.edges.empty()) { for (var B = zpp_$nape_geom_ZPP_$Monotone.edges.parent; null != B.prev; ) B = B.prev; for (; null != B; ) { var b = B.data; if (!zpp_$nape_geom_ZPP_$PartitionVertex.vert_lt(b, Z)) { g = b; break } if (null != B.next) for (B = B.next; null != B.prev; ) B = B.prev; else { for (; null != B.parent && B == B.parent.next; ) B = B.parent; B = B.parent } } } null != (S = g) && (t.add_diagonal(Z, S.helper), S.helper = Z), Z.node = zpp_$nape_geom_ZPP_$Monotone.edges.insert(Z), Z.helper = Z; break; case 2: var v, W = Z.prev; 2 == W.helper.type && t.add_diagonal(Z, W.helper), zpp_$nape_geom_ZPP_$Monotone.edges.remove_node(W.node); var T = null; if (!zpp_$nape_geom_ZPP_$Monotone.edges.empty()) { for (var V = zpp_$nape_geom_ZPP_$Monotone.edges.parent; null != V.prev; ) V = V.prev; for (; null != V; ) { var R = V.data; if (!zpp_$nape_geom_ZPP_$PartitionVertex.vert_lt(R, Z)) { T = R; break } if (null != V.next) for (V = V.next; null != V.prev; ) V = V.prev; else { for (; null != V.parent && V == V.parent.next; ) V = V.parent; V = V.parent } } } null != (v = T) && (2 == v.helper.type && t.add_diagonal(Z, v.helper), v.helper = Z); break; case 4: var y = Z.prev; if (zpp_$nape_geom_ZPP_$Monotone.left_vertex(Z)) 2 == y.helper.type && t.add_diagonal(Z, y.helper), zpp_$nape_geom_ZPP_$Monotone.edges.remove_node(y.node), Z.node = zpp_$nape_geom_ZPP_$Monotone.edges.insert(Z), Z.helper = Z; else { var D, x = null; if (!zpp_$nape_geom_ZPP_$Monotone.edges.empty()) { for (var J = zpp_$nape_geom_ZPP_$Monotone.edges.parent; null != J.prev; ) J = J.prev; for (; null != J; ) { var z = J.data; if (!zpp_$nape_geom_ZPP_$PartitionVertex.vert_lt(z, Z)) { x = z; break } if (null != J.next) for (J = J.next; null != J.prev; ) J = J.prev; else { for (; null != J.parent && J == J.parent.next; ) J = J.parent; J = J.parent } } } 2 == (D = x).helper.type && t.add_diagonal(Z, D.helper), D.helper = Z } } } return t } ; var zpp_$nape_geom_ZPP_$PartitionVertex = function() { this.node = null, this.prev = null, this.next = null, this.rightchain = !1, this.helper = null, this.type = 0, this.diagonals = null, this.forced = !1, this.y = 0, this.x = 0, this.mag = 0, this.id = 0, this.id = zpp_$nape_geom_ZPP_$PartitionVertex.nextId++, this.diagonals = new zpp_$nape_util_ZNPList_$ZPP_$PartitionVertex }; $hxClasses["zpp_nape.geom.ZPP_PartitionVertex"] = zpp_$nape_geom_ZPP_$PartitionVertex, zpp_$nape_geom_ZPP_$PartitionVertex.__name__ = ["zpp_nape", "geom", "ZPP_PartitionVertex"], zpp_$nape_geom_ZPP_$PartitionVertex.get = function(e) { var t; return null == zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool ? t = new zpp_$nape_geom_ZPP_$PartitionVertex : (t = zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool, zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool = t.next, t.next = null), t.x = e.x, t.y = e.y, t } , zpp_$nape_geom_ZPP_$PartitionVertex.rightdistance = function(e, t) { var n, i, l = e.next.y > e.y; n = e.next.x - e.x, i = e.next.y - e.y; var a, s; return a = t.x - e.x, s = t.y - e.y, (l ? -1 : 1) * (s * n - a * i) } , zpp_$nape_geom_ZPP_$PartitionVertex.vert_lt = function(e, t) { return t == e || t == e.next || (e.y == e.next.y ? (n = e.x, i = e.next.x, (n < i ? n : i) <= t.x) : zpp_$nape_geom_ZPP_$PartitionVertex.rightdistance(e, t) <= 0); var n, i } , zpp_$nape_geom_ZPP_$PartitionVertex.edge_swap = function(e, t) { var n = e.node; e.node = t.node, t.node = n } , zpp_$nape_geom_ZPP_$PartitionVertex.edge_lt = function(e, t) { if (e == t && e.next == t.next) return !1; if (e == t.next) return !zpp_$nape_geom_ZPP_$PartitionVertex.vert_lt(e, t); if (t == e.next) return zpp_$nape_geom_ZPP_$PartitionVertex.vert_lt(t, e); if (e.y == e.next.y) return t.y == t.next.y ? (p = e.x, h = e.next.x, (p > h ? p : h) > (_ = t.x, o = t.next.x, _ > o ? _ : o)) : zpp_$nape_geom_ZPP_$PartitionVertex.rightdistance(t, e) > 0 || zpp_$nape_geom_ZPP_$PartitionVertex.rightdistance(t, e.next) > 0; var n = zpp_$nape_geom_ZPP_$PartitionVertex.rightdistance(e, t) , i = zpp_$nape_geom_ZPP_$PartitionVertex.rightdistance(e, t.next); if (0 == n && 0 == i) return s = e.x, r = e.next.x, (s > r ? s : r) > (l = t.x, a = t.next.x, l > a ? l : a); if (n * i >= 0) return n < 0 || i < 0; var l, a, s, r, _, o, p, h, d = zpp_$nape_geom_ZPP_$PartitionVertex.rightdistance(t, e), u = zpp_$nape_geom_ZPP_$PartitionVertex.rightdistance(t, e.next); return d * u >= 0 && (d > 0 || u > 0) } , zpp_$nape_geom_ZPP_$PartitionVertex.prototype = { id: null, mag: null, x: null, y: null, forced: null, diagonals: null, type: null, helper: null, rightchain: null, next: null, prev: null, copy: function() { var e; return null == zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool ? e = new zpp_$nape_geom_ZPP_$PartitionVertex : (e = zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool, zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool = e.next, e.next = null), e.x = this.x, e.y = this.y, e.forced = this.forced, e }, sort: function() { var e, t = 0, n = 0, i = 0, l = 0; t = this.prev.x - this.x, n = this.prev.y - this.y, i = this.next.x - this.x; var a = (l = this.next.y - this.y) * t - i * n; e = a > 0 ? -1 : 0 == a ? 0 : 1; var s = this.diagonals; if (null != s.head && null != s.head.next) { var r, _, o, p = s.head, h = null, d = null, u = null, c = null, m = 1; do { for (r = 0, d = p, h = p = null; null != d; ) { for (r++, u = d, _ = 0, o = m; null != u && _ < m; ) _++, u = u.next; for (; _ > 0 || o > 0 && null != u; ) 0 == _ ? (c = u, u = u.next, o--) : 0 == o || null == u ? (c = d, d = d.next, _--) : (1 == e ? 1 == function(e) { t = d.elt.x - e.x, n = d.elt.y - e.y, i = u.elt.x - e.x; var a = (l = u.elt.y - e.y) * t - i * n; return a > 0 ? -1 : 0 == a ? 0 : 1 }(this) : function(e) { var a; t = e.prev.x - e.x, n = e.prev.y - e.y, i = d.elt.x - e.x; var s, r = (l = d.elt.y - e.y) * t - i * n; a = r > 0 ? -1 : 0 == r ? 0 : 1, t = e.prev.x - e.x, n = e.prev.y - e.y, i = u.elt.x - e.x; var _ = (l = u.elt.y - e.y) * t - i * n; return a * (s = _ > 0 ? -1 : 0 == _ ? 0 : 1) == 1 || a * s == 0 && (1 == a || 1 == s) ? 1 == function(e) { t = d.elt.x - e.x, n = d.elt.y - e.y, i = u.elt.x - e.x; var a = (l = u.elt.y - e.y) * t - i * n; return a > 0 ? -1 : 0 == a ? 0 : 1 }(e) : -1 == a || -1 == s ? -1 == s : 0 != a || 0 != s || function(e) { t = e.x - e.prev.x, n = e.y - e.prev.y, i = d.elt.x - e.x, l = d.elt.y - e.y; var a = t * i + n * l; i = u.elt.x - e.x, l = u.elt.y - e.y; var s = t * i + n * l; return a < 0 && s > 0 || !(s < 0 && a > 0) }(e) }(this)) ? (c = d, d = d.next, _--) : (c = u, u = u.next, o--), null != h ? h.next = c : p = c, h = c; d = u } h.next = null, m <<= 1 } while (r > 1);s.head = p, s.modified = !0, s.pushmod = !0 } }, node: null, __class__: zpp_$nape_geom_ZPP_$PartitionVertex }; var zpp_$nape_geom_ZPP_$PartitionedPoly = function(e) { this.next = null, this.vertices = null, this.init(e) }; $hxClasses["zpp_nape.geom.ZPP_PartitionedPoly"] = zpp_$nape_geom_ZPP_$PartitionedPoly, zpp_$nape_geom_ZPP_$PartitionedPoly.__name__ = ["zpp_nape", "geom", "ZPP_PartitionedPoly"], zpp_$nape_geom_ZPP_$PartitionedPoly.prototype = { vertices: null, eq: function(e, t) { return zpp_$nape_geom_ZPP_$VecMath.vec_dsq(e.x, e.y, t.x, t.y) < nape_Config.epsilon * nape_Config.epsilon }, next: null, init: function(e) { if (null != e) { var t; t = function(t) { var n = 0 , i = e; if (null != e) { var l = e; do { var a = l; n += a.x * (a.next.y - a.prev.y), l = l.next } while (l != i) } return .5 * n }() > 0; var n = e; do { if (t) { var i = zpp_$nape_geom_ZPP_$PartitionVertex.get(n); null == this.vertices ? this.vertices = i.prev = i.next = i : (i.prev = this.vertices, i.next = this.vertices.next, this.vertices.next.prev = i, this.vertices.next = i), this.vertices = i } else { var l = zpp_$nape_geom_ZPP_$PartitionVertex.get(n); null == this.vertices ? this.vertices = l.prev = l.next = l : (l.next = this.vertices, l.prev = this.vertices.prev, this.vertices.prev.next = l, this.vertices.prev = l), this.vertices = l } this.vertices.forced = n.forced, n = n.next } while (n != e);this.remove_collinear_vertices() } }, remove_collinear_vertices: function() { for (var e, t = this.vertices, n = !0; n || t != this.vertices; ) if (n = !1, this.eq(t, t.next)) { if (t == this.vertices && (this.vertices = t.next, n = !0), t.forced && (t.next.forced = !0), null != t && t.prev == t) { t.next = t.prev = null; var i = t; i.helper = null, i.next = zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool, zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool = i, t = t = null } else { var l = t.next; t.prev.next = t.next, t.next.prev = t.prev, t.next = t.prev = null; var a = t; a.helper = null, a.next = zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool, zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool = a, t = null, t = l } if (null == t) { this.vertices = null; break } } else t = t.next; if (null == this.vertices) return !0; do { for (e = !1, t = this.vertices, n = !0; n || t != this.vertices; ) { n = !1; var s, r, _ = t.prev; s = t.x - _.x, r = t.y - _.y; var o; o = t.next.x - t.x; var p = (t.next.y - t.y) * s - o * r; if (p * p >= nape_Config.epsilon * nape_Config.epsilon) t = t.next; else { if (t == this.vertices && (this.vertices = t.next, n = !0), null != t && t.prev == t) { t.next = t.prev = null; var h = t; h.helper = null, h.next = zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool, zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool = h, t = t = null } else { var d = t.next; t.prev.next = t.next, t.next.prev = t.prev, t.next = t.prev = null; var u = t; u.helper = null, u.next = zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool, zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool = u, t = null, t = d } if (e = !0, null == t) { e = !1, this.vertices = null; break } } } } while (e);return null == this.vertices }, add_diagonal: function(e, t) { e.diagonals.add(t), t.diagonals.add(e), e.forced = t.forced = !0 }, extract_partitions: function(e) { if (null == e && (e = new zpp_$nape_util_ZNPList_$ZPP_$PartitionedPoly), null != this.vertices) { var t = this.vertices , n = this.vertices; if (null != t) { var i = t; do { i.sort(), i = i.next } while (i != n) } for (this.pull_partitions(this.vertices, e); null != this.vertices; ) if (null != this.vertices && this.vertices.prev == this.vertices) { this.vertices.next = this.vertices.prev = null; var l = this.vertices; l.helper = null, l.next = zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool, zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool = l, this.vertices = this.vertices = null } else { var a = this.vertices.next; this.vertices.prev.next = this.vertices.next, this.vertices.next.prev = this.vertices.prev, this.vertices.next = this.vertices.prev = null; var s = this.vertices; s.helper = null, s.next = zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool, zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool = s, this.vertices = null, this.vertices = a } for (var r = null, _ = e.head; null != _; ) { _.elt.remove_collinear_vertices() ? e.erase(r) : (r = _, _ = _.next) } } return e }, pull_partitions: function(e, t) { var n; null == zpp_$nape_geom_ZPP_$PartitionedPoly.zpp_pool ? n = new zpp_$nape_geom_ZPP_$PartitionedPoly : (n = zpp_$nape_geom_ZPP_$PartitionedPoly.zpp_pool, zpp_$nape_geom_ZPP_$PartitionedPoly.zpp_pool = n.next, n.next = null); var i = e; do { var l = i.copy(); if (null == n.vertices ? n.vertices = l.prev = l.next = l : (l.prev = n.vertices, l.next = n.vertices.next, n.vertices.next.prev = l, n.vertices.next = l), n.vertices = l, n.vertices.forced = i.forced, null != i.diagonals.head) { if (i.diagonals.inlined_pop_unsafe() == e) break; i = this.pull_partitions(i, t) } else i = i.next } while (i != e);return 0 != function(e) { var t = 0 , i = n.vertices , l = n.vertices; if (null != i) { var a = i; do { var s = a; t += s.x * (s.next.y - s.prev.y), a = a.next } while (a != l) } return .5 * t }() && t.add(n), i }, extract: function(e) { if (null == e && (e = new zpp_$nape_util_ZNPList_$ZPP_$GeomVert), null != this.vertices) { var t = this.vertices , n = this.vertices; if (null != t) { var i = t; do { i.sort(), i = i.next } while (i != n) } for (this.pull(this.vertices, e); null != this.vertices; ) if (null != this.vertices && this.vertices.prev == this.vertices) { this.vertices.next = this.vertices.prev = null; var l = this.vertices; l.helper = null, l.next = zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool, zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool = l, this.vertices = this.vertices = null } else { var a = this.vertices.next; this.vertices.prev.next = this.vertices.next, this.vertices.next.prev = this.vertices.prev, this.vertices.next = this.vertices.prev = null; var s = this.vertices; s.helper = null, s.next = zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool, zpp_$nape_geom_ZPP_$PartitionVertex.zpp_pool = s, this.vertices = null, this.vertices = a } } return e }, pull: function(e, t) { var n, i = null, l = e; do { var a = zpp_$nape_geom_ZPP_$GeomVert.get(l.x, l.y); if (null == i ? i = a.prev = a.next = a : (a.prev = i, a.next = i.next, i.next.prev = a, i.next = a), (i = a).forced = l.forced, null != l.diagonals.head) { if (l.diagonals.inlined_pop_unsafe() == e) break; l = this.pull(l, t) } else l = l.next } while (l != e);var s = 0 , r = i; if (null != i) { var _ = i; do { var o = _; s += o.x * (o.next.y - o.prev.y), _ = _.next } while (_ != r) } return (n = .5 * s) * n >= nape_Config.epsilon * nape_Config.epsilon && (function(e) { for (var t, n = i, l = !0; l || n != i; ) if (l = !1, zpp_$nape_geom_ZPP_$VecMath.vec_dsq(n.x, n.y, n.next.x, n.next.y) < nape_Config.epsilon * nape_Config.epsilon) { if (n == i && (i = n.next, l = !0), n.forced && (n.next.forced = !0), null != n && n.prev == n) n.next = n.prev = null, n = n = null; else { var a = n.next; n.prev.next = n.next, n.next.prev = n.prev, n.next = n.prev = null, n = null, n = a } if (null == n) { i = null; break } } else n = n.next; if (null != i) do { for (t = !1, n = i, l = !0; l || n != i; ) { l = !1; var s, r, _ = n.prev; s = n.x - _.x, r = n.y - _.y; var o; o = n.next.x - n.x; var p = (n.next.y - n.y) * s - o * r; if (p * p >= nape_Config.epsilon * nape_Config.epsilon) n = n.next; else { if (n == i && (i = n.next, l = !0), null != n && n.prev == n) n.next = n.prev = null, n = n = null; else { var h = n.next; n.prev.next = n.next, n.next.prev = n.prev, n.next = n.prev = null, n = null, n = h } if (t = !0, null == n) { t = !1, i = null; break } } } } while (t);return null == i }() || t.add(i)), l }, __class__: zpp_$nape_geom_ZPP_$PartitionedPoly }; var zpp_$nape_geom_ZPP_$ToiEvent = function() { this.kinematic = !1, this.failed = !1, this.slipped = !1, this.axis = null, this.c2 = null, this.c1 = null, this.frozen2 = !1, this.frozen1 = !1, this.arbiter = null, this.s2 = null, this.s1 = null, this.toi = 0, this.next = null, this.c1 = new zpp_$nape_geom_ZPP_$Vec2, this.c2 = new zpp_$nape_geom_ZPP_$Vec2, this.axis = new zpp_$nape_geom_ZPP_$Vec2 }; $hxClasses["zpp_nape.geom.ZPP_ToiEvent"] = zpp_$nape_geom_ZPP_$ToiEvent, zpp_$nape_geom_ZPP_$ToiEvent.__name__ = ["zpp_nape", "geom", "ZPP_ToiEvent"], zpp_$nape_geom_ZPP_$ToiEvent.prototype = { next: null, toi: null, s1: null, s2: null, arbiter: null, frozen1: null, frozen2: null, c1: null, c2: null, axis: null, slipped: null, failed: null, kinematic: null, __class__: zpp_$nape_geom_ZPP_$ToiEvent }; var zpp_$nape_geom_ZPP_$SweepDistance = function() {}; $hxClasses["zpp_nape.geom.ZPP_SweepDistance"] = zpp_$nape_geom_ZPP_$SweepDistance, zpp_$nape_geom_ZPP_$SweepDistance.__name__ = ["zpp_nape", "geom", "ZPP_SweepDistance"], zpp_$nape_geom_ZPP_$SweepDistance.dynamicSweep = function(e, t, n, i, l) { null == l && (l = !1); var a, s, r = e.s1, _ = e.s2, o = r.body, p = _.body; a = p.velx - o.velx, s = p.vely - o.vely; var h = o.angvel; h < 0 && (h = -h); var d = p.angvel; d < 0 && (d = -d); var u = r.sweepCoef * h + _.sweepCoef * d; if (!l && !e.kinematic && a * a + s * s < nape_Config.dynamicSweepLinearThreshold * nape_Config.dynamicSweepLinearThreshold && u < nape_Config.dynamicSweepAngularThreshold) return e.toi = -1, void (e.failed = !0); for (var c = e.c1, m = e.c2, U = e.axis, Q = n, N = 0; ; ) { o.sweepIntegrate(Q * t), o.sweepValidate(r), p.sweepIntegrate(Q * t), p.sweepValidate(_); var F = zpp_$nape_geom_ZPP_$SweepDistance.distance(r, _, c, m, U, null) + i , Z = a * U.x + s * U.y; if (F < nape_Config.distanceThresholdCCD) { if (l) break; var f, S; f = c.x - o.posx, S = c.y - o.posy; var g, B; g = m.x - p.posx, B = m.y - p.posy; var b = Z - o.sweep_angvel * (U.y * f - U.x * S) + p.sweep_angvel * (U.y * g - U.x * B); if (b > 0 && (e.slipped = !0), b <= 0 || F < .5 * nape_Config.distanceThresholdCCD) break } var v = (u - Z) * t; if (v <= 0) { Q = -1; break } var W = F / v; if (W < 1e-6 && (W = 1e-6), (Q += W) >= 1) { Q = 1, o.sweepIntegrate(Q * t), o.sweepValidate(r), p.sweepIntegrate(Q * t), p.sweepValidate(_); var T = zpp_$nape_geom_ZPP_$SweepDistance.distance(r, _, c, m, U, null) + i , V = a * U.x + s * U.y; if (T < nape_Config.distanceThresholdCCD) { if (l) break; var R, y; R = c.x - o.posx, y = c.y - o.posy; var D, x; D = m.x - p.posx, x = m.y - p.posy; var J = V - o.sweep_angvel * (U.y * R - U.x * y) + p.sweep_angvel * (U.y * D - U.x * x); if (J > 0 && (e.slipped = !0), J <= 0 || T < .5 * nape_Config.distanceThresholdCCD) break } Q = -1; break } if (++N >= 40) { F > i && (e.failed = !0); break } } e.toi = Q } , zpp_$nape_geom_ZPP_$SweepDistance.staticSweep = function(e, t, n, i) { var l, a, s = e.s1, r = e.s2, _ = s.body; r.body; l = -_.velx, a = -_.vely; var o = _.sweep_angvel; o < 0 && (o = -o); for (var p = s.sweepCoef * o, h = e.c1, d = e.c2, u = e.axis, c = n, m = 0; ; ) { _.sweepIntegrate(c * t), _.sweepValidate(s); var U = zpp_$nape_geom_ZPP_$SweepDistance.distance(s, r, h, d, u, null) + i , Q = l * u.x + a * u.y; if (U < nape_Config.distanceThresholdCCD) { var N, F; N = h.x - _.posx, F = h.y - _.posy; var Z = Q - _.sweep_angvel * (u.y * N - u.x * F); if (Z > 0 && (e.slipped = !0), Z <= 0 || U < .5 * nape_Config.distanceThresholdCCD) break } var f = (p - Q) * t; if (f <= 0) { c = -1; break } var S = U / f; if (S < 1e-6 && (S = 1e-6), (c += S) >= 1) { c = 1, _.sweepIntegrate(c * t), _.sweepValidate(s); var g = zpp_$nape_geom_ZPP_$SweepDistance.distance(s, r, h, d, u, null) + i , B = l * u.x + a * u.y; if (g < nape_Config.distanceThresholdCCD) { var b, v; b = h.x - _.posx, v = h.y - _.posy; var W = B - _.sweep_angvel * (u.y * b - u.x * v); if (W > 0 && (e.slipped = !0), W <= 0 || g < .5 * nape_Config.distanceThresholdCCD) break } c = -1; break } if (++m >= 40) { U > i && (e.failed = !0); break } } e.toi = c } , zpp_$nape_geom_ZPP_$SweepDistance.distanceBody = function(e, t, n, i) { var l, a, s; null == zpp_$nape_geom_ZPP_$Vec2.zpp_pool ? l = new zpp_$nape_geom_ZPP_$Vec2 : (l = zpp_$nape_geom_ZPP_$Vec2.zpp_pool, zpp_$nape_geom_ZPP_$Vec2.zpp_pool = l.next, l.next = null), l.weak = !1, null == zpp_$nape_geom_ZPP_$Vec2.zpp_pool ? a = new zpp_$nape_geom_ZPP_$Vec2 : (a = zpp_$nape_geom_ZPP_$Vec2.zpp_pool, zpp_$nape_geom_ZPP_$Vec2.zpp_pool = a.next, a.next = null), a.weak = !1, null == zpp_$nape_geom_ZPP_$Vec2.zpp_pool ? s = new zpp_$nape_geom_ZPP_$Vec2 : (s = zpp_$nape_geom_ZPP_$Vec2.zpp_pool, zpp_$nape_geom_ZPP_$Vec2.zpp_pool = s.next, s.next = null), s.weak = !1; for (var r = 1e100, _ = e.shapes.head; null != _; ) { for (var o = _.elt, p = t.shapes.head; null != p; ) { var h = p.elt , d = zpp_$nape_geom_ZPP_$SweepDistance.distance(o, h, l, a, s, r); d < r && (r = d, n.x = l.x, n.y = l.y, i.x = a.x, i.y = a.y), p = p.next } _ = _.next } var u = l; null != u.outer && (u.outer.zpp_inner = null, u.outer = null), u._isimmutable = null, u._validate = null, u._invalidate = null, u.next = zpp_$nape_geom_ZPP_$Vec2.zpp_pool, zpp_$nape_geom_ZPP_$Vec2.zpp_pool = u; var c = a; null != c.outer && (c.outer.zpp_inner = null, c.outer = null), c._isimmutable = null, c._validate = null, c._invalidate = null, c.next = zpp_$nape_geom_ZPP_$Vec2.zpp_pool, zpp_$nape_geom_ZPP_$Vec2.zpp_pool = c; var m = s; return null != m.outer && (m.outer.zpp_inner = null, m.outer = null), m._isimmutable = null, m._validate = null, m._invalidate = null, m.next = zpp_$nape_geom_ZPP_$Vec2.zpp_pool, zpp_$nape_geom_ZPP_$Vec2.zpp_pool = m, r } , zpp_$nape_geom_ZPP_$SweepDistance.distance = function(e, t, n, i, l, a) { if (null == a && (a = 1e100), 0 == e.type && 0 == t.type) { var s, r = e.circle, _ = t.circle, o = 0, p = 0; o = _.worldCOMx - r.worldCOMx, p = _.worldCOMy - r.worldCOMy; var h = Math.sqrt(o * o + p * p); if ((s = h - (r.radius + _.radius)) < a) { if (0 == h) o = 1, p = 0; else { var d = 1 / h; o *= d, p *= d } var u = r.radius; n.x = r.worldCOMx + o * u, n.y = r.worldCOMy + p * u; var c = -_.radius; i.x = _.worldCOMx + o * c, i.y = _.worldCOMy + p * c, l.x = o, l.y = p } return s } var m = !1; if (0 == e.type && 1 == t.type) { var U = e; e = t, t = U; var Q = n; n = i, i = Q, m = !0 } if (1 == e.type && 0 == t.type) { for (var N = e.polygon, F = t.circle, Z = -1e100, f = null, S = N.edges.head; null != S; ) { var g = S.elt , B = g.gnormx * F.worldCOMx + g.gnormy * F.worldCOMy - g.gprojection - F.radius; if (B > a) { Z = B; break } B > 0 ? B > Z && (Z = B, f = g) : Z < 0 && B > Z && (Z = B, f = g), S = S.next } if (Z < a) { var b = f.gp0 , v = f.gp1 , W = F.worldCOMy * f.gnormx - F.worldCOMx * f.gnormy; if (W <= b.y * f.gnormx - b.x * f.gnormy) { var T = 0 , V = 0; T = F.worldCOMx - b.x, V = F.worldCOMy - b.y; var R = Math.sqrt(T * T + V * V); if ((Z = R - F.radius) < a) { if (0 == R) T = 1, V = 0; else { var y = 1 / R; T *= y, V *= y } n.x = b.x + 0 * T, n.y = b.y + 0 * V; var D = -F.radius; i.x = F.worldCOMx + T * D, i.y = F.worldCOMy + V * D, l.x = T, l.y = V } } else if (W >= v.y * f.gnormx - v.x * f.gnormy) { var x = 0 , J = 0; x = F.worldCOMx - v.x, J = F.worldCOMy - v.y; var z = Math.sqrt(x * x + J * J); if ((Z = z - F.radius) < a) { if (0 == z) x = 1, J = 0; else { var k = 1 / z; x *= k, J *= k } n.x = v.x + 0 * x, n.y = v.y + 0 * J; var E = -F.radius; i.x = F.worldCOMx + x * E, i.y = F.worldCOMy + J * E, l.x = x, l.y = J } } else { var P = -F.radius; i.x = F.worldCOMx + f.gnormx * P, i.y = F.worldCOMy + f.gnormy * P; var M = -Z; n.x = i.x + f.gnormx * M, n.y = i.y + f.gnormy * M, l.x = f.gnormx, l.y = f.gnormy } } return m && (l.x = -l.x, l.y = -l.y), Z } for (var w = e.polygon, $ = t.polygon, C = -1e100, G = null, O = null, I = 0, H = w.edges.head; null != H; ) { for (var Y = H.elt, A = 1e100, L = $.gverts.next; null != L; ) { var X = L , j = Y.gnormx * X.x + Y.gnormy * X.y; j < A && (A = j), L = L.next } if ((A -= Y.gprojection) > a) { C = A; break } A > 0 ? A > C && (C = A, G = Y, I = 1) : C < 0 && A > C && (C = A, G = Y, I = 1), H = H.next } if (C < a) { for (var K = $.edges.head; null != K; ) { for (var q = K.elt, ee = 1e100, te = w.gverts.next; null != te; ) { var ne = te , ie = q.gnormx * ne.x + q.gnormy * ne.y; ie < ee && (ee = ie), te = te.next } if ((ee -= q.gprojection) > a) { C = ee; break } ee > 0 ? ee > C && (C = ee, O = q, I = 2) : C < 0 && ee > C && (C = ee, O = q, I = 2), K = K.next } if (C < a) { var le, ae; if (1 == I) w, le = $, ae = G; else { $, le = w, ae = O; var se = n; n = i, i = se, m = !m } for (var re = null, _e = 1e100, oe = le.edges.head; null != oe; ) { var pe = oe.elt , he = ae.gnormx * pe.gnormx + ae.gnormy * pe.gnormy; he < _e && (_e = he, re = pe), oe = oe.next } if (m ? (l.x = -ae.gnormx, l.y = -ae.gnormy) : (l.x = ae.gnormx, l.y = ae.gnormy), C >= 0) { var de, ue, ce, me, Ue = ae.gp0, Qe = ae.gp1, Ne = re.gp0, Fe = re.gp1, Ze = 1 / ((de = Qe.x - Ue.x) * de + (ue = Qe.y - Ue.y) * ue), fe = 1 / ((ce = Fe.x - Ne.x) * ce + (me = Fe.y - Ne.y) * me), Se = -(de * (Ue.x - Ne.x) + ue * (Ue.y - Ne.y)) * Ze, ge = -(de * (Ue.x - Fe.x) + ue * (Ue.y - Fe.y)) * Ze, Be = -(ce * (Ne.x - Ue.x) + me * (Ne.y - Ue.y)) * fe, be = -(ce * (Ne.x - Qe.x) + me * (Ne.y - Qe.y)) * fe; Se < 0 ? Se = 0 : Se > 1 && (Se = 1), ge < 0 ? ge = 0 : ge > 1 && (ge = 1), Be < 0 ? Be = 0 : Be > 1 && (Be = 1), be < 0 ? be = 0 : be > 1 && (be = 1); var ve, We, Te = Se; ve = Ue.x + de * Te, We = Ue.y + ue * Te; var Ve, Re, ye = ge; Ve = Ue.x + de * ye, Re = Ue.y + ue * ye; var De, xe, Je = Be; De = Ne.x + ce * Je, xe = Ne.y + me * Je; var ze, ke, Ee = be; ze = Ne.x + ce * Ee, ke = Ne.y + me * Ee; var Pe = zpp_$nape_geom_ZPP_$VecMath.vec_dsq(ve, We, Ne.x, Ne.y) , Me = zpp_$nape_geom_ZPP_$VecMath.vec_dsq(Ve, Re, Fe.x, Fe.y) , we = zpp_$nape_geom_ZPP_$VecMath.vec_dsq(De, xe, Ue.x, Ue.y) , $e = zpp_$nape_geom_ZPP_$VecMath.vec_dsq(ze, ke, Qe.x, Qe.y) , Ce = 0 , Ge = 0 , Oe = null; Pe < Me ? (Ce = ve, Ge = We, Oe = Ne) : (Ce = Ve, Ge = Re, Oe = Fe, Pe = Me); var Ie = 0 , He = 0 , Ye = null; if (we < $e ? (Ie = De, He = xe, Ye = Ue) : (Ie = ze, He = ke, Ye = Qe, we = $e), Pe < we ? (n.x = Ce, n.y = Ge, i.x = Oe.x, i.y = Oe.y, C = Math.sqrt(Pe)) : (i.x = Ie, i.y = He, n.x = Ye.x, n.y = Ye.y, C = Math.sqrt(we)), 0 != C) { l.x = i.x - n.x, l.y = i.y - n.y; var Ae = 1 / C; l.x *= Ae, l.y *= Ae, m && (l.x = -l.x, l.y = -l.y) } return C } var Le = 0 , Xe = 0; Le = re.gp0.x, Xe = re.gp0.y; var je, Ke, qe = 0, et = 0; je = (qe = re.gp1.x) - Le, Ke = (et = re.gp1.y) - Xe; var tt = ae.gnormy * Le - ae.gnormx * Xe , nt = ae.gnormy * qe - ae.gnormx * et , it = 1 / (nt - tt) , lt = (-ae.tp1 - tt) * it; if (lt > nape_Config.epsilon) { Le += je * lt, Xe += Ke * lt } var at = (-ae.tp0 - nt) * it; if (at < -nape_Config.epsilon) { qe += je * at, et += Ke * at } var st = Le * ae.gnormx + Xe * ae.gnormy - ae.gprojection , rt = qe * ae.gnormx + et * ae.gnormy - ae.gprojection; if (st < rt) { i.x = Le, i.y = Xe; var _t = -st; return n.x = i.x + ae.gnormx * _t, n.y = i.y + ae.gnormy * _t, st } i.x = qe, i.y = et; var ot = -rt; return n.x = i.x + ae.gnormx * ot, n.y = i.y + ae.gnormy * ot, rt } return a } return a } ; var zpp_$nape_geom_ZPP_$PartitionPair = function() { this.node = null, this.di = 0, this.id = 0, this.b = null, this.a = null, this.length = 0, this.pushmod = !1, this.modified = !1, this._inuse = !1, this.next = null }; $hxClasses["zpp_nape.geom.ZPP_PartitionPair"] = zpp_$nape_geom_ZPP_$PartitionPair, zpp_$nape_geom_ZPP_$PartitionPair.__name__ = ["zpp_nape", "geom", "ZPP_PartitionPair"], zpp_$nape_geom_ZPP_$PartitionPair.get = function(e, t) { var n; return null == zpp_$nape_geom_ZPP_$PartitionPair.zpp_pool ? n = new zpp_$nape_geom_ZPP_$PartitionPair : (n = zpp_$nape_geom_ZPP_$PartitionPair.zpp_pool, zpp_$nape_geom_ZPP_$PartitionPair.zpp_pool = n.next, n.next = null), n.a = e, n.b = t, e.id < t.id ? (n.id = e.id, n.di = t.id) : (n.id = t.id, n.di = e.id), n } , zpp_$nape_geom_ZPP_$PartitionPair.edge_swap = function(e, t) { var n = e.node; e.node = t.node, t.node = n } , zpp_$nape_geom_ZPP_$PartitionPair.edge_lt = function(e, t) { return e.id < t.id || e.id == t.id && e.di < t.di } , zpp_$nape_geom_ZPP_$PartitionPair.prototype = { next: null, _inuse: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t; return e._inuse = !0, (t = e).next = this.next, this.next = t, this.modified = !0, this.length++, e }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.next; this.next = e.next, e._inuse = !1, null == this.next && (this.pushmod = !0), this.modified = !0, this.length-- }, pop_unsafe: function() { return this.inlined_pop_unsafe() }, inlined_pop_unsafe: function() { var e = this.next; return this.pop(), e }, a: null, b: null, id: null, di: null, node: null, __class__: zpp_$nape_geom_ZPP_$PartitionPair }; var zpp_$nape_geom_ZPP_$Triangular = function() {}; $hxClasses["zpp_nape.geom.ZPP_Triangular"] = zpp_$nape_geom_ZPP_$Triangular, zpp_$nape_geom_ZPP_$Triangular.__name__ = ["zpp_nape", "geom", "ZPP_Triangular"], zpp_$nape_geom_ZPP_$Triangular.right_turn = function(e, t, n) { var i, l; i = n.x - t.x, l = n.y - t.y; var a; return a = t.x - e.x, (t.y - e.y) * i - a * l } , zpp_$nape_geom_ZPP_$Triangular.delaunay = function(e, t, n, i) { var l = 0 , a = 0 , s = 0; return l = n.x - t.x, a = n.y - t.y, s = t.x - e.x, (t.y - e.y) * l - s * a >= 0 || (l = i.x - n.x, a = i.y - n.y, s = n.x - t.x, (n.y - t.y) * l - s * a >= 0) || (l = e.x - i.x, a = e.y - i.y, s = i.x - n.x, (i.y - n.y) * l - s * a >= 0) || (l = t.x - e.x, a = t.y - e.y, s = e.x - i.x, (e.y - i.y) * l - s * a >= 0) || t.x * (n.y * i.mag - n.mag * i.y) - n.x * (t.y * i.mag - t.mag * i.y) + i.x * (t.y * n.mag - t.mag * n.y) - (e.x * (n.y * i.mag - n.mag * i.y) - n.x * (e.y * i.mag - e.mag * i.y) + i.x * (e.y * n.mag - e.mag * n.y)) + (e.x * (t.y * i.mag - t.mag * i.y) - t.x * (e.y * i.mag - e.mag * i.y) + i.x * (e.y * t.mag - e.mag * t.y)) - (e.x * (t.y * n.mag - t.mag * n.y) - t.x * (e.y * n.mag - e.mag * n.y) + n.x * (e.y * t.mag - e.mag * t.y)) > 0 } , zpp_$nape_geom_ZPP_$Triangular.optimise = function(e) { var t, n = e.vertices, i = e.vertices; if (null != n) { var l = n; do { var a = l; a.sort(), a.mag = a.x * a.x + a.y * a.y, l = l.next } while (l != i) } null == zpp_$nape_geom_ZPP_$Triangular.edgeSet && (null == zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionPair.zpp_pool ? zpp_$nape_geom_ZPP_$Triangular.edgeSet = new zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionPair : (zpp_$nape_geom_ZPP_$Triangular.edgeSet = zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionPair.zpp_pool, zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionPair.zpp_pool = zpp_$nape_geom_ZPP_$Triangular.edgeSet.next, zpp_$nape_geom_ZPP_$Triangular.edgeSet.next = null), zpp_$nape_geom_ZPP_$Triangular.edgeSet.lt = zpp_$nape_geom_ZPP_$PartitionPair.edge_lt, zpp_$nape_geom_ZPP_$Triangular.edgeSet.swapped = zpp_$nape_geom_ZPP_$PartitionPair.edge_swap), null == zpp_$nape_geom_ZPP_$PartitionPair.zpp_pool ? t = new zpp_$nape_geom_ZPP_$PartitionPair : (t = zpp_$nape_geom_ZPP_$PartitionPair.zpp_pool, zpp_$nape_geom_ZPP_$PartitionPair.zpp_pool = t.next, t.next = null); var s = e.vertices , r = e.vertices; if (null != s) { var _ = s; do { var o = _ , p = o.next; o.diagonals.reverse(); for (var h = o.diagonals.head; null != h; ) { var d = h.elt; if (d.id < o.id) p = d, h = h.next; else { var u; if (u = null == h.next ? o.prev : h.next.elt, !zpp_$nape_geom_ZPP_$Triangular.delaunay(o, p, d, u)) { var c = zpp_$nape_geom_ZPP_$PartitionPair.get(o, d); t.add(c), c.node = zpp_$nape_geom_ZPP_$Triangular.edgeSet.insert(c) } p = d, h = h.next } } _ = _.next } while (_ != r) } for (; null != t.next; ) { for (var m = t.pop_unsafe(), U = m.a, Q = m.b, N = U.next, F = null, Z = U.diagonals.head; null != Z; ) { var f = Z.elt; if (f == Q) { F = null == (Z = Z.next) ? U.prev : Z.elt; break } N = f, Z = Z.next } if (U.diagonals.remove(Q), Q.diagonals.remove(U), Q == N.next) N.diagonals.add(F); else for (var S = N.diagonals.head; null != S; ) { if (S.elt == Q) { N.diagonals.insert(S, F); break } S = S.next } if (U == F.next) F.diagonals.add(N); else for (var g = F.diagonals.head; null != g; ) { if (g.elt == U) { F.diagonals.insert(g, N); break } g = g.next } zpp_$nape_geom_ZPP_$Triangular.edgeSet.remove_node(m.node); var B = m; B.a = B.b = null, B.node = null, B.next = zpp_$nape_geom_ZPP_$PartitionPair.zpp_pool, zpp_$nape_geom_ZPP_$PartitionPair.zpp_pool = B } var b = t; b.a = b.b = null, b.node = null, b.next = zpp_$nape_geom_ZPP_$PartitionPair.zpp_pool, zpp_$nape_geom_ZPP_$PartitionPair.zpp_pool = b } , zpp_$nape_geom_ZPP_$Triangular.triangulate = function(e) { var t = e.vertices , n = e.vertices , i = e.vertices.next , l = e.vertices; if (null != i) { var a = i; do { var s = a; (s.y < t.y || s.y == t.y && s.x < t.x) && (t = s), (n.y < s.y || n.y == s.y && n.x < s.x) && (n = s), a = a.next } while (a != l) } null == zpp_$nape_geom_ZPP_$Triangular.queue && (zpp_$nape_geom_ZPP_$Triangular.queue = new zpp_$nape_util_ZNPList_$ZPP_$PartitionVertex); var r = n.prev , _ = n.next; for (zpp_$nape_geom_ZPP_$Triangular.queue.add(n); r != t || _ != t; ) r == t || _ != t && (r.y < _.y || r.y == _.y && r.x < _.x) ? (zpp_$nape_geom_ZPP_$Triangular.queue.add(_), _.rightchain = !1, _ = _.next) : (zpp_$nape_geom_ZPP_$Triangular.queue.add(r), r.rightchain = !0, r = r.prev); zpp_$nape_geom_ZPP_$Triangular.queue.add(t), null == zpp_$nape_geom_ZPP_$Triangular.stack && (zpp_$nape_geom_ZPP_$Triangular.stack = new zpp_$nape_util_ZNPList_$ZPP_$PartitionVertex), zpp_$nape_geom_ZPP_$Triangular.stack.add(zpp_$nape_geom_ZPP_$Triangular.queue.pop_unsafe()); var o = zpp_$nape_geom_ZPP_$Triangular.queue.pop_unsafe(); for (zpp_$nape_geom_ZPP_$Triangular.stack.add(o); ; ) { var p = zpp_$nape_geom_ZPP_$Triangular.queue.pop_unsafe(); if (null == zpp_$nape_geom_ZPP_$Triangular.queue.head) break; if (p.rightchain != zpp_$nape_geom_ZPP_$Triangular.stack.head.elt.rightchain) { for (; ; ) { var h = zpp_$nape_geom_ZPP_$Triangular.stack.pop_unsafe(); if (null == zpp_$nape_geom_ZPP_$Triangular.stack.head) break; e.add_diagonal(h, p) } zpp_$nape_geom_ZPP_$Triangular.stack.add(o) } else { for (var d = zpp_$nape_geom_ZPP_$Triangular.stack.pop_unsafe(); null != zpp_$nape_geom_ZPP_$Triangular.stack.head; ) { var u = zpp_$nape_geom_ZPP_$Triangular.stack.head.elt , c = zpp_$nape_geom_ZPP_$Triangular.right_turn(u, d, p); if (p.rightchain && c >= 0 || !p.rightchain && c <= 0) break; e.add_diagonal(u, p), d = u, zpp_$nape_geom_ZPP_$Triangular.stack.pop() } zpp_$nape_geom_ZPP_$Triangular.stack.add(d) } zpp_$nape_geom_ZPP_$Triangular.stack.add(p), o = p } if (null != zpp_$nape_geom_ZPP_$Triangular.stack.head) for (zpp_$nape_geom_ZPP_$Triangular.stack.pop(); null != zpp_$nape_geom_ZPP_$Triangular.stack.head; ) { var m = zpp_$nape_geom_ZPP_$Triangular.stack.pop_unsafe(); if (null == zpp_$nape_geom_ZPP_$Triangular.stack.head) break; e.add_diagonal(n, m) } return e } ; var zpp_$nape_geom_ZPP_$Vec2 = function() { this.y = 0, this.x = 0, this.length = 0, this.pushmod = !1, this.modified = !1, this._inuse = !1, this.next = null, this.weak = !1, this.outer = null, this._isimmutable = null, this._immutable = !1, this._validate = null, this._invalidate = null }; $hxClasses["zpp_nape.geom.ZPP_Vec2"] = zpp_$nape_geom_ZPP_$Vec2, zpp_$nape_geom_ZPP_$Vec2.__name__ = ["zpp_nape", "geom", "ZPP_Vec2"], zpp_$nape_geom_ZPP_$Vec2.get = function(e, t, n) { var i; return null == n && (n = !1), null == zpp_$nape_geom_ZPP_$Vec2.zpp_pool ? i = new zpp_$nape_geom_ZPP_$Vec2 : (i = zpp_$nape_geom_ZPP_$Vec2.zpp_pool, zpp_$nape_geom_ZPP_$Vec2.zpp_pool = i.next, i.next = null), i.weak = !1, i._immutable = n, i.x = e, i.y = t, i } , zpp_$nape_geom_ZPP_$Vec2.prototype = { _invalidate: null, _validate: null, validate: function() { null != this._validate && this._validate() }, invalidate: function() { null != this._invalidate && this._invalidate(this) }, _immutable: null, _isimmutable: null, outer: null, wrapper: function() { if (null == this.outer) { this.outer = new nape_geom_Vec2; var e = this.outer.zpp_inner; null != e.outer && (e.outer.zpp_inner = null, e.outer = null), e._isimmutable = null, e._validate = null, e._invalidate = null, e.next = zpp_$nape_geom_ZPP_$Vec2.zpp_pool, zpp_$nape_geom_ZPP_$Vec2.zpp_pool = e, this.outer.zpp_inner = this } return this.outer }, weak: null, next: null, _inuse: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t; return e._inuse = !0, (t = e).next = this.next, this.next = t, this.modified = !0, this.length++, e }, insert: function(e, t) { return this.inlined_insert(e, t) }, inlined_insert: function(e, t) { var n; return t._inuse = !0, n = t, null == e ? (n.next = this.next, this.next = n) : (n.next = e.next, e.next = n), this.pushmod = this.modified = !0, this.length++, n }, erase: function(e) { return this.inlined_erase(e) }, inlined_erase: function(e) { var t, n; return null == e ? (n = (t = this.next).next, this.next = n, null == this.next && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)), t._inuse = !1, this.modified = !0, this.length--, this.pushmod = !0, n }, reverse: function() { for (var e = this.next, t = null; null != e; ) { var n = e.next; e.next = t, this.next = e, t = e, e = n } this.modified = !0, this.pushmod = !0 }, iterator_at: function(e) { for (var t = this.next; e-- > 0 && null != t; ) t = t.next; return t }, x: null, y: null, toString: function() { return "{ x: " + this.x + " y: " + this.y + " }" }, __class__: zpp_$nape_geom_ZPP_$Vec2 }; var zpp_$nape_geom_ZPP_$Vec3 = function() { this._validate = null, this.immutable = !1, this.z = 0, this.y = 0, this.x = 0, this.outer = null, this.immutable = !1, this._validate = null }; $hxClasses["zpp_nape.geom.ZPP_Vec3"] = zpp_$nape_geom_ZPP_$Vec3, zpp_$nape_geom_ZPP_$Vec3.__name__ = ["zpp_nape", "geom", "ZPP_Vec3"], zpp_$nape_geom_ZPP_$Vec3.prototype = { outer: null, x: null, y: null, z: null, immutable: null, _validate: null, validate: function() { null != this._validate && this._validate() }, __class__: zpp_$nape_geom_ZPP_$Vec3 }; var zpp_$nape_geom_ZPP_$VecMath = function() {}; $hxClasses["zpp_nape.geom.ZPP_VecMath"] = zpp_$nape_geom_ZPP_$VecMath, zpp_$nape_geom_ZPP_$VecMath.__name__ = ["zpp_nape", "geom", "ZPP_VecMath"], zpp_$nape_geom_ZPP_$VecMath.vec_dsq = function(e, t, n, i) { var l, a; return (l = e - n) * l + (a = t - i) * a } ; var zpp_$nape_phys_ZPP_$Interactor = function() { this.wrap_cbTypes = null, this.cbSet = null, this.cbTypes = null, this.group = null, this.cbsets = null, this.icompound = null, this.ibody = null, this.ishape = null, this.userData = null, this.id = 0, this.outer_i = null, this.id = zpp_$nape_ZPP_$ID.Interactor(), this.cbsets = new zpp_$nape_util_ZNPList_$ZPP_$CallbackSet, this.cbTypes = new zpp_$nape_util_ZNPList_$ZPP_$CbType }; $hxClasses["zpp_nape.phys.ZPP_Interactor"] = zpp_$nape_phys_ZPP_$Interactor, zpp_$nape_phys_ZPP_$Interactor.__name__ = ["zpp_nape", "phys", "ZPP_Interactor"], zpp_$nape_phys_ZPP_$Interactor.get = function(e, t) { var n, i; n = e.id < t.id ? e.id : t.id, i = e.id < t.id ? t.id : e.id; for (var l = null, a = (e.cbsets.length < t.cbsets.length ? e.cbsets : t.cbsets).head; null != a; ) { var s = a.elt; if (s.id == n && s.di == i) { l = s; break } a = a.next } return l } , zpp_$nape_phys_ZPP_$Interactor.int_callback = function(e, t, n) { var i = e.int1 , l = e.int2; t.options1.compatible(i.cbTypes) && t.options2.compatible(l.cbTypes) ? (n.int1 = i, n.int2 = l) : (n.int1 = l, n.int2 = i) } , zpp_$nape_phys_ZPP_$Interactor.prototype = { outer_i: null, id: null, userData: null, ishape: null, ibody: null, icompound: null, __iaddedToSpace: function() { null != this.group && this.group.interactors.add(this); for (var e = this.cbTypes.head; null != e; ) { e.elt.interactors.add(this), e = e.next } this.alloc_cbSet() }, __iremovedFromSpace: function() { null != this.group && this.group.interactors.remove(this); for (var e = this.cbTypes.head; null != e; ) { e.elt.interactors.remove(this), e = e.next } this.dealloc_cbSet() }, wake: function() { if (null != this.ishape) { var e = this.ishape.body; null != e && null != e.space && e.space.non_inlined_wake(e) } else null != this.ibody ? null != this.ibody.space && this.ibody.space.non_inlined_wake(this.ibody) : null != this.icompound.space && this.icompound.space.wakeCompound(this.icompound) }, cbsets: null, group: null, cbTypes: null, cbSet: null, wrap_cbTypes: null, setupcbTypes: function() { this.wrap_cbTypes = zpp_$nape_util_ZPP_$CbTypeList.get(this.cbTypes), this.wrap_cbTypes.zpp_inner.adder = $bind(this, this.wrap_cbTypes_adder), this.wrap_cbTypes.zpp_inner.subber = $bind(this, this.wrap_cbTypes_subber), this.wrap_cbTypes.zpp_inner.dontremove = !0 }, wrap_cbTypes_subber: function(e) { var t, n = e.zpp_inner; this.cbTypes.has(n) && (null != (t = null != this.ishape ? null == this.ishape.body ? null : this.ishape.body.space : null != this.ibody ? this.ibody.space : this.icompound.space) && (this.dealloc_cbSet(), n.interactors.remove(this)), this.cbTypes.remove(n), null != t && (this.alloc_cbSet(), this.wake())) }, wrap_cbTypes_adder: function(e) { return this.insert_cbtype(e.zpp_inner), !1 }, insert_cbtype: function(e) { if (!this.cbTypes.has(e)) { var t; null != (t = null != this.ishape ? null == this.ishape.body ? null : this.ishape.body.space : null != this.ibody ? this.ibody.space : this.icompound.space) && (this.dealloc_cbSet(), e.interactors.add(this)); for (var n = null, i = this.cbTypes.head; null != i; ) { var l = i.elt; if (e.id < l.id) break; n = i, i = i.next } this.cbTypes.inlined_insert(n, e), null != t && (this.alloc_cbSet(), this.wake()) } }, alloc_cbSet: function() { var e; e = null != this.ishape ? null == this.ishape.body ? null : this.ishape.body.space : null != this.ibody ? this.ibody.space : this.icompound.space, null != (this.cbSet = e.cbsets.get(this.cbTypes)) && (this.cbSet.count++, this.cbSet.interactors.add(this), this.cbSet.validate(), e.freshInteractorType(this)) }, dealloc_cbSet: function() { var e; if (e = null != this.ishape ? null == this.ishape.body ? null : this.ishape.body.space : null != this.ibody ? this.ibody.space : this.icompound.space, null != this.cbSet) { if (this.cbSet.interactors.remove(this), e.nullInteractorType(this), 0 == --this.cbSet.count) { e.cbsets.remove(this.cbSet); var t = this.cbSet; t.free(), t.next = zpp_$nape_callbacks_ZPP_$CbSet.zpp_pool, zpp_$nape_callbacks_ZPP_$CbSet.zpp_pool = t } this.cbSet = null } }, setGroup: function(e) { var t; this.group != e && ((t = null != (null != this.ishape ? null == this.ishape.body ? null : this.ishape.body.space : null != this.ibody ? this.ibody.space : this.icompound.space)) && null != this.group && this.group.interactors.remove(this), this.group = e, t && null != e && e.interactors.add(this), t && (null != this.ishape ? this.ishape.body.wake() : null != this.ibody ? this.ibody.wake() : this.icompound.wake())) }, immutable_midstep: function(e) { null != this.ibody || (null != this.ishape ? this.ishape.__immutable_midstep(e) : this.icompound.__imutable_midstep(e)) }, lookup_group: function() { for (var e = this; null != e && null == e.group; ) e = null != e.ishape ? e.ishape.body : null != e.icompound ? e.icompound.compound : e.ibody.compound; return null == e ? null : e.group }, __class__: zpp_$nape_phys_ZPP_$Interactor }; var zpp_$nape_phys_ZPP_$Body = function() { this.wrap_worldCOM = null, this.wrap_localCOM = null, this.zip_worldCOM = !1, this.worldCOMy = 0, this.worldCOMx = 0, this.zip_localCOM = !1, this.localCOMy = 0, this.localCOMx = 0, this.zip_aabb = !1, this.aabb = null, this.norotate = !1, this.sinertia = 0, this.iinertia = 0, this.cinertia = 0, this.zip_inertia = !1, this.inertia = 0, this.inertiaMode = 0, this.zip_gravMassScale = !1, this.gravMassScale = 0, this.gravMassMode = 0, this.zip_gravMass = !1, this.gravMass = 0, this.nomove = !1, this.cmass = 0, this.smass = 0, this.imass = 0, this.massMode = 0, this.zip_mass = !1, this.mass = 0, this.zip_axis = !1, this.axisy = 0, this.axisx = 0, this.rot = 0, this.pre_rot = 0, this.kinangvel = 0, this.torque = 0, this.angvel = 0, this.svely = 0, this.svelx = 0, this.wrap_kinvel = null, this.kinvely = 0, this.kinvelx = 0, this.forcey = 0, this.forcex = 0, this.wrap_vel = null, this.vely = 0, this.velx = 0, this.wrap_pos = null, this.posy = 0, this.posx = 0, this.pre_posy = 0, this.pre_posx = 0, this.disableCCD = !1, this.bulletEnabled = !1, this.bullet = !1, this.sweepRadius = 0, this.sweepFrozen = !1, this.sweep_angvel = 0, this.sweepTime = 0, this.component = null, this.wrap_constraints = null, this.constraints = null, this.wrap_arbiters = null, this.arbiters = null, this.space = null, this.wrap_shapes = null, this.shapes = null, this.compound = null, this.type = 0, this.world = !1, this.outer = null, zpp_$nape_phys_ZPP_$Interactor.call(this), this.ibody = this, this.world = !1, this.bulletEnabled = !1, this.sweepTime = 0, this.sweep_angvel = 0, this.norotate = this.nomove = !1, this.disableCCD = !1, this.posx = 0, this.posy = 0, this.rot = 0, this.axisx = 0, this.axisy = 1, this.svelx = 0, this.svely = 0, this.velx = 0, this.vely = 0, this.kinvelx = 0, this.kinvely = 0, this.forcex = 0, this.forcey = 0, this.torque = this.angvel = this.kinangvel = 0, this.pre_posx = 1 / 0, this.pre_posy = 1 / 0, this.pre_rot = 1 / 0, this.localCOMx = 0, this.localCOMy = 0, this.worldCOMx = 0, this.worldCOMy = 0, this.zip_aabb = !0, this.aabb = zpp_$nape_geom_ZPP_$AABB.get(0, 0, 0, 0), this.aabb._immutable = !0; this.aabb._validate = $bind(this, this.aabb_validate), this.massMode = 0, this.gravMassMode = 0, this.gravMassScale = 1, this.inertiaMode = 0, this.arbiters = new zpp_$nape_util_ZNPList_$ZPP_$Arbiter, this.constraints = new zpp_$nape_util_ZNPList_$ZPP_$Constraint, this.shapes = new zpp_$nape_util_ZNPList_$ZPP_$Shape, this.wrap_shapes = zpp_$nape_util_ZPP_$ShapeList.get(this.shapes), this.wrap_shapes.zpp_inner.adder = $bind(this, this.shapes_adder), this.wrap_shapes.zpp_inner.subber = $bind(this, this.shapes_subber), this.wrap_shapes.zpp_inner._invalidate = $bind(this, this.shapes_invalidate), this.kinematicDelaySleep = !1 }; $hxClasses["zpp_nape.phys.ZPP_Body"] = zpp_$nape_phys_ZPP_$Body, zpp_$nape_phys_ZPP_$Body.__name__ = ["zpp_nape", "phys", "ZPP_Body"], zpp_$nape_phys_ZPP_$Body.__static = function() { var e = new nape_phys_Body((null == zpp_$nape_util_ZPP_$Flags.BodyType_STATIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_STATIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.BodyType_STATIC)) , t = e.zpp_inner; return t.world = !0, t.wrap_shapes.zpp_inner.immutable = !0, t.smass = t.imass = t.cmass = t.mass = t.gravMass = 0, t.sinertia = t.iinertia = t.cinertia = t.inertia = 0, t.cbTypes.clear(), e } , zpp_$nape_phys_ZPP_$Body.__super__ = zpp_$nape_phys_ZPP_$Interactor, zpp_$nape_phys_ZPP_$Body.prototype = $extend(zpp_$nape_phys_ZPP_$Interactor.prototype, { outer: null, world: null, type: null, invalidate_type: function() { this.invalidate_mass(), this.invalidate_inertia() }, compound: null, shapes: null, wrap_shapes: null, invalidate_shapes: function() { this.zip_aabb = !0, this.zip_localCOM = !0, this.zip_worldCOM = !0, this.invalidate_mass(), this.invalidate_inertia() }, space: null, arbiters: null, wrap_arbiters: null, constraints: null, wrap_constraints: null, component: null, atRest: function(e) { if (2 != this.type) return this.component.sleeping; var t, n = nape_Config.linearSleepThreshold; if (n *= n, this.velx * this.velx + this.vely * this.vely > n) t = !1; else if (zpp_$nape_geom_ZPP_$VecMath.vec_dsq(this.posx, this.posy, this.pre_posx, this.pre_posy) > .25 * n * e * e) t = !1; else { var i, l, a = (i = this.aabb.maxx - this.aabb.minx) * i + (l = this.aabb.maxy - this.aabb.miny) * l, s = nape_Config.angularSleepThreshold; if (s *= s, 4 * this.angvel * this.angvel * a > s) t = !1; else { var r = this.rot - this.pre_rot; t = !(r * r * a > s * e * e) } } return t || (this.component.waket = this.space.stamp), this.component.waket + nape_Config.sleepDelay < this.space.stamp }, refreshArbiters: function() { for (var e = this.arbiters.head; null != e; ) { e.elt.invalidated = !0, e = e.next } }, sweepTime: null, sweep_angvel: null, sweepFrozen: null, sweepRadius: null, bullet: null, bulletEnabled: null, disableCCD: null, sweepIntegrate: function(e) { var t = e - this.sweepTime; if (0 != t) { this.sweepTime = e; var n = t; this.posx += this.velx * n, this.posy += this.vely * n, 0 != this.angvel && this.delta_rot(this.sweep_angvel * t) } }, sweepValidate: function(e) { if (0 == e.type) e.worldCOMx = this.posx + (this.axisy * e.localCOMx - this.axisx * e.localCOMy), e.worldCOMy = this.posy + (e.localCOMx * this.axisx + e.localCOMy * this.axisy); else { for (var t = e.polygon, n = t.lverts.next, i = t.gverts.next; null != i; ) { var l = i , a = n; n = n.next, l.x = this.posx + (this.axisy * a.x - this.axisx * a.y), l.y = this.posy + (a.x * this.axisx + a.y * this.axisy), i = i.next } var s = t.edges.head , r = t.gverts.next , _ = r; for (r = r.next; null != r; ) { var o = r , p = s.elt; s = s.next, p.gnormx = this.axisy * p.lnormx - this.axisx * p.lnormy, p.gnormy = p.lnormx * this.axisx + p.lnormy * this.axisy, p.gprojection = this.posx * p.gnormx + this.posy * p.gnormy + p.lprojection, p.tp0 = _.y * p.gnormx - _.x * p.gnormy, p.tp1 = o.y * p.gnormx - o.x * p.gnormy, _ = o, r = r.next } var h = t.gverts.next , d = s.elt; s = s.next, d.gnormx = this.axisy * d.lnormx - this.axisx * d.lnormy, d.gnormy = d.lnormx * this.axisx + d.lnormy * this.axisy, d.gprojection = this.posx * d.gnormx + this.posy * d.gnormy + d.lprojection, d.tp0 = _.y * d.gnormx - _.x * d.gnormy, d.tp1 = h.y * d.gnormx - h.x * d.gnormy } }, pre_posx: null, pre_posy: null, posx: null, posy: null, wrap_pos: null, velx: null, vely: null, wrap_vel: null, forcex: null, forcey: null, kinvelx: null, kinvely: null, wrap_kinvel: null, svelx: null, svely: null, invalidate_pos: function() { for (var e = this.shapes.head; null != e; ) { var t = e.elt; 1 == t.type && (t.polygon.invalidate_gverts(), t.polygon.invalidate_gaxi()), t.invalidate_worldCOM(), e = e.next } this.zip_worldCOM = !0 }, pos_invalidate: function(e) { this.immutable_midstep("Body::position"), this.posx == e.x && this.posy == e.y || (this.posx = e.x, this.posy = e.y, this.invalidate_pos(), this.wake()) }, pos_validate: function() { this.wrap_pos.zpp_inner.x = this.posx, this.wrap_pos.zpp_inner.y = this.posy }, vel_invalidate: function(e) { this.velx = e.x, this.vely = e.y, this.wake() }, vel_validate: function() { this.wrap_vel.zpp_inner.x = this.velx, this.wrap_vel.zpp_inner.y = this.vely }, kinvel_invalidate: function(e) { this.kinvelx = e.x, this.kinvely = e.y, this.wake() }, kinvel_validate: function() { this.wrap_kinvel.zpp_inner.x = this.kinvelx, this.wrap_kinvel.zpp_inner.y = this.kinvely }, setupPosition: function() { this.wrap_pos = nape_geom_Vec2.get(this.posx, this.posy, null), this.wrap_pos.zpp_inner._inuse = !0, this.world ? this.wrap_pos.zpp_inner._immutable = !0 : (this.wrap_pos.zpp_inner._invalidate = $bind(this, this.pos_invalidate), this.wrap_pos.zpp_inner._validate = $bind(this, this.pos_validate)) }, setupVelocity: function() { this.wrap_vel = nape_geom_Vec2.get(this.velx, this.vely, null), this.wrap_vel.zpp_inner._inuse = !0, this.world ? this.wrap_vel.zpp_inner._immutable = !0 : (this.wrap_vel.zpp_inner._invalidate = $bind(this, this.vel_invalidate), this.wrap_vel.zpp_inner._validate = $bind(this, this.vel_validate)) }, setupkinvel: function() { this.wrap_kinvel = nape_geom_Vec2.get(this.kinvelx, this.kinvely, null), this.wrap_kinvel.zpp_inner._inuse = !0, this.world ? this.wrap_kinvel.zpp_inner._immutable = !0 : (this.wrap_kinvel.zpp_inner._invalidate = $bind(this, this.kinvel_invalidate), this.wrap_kinvel.zpp_inner._validate = $bind(this, this.kinvel_validate)) }, angvel: null, torque: null, kinangvel: null, pre_rot: null, rot: null, invalidate_rot: function() { this.zip_axis = !0; for (var e = this.shapes.head; null != e; ) { var t = e.elt; 1 == t.type && (t.polygon.invalidate_gverts(), t.polygon.invalidate_gaxi()), t.invalidate_worldCOM(), e = e.next } this.zip_worldCOM = !0 }, axisx: null, axisy: null, zip_axis: null, validate_axis: function() { this.zip_axis && (this.zip_axis = !1, this.axisx = Math.sin(this.rot), this.axisy = Math.cos(this.rot)) }, delta_rot: function(e) { if (this.rot += e, e * e > 1e-4) this.axisx = Math.sin(this.rot), this.axisy = Math.cos(this.rot); else { var t = e * e , n = 1 - .5 * t , i = 1 - t * t / 8 , l = (n * this.axisx + e * this.axisy) * i; this.axisy = (n * this.axisy - e * this.axisx) * i, this.axisx = l } }, kinematicDelaySleep: null, mass: null, zip_mass: null, massMode: null, imass: null, smass: null, cmass: null, nomove: null, invalidate_mass: function() { this.zip_mass = !0, this.invalidate_gravMass() }, validate_mass: function() { if (this.zip_mass || (this.massMode, 0)) { if (this.zip_mass = !1, 0 == this.massMode) { this.cmass = 0; for (var e = this.shapes.head; null != e; ) { var t = e.elt; t.refmaterial.density = t.material.density, t.validate_area_inertia(), this.cmass += t.area * t.material.density, e = e.next } } 2 != this.type || this.nomove ? (this.mass = 1 / 0, this.imass = this.smass = 0) : (this.mass = this.cmass, this.imass = this.smass = 1 / this.mass) } }, gravMass: null, zip_gravMass: null, gravMassMode: null, gravMassScale: null, zip_gravMassScale: null, invalidate_gravMass: function() { 1 != this.gravMassMode && (this.zip_gravMass = !0), 2 != this.gravMassMode && (this.zip_gravMassScale = !0), this.wake() }, validate_gravMass: function() { this.zip_gravMass && (this.zip_gravMass = !1, this.validate_mass(), 0 == this.gravMassMode ? (this.validate_mass(), this.gravMass = this.cmass) : 2 == this.gravMassMode && (this.validate_mass(), this.gravMass = this.cmass * this.gravMassScale)) }, inertiaMode: null, inertia: null, zip_inertia: null, cinertia: null, iinertia: null, sinertia: null, norotate: null, invalidate_inertia: function() { this.zip_inertia = !0, this.wake() }, validate_inertia: function() { if (this.zip_inertia || (this.inertiaMode, 0)) { if (this.zip_inertia = !1, 0 == this.inertiaMode) { this.cinertia = 0; for (var e = this.shapes.head; null != e; ) { var t = e.elt; t.refmaterial.density = t.material.density, t.validate_area_inertia(), this.cinertia += t.inertia * t.area * t.material.density, e = e.next } } 2 != this.type || this.norotate ? (this.inertia = 1 / 0, this.sinertia = this.iinertia = 0) : (this.inertia = this.cinertia, this.sinertia = this.iinertia = 1 / this.inertia) } }, aabb: null, zip_aabb: null, validate_aabb: function() { if (this.zip_aabb) { this.zip_aabb = !1, this.aabb.minx = 1 / 0, this.aabb.miny = 1 / 0, this.aabb.maxx = -1 / 0, this.aabb.maxy = -1 / 0; for (var e = this.shapes.head; null != e; ) { var t = e.elt; t.zip_aabb && null != t.body && (t.zip_aabb = !1, 0 == t.type ? t.circle.__validate_aabb() : t.polygon.__validate_aabb()), this.aabb.combine(t.aabb), e = e.next } } }, localCOMx: null, localCOMy: null, zip_localCOM: null, worldCOMx: null, worldCOMy: null, zip_worldCOM: null, wrap_localCOM: null, wrap_worldCOM: null, invalidate_localCOM: function() { this.zip_localCOM = !0, this.zip_worldCOM = !0 }, validate_localCOM: function() { if (this.zip_localCOM) { this.zip_localCOM = !1; for (var e = 0, t = 0, n = 0, i = this.shapes.head; null != i; ) { var l = i.elt; l.zip_localCOM && (l.zip_localCOM = !1, 1 == l.type && l.polygon.__validate_localCOM(), null != l.wrap_localCOM && (l.wrap_localCOM.zpp_inner.x = l.localCOMx, l.wrap_localCOM.zpp_inner.y = l.localCOMy)), l.validate_area_inertia(); var a = l.area * l.material.density; e += l.localCOMx * a, t += l.localCOMy * a, n += l.area * l.material.density, i = i.next } if (0 != n) { var s = 1 / n; this.localCOMx = e * s, this.localCOMy = t * s } null != this.wrap_localCOM && (this.wrap_localCOM.zpp_inner.x = this.localCOMx, this.wrap_localCOM.zpp_inner.y = this.localCOMy), this.zip_mass && 0 == this.massMode && (this.zip_mass = !1, this.cmass = n, 2 == this.type ? (this.mass = this.cmass, this.imass = this.smass = 1 / this.mass) : (this.mass = 1 / 0, this.imass = this.smass = 0)) } }, validate_worldCOM: function() { this.zip_worldCOM && (this.zip_worldCOM = !1, this.validate_localCOM(), this.zip_axis && (this.zip_axis = !1, this.axisx = Math.sin(this.rot), this.axisy = Math.cos(this.rot)), this.worldCOMx = this.posx + (this.axisy * this.localCOMx - this.axisx * this.localCOMy), this.worldCOMy = this.posy + (this.localCOMx * this.axisx + this.localCOMy * this.axisy), null != this.wrap_worldCOM && (this.wrap_worldCOM.zpp_inner.x = this.worldCOMx, this.wrap_worldCOM.zpp_inner.y = this.worldCOMy)) }, getlocalCOM: function() { this.validate_localCOM() }, getworldCOM: function() { this.validate_worldCOM() }, aabb_validate: function() { this.validate_aabb() }, shapes_adder: function(e) { return e.zpp_inner.body != this && (null != e.zpp_inner.body && e.zpp_inner.body.wrap_shapes.remove(e), e.zpp_inner.body = this, e.zpp_inner.addedToBody(), null != this.space && this.space.added_shape(e.zpp_inner, null), 1 == e.zpp_inner.type && (e.zpp_inner.polygon.invalidate_gaxi(), e.zpp_inner.polygon.invalidate_gverts()), !0) }, shapes_subber: function(e) { null != this.space && this.space.removed_shape(e.zpp_inner), e.zpp_inner.body = null, e.zpp_inner.removedFromBody() }, shapes_invalidate: function(e) { this.invalidate_shapes() }, addedToSpace: function() { null == zpp_$nape_space_ZPP_$Component.zpp_pool ? this.component = new zpp_$nape_space_ZPP_$Component : (this.component = zpp_$nape_space_ZPP_$Component.zpp_pool, zpp_$nape_space_ZPP_$Component.zpp_pool = this.component.next, this.component.next = null), this.component.isBody = !0, this.component.body = this, this.__iaddedToSpace() }, removedFromSpace: function() { for (; null != this.arbiters.head; ) { var e = this.arbiters.pop_unsafe(); e.cleared = !0, e.b2 == this && e.b1.arbiters.inlined_try_remove(e), e.b1 == this && e.b2.arbiters.inlined_try_remove(e), null != e.pair && (e.pair.arb = null, e.pair = null), e.active = !1, this.space.f_arbiters.modified = !0 } var t = this.component; t.body = null, t.constraint = null, t.next = zpp_$nape_space_ZPP_$Component.zpp_pool, zpp_$nape_space_ZPP_$Component.zpp_pool = t, this.component = null, this.__iremovedFromSpace() }, __class__: zpp_$nape_phys_ZPP_$Body }); var zpp_$nape_phys_ZPP_$Compound = function() { this.space = null, this.compound = null, this.depth = 0, this.wrap_compounds = null, this.wrap_constraints = null, this.wrap_bodies = null, this.compounds = null, this.constraints = null, this.bodies = null, this.outer = null, zpp_$nape_phys_ZPP_$Interactor.call(this), this.icompound = this, this.depth = 1; this.bodies = new zpp_$nape_util_ZNPList_$ZPP_$Body, this.wrap_bodies = zpp_$nape_util_ZPP_$BodyList.get(this.bodies), this.wrap_bodies.zpp_inner.adder = $bind(this, this.bodies_adder), this.wrap_bodies.zpp_inner.subber = $bind(this, this.bodies_subber), this.constraints = new zpp_$nape_util_ZNPList_$ZPP_$Constraint, this.wrap_constraints = zpp_$nape_util_ZPP_$ConstraintList.get(this.constraints), this.wrap_constraints.zpp_inner.adder = $bind(this, this.constraints_adder), this.wrap_constraints.zpp_inner.subber = $bind(this, this.constraints_subber), this.compounds = new zpp_$nape_util_ZNPList_$ZPP_$Compound, this.wrap_compounds = zpp_$nape_util_ZPP_$CompoundList.get(this.compounds), this.wrap_compounds.zpp_inner.adder = $bind(this, this.compounds_adder), this.wrap_compounds.zpp_inner.subber = $bind(this, this.compounds_subber) }; $hxClasses["zpp_nape.phys.ZPP_Compound"] = zpp_$nape_phys_ZPP_$Compound, zpp_$nape_phys_ZPP_$Compound.__name__ = ["zpp_nape", "phys", "ZPP_Compound"], zpp_$nape_phys_ZPP_$Compound.__super__ = zpp_$nape_phys_ZPP_$Interactor, zpp_$nape_phys_ZPP_$Compound.prototype = $extend(zpp_$nape_phys_ZPP_$Interactor.prototype, { outer: null, bodies: null, constraints: null, compounds: null, wrap_bodies: null, wrap_constraints: null, wrap_compounds: null, depth: null, compound: null, space: null, __imutable_midstep: function(e) {}, addedToSpace: function() { this.__iaddedToSpace() }, removedFromSpace: function() { this.__iremovedFromSpace() }, bodies_adder: function(e) { return e.zpp_inner.compound != this && (null != e.zpp_inner.compound ? e.zpp_inner.compound.wrap_bodies.remove(e) : null != e.zpp_inner.space && e.zpp_inner.space.wrap_bodies.remove(e), e.zpp_inner.compound = this, null != this.space && this.space.addBody(e.zpp_inner), !0) }, bodies_subber: function(e) { e.zpp_inner.compound = null, null != this.space && this.space.remBody(e.zpp_inner) }, constraints_adder: function(e) { return e.zpp_inner.compound != this && (null != e.zpp_inner.compound ? e.zpp_inner.compound.wrap_constraints.remove(e) : null != e.zpp_inner.space && e.zpp_inner.space.wrap_constraints.remove(e), e.zpp_inner.compound = this, null != this.space && this.space.addConstraint(e.zpp_inner), !0) }, constraints_subber: function(e) { e.zpp_inner.compound = null, null != this.space && this.space.remConstraint(e.zpp_inner) }, compounds_adder: function(e) { return e.zpp_inner.compound != this && (null != e.zpp_inner.compound ? e.zpp_inner.compound.wrap_compounds.remove(e) : null != e.zpp_inner.space && e.zpp_inner.space.wrap_compounds.remove(e), e.zpp_inner.compound = this, e.zpp_inner.depth = this.depth + 1, null != this.space && this.space.addCompound(e.zpp_inner), !0) }, compounds_subber: function(e) { e.zpp_inner.compound = null, e.zpp_inner.depth = 1, null != this.space && this.space.remCompound(e.zpp_inner) }, __class__: zpp_$nape_phys_ZPP_$Compound }); var zpp_$nape_phys_ZPP_$FluidProperties = function() { this.wrap_gravity = null, this.gravityy = 0, this.gravityx = 0, this.density = 0, this.viscosity = 0, this.shapes = null, this.outer = null, this.next = null, this.shapes = new zpp_$nape_util_ZNPList_$ZPP_$Shape, this.density = this.viscosity = 1, this.wrap_gravity = null, this.gravityx = 0, this.gravityy = 0 }; $hxClasses["zpp_nape.phys.ZPP_FluidProperties"] = zpp_$nape_phys_ZPP_$FluidProperties, zpp_$nape_phys_ZPP_$FluidProperties.__name__ = ["zpp_nape", "phys", "ZPP_FluidProperties"], zpp_$nape_phys_ZPP_$FluidProperties.prototype = { next: null, outer: null, wrapper: function() { if (null == this.outer) { this.outer = new nape_phys_FluidProperties; var e = this.outer.zpp_inner; e.outer = null, e.next = zpp_$nape_phys_ZPP_$FluidProperties.zpp_pool, zpp_$nape_phys_ZPP_$FluidProperties.zpp_pool = e, this.outer.zpp_inner = this } return this.outer }, shapes: null, viscosity: null, density: null, gravityx: null, gravityy: null, wrap_gravity: null, invalidate: function() { for (var e = this.shapes.head; null != e; ) { e.elt.invalidate_fluidprops(), e = e.next } }, __class__: zpp_$nape_phys_ZPP_$FluidProperties }; var zpp_$nape_phys_ZPP_$Material = function() { this.rollingFriction = 0, this.elasticity = 0, this.density = 0, this.staticFriction = 0, this.dynamicFriction = 0, this.shapes = null, this.outer = null, this.next = null, this.shapes = new zpp_$nape_util_ZNPList_$ZPP_$Shape, this.elasticity = 0, this.dynamicFriction = 1, this.staticFriction = 2, this.density = .001, this.rollingFriction = .01 }; $hxClasses["zpp_nape.phys.ZPP_Material"] = zpp_$nape_phys_ZPP_$Material, zpp_$nape_phys_ZPP_$Material.__name__ = ["zpp_nape", "phys", "ZPP_Material"], zpp_$nape_phys_ZPP_$Material.prototype = { next: null, outer: null, wrapper: function() { if (null == this.outer) { this.outer = new nape_phys_Material; var e = this.outer.zpp_inner; e.outer = null, e.next = zpp_$nape_phys_ZPP_$Material.zpp_pool, zpp_$nape_phys_ZPP_$Material.zpp_pool = e, this.outer.zpp_inner = this } return this.outer }, shapes: null, dynamicFriction: null, staticFriction: null, density: null, elasticity: null, rollingFriction: null, set: function(e) { this.dynamicFriction = e.dynamicFriction, this.staticFriction = e.staticFriction, this.density = e.density, this.elasticity = e.elasticity, this.rollingFriction = e.rollingFriction }, invalidate: function(e) { for (var t = this.shapes.head; null != t; ) { t.elt.invalidate_material(e), t = t.next } }, __class__: zpp_$nape_phys_ZPP_$Material }; var zpp_$nape_shape_ZPP_$Shape = function(e) { this.zip_aabb = !1, this.aabb = null, this.pairs = null, this.node = null, this.sweep = null, this.sensorEnabled = !1, this.fluidEnabled = !1, this.fluidProperties = null, this.filter = null, this.material = null, this.refmaterial = null, this.polygon = null, this.circle = null, this.sweepCoef = 0, this.zip_sweepRadius = !1, this.sweepRadius = 0, this.wrap_localCOM = null, this.zip_worldCOM = !1, this.worldCOMy = 0, this.worldCOMx = 0, this.zip_localCOM = !1, this.localCOMy = 0, this.localCOMx = 0, this.zip_angDrag = !1, this.angDrag = 0, this.inertia = 0, this.zip_area_inertia = !1, this.area = 0, this.type = 0, this.body = null, this.outer = null, zpp_$nape_phys_ZPP_$Interactor.call(this), this.pairs = new zpp_$nape_util_ZNPList_$ZPP_$AABBPair, this.ishape = this, this.type = e, this.aabb = zpp_$nape_geom_ZPP_$AABB.get(0, 0, 0, 0), this.aabb._immutable = !0; this.aabb._validate = $bind(this, this.aabb_validate), this.zip_area_inertia = this.zip_angDrag = this.zip_localCOM = this.zip_sweepRadius = !0, this.localCOMx = 0, this.localCOMy = 0, this.worldCOMx = 0, this.worldCOMy = 0, this.fluidEnabled = !1, this.sensorEnabled = !1, this.fluidProperties = null, this.body = null, this.refmaterial = new zpp_$nape_phys_ZPP_$Material, this.sweepRadius = this.sweepCoef = 0 }; $hxClasses["zpp_nape.shape.ZPP_Shape"] = zpp_$nape_shape_ZPP_$Shape, zpp_$nape_shape_ZPP_$Shape.__name__ = ["zpp_nape", "shape", "ZPP_Shape"], zpp_$nape_shape_ZPP_$Shape.__super__ = zpp_$nape_phys_ZPP_$Interactor, zpp_$nape_shape_ZPP_$Shape.prototype = $extend(zpp_$nape_phys_ZPP_$Interactor.prototype, { outer: null, body: null, type: null, area: null, zip_area_inertia: null, inertia: null, angDrag: null, zip_angDrag: null, localCOMx: null, localCOMy: null, zip_localCOM: null, worldCOMx: null, worldCOMy: null, zip_worldCOM: null, wrap_localCOM: null, sweepRadius: null, zip_sweepRadius: null, sweepCoef: null, validate_sweepRadius: function() { this.zip_sweepRadius && (this.zip_sweepRadius = !1, 0 == this.type ? this.circle.__validate_sweepRadius() : this.polygon.__validate_sweepRadius()) }, circle: null, polygon: null, refmaterial: null, material: null, filter: null, fluidProperties: null, fluidEnabled: null, sensorEnabled: null, sweep: null, node: null, pairs: null, aabb: null, zip_aabb: null, validate_aabb: function() { this.zip_aabb && null != this.body && (this.zip_aabb = !1, 0 == this.type ? this.circle.__validate_aabb() : this.polygon.__validate_aabb()) }, validate_area_inertia: function() { this.zip_area_inertia && (this.zip_area_inertia = !1, 0 == this.type ? this.circle.__validate_area_inertia() : this.polygon.__validate_area_inertia()) }, validate_angDrag: function() { (this.zip_angDrag || this.refmaterial.dynamicFriction != this.material.dynamicFriction) && (this.zip_angDrag = !1, this.refmaterial.dynamicFriction = this.material.dynamicFriction, 0 == this.type ? this.circle.__validate_angDrag() : this.polygon.__validate_angDrag()) }, validate_worldCOM: function() { this.zip_worldCOM && null != this.body && (this.zip_worldCOM = !1, this.zip_localCOM && (this.zip_localCOM = !1, 1 == this.type && this.polygon.__validate_localCOM(), null != this.wrap_localCOM && (this.wrap_localCOM.zpp_inner.x = this.localCOMx, this.wrap_localCOM.zpp_inner.y = this.localCOMy)), this.body.validate_axis(), this.worldCOMx = this.body.posx + (this.body.axisy * this.localCOMx - this.body.axisx * this.localCOMy), this.worldCOMy = this.body.posy + (this.localCOMx * this.body.axisx + this.localCOMy * this.body.axisy)) }, invalidate_area_inertia: function() { this.zip_area_inertia = !0, null != this.body && (this.body.invalidate_localCOM(), this.body.invalidate_mass(), this.body.invalidate_inertia()) }, invalidate_angDrag: function() { this.zip_angDrag = !0 }, invalidate_localCOM: function() { this.zip_localCOM = !0, this.invalidate_area_inertia(), 0 == this.type && (this.zip_sweepRadius = !0), this.invalidate_angDrag(), this.invalidate_worldCOM(), null != this.body && this.body.invalidate_localCOM() }, invalidate_worldCOM: function() { this.zip_worldCOM = !0, this.zip_aabb = !0, null != this.body && (this.body.zip_aabb = !0) }, invalidate_material: function(e) { 0 != (e & zpp_$nape_phys_ZPP_$Material.WAKE) && this.wake(), 0 != (e & zpp_$nape_phys_ZPP_$Material.ARBITERS) && null != this.body && this.body.refreshArbiters(), 0 != (e & zpp_$nape_phys_ZPP_$Material.PROPS) && null != this.body && (this.body.invalidate_localCOM(), this.body.invalidate_mass(), this.body.invalidate_inertia()), 0 != (e & zpp_$nape_phys_ZPP_$Material.ANGDRAG) && this.invalidate_angDrag(), this.refmaterial.set(this.material) }, invalidate_filter: function() { this.wake() }, invalidate_fluidprops: function() { this.fluidEnabled && this.wake() }, aabb_validate: function() { this.zip_aabb && null != this.body && (this.zip_aabb = !1, 0 == this.type ? this.circle.__validate_aabb() : this.polygon.__validate_aabb()) }, setMaterial: function(e) { this.material != e && (null != this.body && null != this.body.space && null != this.material && this.material.shapes.remove(this), this.material = e, null != this.body && null != this.body.space && e.shapes.add(this), this.wake(), null != this.body && this.body.refreshArbiters()) }, setFilter: function(e) { this.filter != e && (null != this.body && null != this.body.space && null != this.filter && this.filter.shapes.remove(this), this.filter = e, null != this.body && null != this.body.space && e.shapes.add(this), this.wake()) }, setFluid: function(e) { this.fluidProperties != e && (null != this.body && null != this.body.space && null != this.fluidProperties && this.fluidProperties.shapes.remove(this), this.fluidProperties = e, null != this.body && null != this.body.space && e.shapes.add(this), this.fluidEnabled && this.wake()) }, __immutable_midstep: function(e) {}, addedToBody: function() { this.invalidate_worldCOM(), this.zip_aabb = !0, null != this.body && (this.body.zip_aabb = !0) }, removedFromBody: function() {}, addedToSpace: function() { this.__iaddedToSpace(), this.material.shapes.add(this), this.filter.shapes.add(this), null != this.fluidProperties && this.fluidProperties.shapes.add(this) }, removedFromSpace: function() { this.__iremovedFromSpace(), this.material.shapes.remove(this), this.filter.shapes.remove(this), null != this.fluidProperties && this.fluidProperties.shapes.remove(this) }, __class__: zpp_$nape_shape_ZPP_$Shape }); var zpp_$nape_shape_ZPP_$Circle = function() { this.radius = 0, this.outer_zn = null, zpp_$nape_shape_ZPP_$Shape.call(this, 0), this.circle = this, this.zip_localCOM = !1 }; $hxClasses["zpp_nape.shape.ZPP_Circle"] = zpp_$nape_shape_ZPP_$Circle, zpp_$nape_shape_ZPP_$Circle.__name__ = ["zpp_nape", "shape", "ZPP_Circle"], zpp_$nape_shape_ZPP_$Circle.__super__ = zpp_$nape_shape_ZPP_$Shape, zpp_$nape_shape_ZPP_$Circle.prototype = $extend(zpp_$nape_shape_ZPP_$Shape.prototype, { outer_zn: null, radius: null, invalidate_radius: function() { this.invalidate_area_inertia(), this.invalidate_angDrag(), this.zip_aabb = !0, null != this.body && (this.body.zip_aabb = !0), null != this.body && this.body.wake() }, __validate_aabb: function() { this.zip_worldCOM && null != this.body && (this.zip_worldCOM = !1, this.zip_localCOM && (this.zip_localCOM = !1, 1 == this.type && this.polygon.__validate_localCOM(), null != this.wrap_localCOM && (this.wrap_localCOM.zpp_inner.x = this.localCOMx, this.wrap_localCOM.zpp_inner.y = this.localCOMy)), this.body.validate_axis(), this.worldCOMx = this.body.posx + (this.body.axisy * this.localCOMx - this.body.axisx * this.localCOMy), this.worldCOMy = this.body.posy + (this.localCOMx * this.body.axisx + this.localCOMy * this.body.axisy)); var e = this.radius , t = this.radius; this.aabb.minx = this.worldCOMx - e, this.aabb.miny = this.worldCOMy - t, this.aabb.maxx = this.worldCOMx + e, this.aabb.maxy = this.worldCOMy + t }, _force_validate_aabb: function() { this.worldCOMx = this.body.posx + (this.body.axisy * this.localCOMx - this.body.axisx * this.localCOMy), this.worldCOMy = this.body.posy + (this.localCOMx * this.body.axisx + this.localCOMy * this.body.axisy), this.aabb.minx = this.worldCOMx - this.radius, this.aabb.miny = this.worldCOMy - this.radius, this.aabb.maxx = this.worldCOMx + this.radius, this.aabb.maxy = this.worldCOMy + this.radius }, __validate_sweepRadius: function() { this.sweepCoef = Math.sqrt(this.localCOMx * this.localCOMx + this.localCOMy * this.localCOMy), this.sweepRadius = this.sweepCoef + this.radius }, __validate_area_inertia: function() { var e = this.radius * this.radius; this.area = e * Math.PI, this.inertia = .5 * e + (this.localCOMx * this.localCOMx + this.localCOMy * this.localCOMy) }, __validate_angDrag: function() { var e = this.localCOMx * this.localCOMx + this.localCOMy * this.localCOMy , t = this.radius * this.radius , n = this.material.dynamicFriction * nape_Config.fluidAngularDragFriction; this.angDrag = (e + 2 * t) * n + .5 * nape_Config.fluidAngularDrag * (1 + nape_Config.fluidVacuumDrag) * e, this.angDrag /= 2 * (e + .5 * t) }, __transform: function(e) { var t = e.zpp_inner.a * e.zpp_inner.d - e.zpp_inner.b * e.zpp_inner.c; t < 0 && (t = -t), this.radius *= Math.sqrt(t); var n = e.zpp_inner.a * this.localCOMx + e.zpp_inner.b * this.localCOMy + e.zpp_inner.tx; this.localCOMy = e.zpp_inner.c * this.localCOMx + e.zpp_inner.d * this.localCOMy + e.zpp_inner.ty, this.localCOMx = n, this.invalidate_radius(), this.invalidate_localCOM() }, __class__: zpp_$nape_shape_ZPP_$Circle }); var zpp_$nape_shape_ZPP_$Edge = function() { this.tp1 = 0, this.tp0 = 0, this.gp1 = null, this.lp1 = null, this.gp0 = null, this.lp0 = null, this.gprojection = 0, this.lprojection = 0, this.length = 0, this.wrap_gnorm = null, this.gnormy = 0, this.gnormx = 0, this.wrap_lnorm = null, this.lnormy = 0, this.lnormx = 0, this.outer = null, this.polygon = null, this.next = null, this.lnormx = 0, this.lnormy = 0, this.gnormx = 0, this.gnormy = 0, this.length = 0, this.lprojection = 0, this.gprojection = 0 }; $hxClasses["zpp_nape.shape.ZPP_Edge"] = zpp_$nape_shape_ZPP_$Edge, zpp_$nape_shape_ZPP_$Edge.__name__ = ["zpp_nape", "shape", "ZPP_Edge"], zpp_$nape_shape_ZPP_$Edge.prototype = { next: null, polygon: null, outer: null, wrapper: function() { return null == this.outer && (zpp_$nape_shape_ZPP_$Edge.internal = !0, this.outer = new nape_shape_Edge, zpp_$nape_shape_ZPP_$Edge.internal = !1, this.outer.zpp_inner = this), this.outer }, lnormx: null, lnormy: null, wrap_lnorm: null, gnormx: null, gnormy: null, wrap_gnorm: null, length: null, lprojection: null, gprojection: null, lp0: null, gp0: null, lp1: null, gp1: null, tp0: null, tp1: null, __class__: zpp_$nape_shape_ZPP_$Edge }; var zpp_$nape_shape_ZPP_$Polygon = function() { this.zip_sanitation = !1, this.zip_valid = !1, this.zip_gaxi = !1, this.zip_gverts = !1, this.zip_laxi = !1, this.zip_lverts = !1, this.reverse_flag = !1, this.edgeCnt = 0, this.wrap_edges = null, this.edges = null, this.wrap_gverts = null, this.gverts = null, this.wrap_lverts = null, this.lverts = null, this.outer_zn = null, zpp_$nape_shape_ZPP_$Shape.call(this, 1), this.polygon = this, this.lverts = new zpp_$nape_geom_ZPP_$Vec2, this.gverts = new zpp_$nape_geom_ZPP_$Vec2, this.edges = new zpp_$nape_util_ZNPList_$ZPP_$Edge, this.edgeCnt = 0 }; $hxClasses["zpp_nape.shape.ZPP_Polygon"] = zpp_$nape_shape_ZPP_$Polygon, zpp_$nape_shape_ZPP_$Polygon.__name__ = ["zpp_nape", "shape", "ZPP_Polygon"], zpp_$nape_shape_ZPP_$Polygon.__super__ = zpp_$nape_shape_ZPP_$Shape, zpp_$nape_shape_ZPP_$Polygon.prototype = $extend(zpp_$nape_shape_ZPP_$Shape.prototype, { outer_zn: null, lverts: null, wrap_lverts: null, gverts: null, wrap_gverts: null, edges: null, wrap_edges: null, edgeCnt: null, reverse_flag: null, lverts_pa_invalidate: function(e) { this.invalidate_lverts() }, gverts_pa_validate: function() { this.validate_gverts() }, lverts_post_adder: function(e) { e.zpp_inner._invalidate = $bind(this, this.lverts_pa_invalidate); for (var t = null, n = null, i = this.lverts.next; null != i; ) { if (i == e.zpp_inner) break; t = null == t ? this.gverts.next : t.next, n = null == n ? this.edges.head : n.next, i = i.next } var l, a, s, r = zpp_$nape_geom_ZPP_$Vec2.get(0, 0, !0); (this.gverts.insert(t, r), null != this.lverts.next.next) && (null == this.lverts.next.next.next ? (null == zpp_$nape_shape_ZPP_$Edge.zpp_pool ? l = new zpp_$nape_shape_ZPP_$Edge : (l = zpp_$nape_shape_ZPP_$Edge.zpp_pool, zpp_$nape_shape_ZPP_$Edge.zpp_pool = l.next, l.next = null), l.polygon = this, this.edges.add(l), null == zpp_$nape_shape_ZPP_$Edge.zpp_pool ? a = new zpp_$nape_shape_ZPP_$Edge : (a = zpp_$nape_shape_ZPP_$Edge.zpp_pool, zpp_$nape_shape_ZPP_$Edge.zpp_pool = a.next, a.next = null), a.polygon = this, this.edges.add(a), this.edgeCnt += 2) : (null == zpp_$nape_shape_ZPP_$Edge.zpp_pool ? s = new zpp_$nape_shape_ZPP_$Edge : (s = zpp_$nape_shape_ZPP_$Edge.zpp_pool, zpp_$nape_shape_ZPP_$Edge.zpp_pool = s.next, s.next = null), s.polygon = this, this.edges.insert(n, s), this.edgeCnt++)); r._validate = $bind(this, this.gverts_pa_validate) }, lverts_subber: function(e) { this.cleanup_lvert(e.zpp_inner) }, lverts_invalidate: function(e) { this.invalidate_lverts() }, lverts_validate: function() { this.validate_lverts() }, getlverts: function() { this.wrap_lverts = zpp_$nape_util_ZPP_$MixVec2List.get(this.lverts), this.wrap_lverts.zpp_inner.post_adder = $bind(this, this.lverts_post_adder), this.wrap_lverts.zpp_inner.subber = $bind(this, this.lverts_subber), this.wrap_lverts.zpp_inner._invalidate = $bind(this, this.lverts_invalidate), this.wrap_lverts.zpp_inner._validate = $bind(this, this.lverts_validate), this.wrap_lverts.zpp_inner.reverse_flag = this.reverse_flag }, zip_lverts: null, invalidate_lverts: function() { this.invalidate_laxi(), this.invalidate_area_inertia(), this.invalidate_angDrag(), this.invalidate_localCOM(), this.invalidate_gverts(), this.zip_lverts = !0, this.zip_valid = !0, this.zip_sanitation = !0, null != this.body && this.body.wake() }, zip_laxi: null, invalidate_laxi: function() { this.invalidate_gaxi(), this.zip_sweepRadius = !0, this.zip_laxi = !0 }, zip_gverts: null, invalidate_gverts: function() { this.zip_aabb = !0, null != this.body && (this.body.zip_aabb = !0), this.zip_gverts = !0 }, zip_gaxi: null, invalidate_gaxi: function() { this.zip_gaxi = !0 }, zip_valid: null, validate_lverts: function() { this.zip_lverts && (this.zip_lverts = !1, this.lverts.length > 2 && (this.validate_area_inertia(), this.area < 0 && (this.reverse_vertices(), this.area = -this.area))) }, cleanup_lvert: function(e) { for (var t, n = null, i = null, l = this.lverts.next; null != l; ) { if (l == e) break; n = null == n ? this.gverts.next : n.next, i = null == i ? this.edges.head : i.next, l = l.next } t = null == n ? this.gverts.next : n.next, this.gverts.erase(n); var a = t; if (null != a.outer && (a.outer.zpp_inner = null, a.outer = null), a._isimmutable = null, a._validate = null, a._invalidate = null, a.next = zpp_$nape_geom_ZPP_$Vec2.zpp_pool, zpp_$nape_geom_ZPP_$Vec2.zpp_pool = a, 2 == this.edgeCnt) { var s = this.edges.pop_unsafe() , r = s; r.polygon = null, r.next = zpp_$nape_shape_ZPP_$Edge.zpp_pool, zpp_$nape_shape_ZPP_$Edge.zpp_pool = r; var _ = s = this.edges.pop_unsafe(); _.polygon = null, _.next = zpp_$nape_shape_ZPP_$Edge.zpp_pool, zpp_$nape_shape_ZPP_$Edge.zpp_pool = _, this.edgeCnt = 0 } else if (0 != this.edgeCnt) { var o; o = null == i ? this.edges.head.elt : i.next.elt, this.edges.erase(i); var p = o; p.polygon = null, p.next = zpp_$nape_shape_ZPP_$Edge.zpp_pool, zpp_$nape_shape_ZPP_$Edge.zpp_pool = p, this.edgeCnt-- } }, zip_sanitation: null, splice_collinear: function() { this.zip_sanitation && (this.zip_sanitation = !1, this.splice_collinear_real()) }, splice_collinear_real: function() { if (null != this.lverts.next && null != this.lverts.next.next && null != this.lverts.next.next.next) { for (var e, t = null, n = this.lverts.next; null != n; ) { var i = n , l = null == n.next ? this.lverts.next : n.next; zpp_$nape_geom_ZPP_$VecMath.vec_dsq(i.x, i.y, l.x, l.y) < nape_Config.epsilon * nape_Config.epsilon ? (this.cleanup_lvert(n), n = this.lverts.erase(t)) : (t = n, n = n.next) } if (null != this.lverts.next) do { e = !1; for (var a = this.lverts.next; null != a; ) { var s, r, _, o = a, p = s = null == a.next ? this.lverts.next : a.next, h = null == s.next ? this.lverts.next : s.next; r = p.x - o.x, _ = p.y - o.y; var d; d = h.x - p.x; var u = (h.y - p.y) * r - d * _; u * u >= nape_Config.epsilon * nape_Config.epsilon ? a = a.next : (this.cleanup_lvert(s), this.lverts.erase(null == a.next ? null : a), e = !0, a = a.next) } } while (e) } }, reverse_vertices: function() { this.lverts.reverse(), this.gverts.reverse(), this.edges.reverse(); var e = this.edges.iterator_at(this.edgeCnt - 1) , t = this.edges.pop_unsafe(); this.edges.insert(e, t), this.reverse_flag = !this.reverse_flag, null != this.wrap_lverts && (this.wrap_lverts.zpp_inner.reverse_flag = this.reverse_flag), null != this.wrap_gverts && (this.wrap_gverts.zpp_inner.reverse_flag = this.reverse_flag), null != this.wrap_edges && (this.wrap_edges.zpp_inner.reverse_flag = this.reverse_flag) }, validate_laxi: function() { if (this.zip_laxi) { this.zip_laxi = !1, this.validate_lverts(); var e = this.edges.head , t = this.lverts.next , n = t; for (t = t.next; null != t; ) { var i = t , l = e.elt; e = e.next, l.lp0 = n, l.lp1 = i; var a = 0 , s = 0; a = n.x - i.x, s = n.y - i.y; var r = Math.sqrt(a * a + s * s); l.length = r; var _ = 1 / r , o = a *= _; a = -(s *= _), s = o, l.lprojection = a * n.x + s * n.y, l.lnormx = a, l.lnormy = s, null != l.wrap_lnorm && (l.wrap_lnorm.zpp_inner.x = a, l.wrap_lnorm.zpp_inner.y = s), n = i, t = t.next } var p = this.lverts.next , h = e.elt; e = e.next, h.lp0 = n, h.lp1 = p; var d = 0 , u = 0; d = n.x - p.x, u = n.y - p.y; var c = Math.sqrt(d * d + u * u); h.length = c; var m = 1 / c , U = d *= m; d = -(u *= m), u = U, h.lprojection = d * n.x + u * n.y, h.lnormx = d, h.lnormy = u, null != h.wrap_lnorm && (h.wrap_lnorm.zpp_inner.x = d, h.wrap_lnorm.zpp_inner.y = u) } }, validate_gverts: function() { if (this.zip_gverts && null != this.body) { this.zip_gverts = !1, this.validate_lverts(), this.body.validate_axis(); for (var e = this.lverts.next, t = this.gverts.next; null != t; ) { var n = t , i = e; e = e.next, n.x = this.body.posx + (this.body.axisy * i.x - this.body.axisx * i.y), n.y = this.body.posy + (i.x * this.body.axisx + i.y * this.body.axisy), t = t.next } } }, validate_gaxi: function() { if (this.zip_gaxi && null != this.body) { this.zip_gaxi = !1, this.validate_laxi(), this.body.validate_axis(), this.validate_gverts(); var e = this.edges.head , t = this.gverts.next , n = t; for (t = t.next; null != t; ) { var i = t , l = e.elt; e = e.next, l.gp0 = n, l.gp1 = i, l.gnormx = this.body.axisy * l.lnormx - this.body.axisx * l.lnormy, l.gnormy = l.lnormx * this.body.axisx + l.lnormy * this.body.axisy, l.gprojection = this.body.posx * l.gnormx + this.body.posy * l.gnormy + l.lprojection, null != l.wrap_gnorm && (l.wrap_gnorm.zpp_inner.x = l.gnormx, l.wrap_gnorm.zpp_inner.y = l.gnormy), l.tp0 = l.gp0.y * l.gnormx - l.gp0.x * l.gnormy, l.tp1 = l.gp1.y * l.gnormx - l.gp1.x * l.gnormy, n = i, t = t.next } var a = this.gverts.next , s = e.elt; e = e.next, s.gp0 = n, s.gp1 = a, s.gnormx = this.body.axisy * s.lnormx - this.body.axisx * s.lnormy, s.gnormy = s.lnormx * this.body.axisx + s.lnormy * this.body.axisy, s.gprojection = this.body.posx * s.gnormx + this.body.posy * s.gnormy + s.lprojection, null != s.wrap_gnorm && (s.wrap_gnorm.zpp_inner.x = s.gnormx, s.wrap_gnorm.zpp_inner.y = s.gnormy), s.tp0 = s.gp0.y * s.gnormx - s.gp0.x * s.gnormy, s.tp1 = s.gp1.y * s.gnormx - s.gp1.x * s.gnormy } }, __validate_aabb: function() { this.validate_gverts(); var e = this.gverts.next; this.aabb.minx = e.x, this.aabb.miny = e.y, this.aabb.maxx = e.x, this.aabb.maxy = e.y; for (var t = this.gverts.next.next; null != t; ) { var n = t; n.x < this.aabb.minx && (this.aabb.minx = n.x), n.x > this.aabb.maxx && (this.aabb.maxx = n.x), n.y < this.aabb.miny && (this.aabb.miny = n.y), n.y > this.aabb.maxy && (this.aabb.maxy = n.y), t = t.next } }, _force_validate_aabb: function() { var e = this.lverts.next , t = this.gverts.next , n = e; e = e.next, t.x = this.body.posx + (this.body.axisy * n.x - this.body.axisx * n.y), t.y = this.body.posy + (n.x * this.body.axisx + n.y * this.body.axisy), this.aabb.minx = t.x, this.aabb.miny = t.y, this.aabb.maxx = t.x, this.aabb.maxy = t.y; for (var i = this.gverts.next.next; null != i; ) { var l = i , a = e; e = e.next, l.x = this.body.posx + (this.body.axisy * a.x - this.body.axisx * a.y), l.y = this.body.posy + (a.x * this.body.axisx + a.y * this.body.axisy), l.x < this.aabb.minx && (this.aabb.minx = l.x), l.x > this.aabb.maxx && (this.aabb.maxx = l.x), l.y < this.aabb.miny && (this.aabb.miny = l.y), l.y > this.aabb.maxy && (this.aabb.maxy = l.y), i = i.next } }, __validate_sweepRadius: function() { var e = 0 , t = 0; this.validate_laxi(); for (var n = this.lverts.next; null != n; ) { var i = n , l = i.x * i.x + i.y * i.y; l > e && (e = l), n = n.next } for (var a = this.edges.head; null != a; ) { var s = a.elt; if (s.lprojection < t && (t = s.lprojection) < 0) break; a = a.next } t < 0 && (t = 0), this.sweepRadius = Math.sqrt(e), this.sweepCoef = this.sweepRadius - t }, __validate_area_inertia: function() { if (null == this.lverts.next || null == this.lverts.next.next || null == this.lverts.next.next.next) this.area = 0, this.inertia = 0; else { this.area = 0; var e = 0 , t = 0 , n = this.lverts.next , i = n , l = n = n.next; for (n = n.next; null != n; ) { var a = n , s = l.y * i.x - l.x * i.y; e += s * (l.x * l.x + l.y * l.y + (l.x * i.x + l.y * i.y) + (i.x * i.x + i.y * i.y)), t += s, this.area += l.x * (a.y - i.y), i = l, l = a, n = n.next } var r = n = this.lverts.next , _ = l.y * i.x - l.x * i.y; e += _ * (l.x * l.x + l.y * l.y + (l.x * i.x + l.y * i.y) + (i.x * i.x + i.y * i.y)), t += _, this.area += l.x * (r.y - i.y), i = l, l = r; var o = n = n.next , p = l.y * i.x - l.x * i.y; e += p * (l.x * l.x + l.y * l.y + (l.x * i.x + l.y * i.y) + (i.x * i.x + i.y * i.y)), t += p, this.area += l.x * (o.y - i.y), this.inertia = e / (6 * t), this.area *= .5, this.area < 0 && (this.area = -this.area, this.reverse_vertices()) } }, __validate_angDrag: function() { this.validate_area_inertia(), this.validate_laxi(); for (var e = 0, t = this.edges.head, n = 0, i = this.lverts.next, l = i, a = i.next; null != a; ) { var s = a , r = t.elt; t = t.next, n += r.length; var _, o; _ = s.x - l.x, o = s.y - l.y, e += r.length * nape_Config.fluidAngularDragFriction * this.material.dynamicFriction * r.lprojection * r.lprojection; var p = -(l.y * r.lnormx - l.x * r.lnormy) / (o * r.lnormx - _ * r.lnormy); if (p > 0) { var h; h = p > 1 ? 1 : p; var d = 0 , u = 0; d = l.x, u = l.y; d += _ * h, u += o * h; var c = r.lnormy * l.x - r.lnormx * l.y , m = r.lnormy * d - r.lnormx * u; e += (m * m * m - c * c * c) / (3 * (m - c)) * h * r.length * nape_Config.fluidAngularDrag } if (p < 1) { var U; U = p < 0 ? 0 : p; var Q = 0 , N = 0; Q = l.x, N = l.y; Q += _ * U, N += o * U; var F = r.lnormy * Q - r.lnormx * N , Z = r.lnormy * s.x - r.lnormx * s.y; e += (Z * Z * Z - F * F * F) / (3 * (Z - F)) * nape_Config.fluidVacuumDrag * (1 - U) * r.length * nape_Config.fluidAngularDrag } i = a, l = s, a = a.next } var f = a = this.lverts.next , S = t.elt; t = t.next, n += S.length; var g, B; g = f.x - l.x, B = f.y - l.y, e += S.length * nape_Config.fluidAngularDragFriction * this.material.dynamicFriction * S.lprojection * S.lprojection; var b = -(l.y * S.lnormx - l.x * S.lnormy) / (B * S.lnormx - g * S.lnormy); if (b > 0) { var v; v = b > 1 ? 1 : b; var W = 0 , T = 0; W = l.x, T = l.y; W += g * v, T += B * v; var V = S.lnormy * l.x - S.lnormx * l.y , R = S.lnormy * W - S.lnormx * T; e += (R * R * R - V * V * V) / (3 * (R - V)) * v * S.length * nape_Config.fluidAngularDrag } if (b < 1) { var y; y = b < 0 ? 0 : b; var D = 0 , x = 0; D = l.x, x = l.y; D += g * y, x += B * y; var J = S.lnormy * D - S.lnormx * x , z = S.lnormy * f.x - S.lnormx * f.y; e += (z * z * z - J * J * J) / (3 * (z - J)) * nape_Config.fluidVacuumDrag * (1 - y) * S.length * nape_Config.fluidAngularDrag } this.angDrag = e / (this.inertia * n) }, __validate_localCOM: function() { if (null == this.lverts.next.next) this.localCOMx = this.lverts.next.x, this.localCOMy = this.lverts.next.y; else if (null == this.lverts.next.next.next) { this.localCOMx = this.lverts.next.x, this.localCOMy = this.lverts.next.y; this.localCOMx += 1 * this.lverts.next.next.x, this.localCOMy += 1 * this.lverts.next.next.y; this.localCOMx *= .5, this.localCOMy *= .5 } else { this.localCOMx = 0, this.localCOMy = 0; var e = 0 , t = this.lverts.next , n = t , i = t = t.next; for (t = t.next; null != t; ) { var l = t; e += i.x * (l.y - n.y); var a = l.y * i.x - l.x * i.y; this.localCOMx += (i.x + l.x) * a, this.localCOMy += (i.y + l.y) * a, n = i, i = l, t = t.next } var s = t = this.lverts.next; e += i.x * (s.y - n.y); var r = s.y * i.x - s.x * i.y; this.localCOMx += (i.x + s.x) * r, this.localCOMy += (i.y + s.y) * r, n = i, i = s; var _ = t = t.next; e += i.x * (_.y - n.y); var o = _.y * i.x - _.x * i.y; this.localCOMx += (i.x + _.x) * o, this.localCOMy += (i.y + _.y) * o; var p = e = 1 / (3 * e); this.localCOMx *= p, this.localCOMy *= p } }, __transform: function(e) { for (var t = this.lverts.next; null != t; ) { var n = t , i = e.zpp_inner.a * n.x + e.zpp_inner.b * n.y + e.zpp_inner.tx; n.y = e.zpp_inner.c * n.x + e.zpp_inner.d * n.y + e.zpp_inner.ty, n.x = i, t = t.next } this.invalidate_lverts() }, __class__: zpp_$nape_shape_ZPP_$Polygon }); var zpp_$nape_space_ZPP_$Broadphase = function() { this.circShape = null, this.matrix = null, this.aabbShape = null, this.dynab = null, this.sweep = null, this.is_sweep = !1, this.space = null }; $hxClasses["zpp_nape.space.ZPP_Broadphase"] = zpp_$nape_space_ZPP_$Broadphase, zpp_$nape_space_ZPP_$Broadphase.__name__ = ["zpp_nape", "space", "ZPP_Broadphase"], zpp_$nape_space_ZPP_$Broadphase.prototype = { space: null, is_sweep: null, sweep: null, dynab: null, insert: function(e) { this.is_sweep ? this.sweep.__insert(e) : this.dynab.__insert(e) }, remove: function(e) { this.is_sweep ? this.sweep.__remove(e) : this.dynab.__remove(e) }, sync: function(e) { this.is_sweep ? this.sweep.space.continuous || e.zip_aabb && null != e.body && (e.zip_aabb = !1, 0 == e.type ? e.circle.__validate_aabb() : e.polygon.__validate_aabb()) : this.dynab.__sync(e) }, broadphase: function(e, t) {}, aabbShape: null, matrix: null, updateAABBShape: function(e) { if (null == this.aabbShape) { new nape_phys_Body((null == zpp_$nape_util_ZPP_$Flags.BodyType_STATIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_STATIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.BodyType_STATIC)).zpp_inner.wrap_shapes.add(this.aabbShape = new nape_shape_Polygon(nape_shape_Polygon.rect(e.minx, e.miny, e.maxx - e.minx, e.maxy - e.miny))) } else { var t = this.aabbShape.zpp_inner.aabb , n = (e.maxx - e.minx) / (t.maxx - t.minx) , i = (e.maxy - e.miny) / (t.maxy - t.miny); null == this.matrix && (this.matrix = new nape_geom_Mat23), this.matrix.set_a(n), this.matrix.set_b(this.matrix.set_c(0)), this.matrix.set_d(i), this.matrix.set_tx(e.minx - n * t.minx), this.matrix.set_ty(e.miny - i * t.miny), this.aabbShape.transform(this.matrix) } this.aabbShape.zpp_inner.validate_aabb(), this.aabbShape.zpp_inner.polygon.validate_gaxi() }, bodiesInAABB: function(e, t, n, i, l) { return null }, circShape: null, updateCircShape: function(e, t, n) { if (null == this.circShape) { new nape_phys_Body((null == zpp_$nape_util_ZPP_$Flags.BodyType_STATIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_STATIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.BodyType_STATIC)).zpp_inner.wrap_shapes.add(this.circShape = new nape_shape_Circle(n,nape_geom_Vec2.get(e, t, null))) } else { var i = this.circShape.zpp_inner.circle , l = n / i.radius; null == this.matrix && (this.matrix = new nape_geom_Mat23), this.matrix.set_a(this.matrix.set_d(l)), this.matrix.set_b(this.matrix.set_c(0)), this.matrix.set_tx(e - l * i.localCOMx), this.matrix.set_ty(t - l * i.localCOMy), this.circShape.transform(this.matrix) } this.circShape.zpp_inner.validate_aabb() }, bodiesInCircle: function(e, t, n, i, l, a) { return null }, __class__: zpp_$nape_space_ZPP_$Broadphase }; var zpp_$nape_space_ZPP_$AABBNode = function() { this.first_sync = !1, this.synced = !1, this.snext = null, this.moved = !1, this.mnext = null, this.next = null, this.height = 0, this.child2 = null, this.child1 = null, this.parent = null, this.dyn = !1, this.shape = null, this.aabb = null, this.height = -1 }; $hxClasses["zpp_nape.space.ZPP_AABBNode"] = zpp_$nape_space_ZPP_$AABBNode, zpp_$nape_space_ZPP_$AABBNode.__name__ = ["zpp_nape", "space", "ZPP_AABBNode"], zpp_$nape_space_ZPP_$AABBNode.prototype = { aabb: null, shape: null, dyn: null, parent: null, child1: null, child2: null, height: null, next: null, free: function() { this.height = -1; var e = this.aabb; null != e.outer && (e.outer.zpp_inner = null, e.outer = null), e.wrap_min = e.wrap_max = null, e._invalidate = null, e._validate = null, e.next = zpp_$nape_geom_ZPP_$AABB.zpp_pool, zpp_$nape_geom_ZPP_$AABB.zpp_pool = e, this.child1 = this.child2 = this.parent = null, this.next = null, this.snext = null, this.mnext = null }, mnext: null, moved: null, snext: null, synced: null, first_sync: null, __class__: zpp_$nape_space_ZPP_$AABBNode }; var zpp_$nape_space_ZPP_$AABBPair = function() { this.next = null, this.arb = null, this.di = 0, this.id = 0, this.sleeping = !1, this.first = !1, this.n2 = null, this.n1 = null }; $hxClasses["zpp_nape.space.ZPP_AABBPair"] = zpp_$nape_space_ZPP_$AABBPair, zpp_$nape_space_ZPP_$AABBPair.__name__ = ["zpp_nape", "space", "ZPP_AABBPair"], zpp_$nape_space_ZPP_$AABBPair.prototype = { n1: null, n2: null, first: null, sleeping: null, id: null, di: null, arb: null, next: null, __class__: zpp_$nape_space_ZPP_$AABBPair }; var zpp_$nape_space_ZPP_$AABBTree = function() { this.root = null }; $hxClasses["zpp_nape.space.ZPP_AABBTree"] = zpp_$nape_space_ZPP_$AABBTree, zpp_$nape_space_ZPP_$AABBTree.__name__ = ["zpp_nape", "space", "ZPP_AABBTree"], zpp_$nape_space_ZPP_$AABBTree.prototype = { root: null, inlined_insertLeaf: function(e) { if (null == this.root) this.root = e, this.root.parent = null; else { for (var t = e.aabb, n = this.root; null != n.child1; ) { var i = n.child1 , l = n.child2 , a = n.aabb.perimeter(); zpp_$nape_space_ZPP_$AABBTree.tmpaabb.setCombine(n.aabb, t); var s, r, _ = zpp_$nape_space_ZPP_$AABBTree.tmpaabb.perimeter(), o = 2 * _, p = 2 * (_ - a); if (zpp_$nape_space_ZPP_$AABBTree.tmpaabb.setCombine(t, i.aabb), null == i.child1) s = zpp_$nape_space_ZPP_$AABBTree.tmpaabb.perimeter() + p; else { var h = i.aabb.perimeter(); s = zpp_$nape_space_ZPP_$AABBTree.tmpaabb.perimeter() - h + p } if (zpp_$nape_space_ZPP_$AABBTree.tmpaabb.setCombine(t, l.aabb), null == l.child1) r = zpp_$nape_space_ZPP_$AABBTree.tmpaabb.perimeter() + p; else { var d = l.aabb.perimeter(); r = zpp_$nape_space_ZPP_$AABBTree.tmpaabb.perimeter() - d + p } if (o < s && o < r) break; n = s < r ? i : l } var u, c = n, m = c.parent; for (null == zpp_$nape_space_ZPP_$AABBNode.zpp_pool ? u = new zpp_$nape_space_ZPP_$AABBNode : (u = zpp_$nape_space_ZPP_$AABBNode.zpp_pool, zpp_$nape_space_ZPP_$AABBNode.zpp_pool = u.next, u.next = null), null == zpp_$nape_geom_ZPP_$AABB.zpp_pool ? u.aabb = new zpp_$nape_geom_ZPP_$AABB : (u.aabb = zpp_$nape_geom_ZPP_$AABB.zpp_pool, zpp_$nape_geom_ZPP_$AABB.zpp_pool = u.aabb.next, u.aabb.next = null), u.moved = !1, u.synced = !1, u.first_sync = !1, u.parent = m, u.aabb.setCombine(t, c.aabb), u.height = c.height + 1, null != m ? (m.child1 == c ? m.child1 = u : m.child2 = u, u.child1 = c, u.child2 = e, c.parent = u, e.parent = u) : (u.child1 = c, u.child2 = e, c.parent = u, e.parent = u, this.root = u), n = e.parent; null != n; ) { var U = (n = this.balance(n)).child1 , Q = n.child2; n.height = 1 + (void 0, void 0, N = U.height, F = Q.height, N > F ? N : F), n.aabb.setCombine(U.aabb, Q.aabb), n = n.parent } } var N, F }, removeLeaf: function(e) { this.inlined_removeLeaf(e) }, inlined_removeLeaf: function(e) { if (e != this.root) { var t, n, i, l = e.parent, a = l.parent; if (t = l.child1 == e ? l.child2 : l.child1, null != a) { a.child1 == l ? a.child1 = t : a.child2 = t, t.parent = a; var s = l; s.free(), s.next = zpp_$nape_space_ZPP_$AABBNode.zpp_pool, zpp_$nape_space_ZPP_$AABBNode.zpp_pool = s; for (var r = a; null != r; ) { var _ = (r = this.balance(r)).child1 , o = r.child2; r.aabb.setCombine(_.aabb, o.aabb), r.height = 1 + (void 0, void 0, n = _.height, i = o.height, n > i ? n : i), r = r.parent } } else { this.root = t, t.parent = null; var p = l; p.free(), p.next = zpp_$nape_space_ZPP_$AABBNode.zpp_pool, zpp_$nape_space_ZPP_$AABBNode.zpp_pool = p } } else this.root = null }, balance: function(e) { if (null == e.child1 || e.height < 2) return e; var t, n, i, l, a, s, r, _, o, p, h, d, u, c, m, U, Q = e.child1, N = e.child2, F = N.height - Q.height; if (F > 1) { var Z = N.child1 , f = N.child2; return N.child1 = e, N.parent = e.parent, e.parent = N, null != N.parent ? N.parent.child1 == e ? N.parent.child1 = N : N.parent.child2 = N : this.root = N, Z.height > f.height ? (N.child2 = Z, e.child2 = f, f.parent = e, e.aabb.setCombine(Q.aabb, f.aabb), N.aabb.setCombine(e.aabb, Z.aabb), e.height = 1 + (m = Q.height, U = f.height, m > U ? m : U), N.height = 1 + (u = e.height, c = Z.height, u > c ? u : c)) : (N.child2 = f, e.child2 = Z, Z.parent = e, e.aabb.setCombine(Q.aabb, Z.aabb), N.aabb.setCombine(e.aabb, f.aabb), e.height = 1 + (h = Q.height, d = Z.height, h > d ? h : d), N.height = 1 + (o = e.height, p = f.height, o > p ? o : p)), N } if (F < -1) { var S = Q.child1 , g = Q.child2; return Q.child1 = e, Q.parent = e.parent, e.parent = Q, null != Q.parent ? Q.parent.child1 == e ? Q.parent.child1 = Q : Q.parent.child2 = Q : this.root = Q, S.height > g.height ? (Q.child2 = S, e.child1 = g, g.parent = e, e.aabb.setCombine(N.aabb, g.aabb), Q.aabb.setCombine(e.aabb, S.aabb), e.height = 1 + (r = N.height, _ = g.height, r > _ ? r : _), Q.height = 1 + (a = e.height, s = S.height, a > s ? a : s)) : (Q.child2 = g, e.child1 = S, S.parent = e, e.aabb.setCombine(N.aabb, S.aabb), Q.aabb.setCombine(e.aabb, g.aabb), e.height = 1 + (i = N.height, l = S.height, i > l ? i : l), Q.height = 1 + (t = e.height, n = g.height, t > n ? t : n)), Q } return e }, __class__: zpp_$nape_space_ZPP_$AABBTree }; var zpp_$nape_space_ZPP_$DynAABBPhase = function(e) { this.failed = null, this.treeStack2 = null, this.treeStack = null, this.moves = null, this.syncs = null, this.pairs = null, this.dtree = null, this.stree = null, zpp_$nape_space_ZPP_$Broadphase.call(this), this.space = e, this.is_sweep = !1, this.dynab = this, this.stree = new zpp_$nape_space_ZPP_$AABBTree, this.dtree = new zpp_$nape_space_ZPP_$AABBTree }; $hxClasses["zpp_nape.space.ZPP_DynAABBPhase"] = zpp_$nape_space_ZPP_$DynAABBPhase, zpp_$nape_space_ZPP_$DynAABBPhase.__name__ = ["zpp_nape", "space", "ZPP_DynAABBPhase"], zpp_$nape_space_ZPP_$DynAABBPhase.__super__ = zpp_$nape_space_ZPP_$Broadphase, zpp_$nape_space_ZPP_$DynAABBPhase.prototype = $extend(zpp_$nape_space_ZPP_$Broadphase.prototype, { stree: null, dtree: null, pairs: null, syncs: null, moves: null, __insert: function(e) { var t; null == zpp_$nape_space_ZPP_$AABBNode.zpp_pool ? t = new zpp_$nape_space_ZPP_$AABBNode : (t = zpp_$nape_space_ZPP_$AABBNode.zpp_pool, zpp_$nape_space_ZPP_$AABBNode.zpp_pool = t.next, t.next = null), null == zpp_$nape_geom_ZPP_$AABB.zpp_pool ? t.aabb = new zpp_$nape_geom_ZPP_$AABB : (t.aabb = zpp_$nape_geom_ZPP_$AABB.zpp_pool, zpp_$nape_geom_ZPP_$AABB.zpp_pool = t.aabb.next, t.aabb.next = null), t.moved = !1, t.synced = !1, t.first_sync = !1, t.shape = e, e.node = t, t.synced = !0, t.first_sync = !0, t.snext = this.syncs, this.syncs = t }, __remove: function(e) { var t = e.node; if (t.first_sync || (t.dyn ? this.dtree.removeLeaf(t) : this.stree.removeLeaf(t)), e.node = null, t.synced) { for (var n = null, i = this.syncs; null != i && i != t; ) n = i, i = i.snext; null == n ? this.syncs = i.snext : n.snext = i.snext, i.snext = null, t.synced = !1 } if (t.moved) { for (var l = null, a = this.moves; null != a && a != t; ) l = a, a = a.mnext; null == l ? this.moves = a.mnext : l.mnext = a.mnext, a.mnext = null, t.moved = !1 } for (var s = null, r = this.pairs; null != r; ) { var _ = r.next; if (r.n1 != t && r.n2 != t) s = r, r = _; else { null == s ? this.pairs = _ : s.next = _, null != r.arb && (r.arb.pair = null), r.arb = null, r.n1.shape.pairs.remove(r), r.n2.shape.pairs.remove(r); var o = r; o.n1 = o.n2 = null, o.sleeping = !1, o.next = zpp_$nape_space_ZPP_$AABBPair.zpp_pool, zpp_$nape_space_ZPP_$AABBPair.zpp_pool = o, r = _ } } for (; null != e.pairs.head; ) { var p = e.pairs.pop_unsafe(); p.n1 == t ? p.n2.shape.pairs.remove(p) : p.n1.shape.pairs.remove(p), null != p.arb && (p.arb.pair = null), p.arb = null; var h = p; h.n1 = h.n2 = null, h.sleeping = !1, h.next = zpp_$nape_space_ZPP_$AABBPair.zpp_pool, zpp_$nape_space_ZPP_$AABBPair.zpp_pool = h } var d = t; d.free(), d.next = zpp_$nape_space_ZPP_$AABBNode.zpp_pool, zpp_$nape_space_ZPP_$AABBNode.zpp_pool = d }, __sync: function(e) { var t = e.node; t.synced || (this.space.continuous || e.zip_aabb && null != e.body && (e.zip_aabb = !1, 0 == e.type ? e.circle.__validate_aabb() : e.polygon.__validate_aabb()), (t.dyn != (1 != e.body.type && !e.body.component.sleeping) || !t.aabb.contains(e.aabb)) && (t.synced = !0, t.snext = this.syncs, this.syncs = t)) }, sync_broadphase: function() { if (this.space.validation(), null != this.syncs) if (null == this.moves) { for (var e = this.syncs; null != e; ) { var t = e.shape; if (e.first_sync) e.first_sync = !1; else (e.dyn ? this.dtree : this.stree).inlined_removeLeaf(e); var n = e.aabb; this.space.continuous || t.zip_aabb && null != t.body && (t.zip_aabb = !1, 0 == t.type ? t.circle.__validate_aabb() : t.polygon.__validate_aabb()), n.setExpand(t.aabb, 3), ((1 == t.body.type ? e.dyn = !1 : e.dyn = !t.body.component.sleeping) ? this.dtree : this.stree).inlined_insertLeaf(e), e.synced = !1, e.moved = !0, e.mnext = e.snext, e.snext = null, e = e.mnext } var i = this.syncs; this.syncs = this.moves, this.moves = i } else for (; null != this.syncs; ) { var l, a = this.syncs; this.syncs = a.snext, a.snext = null; var s = (l = a).shape; if (l.first_sync) l.first_sync = !1; else (l.dyn ? this.dtree : this.stree).inlined_removeLeaf(l); var r = l.aabb; this.space.continuous || s.zip_aabb && null != s.body && (s.zip_aabb = !1, 0 == s.type ? s.circle.__validate_aabb() : s.polygon.__validate_aabb()), r.setExpand(s.aabb, 3), ((1 == s.body.type ? l.dyn = !1 : l.dyn = !s.body.component.sleeping) ? this.dtree : this.stree).inlined_insertLeaf(l), l.synced = !1, l.moved || (l.moved = !0, l.mnext = this.moves, this.moves = l) } }, broadphase: function(e, t) { for (var n = this.syncs; null != n; ) { var i = n.shape; if (n.first_sync) n.first_sync = !1; else (n.dyn ? this.dtree : this.stree).inlined_removeLeaf(n); var l = n.aabb; e.continuous || i.zip_aabb && null != i.body && (i.zip_aabb = !1, 0 == i.type ? i.circle.__validate_aabb() : i.polygon.__validate_aabb()), l.setExpand(i.aabb, 3), ((1 == i.body.type ? n.dyn = !1 : n.dyn = !i.body.component.sleeping) ? this.dtree : this.stree).inlined_insertLeaf(n), n.synced = !1, n = n.snext } for (; null != this.syncs; ) { var a, s = this.syncs; if (this.syncs = s.snext, s.snext = null, !(a = s).moved) { a.moved = !1; var r = a.shape; if (!r.body.component.sleeping) { var _ = a.aabb , o = null; for (null != this.dtree.root && (this.dtree.root.next = o, o = this.dtree.root); null != o; ) { var p, h = o; if (o = h.next, h.next = null, (p = h) != a) if (null == p.child1) { var d = p.shape; if (d.body != r.body && (1 != d.body.type || 1 != r.body.type) && _.intersect(p.aabb)) { var u, c; r.id < d.id ? (u = r.id, c = d.id) : (u = d.id, c = r.id); for (var m = null, U = (r.pairs.length < d.pairs.length ? r : d).pairs.head; null != U; ) { var Q = U.elt; if (Q.id == u && Q.di == c) { m = Q; break } U = U.next } if (null != m) { m.sleeping && (m.sleeping = !1, m.next = this.pairs, this.pairs = m, m.first = !0); continue } null == zpp_$nape_space_ZPP_$AABBPair.zpp_pool ? m = new zpp_$nape_space_ZPP_$AABBPair : (m = zpp_$nape_space_ZPP_$AABBPair.zpp_pool, zpp_$nape_space_ZPP_$AABBPair.zpp_pool = m.next, m.next = null), m.n1 = a, m.n2 = p, m.id = u, m.di = c, m.next = this.pairs, this.pairs = m, m.first = !0, r.pairs.inlined_add(m), d.pairs.inlined_add(m) } } else _.intersect(p.aabb) && (null != p.child1 && (p.child1.next = o, o = p.child1), null != p.child2 && (p.child2.next = o, o = p.child2)) } for (null != this.stree.root && (this.stree.root.next = o, o = this.stree.root); null != o; ) { var N, F = o; if (o = F.next, F.next = null, (N = F) != a) if (null == N.child1) { var Z = N.shape; if (Z.body != r.body && (1 != Z.body.type || 1 != r.body.type) && _.intersect(N.aabb)) { var f, S; r.id < Z.id ? (f = r.id, S = Z.id) : (f = Z.id, S = r.id); for (var g = null, B = (r.pairs.length < Z.pairs.length ? r : Z).pairs.head; null != B; ) { var b = B.elt; if (b.id == f && b.di == S) { g = b; break } B = B.next } if (null != g) { g.sleeping && (g.sleeping = !1, g.next = this.pairs, this.pairs = g, g.first = !0); continue } null == zpp_$nape_space_ZPP_$AABBPair.zpp_pool ? g = new zpp_$nape_space_ZPP_$AABBPair : (g = zpp_$nape_space_ZPP_$AABBPair.zpp_pool, zpp_$nape_space_ZPP_$AABBPair.zpp_pool = g.next, g.next = null), g.n1 = a, g.n2 = N, g.id = f, g.di = S, g.next = this.pairs, this.pairs = g, g.first = !0, r.pairs.inlined_add(g), Z.pairs.inlined_add(g) } } else _.intersect(N.aabb) && (null != N.child1 && (N.child1.next = o, o = N.child1), null != N.child2 && (N.child2.next = o, o = N.child2)) } } } } for (; null != this.moves; ) { var v, W = this.moves; this.moves = W.mnext, W.mnext = null, (v = W).moved = !1; var T = v.shape; if (!T.body.component.sleeping) { var V = v.aabb , R = null; for (null != this.dtree.root && (this.dtree.root.next = R, R = this.dtree.root); null != R; ) { var y, D = R; if (R = D.next, D.next = null, (y = D) != v) if (null == y.child1) { var x = y.shape; if (x.body != T.body && (1 != x.body.type || 1 != T.body.type) && V.intersect(y.aabb)) { var J, z; T.id < x.id ? (J = T.id, z = x.id) : (J = x.id, z = T.id); for (var k = null, E = (T.pairs.length < x.pairs.length ? T : x).pairs.head; null != E; ) { var P = E.elt; if (P.id == J && P.di == z) { k = P; break } E = E.next } if (null != k) { k.sleeping && (k.sleeping = !1, k.next = this.pairs, this.pairs = k, k.first = !0); continue } null == zpp_$nape_space_ZPP_$AABBPair.zpp_pool ? k = new zpp_$nape_space_ZPP_$AABBPair : (k = zpp_$nape_space_ZPP_$AABBPair.zpp_pool, zpp_$nape_space_ZPP_$AABBPair.zpp_pool = k.next, k.next = null), k.n1 = v, k.n2 = y, k.id = J, k.di = z, k.next = this.pairs, this.pairs = k, k.first = !0, T.pairs.inlined_add(k), x.pairs.inlined_add(k) } } else V.intersect(y.aabb) && (null != y.child1 && (y.child1.next = R, R = y.child1), null != y.child2 && (y.child2.next = R, R = y.child2)) } for (null != this.stree.root && (this.stree.root.next = R, R = this.stree.root); null != R; ) { var M, w = R; if (R = w.next, w.next = null, (M = w) != v) if (null == M.child1) { var $ = M.shape; if ($.body != T.body && (1 != $.body.type || 1 != T.body.type) && V.intersect(M.aabb)) { var C, G; T.id < $.id ? (C = T.id, G = $.id) : (C = $.id, G = T.id); for (var O = null, I = (T.pairs.length < $.pairs.length ? T : $).pairs.head; null != I; ) { var H = I.elt; if (H.id == C && H.di == G) { O = H; break } I = I.next } if (null != O) { O.sleeping && (O.sleeping = !1, O.next = this.pairs, this.pairs = O, O.first = !0); continue } null == zpp_$nape_space_ZPP_$AABBPair.zpp_pool ? O = new zpp_$nape_space_ZPP_$AABBPair : (O = zpp_$nape_space_ZPP_$AABBPair.zpp_pool, zpp_$nape_space_ZPP_$AABBPair.zpp_pool = O.next, O.next = null), O.n1 = v, O.n2 = M, O.id = C, O.di = G, O.next = this.pairs, this.pairs = O, O.first = !0, T.pairs.inlined_add(O), $.pairs.inlined_add(O) } } else V.intersect(M.aabb) && (null != M.child1 && (M.child1.next = R, R = M.child1), null != M.child2 && (M.child2.next = R, R = M.child2)) } } } for (var Y = null, A = this.pairs; null != A; ) if (A.first || A.n1.aabb.intersect(A.n2.aabb)) { var L = A.n1.shape , X = L.body , j = A.n2.shape , K = j.body; if (A.first || !X.component.sleeping && 1 != X.type || !K.component.sleeping && 1 != K.type) { if (A.first = !1, L.aabb.intersect(j.aabb)) { var q = A.arb; A.arb = t ? e.narrowPhase(L, j, !(2 == X.type && 2 == K.type), A.arb, !1) : e.continuousEvent(L, j, !(2 == X.type && 2 == K.type), A.arb, !1), null == A.arb ? null != q && (q.pair = null) : A.arb.pair = A } Y = A, A = A.next } else A.sleeping = !0, null == Y ? this.pairs = A.next : Y.next = A.next, A = A.next } else { null == Y ? this.pairs = A.next : Y.next = A.next, A.n1.shape.pairs.inlined_try_remove(A), A.n2.shape.pairs.inlined_try_remove(A); var ee = A.next; null != A.arb && (A.arb.pair = null), A.arb = null; var te = A; te.n1 = te.n2 = null, te.sleeping = !1, te.next = zpp_$nape_space_ZPP_$AABBPair.zpp_pool, zpp_$nape_space_ZPP_$AABBPair.zpp_pool = te, A = ee } }, treeStack: null, treeStack2: null, failed: null, bodiesInAABB: function(e, t, n, i, l) { this.sync_broadphase(), this.updateAABBShape(e); var a, s = this.aabbShape.zpp_inner.aabb; if (a = null == l ? new nape_phys_BodyList : l, null == this.failed && (this.failed = new nape_phys_BodyList), null != this.stree.root) for (null == this.treeStack && (this.treeStack = new zpp_$nape_util_ZNPList_$ZPP_$AABBNode), this.treeStack.add(this.stree.root); null != this.treeStack.head; ) { var r = this.treeStack.pop_unsafe(); if (s.contains(r.aabb)) if (null == r.child1) { if (null == i || r.shape.filter.shouldCollide(i)) { var _ = r.shape.body.outer; a.has(_) || a.push(_) } } else for (null == this.treeStack2 && (this.treeStack2 = new zpp_$nape_util_ZNPList_$ZPP_$AABBNode), this.treeStack2.add(r); null != this.treeStack2.head; ) { var o = this.treeStack2.pop_unsafe(); if (null == o.child1) { if (null == i || o.shape.filter.shouldCollide(i)) { var p = o.shape.body.outer; a.has(p) || a.push(p) } } else null != o.child1 && this.treeStack2.add(o.child1), null != o.child2 && this.treeStack2.add(o.child2) } else if (r.aabb.intersect(s)) if (null == r.child1) { var h = r.shape.body.outer; if (null == i || r.shape.filter.shouldCollide(i)) if (t) if (n) { if (!this.failed.has(h)) { var d = zpp_$nape_geom_ZPP_$Collide.containTest(this.aabbShape.zpp_inner, r.shape); !a.has(h) && d ? a.push(h) : d || (a.remove(h), this.failed.push(h)) } } else !a.has(h) && zpp_$nape_geom_ZPP_$Collide.testCollide_safe(r.shape, this.aabbShape.zpp_inner) && a.push(h); else if (n) { if (!this.failed.has(h)) { var u = s.contains(r.shape.aabb); !a.has(h) && u ? a.push(h) : u || (a.remove(h), this.failed.push(h)) } } else !a.has(h) && s.contains(r.shape.aabb) && a.push(h) } else null != r.child1 && this.treeStack.add(r.child1), null != r.child2 && this.treeStack.add(r.child2) } if (null != this.dtree.root) for (null == this.treeStack && (this.treeStack = new zpp_$nape_util_ZNPList_$ZPP_$AABBNode), this.treeStack.add(this.dtree.root); null != this.treeStack.head; ) { var c = this.treeStack.pop_unsafe(); if (s.contains(c.aabb)) if (null == c.child1) { if (null == i || c.shape.filter.shouldCollide(i)) { var m = c.shape.body.outer; a.has(m) || a.push(m) } } else for (null == this.treeStack2 && (this.treeStack2 = new zpp_$nape_util_ZNPList_$ZPP_$AABBNode), this.treeStack2.add(c); null != this.treeStack2.head; ) { var U = this.treeStack2.pop_unsafe(); if (null == U.child1) { if (null == i || U.shape.filter.shouldCollide(i)) { var Q = U.shape.body.outer; a.has(Q) || a.push(Q) } } else null != U.child1 && this.treeStack2.add(U.child1), null != U.child2 && this.treeStack2.add(U.child2) } else if (c.aabb.intersect(s)) if (null == c.child1) { var N = c.shape.body.outer; if (null == i || c.shape.filter.shouldCollide(i)) if (t) if (n) { if (!this.failed.has(N)) { var F = zpp_$nape_geom_ZPP_$Collide.containTest(this.aabbShape.zpp_inner, c.shape); !a.has(N) && F ? a.push(N) : F || (a.remove(N), this.failed.push(N)) } } else !a.has(N) && zpp_$nape_geom_ZPP_$Collide.testCollide_safe(c.shape, this.aabbShape.zpp_inner) && a.push(N); else if (n) { if (!this.failed.has(N)) { var Z = s.contains(c.shape.aabb); !a.has(N) && Z ? a.push(N) : Z || (a.remove(N), this.failed.push(N)) } } else !a.has(N) && s.contains(c.shape.aabb) && a.push(N) } else null != c.child1 && this.treeStack.add(c.child1), null != c.child2 && this.treeStack.add(c.child2) } return this.failed.clear(), a }, bodiesInCircle: function(e, t, n, i, l, a) { this.sync_broadphase(), this.updateCircShape(e, t, n); var s, r = this.circShape.zpp_inner.aabb; if (s = null == a ? new nape_phys_BodyList : a, null == this.failed && (this.failed = new nape_phys_BodyList), null != this.stree.root) for (null == this.treeStack && (this.treeStack = new zpp_$nape_util_ZNPList_$ZPP_$AABBNode), this.treeStack.add(this.stree.root); null != this.treeStack.head; ) { var _ = this.treeStack.pop_unsafe(); if (_.aabb.intersect(r)) if (null == _.child1) { var o = _.shape.body.outer; if (null == l || _.shape.filter.shouldCollide(l)) if (i) { if (!this.failed.has(o)) { var p = zpp_$nape_geom_ZPP_$Collide.containTest(this.circShape.zpp_inner, _.shape); !s.has(o) && p ? s.push(o) : p || (s.remove(o), this.failed.push(o)) } } else !s.has(o) && zpp_$nape_geom_ZPP_$Collide.testCollide_safe(_.shape, this.circShape.zpp_inner) && s.push(o) } else null != _.child1 && this.treeStack.add(_.child1), null != _.child2 && this.treeStack.add(_.child2) } if (null != this.dtree.root) for (null == this.treeStack && (this.treeStack = new zpp_$nape_util_ZNPList_$ZPP_$AABBNode), this.treeStack.add(this.dtree.root); null != this.treeStack.head; ) { var h = this.treeStack.pop_unsafe(); if (h.aabb.intersect(r)) if (null == h.child1) { var d = h.shape.body.outer; if (null == l || h.shape.filter.shouldCollide(l)) if (i) { if (!this.failed.has(d)) { var u = zpp_$nape_geom_ZPP_$Collide.containTest(this.circShape.zpp_inner, h.shape); !s.has(d) && u ? s.push(d) : u || (s.remove(d), this.failed.push(d)) } } else !s.has(d) && zpp_$nape_geom_ZPP_$Collide.testCollide_safe(h.shape, this.circShape.zpp_inner) && s.push(d) } else null != h.child1 && this.treeStack.add(h.child1), null != h.child2 && this.treeStack.add(h.child2) } return this.failed.clear(), s }, __class__: zpp_$nape_space_ZPP_$DynAABBPhase }); var zpp_$nape_space_ZPP_$Island = function() { this.waket = 0, this.sleep = !1, this.comps = null, this.length = 0, this.pushmod = !1, this.modified = !1, this._inuse = !1, this.next = null, this.comps = new zpp_$nape_util_ZNPList_$ZPP_$Component }; $hxClasses["zpp_nape.space.ZPP_Island"] = zpp_$nape_space_ZPP_$Island, zpp_$nape_space_ZPP_$Island.__name__ = ["zpp_nape", "space", "ZPP_Island"], zpp_$nape_space_ZPP_$Island.prototype = { next: null, _inuse: null, modified: null, pushmod: null, length: null, inlined_add: function(e) { var t; return e._inuse = !0, (t = e).next = this.next, this.next = t, this.modified = !0, this.length++, e }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.next; this.next = e.next, e._inuse = !1, null == this.next && (this.pushmod = !0), this.modified = !0, this.length-- }, inlined_pop_unsafe: function() { var e = this.next; return this.pop(), e }, comps: null, sleep: null, waket: null, __class__: zpp_$nape_space_ZPP_$Island }; var zpp_$nape_space_ZPP_$Component = function() { this.woken = !1, this.waket = 0, this.sleeping = !1, this.island = null, this.constraint = null, this.body = null, this.isBody = !1, this.rank = 0, this.parent = null, this.next = null, this.sleeping = !1, this.island = null, this.parent = this, this.rank = 0, this.woken = !1 }; $hxClasses["zpp_nape.space.ZPP_Component"] = zpp_$nape_space_ZPP_$Component, zpp_$nape_space_ZPP_$Component.__name__ = ["zpp_nape", "space", "ZPP_Component"], zpp_$nape_space_ZPP_$Component.prototype = { next: null, parent: null, rank: null, isBody: null, body: null, constraint: null, island: null, sleeping: null, waket: null, woken: null, __class__: zpp_$nape_space_ZPP_$Component }; var zpp_$nape_space_ZPP_$CallbackSet = function() { this.lazydel = !1, this.freed = !1, this.length = 0, this.pushmod = !1, this.modified = !1, this._inuse = !1, this.next = null, this.int2 = null, this.int1 = null, this.di = 0, this.id = 0, this.arbiters = new zpp_$nape_util_ZNPList_$ZPP_$Arbiter }; $hxClasses["zpp_nape.space.ZPP_CallbackSet"] = zpp_$nape_space_ZPP_$CallbackSet, zpp_$nape_space_ZPP_$CallbackSet.__name__ = ["zpp_nape", "space", "ZPP_CallbackSet"], zpp_$nape_space_ZPP_$CallbackSet.get = function(e, t) { var n; return null == zpp_$nape_space_ZPP_$CallbackSet.zpp_pool ? n = new zpp_$nape_space_ZPP_$CallbackSet : (n = zpp_$nape_space_ZPP_$CallbackSet.zpp_pool, zpp_$nape_space_ZPP_$CallbackSet.zpp_pool = n.next, n.next = null), n.freed = !1, n.lazydel = !1, n.COLLISIONstate = 1, n.COLLISIONstamp = 0, n.SENSORstate = 1, n.SENSORstamp = 0, n.FLUIDstate = 1, n.FLUIDstamp = 0, e.id < t.id ? (n.int1 = e, n.int2 = t) : (n.int1 = t, n.int2 = e), n.id = n.int1.id, n.di = n.int2.id, n } , zpp_$nape_space_ZPP_$CallbackSet.prototype = { id: null, di: null, int1: null, int2: null, arbiters: null, COLLISIONstate: null, COLLISIONstamp: null, SENSORstate: null, SENSORstamp: null, FLUIDstate: null, FLUIDstamp: null, next: null, _inuse: null, modified: null, pushmod: null, length: null, inlined_add: function(e) { var t; return e._inuse = !0, (t = e).next = this.next, this.next = t, this.modified = !0, this.length++, e }, inlined_erase: function(e) { var t, n; return null == e ? (n = (t = this.next).next, this.next = n, null == this.next && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)), t._inuse = !1, this.modified = !0, this.length--, this.pushmod = !0, n }, freed: null, lazydel: null, remove_arb: function(e) { this.arbiters.inlined_try_remove(e) }, empty_arb: function(e) { var t; t = !0; for (var n = this.arbiters.head; null != n; ) { if (0 != (n.elt.type & e)) { t = !1; break } n = n.next } return t }, sleeping: function() { var e; e = !0; for (var t = this.arbiters.head; null != t; ) { if (!t.elt.sleeping) { e = !1; break } t = t.next } return e }, __class__: zpp_$nape_space_ZPP_$CallbackSet }; var zpp_$nape_space_ZPP_$CbSetManager = function(e) { this.space = null, this.cbsets = null, null == zpp_$nape_util_ZPP_$Set_$ZPP_$CbSet.zpp_pool ? this.cbsets = new zpp_$nape_util_ZPP_$Set_$ZPP_$CbSet : (this.cbsets = zpp_$nape_util_ZPP_$Set_$ZPP_$CbSet.zpp_pool, zpp_$nape_util_ZPP_$Set_$ZPP_$CbSet.zpp_pool = this.cbsets.next, this.cbsets.next = null), this.cbsets.lt = zpp_$nape_callbacks_ZPP_$CbSet.setlt, this.space = e }; $hxClasses["zpp_nape.space.ZPP_CbSetManager"] = zpp_$nape_space_ZPP_$CbSetManager, zpp_$nape_space_ZPP_$CbSetManager.__name__ = ["zpp_nape", "space", "ZPP_CbSetManager"], zpp_$nape_space_ZPP_$CbSetManager.prototype = { cbsets: null, space: null, get: function(e) { if (null == e.head) return null; var t; null == zpp_$nape_callbacks_ZPP_$CbSet.zpp_pool ? t = new zpp_$nape_callbacks_ZPP_$CbSet : (t = zpp_$nape_callbacks_ZPP_$CbSet.zpp_pool, zpp_$nape_callbacks_ZPP_$CbSet.zpp_pool = t.next, t.next = null); var n = t.cbTypes; t.cbTypes = e; var i, l = this.cbsets.find_weak(t); if (null != l) i = l.data; else { var a = zpp_$nape_callbacks_ZPP_$CbSet.get(e); this.cbsets.insert(a), a.manager = this, i = a } t.cbTypes = n; var s = t; return s.free(), s.next = zpp_$nape_callbacks_ZPP_$CbSet.zpp_pool, zpp_$nape_callbacks_ZPP_$CbSet.zpp_pool = s, i }, remove: function(e) { for (this.cbsets.remove(e); null != e.cbpairs.head; ) { var t = e.cbpairs.pop_unsafe(); t.a != t.b && (e == t.a ? t.b.cbpairs.remove(t) : t.a.cbpairs.remove(t)); var n = t; n.a = n.b = null, n.listeners.clear(), n.next = zpp_$nape_callbacks_ZPP_$CbSetPair.zpp_pool, zpp_$nape_callbacks_ZPP_$CbSetPair.zpp_pool = n } e.manager = null }, validate: function() { if (!this.cbsets.empty()) { for (var e = this.cbsets.parent; null != e.prev; ) e = e.prev; for (; null != e; ) { if (e.data.validate(), null != e.next) for (e = e.next; null != e.prev; ) e = e.prev; else { for (; null != e.parent && e == e.parent.next; ) e = e.parent; e = e.parent } } } }, pair: function(e, t) { for (var n = null, i = (e.cbpairs.length < t.cbpairs.length ? e.cbpairs : t.cbpairs).head; null != i; ) { var l = i.elt; if (l.a == e && l.b == t || l.a == t && l.b == e) { n = l; break } i = i.next } return null == n && (n = zpp_$nape_callbacks_ZPP_$CbSetPair.get(e, t), e.cbpairs.add(n), t != e && t.cbpairs.add(n)), n.zip_listeners && (n.zip_listeners = !1, n.__validate()), n }, __class__: zpp_$nape_space_ZPP_$CbSetManager }; var zpp_$nape_space_ZPP_$Space = function(e, t) { this.prelisteners = null, this.precb = null, this.continuous = !1, this.toiEvents = null, this.pre_dt = 0, this.cbsets = null, this.callbackset_list = null, this.callbacks = null, this.wrap_listeners = null, this.listeners = null, this.islands = null, this.staticsleep = null, this.wrap_livecon = null, this.live_constraints = null, this.wrap_live = null, this.live = null, this.s_arbiters = null, this.f_arbiters = null, this.c_arbiters_false = null, this.c_arbiters_true = null, this.sortcontacts = !1, this.time = 0, this.midstep = !1, this.stamp = 0, this.global_ang_drag = 0, this.global_lin_drag = 0, this.__static = null, this.bphase = null, this.kinematics = null, this.wrap_constraints = null, this.constraints = null, this.wrap_compounds = null, this.compounds = null, this.wrap_bodies = null, this.bodies = null, this.wrap_gravity = null, this.gravityy = 0, this.gravityx = 0, this.outer = null, this.toiEvents = new zpp_$nape_util_ZNPList_$ZPP_$ToiEvent, this.global_lin_drag = .015, this.global_ang_drag = .015, this.precb = new nape_callbacks_PreCallback, this.precb.zpp_inner = new zpp_$nape_callbacks_ZPP_$Callback, this.sortcontacts = !0, this.pre_dt = 0, null == t || t == (null == zpp_$nape_util_ZPP_$Flags.Broadphase_DYNAMIC_AABB_TREE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.Broadphase_DYNAMIC_AABB_TREE = new nape_space_Broadphase, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.Broadphase_DYNAMIC_AABB_TREE) ? this.bphase = new zpp_$nape_space_ZPP_$DynAABBPhase(this) : t == (null == zpp_$nape_util_ZPP_$Flags.Broadphase_SWEEP_AND_PRUNE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.Broadphase_SWEEP_AND_PRUNE = new nape_space_Broadphase, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.Broadphase_SWEEP_AND_PRUNE) && (this.bphase = new zpp_$nape_space_ZPP_$SweepPhase(this)), this.time = 0; null != e ? (this.gravityx = e.x, this.gravityy = e.y) : (this.gravityx = 0, this.gravityy = 0), this.bodies = new zpp_$nape_util_ZNPList_$ZPP_$Body, this.wrap_bodies = zpp_$nape_util_ZPP_$BodyList.get(this.bodies), this.wrap_bodies.zpp_inner.adder = $bind(this, this.bodies_adder), this.wrap_bodies.zpp_inner.subber = $bind(this, this.bodies_subber), this.compounds = new zpp_$nape_util_ZNPList_$ZPP_$Compound, this.wrap_compounds = zpp_$nape_util_ZPP_$CompoundList.get(this.compounds), this.wrap_compounds.zpp_inner.adder = $bind(this, this.compounds_adder), this.wrap_compounds.zpp_inner.subber = $bind(this, this.compounds_subber), this.kinematics = new zpp_$nape_util_ZNPList_$ZPP_$Body, this.c_arbiters_true = new zpp_$nape_util_ZNPList_$ZPP_$ColArbiter, this.c_arbiters_false = new zpp_$nape_util_ZNPList_$ZPP_$ColArbiter, this.f_arbiters = new zpp_$nape_util_ZNPList_$ZPP_$FluidArbiter, this.s_arbiters = new zpp_$nape_util_ZNPList_$ZPP_$SensorArbiter, this.islands = new zpp_$nape_space_ZPP_$Island, this.live = new zpp_$nape_util_ZNPList_$ZPP_$Body, this.wrap_live = zpp_$nape_util_ZPP_$BodyList.get(this.live, !0), this.staticsleep = new zpp_$nape_util_ZNPList_$ZPP_$Body, this.constraints = new zpp_$nape_util_ZNPList_$ZPP_$Constraint, this.wrap_constraints = zpp_$nape_util_ZPP_$ConstraintList.get(this.constraints), this.wrap_constraints.zpp_inner.adder = $bind(this, this.constraints_adder), this.wrap_constraints.zpp_inner.subber = $bind(this, this.constraints_subber), this.live_constraints = new zpp_$nape_util_ZNPList_$ZPP_$Constraint, this.wrap_livecon = zpp_$nape_util_ZPP_$ConstraintList.get(this.live_constraints, !0), this.__static = zpp_$nape_phys_ZPP_$Body.__static(), this.__static.zpp_inner.space = this, this.callbacks = new zpp_$nape_callbacks_ZPP_$Callback, this.midstep = !1, this.listeners = new zpp_$nape_util_ZNPList_$ZPP_$Listener, this.wrap_listeners = zpp_$nape_util_ZPP_$ListenerList.get(this.listeners), this.wrap_listeners.zpp_inner.adder = $bind(this, this.listeners_adder), this.wrap_listeners.zpp_inner.subber = $bind(this, this.listeners_subber), this.callbackset_list = new zpp_$nape_space_ZPP_$CallbackSet, this.mrca1 = new zpp_$nape_util_ZNPList_$ZPP_$Interactor, this.mrca2 = new zpp_$nape_util_ZNPList_$ZPP_$Interactor, this.prelisteners = new zpp_$nape_util_ZNPList_$ZPP_$InteractionListener, this.cbsets = new zpp_$nape_space_ZPP_$CbSetManager(this) }; $hxClasses["zpp_nape.space.ZPP_Space"] = zpp_$nape_space_ZPP_$Space, zpp_$nape_space_ZPP_$Space.__name__ = ["zpp_nape", "space", "ZPP_Space"], zpp_$nape_space_ZPP_$Space.prototype = { outer: null, gravityx: null, gravityy: null, wrap_gravity: null, getgravity: function() { this.wrap_gravity = nape_geom_Vec2.get(this.gravityx, this.gravityy, null), this.wrap_gravity.zpp_inner._inuse = !0, this.wrap_gravity.zpp_inner._invalidate = $bind(this, this.gravity_invalidate), this.wrap_gravity.zpp_inner._validate = $bind(this, this.gravity_validate) }, gravity_invalidate: function(e) { this.gravityx = e.x, this.gravityy = e.y; for (var t = new zpp_$nape_util_ZNPList_$ZPP_$Compound, n = this.bodies.head; null != n; ) { var i = n.elt; i.world || (i.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == i.type && (i.kinematicDelaySleep = !0), i.component.sleeping && this.really_wake(i, !1)), n = n.next } for (var l = this.compounds.head; null != l; ) { var a = l.elt; t.add(a), l = l.next } for (; null != t.head; ) { for (var s = t.pop_unsafe(), r = s.bodies.head; null != r; ) { var _ = r.elt; _.world || (_.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == _.type && (_.kinematicDelaySleep = !0), _.component.sleeping && this.really_wake(_, !1)), r = r.next } for (var o = s.compounds.head; null != o; ) { var p = o.elt; t.add(p), o = o.next } } }, gravity_validate: function() { this.wrap_gravity.zpp_inner.x = this.gravityx, this.wrap_gravity.zpp_inner.y = this.gravityy }, bodies: null, wrap_bodies: null, compounds: null, wrap_compounds: null, constraints: null, wrap_constraints: null, kinematics: null, bphase: null, __static: null, global_lin_drag: null, global_ang_drag: null, stamp: null, midstep: null, time: null, sortcontacts: null, c_arbiters_true: null, c_arbiters_false: null, f_arbiters: null, s_arbiters: null, live: null, wrap_live: null, live_constraints: null, wrap_livecon: null, staticsleep: null, islands: null, listeners: null, wrap_listeners: null, callbacks: null, callbackset_list: null, cbsets: null, bodies_adder: function(e) { return e.zpp_inner.space != this && (null != e.zpp_inner.space && e.zpp_inner.space.outer.zpp_inner.wrap_bodies.remove(e), this.addBody(e.zpp_inner), !0) }, bodies_subber: function(e) { this.remBody(e.zpp_inner) }, compounds_adder: function(e) { return e.zpp_inner.space != this && (null != e.zpp_inner.space && e.zpp_inner.space.wrap_compounds.remove(e), this.addCompound(e.zpp_inner), !0) }, compounds_subber: function(e) { this.remCompound(e.zpp_inner) }, constraints_adder: function(e) { return e.zpp_inner.space != this && (null != e.zpp_inner.space && e.zpp_inner.space.outer.zpp_inner.wrap_constraints.remove(e), this.addConstraint(e.zpp_inner), !0) }, constraints_subber: function(e) { this.remConstraint(e.zpp_inner) }, listeners_adder: function(e) { return e.zpp_inner.space != this && (null != e.zpp_inner.space && e.zpp_inner.space.outer.zpp_inner.wrap_listeners.remove(e), this.addListener(e.zpp_inner), !0) }, listeners_subber: function(e) { this.remListener(e.zpp_inner) }, addListener: function(e) { e.space = this, e.addedToSpace(), e.interaction }, remListener: function(e) { e.interaction, e.removedFromSpace(), e.space = null }, add_callbackset: function(e) { e.int1.cbsets.inlined_add(e), e.int2.cbsets.inlined_add(e), this.callbackset_list.inlined_add(e) }, remove_callbackset: function(e) { e.lazydel = !0, e.int1.cbsets.inlined_try_remove(e), e.int2.cbsets.inlined_try_remove(e) }, transmitType: function(e, t) { var n = e; n.world || (n.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == n.type && (n.kinematicDelaySleep = !0), n.component.sleeping && this.really_wake(n, !1)), 2 == e.type ? this.live.remove(e) : 3 == e.type ? (this.kinematics.remove(e), this.staticsleep.remove(e)) : 1 == e.type && this.staticsleep.remove(e), e.type = t, 3 == e.type && this.kinematics.add(e), 1 == e.type && this.static_validation(e), e.component.sleeping = !0; var i = e; i.world || (i.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == i.type && (i.kinematicDelaySleep = !0), i.component.sleeping && this.really_wake(i, !0)) }, added_shape: function(e, t) { if (null == t && (t = !1), !t) { var n = e.body; n.world || (n.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == n.type && (n.kinematicDelaySleep = !0), n.component.sleeping && this.really_wake(n, !1)) } this.bphase.insert(e), e.addedToSpace() }, removed_shape: function(e, t) { null == t && (t = !1); var n = this , i = e.body; t || i.wake(); for (var l = null, a = i.arbiters.head; null != a; ) { var s = [a.elt]; if (s[0].ws1 == e || s[0].ws2 == e) { if (0 != s[0].present) { this.MRCA_chains(s[0].ws1, s[0].ws2); for (var r = this.mrca1.head; null != r; ) { for (var _ = r.elt, o = this.mrca2.head; null != o; ) { var p = o.elt , h = _.cbSet , d = p.cbSet; if (h.validate(), d.validate(), h.manager.pair(h, d).empty_intersection()) o = o.next; else { var u = [zpp_$nape_phys_ZPP_$Interactor.get(_, p)]; u[0].remove_arb(s[0]), s[0].present--, h.manager.pair(h, d).forall(1, function(e, t) { return function(i) { if (0 != (i.itype & t[0].type) && e[0].empty_arb(i.itype)) { var l = n.push_callback(i); l.event = 1, zpp_$nape_phys_ZPP_$Interactor.int_callback(e[0], i, l), l.set = e[0] } } }(u, s)), null == u[0].arbiters.head && this.remove_callbackset(u[0]), o = o.next } } r = r.next } } if (s[0].b1 != i && 2 == s[0].b1.type) { var c = s[0].b1; c.world || (c.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == c.type && (c.kinematicDelaySleep = !0), c.component.sleeping && this.really_wake(c, !1)) } if (s[0].b2 != i && 2 == s[0].b2.type) { var m = s[0].b2; m.world || (m.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == m.type && (m.kinematicDelaySleep = !0), m.component.sleeping && this.really_wake(m, !1)) } s[0].cleared = !0, null != i && s[0].b2 != i || s[0].b1.arbiters.inlined_try_remove(s[0]), null != i && s[0].b1 != i || s[0].b2.arbiters.inlined_try_remove(s[0]), null != s[0].pair && (s[0].pair.arb = null, s[0].pair = null), s[0].active = !1, this.f_arbiters.modified = !0, a = i.arbiters.erase(l) } else l = a, a = a.next } this.bphase.remove(e), e.removedFromSpace() }, addConstraint: function(e) { e.space = this, e.addedToSpace(), e.active && (e.component.sleeping = !0, this.wake_constraint(e, !0)) }, remConstraint: function(e) { e.active && (this.wake_constraint(e, !0), this.live_constraints.remove(e)), e.removedFromSpace(), e.space = null }, addCompound: function(e) { e.space = this, e.addedToSpace(); for (var t = e.bodies.head; null != t; ) { var n = t.elt; this.addBody(n), t = t.next } for (var i = e.constraints.head; null != i; ) { var l = i.elt; this.addConstraint(l), i = i.next } for (var a = e.compounds.head; null != a; ) { var s = a.elt; this.addCompound(s), a = a.next } }, remCompound: function(e) { for (var t = e.bodies.head; null != t; ) { var n = t.elt; this.remBody(n), t = t.next } for (var i = e.constraints.head; null != i; ) { var l = i.elt; this.remConstraint(l), i = i.next } for (var a = e.compounds.head; null != a; ) { var s = a.elt; this.remCompound(s), a = a.next } e.removedFromSpace(), e.space = null }, addBody: function(e, t) { null == t && (t = -1), e.space = this, e.addedToSpace(), e.component.sleeping = !0; var n = e; n.world || (n.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == n.type && (n.kinematicDelaySleep = !0), n.component.sleeping && this.really_wake(n, !0)); for (var i = e.shapes.head; null != i; ) { var l = i.elt; this.added_shape(l, !0), i = i.next } 1 == e.type ? this.static_validation(e) : 2 == e.type || 3 != t && this.kinematics.add(e) }, remBody: function(e, t) { if (null == t && (t = -1), 1 == e.type) { var n = e; n.world || (n.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == n.type && (n.kinematicDelaySleep = !0), n.component.sleeping && this.really_wake(n, !0)), this.staticsleep.remove(e) } else if (2 == e.type) { var i = e; i.world || (i.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == i.type && (i.kinematicDelaySleep = !0), i.component.sleeping && this.really_wake(i, !0)), this.live.remove(e) } else { 3 != t && this.kinematics.remove(e); var l = e; l.world || (l.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == l.type && (l.kinematicDelaySleep = !0), l.component.sleeping && this.really_wake(l, !0)), this.staticsleep.remove(e) } for (var a = e.shapes.head; null != a; ) { var s = a.elt; this.removed_shape(s, !0), a = a.next } e.removedFromSpace(), e.space = null }, bodiesInAABB: function(e, t, n, i, l) { return this.bphase.bodiesInAABB(e.zpp_inner, t, n, i, l) }, bodiesInCircle: function(e, t, n, i, l) { return this.bphase.bodiesInCircle((e.zpp_inner.validate(), e.zpp_inner.x), (e.zpp_inner.validate(), e.zpp_inner.y), t, n, i, l) }, push_callback: function(e) { var t; return null == zpp_$nape_callbacks_ZPP_$Callback.zpp_pool ? t = new zpp_$nape_callbacks_ZPP_$Callback : (t = zpp_$nape_callbacks_ZPP_$Callback.zpp_pool, zpp_$nape_callbacks_ZPP_$Callback.zpp_pool = t.next, t.next = null), this.callbacks.push(t), t.listener = e, t }, pre_dt: null, step: function(e, t, n) { var i = this; if (this.time += e, this.pre_dt = e, this.midstep = !0, this.stamp++, this.validation(), this.bphase.broadphase(this, !0), this.prestep(e), this.sortcontacts) { var l = this.c_arbiters_false; if (null != l.head && null != l.head.next) { var a, s, r, _ = l.head, o = null, p = null, h = null, d = null, u = 1; do { for (a = 0, p = _, o = _ = null; null != p; ) { for (a++, h = p, s = 0, r = u; null != h && s < u; ) s++, h = h.next; for (; s > 0 || r > 0 && null != h; ) 0 == s ? (d = h, h = h.next, r--) : 0 == r || null == h ? (d = p, p = p.next, s--) : !p.elt.active || !h.elt.active || p.elt.oc1.dist < h.elt.oc1.dist ? (d = p, p = p.next, s--) : (d = h, h = h.next, r--), null != o ? o.next = d : _ = d, o = d; p = h } o.next = null, u <<= 1 } while (a > 1);l.head = _, l.modified = !0, l.pushmod = !0 } } this.updateVel(e), this.warmStart(), this.iterateVel(t); for (var c = this.kinematics.head; null != c; ) { var m = c.elt; m.pre_posx = m.posx, m.pre_posy = m.posy, m.pre_rot = m.rot, c = c.next } for (var U = this.live.head; null != U; ) { var Q = U.elt; Q.pre_posx = Q.posx, Q.pre_posy = Q.posy, Q.pre_rot = Q.rot, U = U.next } this.updatePos(e), this.continuous = !0, this.continuousCollisions(e), this.continuous = !1, this.iteratePos(n); for (var N = this.kinematics.head; null != N; ) { var F = N.elt , Z = !(F.posx == F.pre_posx && F.posy == F.pre_posy) , f = F.pre_rot != F.rot; Z && F.invalidate_pos(), f && F.invalidate_rot(), N = N.next } for (var S = this.live.head; null != S; ) { var g = S.elt , B = !(g.posx == g.pre_posx && g.posy == g.pre_posy) , b = g.pre_rot != g.rot; B && g.invalidate_pos(), b && g.invalidate_rot(), S = S.next } for (var v = null, W = this.staticsleep.head; null != W; ) { var T = W.elt; if (3 != T.type || 0 == T.velx && 0 == T.vely && 0 == T.angvel) { if (T.kinematicDelaySleep) { T.kinematicDelaySleep = !1, W = W.next; continue } T.component.sleeping = !0, W = this.staticsleep.inlined_erase(v) } else v = W, W = W.next } this.doForests(e), this.sleepArbiters(), this.midstep = !1; for (var V = null, R = this.callbackset_list.next; null != R; ) { var y = [R]; if (null != y[0].arbiters.head) { var D = [y[0].sleeping()]; zpp_$nape_callbacks_ZPP_$CbSet.find_all(y[0].int1.cbSet, y[0].int2.cbSet, 6, function(e, t) { return function(n) { if ((!e[0] || n.allowSleepingCallbacks) && !t[0].empty_arb(n.itype)) { var l = i.push_callback(n); l.event = 6, zpp_$nape_phys_ZPP_$Interactor.int_callback(t[0], n, l), l.set = t[0] } } }(D, y)), V = R, R = R.next } else { R = this.callbackset_list.inlined_erase(V); var x = y[0]; x.int1 = x.int2 = null, x.id = x.di = -1, x.freed = !0, x.next = zpp_$nape_space_ZPP_$CallbackSet.zpp_pool, zpp_$nape_space_ZPP_$CallbackSet.zpp_pool = x } } for (; !this.callbacks.empty(); ) { var J = this.callbacks.pop(); if (0 == J.listener.type) J.listener.body.handler(J.wrapper_body()); else if (1 == J.listener.type) { J.listener.constraint.handler(J.wrapper_con()) } else if (2 == J.listener.type) { J.listener.interaction.handleri(J.wrapper_int()) } var z = J; z.int1 = z.int2 = null, z.body = null, z.constraint = null, z.listener = null, null != z.wrap_arbiters && (z.wrap_arbiters.zpp_inner.inner = null), z.set = null, z.next = zpp_$nape_callbacks_ZPP_$Callback.zpp_pool, zpp_$nape_callbacks_ZPP_$Callback.zpp_pool = z } }, toiEvents: null, continuousCollisions: function(e) { var t = 2 * Math.PI / e; this.bphase.broadphase(this, !1); for (var n = 0; n < 1 && null != this.toiEvents.head; ) { for (var i = null, l = 2, a = !1, s = null, r = null, _ = this.toiEvents.head; null != _; ) { var o = _.elt , p = o.s1.body , h = o.s2.body; if (p.sweepFrozen && h.sweepFrozen) { if (0 == o.toi || !zpp_$nape_geom_ZPP_$Collide.testCollide_safe(o.s1, o.s2)) { _ = this.toiEvents.erase(r); var d = o; d.next = zpp_$nape_geom_ZPP_$ToiEvent.zpp_pool, zpp_$nape_geom_ZPP_$ToiEvent.zpp_pool = d; continue } o.toi = 0 } if (o.frozen1 != p.sweepFrozen || o.frozen2 != h.sweepFrozen) { if (o.kinematic) { _ = this.toiEvents.erase(r); var u = o; u.next = zpp_$nape_geom_ZPP_$ToiEvent.zpp_pool, zpp_$nape_geom_ZPP_$ToiEvent.zpp_pool = u; continue } if (o.frozen1 = p.sweepFrozen, o.frozen2 = h.sweepFrozen, o.frozen1) { var c = o.s1; o.s1 = o.s2, o.s2 = c, o.frozen1 = !1, o.frozen2 = !0 } if (zpp_$nape_geom_ZPP_$SweepDistance.staticSweep(o, e, 0, nape_Config.collisionSlopCCD), o.toi < 0) { _ = this.toiEvents.erase(r); var m = o; m.next = zpp_$nape_geom_ZPP_$ToiEvent.zpp_pool, zpp_$nape_geom_ZPP_$ToiEvent.zpp_pool = m; continue } } o.toi >= 0 && (o.toi < l || !a && o.kinematic) && (i = o, l = o.toi, a = o.kinematic, s = r), r = _, _ = _.next } if (null == i) break; this.toiEvents.erase(s), n = i.toi; var U = i.s1.body , Q = i.s2.body; U.sweepFrozen || (U.sweepIntegrate(n * e), U.sweepValidate(i.s1)), Q.sweepFrozen || (Q.sweepIntegrate(n * e), Q.sweepValidate(i.s2)); i.arbiter; var N = this.narrowPhase(i.s1, i.s2, !0, i.arbiter, !0); null == N ? null != i.arbiter && null != i.arbiter.pair && (i.arbiter.pair.arb = null, i.arbiter.pair = null) : this.presteparb(N, e, !0) || N.type == zpp_$nape_dynamics_ZPP_$Arbiter.COL && N.active && 0 != (1 & N.immState) && (N.colarb.warmStart(), N.colarb.applyImpulseVel(), N.colarb.applyImpulseVel(), N.colarb.applyImpulseVel(), N.colarb.applyImpulseVel(), U.sweep_angvel = U.angvel % t, Q.sweep_angvel = Q.angvel % t), null != N && N.active && 0 != (1 & N.immState) && N.type == zpp_$nape_dynamics_ZPP_$Arbiter.COL && (U.sweepFrozen || 3 == U.type || (U.sweepFrozen = !0, i.failed ? U.angvel = U.sweep_angvel = 0 : i.slipped ? U.angvel = U.sweep_angvel *= nape_Config.angularCCDSlipScale : U.angvel = U.sweep_angvel), Q.sweepFrozen || 3 == Q.type || (Q.sweepFrozen = !0, i.failed ? Q.angvel = Q.sweep_angvel = 0 : i.slipped ? Q.angvel = Q.sweep_angvel *= nape_Config.angularCCDSlipScale : Q.angvel = Q.sweep_angvel)); var F = i; F.next = zpp_$nape_geom_ZPP_$ToiEvent.zpp_pool, zpp_$nape_geom_ZPP_$ToiEvent.zpp_pool = F } for (; null != this.toiEvents.head; ) { var Z = this.toiEvents.pop_unsafe(); Z.next = zpp_$nape_geom_ZPP_$ToiEvent.zpp_pool, zpp_$nape_geom_ZPP_$ToiEvent.zpp_pool = Z } for (var f = this.kinematics.head; null != f; ) { var S = f.elt; S.sweepIntegrate(e), S.sweepTime = 0, f = f.next } for (var g = this.live.head; null != g; ) { var B = g.elt; B.sweepFrozen || B.sweepIntegrate(e), B.sweepTime = 0, g = g.next } }, continuousEvent: function(e, t, n, i, l) { if (e.body.sweepFrozen && t.body.sweepFrozen) return i; if (e.body.disableCCD || t.body.disableCCD) return i; if (null != i && null == i.colarb || this.interactionType(e, t, e.body, t.body) <= 0) return i; var a = e.body , s = t.body; if (n || a.bullet || s.bullet) { var r; null == zpp_$nape_geom_ZPP_$ToiEvent.zpp_pool ? r = new zpp_$nape_geom_ZPP_$ToiEvent : (r = zpp_$nape_geom_ZPP_$ToiEvent.zpp_pool, zpp_$nape_geom_ZPP_$ToiEvent.zpp_pool = r.next, r.next = null), r.failed = !1, r.s1 = r.s2 = null, r.arbiter = null; var _ = 3 == a.type || 3 == s.type; if (n && !_) 2 != e.body.type ? (r.s2 = e, r.s1 = t) : (r.s1 = e, r.s2 = t), r.kinematic = !1, zpp_$nape_geom_ZPP_$SweepDistance.staticSweep(r, this.pre_dt, 0, nape_Config.collisionSlopCCD); else if (r.s1 = e, r.s2 = t, r.kinematic = _, r.s1.body.sweepFrozen || r.s2.body.sweepFrozen) { if (r.s1.body.sweepFrozen) { var o = r.s1; r.s1 = r.s2, r.s2 = o, r.frozen1 = !1, r.frozen2 = !0 } zpp_$nape_geom_ZPP_$SweepDistance.staticSweep(r, this.pre_dt, 0, nape_Config.collisionSlopCCD) } else zpp_$nape_geom_ZPP_$SweepDistance.dynamicSweep(r, this.pre_dt, 0, nape_Config.collisionSlopCCD); if (n && r.toi < 0 || r.failed) { var p = r; p.next = zpp_$nape_geom_ZPP_$ToiEvent.zpp_pool, zpp_$nape_geom_ZPP_$ToiEvent.zpp_pool = p } else this.toiEvents.add(r), r.frozen1 = r.s1.body.sweepFrozen, r.frozen2 = r.s2.body.sweepFrozen, r.arbiter = null != i ? i.colarb : null } return i }, bodyCbWake: function(e) { if (2 == e.type && null != e.cbSet) if (this.midstep) for (var t = e.cbSet.bodylisteners.head; null != t; ) { var n = t.elt; if (2 == n.event) { var i = this.push_callback(n); i.event = 2, i.body = e, t = t.next } else t = t.next } else e.component.woken = !0 }, bodyCbSleep: function(e) { if (2 == e.type && null != e.cbSet) for (var t = e.cbSet.bodylisteners.head; null != t; ) { var n = t.elt; if (3 == n.event) { var i = this.push_callback(n); i.event = 3, i.body = e, t = t.next } else t = t.next } }, constraintCbWake: function(e) { if (null != e.cbSet) if (this.midstep) for (var t = e.cbSet.conlisteners.head; null != t; ) { var n = t.elt; if (2 == n.event) { var i = this.push_callback(n); i.event = 2, i.constraint = e, t = t.next } else t = t.next } else e.component.woken = !0 }, constraintCbSleep: function(e) { if (null != e.cbSet) for (var t = e.cbSet.conlisteners.head; null != t; ) { var n = t.elt; if (3 == n.event) { var i = this.push_callback(n); i.event = 3, i.constraint = e, t = t.next } else t = t.next } }, constraintCbBreak: function(e) { if (null != e.cbSet) for (var t = e.cbSet.conlisteners.head; null != t; ) { var n = t.elt; if (4 == n.event) { var i = this.push_callback(n); i.event = 4, i.constraint = e, t = t.next } else t = t.next } }, nullListenerType: function(e, t) { for (var n = new zpp_$nape_util_ZNPList_$ZPP_$Interactor, i = e.interactors.head; null != i; ) { var l = i.elt; n.add(l), i = i.next } if (e != t) for (var a = t.interactors.head; null != a; ) { var s = a.elt; n.add(s), a = a.next } for (; null != n.head; ) { var r = n.pop_unsafe(); if (null != r.icompound) { for (var _ = r.icompound, o = _.bodies.head; null != o; ) { var p = o.elt; n.add(p), o = o.next } for (var h = _.compounds.head; null != h; ) { var d = h.elt; n.add(d), h = h.next } } else { var u, c; u = null != r.ibody ? r.ibody : r.ishape.body, c = null != r.ishape ? r.ishape : null; for (var m = u.arbiters.head; null != m; ) { var U = m.elt; if (0 != U.present) if (null == c || U.ws1 == c || U.ws2 == c) { this.MRCA_chains(U.ws1, U.ws2); for (var Q = this.mrca1.head; null != Q; ) { var N = Q.elt; if (N.cbSet == e || N.cbSet == t) { for (var F = this.mrca2.head; null != F; ) { var Z = F.elt; if (N.cbSet == e && Z.cbSet != t || N.cbSet == t && Z.cbSet != e) F = F.next; else { var f = zpp_$nape_phys_ZPP_$Interactor.get(N, Z); if (null != f) { for (; null != f.arbiters.head; ) { f.arbiters.pop_unsafe().present-- } this.remove_callbackset(f) } F = F.next } } Q = Q.next } else Q = Q.next } m = m.next } else m = m.next; else m = m.next } } } }, nullInteractorType: function(e, t) { if (null == t && (t = e), null != e.icompound) { for (var n = e.icompound, i = n.bodies.head; null != i; ) { var l = i.elt; this.nullInteractorType(l, t), i = i.next } for (var a = n.compounds.head; null != a; ) { var s = a.elt; this.nullInteractorType(s, t), a = a.next } } else { var r, _; r = null != e.ibody ? e.ibody : e.ishape.body, _ = null != e.ishape ? e.ishape : null; for (var o = r.arbiters.head; null != o; ) { var p = o.elt; if (0 != p.present) if (null == _ || p.ws1 == _ || p.ws2 == _) { this.MRCA_chains(p.ws1, p.ws2); for (var h = this.mrca1.head; null != h; ) { for (var d = h.elt, u = this.mrca2.head; null != u; ) { var c = u.elt; if (d == t || c == t) { var m = zpp_$nape_phys_ZPP_$Interactor.get(d, c); null != m && (p.present--, m.remove_arb(p), null == m.arbiters.head && this.remove_callbackset(m)), u = u.next } else u = u.next } h = h.next } o = o.next } else o = o.next; else o = o.next } } }, freshListenerType: function(e, t) { for (var n = new zpp_$nape_util_ZNPList_$ZPP_$Interactor, i = e.interactors.head; null != i; ) { var l = i.elt; n.add(l), i = i.next } if (e != t) for (var a = t.interactors.head; null != a; ) { var s = a.elt; n.add(s), a = a.next } for (; null != n.head; ) { var r = n.pop_unsafe(); if (null != r.icompound) { for (var _ = r.icompound, o = _.bodies.head; null != o; ) { var p = o.elt; n.add(p), o = o.next } for (var h = _.compounds.head; null != h; ) { var d = h.elt; n.add(d), h = h.next } } else { var u, c; u = null != r.ibody ? r.ibody : r.ishape.body, c = null != r.ishape ? r.ishape : null; for (var m = u.arbiters.head; null != m; ) { var U = m.elt; if (U.presentable) if (null == c || U.ws1 == c || U.ws2 == c) { this.MRCA_chains(U.ws1, U.ws2); for (var Q = this.mrca1.head; null != Q; ) { var N = Q.elt; if (N.cbSet == e || N.cbSet == t) { for (var F = this.mrca2.head; null != F; ) { var Z = F.elt; if (N.cbSet == e && Z.cbSet != t || N.cbSet == t && Z.cbSet != e) F = F.next; else { var f = zpp_$nape_phys_ZPP_$Interactor.get(N, Z); null == f && (f = zpp_$nape_space_ZPP_$CallbackSet.get(N, Z), this.add_callbackset(f)), !f.arbiters.inlined_has(U) && (f.arbiters.inlined_add(U), 1) && U.present++, F = F.next } } Q = Q.next } else Q = Q.next } m = m.next } else m = m.next; else m = m.next } } } }, freshInteractorType: function(e, t) { if (null == t && (t = e), null != e.icompound) { for (var n = e.icompound, i = n.bodies.head; null != i; ) { var l = i.elt; this.freshInteractorType(l, t), i = i.next } for (var a = n.compounds.head; null != a; ) { var s = a.elt; this.freshInteractorType(s, t), a = a.next } } else { var r, _; r = null != e.ibody ? e.ibody : e.ishape.body, _ = null != e.ishape ? e.ishape : null; for (var o = r.arbiters.head; null != o; ) { var p = o.elt; if (p.presentable) if (null == _ || p.ws1 == _ || p.ws2 == _) { this.MRCA_chains(p.ws1, p.ws2); for (var h = this.mrca1.head; null != h; ) { for (var d = h.elt, u = this.mrca2.head; null != u; ) { var c = u.elt; if (d == t || c == t) { var m = d.cbSet , U = c.cbSet; if (m.validate(), U.validate(), !m.manager.pair(m, U).empty_intersection()) { var Q = zpp_$nape_phys_ZPP_$Interactor.get(d, c); null == Q && (Q = zpp_$nape_space_ZPP_$CallbackSet.get(d, c), this.add_callbackset(Q)), !Q.arbiters.inlined_has(p) && (Q.arbiters.inlined_add(p), 1) && p.present++ } u = u.next } else u = u.next } h = h.next } o = o.next } else o = o.next; else o = o.next } } }, wakeCompound: function(e) { for (var t = e.bodies.head; null != t; ) { var n = t.elt; n.world || (n.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == n.type && (n.kinematicDelaySleep = !0), n.component.sleeping && this.really_wake(n, !1)), t = t.next } for (var i = e.constraints.head; null != i; ) { var l = i.elt; this.wake_constraint(l), i = i.next } for (var a = e.compounds.head; null != a; ) { var s = a.elt; this.wakeCompound(s), a = a.next } }, wakeIsland: function(e) { for (; null != e.comps.head; ) { var t = e.comps.pop_unsafe(); if (t.waket = this.stamp + (this.midstep ? 0 : 1), t.isBody) { var n = t.body; this.live.add(n); for (var i = n.arbiters.head; null != i; ) { var l = i.elt; if (l.sleeping) if (l.sleeping = !1, l.up_stamp += this.stamp - l.sleep_stamp, l.type == zpp_$nape_dynamics_ZPP_$Arbiter.COL) { var a = l.colarb; a.stat ? this.c_arbiters_true.inlined_add(a) : this.c_arbiters_false.inlined_add(a) } else l.type == zpp_$nape_dynamics_ZPP_$Arbiter.FLUID ? this.f_arbiters.inlined_add(l.fluidarb) : this.s_arbiters.inlined_add(l.sensorarb); i = i.next } if (this.bodyCbWake(n), t.sleeping = !1, t.island = null, t.parent = t, t.rank = 0, 1 != n.type) for (var s = n.shapes.head; null != s; ) { var r = s.elt; null != r.node && this.bphase.sync(r), s = s.next } } else { var _ = t.constraint; this.live_constraints.inlined_add(_), this.constraintCbWake(_), t.sleeping = !1, t.island = null, t.parent = t, t.rank = 0 } } var o = e; o.next = zpp_$nape_space_ZPP_$Island.zpp_pool, zpp_$nape_space_ZPP_$Island.zpp_pool = o }, non_inlined_wake: function(e, t) { null == t && (t = !1); var n = e; n.world || (n.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == n.type && (n.kinematicDelaySleep = !0), n.component.sleeping && this.really_wake(n, t)) }, really_wake: function(e, t) { if (null == t && (t = !1), null == e.component.island) { e.component.sleeping = !1, 3 == e.type || 1 == e.type ? this.staticsleep.inlined_add(e) : this.live.inlined_add(e); for (var n = e.constraints.head; null != n; ) { var i = n.elt; i.space == this && this.wake_constraint(i), n = n.next } for (var l = e.arbiters.head; null != l; ) { var a = l.elt; if (a.sleeping) if (a.sleeping = !1, a.up_stamp += this.stamp + (this.midstep ? 0 : 1) - a.sleep_stamp, a.type == zpp_$nape_dynamics_ZPP_$Arbiter.COL) { var s = a.colarb; s.stat ? this.c_arbiters_true.inlined_add(s) : this.c_arbiters_false.inlined_add(s) } else a.type == zpp_$nape_dynamics_ZPP_$Arbiter.FLUID ? this.f_arbiters.inlined_add(a.fluidarb) : this.s_arbiters.inlined_add(a.sensorarb); if (a.type != zpp_$nape_dynamics_ZPP_$Arbiter.SENSOR && !a.cleared && a.up_stamp >= this.stamp && 0 != (1 & a.immState)) { if (2 == a.b1.type && a.b1.component.sleeping) { var r = a.b1; r.world || (r.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == r.type && (r.kinematicDelaySleep = !0), r.component.sleeping && this.really_wake(r, !1)) } if (2 == a.b2.type && a.b2.component.sleeping) { var _ = a.b2; _.world || (_.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == _.type && (_.kinematicDelaySleep = !0), _.component.sleeping && this.really_wake(_, !1)) } } l = l.next } if (t || 2 != e.type || this.bodyCbWake(e), !t && !this.bphase.is_sweep && 1 != e.type) for (var o = e.shapes.head; null != o; ) { var p = o.elt; null != p.node && this.bphase.sync(p), o = o.next } } else this.wakeIsland(e.component.island) }, wake_constraint: function(e, t) { return null == t && (t = !1), !!e.active && (e.component.waket = this.stamp + (this.midstep ? 0 : 1), !!e.component.sleeping && (null == e.component.island ? (e.component.sleeping = !1, this.live_constraints.inlined_add(e), e.wake_connected(), t || this.constraintCbWake(e)) : this.wakeIsland(e.component.island), !0)) }, doForests: function(e) { for (var t = this.c_arbiters_false.head; null != t; ) { var n = t.elt; if (!n.cleared && n.up_stamp == this.stamp && 0 != (1 & n.immState) && 2 == n.b1.type && 2 == n.b2.type) { var i, l; if (n.b1.component == n.b1.component.parent) i = n.b1.component; else { for (var a = n.b1.component, s = null; a != a.parent; ) { var r = a.parent; a.parent = s, s = a, a = r } for (; null != s; ) { var _ = s.parent; s.parent = a, s = _ } i = a } if (n.b2.component == n.b2.component.parent) l = n.b2.component; else { for (var o = n.b2.component, p = null; o != o.parent; ) { var h = o.parent; o.parent = p, p = o, o = h } for (; null != p; ) { var d = p.parent; p.parent = o, p = d } l = o } i != l && (i.rank < l.rank ? i.parent = l : i.rank > l.rank ? l.parent = i : (l.parent = i, i.rank++)) } t = t.next } for (var u = this.f_arbiters.head; null != u; ) { var c = u.elt; if (!c.cleared && c.up_stamp == this.stamp && 0 != (1 & c.immState) && 2 == c.b1.type && 2 == c.b2.type) { var m, U; if (c.b1.component == c.b1.component.parent) m = c.b1.component; else { for (var Q = c.b1.component, N = null; Q != Q.parent; ) { var F = Q.parent; Q.parent = N, N = Q, Q = F } for (; null != N; ) { var Z = N.parent; N.parent = Q, N = Z } m = Q } if (c.b2.component == c.b2.component.parent) U = c.b2.component; else { for (var f = c.b2.component, S = null; f != f.parent; ) { var g = f.parent; f.parent = S, S = f, f = g } for (; null != S; ) { var B = S.parent; S.parent = f, S = B } U = f } m != U && (m.rank < U.rank ? m.parent = U : m.rank > U.rank ? U.parent = m : (U.parent = m, m.rank++)) } u = u.next } for (var b = this.live_constraints.head; null != b; ) { b.elt.forest(), b = b.next } for (; null != this.live.head; ) { var v, W = this.live.inlined_pop_unsafe(), T = W.component; if (T == T.parent) v = T; else { for (var V = T, R = null; V != V.parent; ) { var y = V.parent; V.parent = R, R = V, V = y } for (; null != R; ) { var D = R.parent; R.parent = V, R = D } v = V } null == v.island && (null == zpp_$nape_space_ZPP_$Island.zpp_pool ? v.island = new zpp_$nape_space_ZPP_$Island : (v.island = zpp_$nape_space_ZPP_$Island.zpp_pool, zpp_$nape_space_ZPP_$Island.zpp_pool = v.island.next, v.island.next = null), v.island.waket = 0, this.islands.inlined_add(v.island), v.island.sleep = !0), T.island = v.island, T.island.comps.inlined_add(T); var x = W.atRest(e); T.island.sleep = T.island.sleep && x, T.waket > T.island.waket && (T.island.waket = T.waket) } for (; null != this.live_constraints.head; ) { var J, z = this.live_constraints.inlined_pop_unsafe().component; if (z == z.parent) J = z; else { for (var k = z, E = null; k != k.parent; ) { var P = k.parent; k.parent = E, E = k, k = P } for (; null != E; ) { var M = E.parent; E.parent = k, E = M } J = k } z.island = J.island, z.island.comps.inlined_add(z), z.waket > z.island.waket && (z.island.waket = z.waket) } for (; null != this.islands.next; ) { var w = this.islands.inlined_pop_unsafe(); if (w.sleep) for (var $ = w.comps.head; null != $; ) { var C = $.elt; if (C.isBody) { var G = C.body; G.velx = 0, G.vely = 0, G.angvel = 0, C.sleeping = !0; for (var O = G.shapes.head; null != O; ) { var I = O.elt; this.bphase.sync(I), O = O.next } this.bodyCbSleep(G) } else { var H = C.constraint; this.constraintCbSleep(H), C.sleeping = !0 } $ = $.next } else { for (; null != w.comps.head; ) { var Y = w.comps.inlined_pop_unsafe(); Y.waket = w.waket, Y.isBody ? this.live.inlined_add(Y.body) : this.live_constraints.inlined_add(Y.constraint), Y.sleeping = !1, Y.island = null, Y.parent = Y, Y.rank = 0 } var A = w; A.next = zpp_$nape_space_ZPP_$Island.zpp_pool, zpp_$nape_space_ZPP_$Island.zpp_pool = A } } }, sleepArbiters: function() { var e = null , t = this.c_arbiters_true , n = t.head , i = null != this.c_arbiters_false; for (i && null == n && (i = !1, n = this.c_arbiters_false.head, t = this.c_arbiters_false, e = null); null != n; ) { var l = n.elt; l.b1.component.sleeping && l.b2.component.sleeping ? (l.sleep_stamp = this.stamp, l.sleeping = !0, n = t.inlined_erase(e), i && null == n && (i = !1, n = this.c_arbiters_false.head, t = this.c_arbiters_false, e = null)) : (e = n, n = n.next, i && null == n && (i = !1, n = this.c_arbiters_false.head, t = this.c_arbiters_false, e = null)) } var a = null , s = this.f_arbiters , r = s.head , _ = !1; for (_ && null == r && (_ = !1, s = null, a = null); null != r; ) { var o = r.elt; o.b1.component.sleeping && o.b2.component.sleeping ? (o.sleep_stamp = this.stamp, o.sleeping = !0, r = s.inlined_erase(a), _ && null == r && (_ = !1, s = null, a = null)) : (a = r, r = r.next, _ && null == r && (_ = !1, s = null, a = null)) } var p = null , h = this.s_arbiters , d = h.head , u = !1; for (u && null == d && (u = !1, h = null, p = null); null != d; ) { var c = d.elt; c.b1.component.sleeping && c.b2.component.sleeping ? (c.sleep_stamp = this.stamp, c.sleeping = !0, d = h.inlined_erase(p), u && null == d && (u = !1, h = null, p = null)) : (p = d, d = d.next, u && null == d && (u = !1, h = null, p = null)) } }, static_validation: function(e) { null != e.shapes.head && e.validate_aabb(), e.validate_mass(), e.validate_inertia(); for (var t = e.shapes.head; null != t; ) { var n = t.elt; 1 == n.type && (n.polygon.splice_collinear(), n.polygon.validate_gaxi()), t = t.next } e.sweepFrozen = !0 }, validation: function() { this.cbsets.validate(); for (var e = this.live.head; null != e; ) { var t = e.elt; t.sweepRadius = 0; for (var n = t.shapes.head; null != n; ) { var i = n.elt; 1 == i.type && (i.polygon.splice_collinear(), i.polygon.validate_gaxi()), i.validate_sweepRadius(), i.sweepRadius > t.sweepRadius && (t.sweepRadius = i.sweepRadius), n = n.next } if (t.validate_mass(), t.validate_inertia(), null != t.shapes.head && (t.validate_aabb(), t.validate_worldCOM()), t.validate_gravMass(), t.zip_axis && (t.zip_axis = !1, t.axisx = Math.sin(t.rot), t.axisy = Math.cos(t.rot)), t.component.woken && null != t.cbSet) for (var l = t.cbSet.bodylisteners.head; null != l; ) { var a = l.elt; if (2 == a.event) { var s = this.push_callback(a); s.event = 2, s.body = t, l = l.next } else l = l.next } t.component.woken = !1; for (var r = t.shapes.head; null != r; ) { var _ = r.elt; this.bphase.sync(_), r = r.next } e = e.next } for (var o = this.kinematics.head; null != o; ) { var p = o.elt; p.sweepRadius = 0; for (var h = p.shapes.head; null != h; ) { var d = h.elt; 1 == d.type && (d.polygon.splice_collinear(), d.polygon.validate_gaxi()), d.validate_sweepRadius(), d.sweepRadius > p.sweepRadius && (p.sweepRadius = d.sweepRadius), h = h.next } p.validate_mass(), p.validate_inertia(), null != p.shapes.head && (p.validate_aabb(), p.validate_worldCOM()), p.validate_gravMass(), p.zip_axis && (p.zip_axis = !1, p.axisx = Math.sin(p.rot), p.axisy = Math.cos(p.rot)); for (var u = p.shapes.head; null != u; ) { var c = u.elt; this.bphase.sync(c), u = u.next } o = o.next } for (var m = this.live_constraints.head; null != m; ) { var U = m.elt; if (U.active) { if (U.component.woken && null != U.cbSet) for (var Q = U.cbSet.conlisteners.head; null != Q; ) { var N = Q.elt; if (2 == N.event) { var F = this.push_callback(N); F.event = 2, F.constraint = U, Q = Q.next } else Q = Q.next } U.component.woken = !1 } m = m.next } }, updateVel: function(e) { for (var t = 1 - e * this.global_lin_drag, n = 1 - e * this.global_ang_drag, i = this.live.head; null != i; ) { var l = i.elt; if (0 != l.smass) { var a = e * l.imass; l.velx = t * l.velx + (l.forcex + this.gravityx * l.gravMass) * a, l.vely = t * l.vely + (l.forcey + this.gravityy * l.gravMass) * a } if (0 != l.sinertia) { var s, r; s = l.worldCOMx - l.posx, r = l.worldCOMy - l.posy; var _ = l.torque + (this.gravityy * s - this.gravityx * r) * l.gravMass; l.angvel = n * l.angvel + _ * e * l.iinertia } i, i = i.next } }, updatePos: function(e) { for (var t = 2 * Math.PI / e, n = this.live.head; null != n; ) { var i = n.elt; if (i.pre_posx = i.posx, i.pre_posy = i.posy, i.pre_rot = i.rot, i.sweepTime = 0, i.sweep_angvel = i.angvel % t, i.sweepIntegrate(e), i.disableCCD) i.sweepFrozen = !0, i.bullet = !1; else { var l = nape_Config.staticCCDLinearThreshold * i.sweepRadius , a = nape_Config.staticCCDAngularThreshold; if ((i.velx * i.velx + i.vely * i.vely) * e * e > l * l || i.angvel * i.angvel * e * e > a * a || 3 == i.type) { var s = i.sweep_angvel; s < 0 && (s = -s); for (var r = 1 / s, _ = i.shapes.head; null != _; ) { var o = _.elt , p = o.aabb , h = p.minx , d = p.miny , u = p.maxx , c = p.maxy , m = s * e * o.sweepCoef * .008333333333333333 | 0; m > 8 && (m = 8); var U = s * e / m; i.sweepIntegrate(e), 0 == o.type ? o.circle._force_validate_aabb() : o.polygon._force_validate_aabb(), h < p.minx ? p.minx = h : h = p.minx, d < p.miny ? p.miny = d : d = p.miny, u > p.maxx ? p.maxx = u : u = p.maxx, c > p.maxy ? p.maxy = c : c = p.maxy; for (var Q = 1; Q < m; ) { var N = Q++; i.sweepIntegrate(U * N * r), 0 == o.type ? o.circle._force_validate_aabb() : o.polygon._force_validate_aabb(), h < p.minx ? p.minx = h : h = p.minx, d < p.miny ? p.miny = d : d = p.miny, u > p.maxx ? p.maxx = u : u = p.maxx, c > p.maxy ? p.maxy = c : c = p.maxy } this.bphase.sync(o), _ = _.next } if (i.sweepFrozen = !1, 2 == i.type && i.bulletEnabled) { var F = nape_Config.bulletCCDLinearThreshold * i.sweepRadius , Z = nape_Config.bulletCCDAngularThreshold; ((i.velx * i.velx + i.vely * i.vely) * e * e > F * F || i.angvel * i.angvel * e * e > Z * Z) && (i.bullet = !0) } } else i.sweepFrozen = !0, i.bullet = !1 } n = n.next } for (var f = this.kinematics.head; null != f; ) { var S = f.elt; if (S.pre_posx = S.posx, S.pre_posy = S.posy, S.pre_rot = S.rot, S.sweepTime = 0, S.sweep_angvel = S.angvel % t, S.sweepIntegrate(e), S.disableCCD) S.sweepFrozen = !0, S.bullet = !1; else { var g = nape_Config.staticCCDLinearThreshold * S.sweepRadius , B = nape_Config.staticCCDAngularThreshold; if ((S.velx * S.velx + S.vely * S.vely) * e * e > g * g || S.angvel * S.angvel * e * e > B * B || 3 == S.type) { var b = S.sweep_angvel; b < 0 && (b = -b); for (var v = 1 / b, W = S.shapes.head; null != W; ) { var T = W.elt , V = T.aabb , R = V.minx , y = V.miny , D = V.maxx , x = V.maxy , J = b * e * T.sweepCoef * .008333333333333333 | 0; J > 8 && (J = 8); var z = b * e / J; S.sweepIntegrate(e), 0 == T.type ? T.circle._force_validate_aabb() : T.polygon._force_validate_aabb(), R < V.minx ? V.minx = R : R = V.minx, y < V.miny ? V.miny = y : y = V.miny, D > V.maxx ? V.maxx = D : D = V.maxx, x > V.maxy ? V.maxy = x : x = V.maxy; for (var k = 1; k < J; ) { var E = k++; S.sweepIntegrate(z * E * v), 0 == T.type ? T.circle._force_validate_aabb() : T.polygon._force_validate_aabb(), R < V.minx ? V.minx = R : R = V.minx, y < V.miny ? V.miny = y : y = V.miny, D > V.maxx ? V.maxx = D : D = V.maxx, x > V.maxy ? V.maxy = x : x = V.maxy } this.bphase.sync(T), W = W.next } if (S.sweepFrozen = !1, 2 == S.type && S.bulletEnabled) { var P = nape_Config.bulletCCDLinearThreshold * S.sweepRadius , M = nape_Config.bulletCCDAngularThreshold; ((S.velx * S.velx + S.vely * S.vely) * e * e > P * P || S.angvel * S.angvel * e * e > M * M) && (S.bullet = !0) } } else S.sweepFrozen = !0, S.bullet = !1 } f = f.next } }, continuous: null, presteparb: function(e, t, n) { null == n && (n = !1); var i = this; if (!e.cleared && e.b1.component.sleeping && e.b2.component.sleeping) return e.sleep_stamp = this.stamp, e.sleeping = !0, !0; if (!e.cleared || 0 != e.present || e.intchange) { var l = !n && e.up_stamp == this.stamp - 1 && !e.cleared && !e.intchange , a = e.fresh && !e.cleared && !e.intchange; if (l && (e.endGenerated = this.stamp), a || l || e.cleared || e.intchange) { this.inlined_MRCA_chains(e.ws1, e.ws2); for (var s = this.mrca1.head; null != s; ) { for (var r = s.elt, _ = this.mrca2.head; null != _; ) { var o = _.elt , p = r.cbSet , h = o.cbSet; if (p.manager.pair(p, h).empty_intersection()) _ = _.next; else { var d = [zpp_$nape_phys_ZPP_$Interactor.get(r, o)]; a || e.intchange ? (null == d[0] && (d[0] = zpp_$nape_space_ZPP_$CallbackSet.get(r, o), this.add_callbackset(d[0])), p.manager.pair(p, h).forall(0, function(t) { return function(n) { if (0 != (n.itype & e.type) && t[0].empty_arb(n.itype)) { var l = i.push_callback(n); l.event = 0, zpp_$nape_phys_ZPP_$Interactor.int_callback(t[0], n, l), l.set = t[0] } } }(d)), !d[0].arbiters.inlined_has(e) && (d[0].arbiters.inlined_add(e), 1) && e.present++) : (e.present--, d[0].remove_arb(e), p.manager.pair(p, h).forall(1, function(t) { return function(n) { if (0 != (n.itype & e.type) && t[0].empty_arb(n.itype)) { var l = i.push_callback(n); l.event = 1, zpp_$nape_phys_ZPP_$Interactor.int_callback(t[0], n, l), l.set = t[0] } } }(d)), null == d[0].arbiters.head && this.remove_callbackset(d[0])), _ = _.next } } s = s.next } } e.fresh = !1, e.intchange = !1 } if (e.cleared || e.up_stamp + (e.type == zpp_$nape_dynamics_ZPP_$Arbiter.COL ? nape_Config.arbiterExpirationDelay : 0) < this.stamp) return e.type == zpp_$nape_dynamics_ZPP_$Arbiter.SENSOR ? e.sensorarb.retire() : e.type == zpp_$nape_dynamics_ZPP_$Arbiter.FLUID ? e.fluidarb.retire() : e.colarb.retire(), !0; var u = e.active; return e.active = e.presentable = e.up_stamp == this.stamp, 0 != (1 & e.immState) ? e.active && e.type != zpp_$nape_dynamics_ZPP_$Arbiter.SENSOR && (null != e.colarb ? e.colarb.preStep(t) && (e.active = !1) : e.fluidarb.preStep(this, t)) : null != e.colarb && e.colarb.cleanupContacts() && (e.active = !1), u != e.active && (e.b1.arbiters.modified = !0, e.b2.arbiters.modified = !0, this.c_arbiters_true.modified = this.c_arbiters_false.modified = !0, this.s_arbiters.modified = this.f_arbiters.modified = !0), !1 }, prestep: function(e) { for (var t = null, n = this.live_constraints.head; null != n; ) { var i = n.elt; i.preStep(e) ? (n = this.live_constraints.erase(t), i.broken(), this.constraintCbBreak(i), i.removeOnBreak ? (i.component.sleeping = !0, this.midstep = !1, null != i.compound ? i.compound.wrap_constraints.remove(i.outer) : this.wrap_constraints.remove(i.outer), this.midstep = !0) : i.active = !1, i.clearcache()) : (t = n, n = n.next) } var l = null , a = this.c_arbiters_true , s = a.head , r = null != this.c_arbiters_false; for (r && null == s && (r = !1, s = this.c_arbiters_false.head, a = this.c_arbiters_false, l = null); null != s; ) { var _ = s.elt; this.presteparb(_, e) ? (s = a.inlined_erase(l), r && null == s && (r = !1, s = this.c_arbiters_false.head, a = this.c_arbiters_false, l = null)) : (l = s, s = s.next, r && null == s && (r = !1, s = this.c_arbiters_false.head, a = this.c_arbiters_false, l = null)) } var o = null , p = this.f_arbiters , h = p.head , d = !1; for (d && null == h && (d = !1, p = null, o = null); null != h; ) { var u = h.elt; this.presteparb(u, e) ? (h = p.inlined_erase(o), d && null == h && (d = !1, p = null, o = null)) : (o = h, h = h.next, d && null == h && (d = !1, p = null, o = null)) } var c = null , m = this.s_arbiters , U = m.head , Q = !1; for (Q && null == U && (Q = !1, m = null, c = null); null != U; ) { var N = U.elt; this.presteparb(N, e) ? (U = m.inlined_erase(c), Q && null == U && (Q = !1, m = null, c = null)) : (c = U, U = U.next, Q && null == U && (Q = !1, m = null, c = null)) } }, warmStart: function() { for (var e = this.f_arbiters.head; null != e; ) { var t = e.elt; t.active && 0 != (1 & t.immState) && t.warmStart(), e = e.next } var n = this.c_arbiters_false.head , i = !0; for (null == n && (n = this.c_arbiters_true.head, i = !1); null != n; ) { var l = n.elt; l.active && 0 != (1 & l.immState) && l.warmStart(), n = n.next, i && null == n && (n = this.c_arbiters_true.head, i = !1) } for (var a = this.live_constraints.head; null != a; ) { a.elt.warmStart(), a = a.next } }, iterateVel: function(e) { for (var t = 0; t < e; ) { t++; for (var n = this.f_arbiters.head; null != n; ) { var i = n.elt; i.active && 0 != (1 & i.immState) && i.applyImpulseVel(), n = n.next } for (var l = null, a = this.live_constraints.head; null != a; ) { var s = a.elt; s.applyImpulseVel() ? (a = this.live_constraints.erase(l), s.broken(), this.constraintCbBreak(s), s.removeOnBreak ? (s.component.sleeping = !0, this.midstep = !1, null != s.compound ? s.compound.wrap_constraints.remove(s.outer) : this.wrap_constraints.remove(s.outer), this.midstep = !0) : s.active = !1, s.clearcache()) : (l = a, a = a.next) } var r = this.c_arbiters_false.head , _ = !0; for (null == r && (r = this.c_arbiters_true.head, _ = !1); null != r; ) { var o = r.elt; o.active && 0 != (1 & o.immState) && o.applyImpulseVel(), r = r.next, _ && null == r && (r = this.c_arbiters_true.head, _ = !1) } } }, iteratePos: function(e) { for (var t = 0; t < e; ) { t++; for (var n = null, i = this.live_constraints.head; null != i; ) { var l = i.elt; !l.__velocity && l.stiff && l.applyImpulsePos() ? (i = this.live_constraints.erase(n), l.broken(), this.constraintCbBreak(l), l.removeOnBreak ? (l.component.sleeping = !0, this.midstep = !1, null != l.compound ? l.compound.wrap_constraints.remove(l.outer) : this.wrap_constraints.remove(l.outer), this.midstep = !0) : l.active = !1, l.clearcache()) : (n = i, i = i.next) } var a = this.c_arbiters_false.head , s = !0; for (null == a && (a = this.c_arbiters_true.head, s = !1); null != a; ) { var r = a.elt; r.active && 0 != (1 & r.immState) && r.applyImpulsePos(), a = a.next, s && null == a && (a = this.c_arbiters_true.head, s = !1) } } }, group_ignore: function(e, t) { var n = e.lookup_group(); if (null == n) return !1; var i = t.lookup_group(); if (null == i) return !1; for (var l = !1; null != n && null != i; ) { if (n == i) { l = n.ignore; break } n.depth < i.depth ? i = i.group : n = n.group } return l }, interactionType: function(e, t, n, i) { var l; l = !1; for (var a = n.constraints.head; null != a; ) { var s = a.elt; if (s.ignore && s.pair_exists(n.id, i.id)) { l = !0; break } a = a.next } return l || this.group_ignore(e, t) ? -1 : (e.sensorEnabled || t.sensorEnabled) && e.filter.shouldSense(t.filter) ? 2 : !e.fluidEnabled && !t.fluidEnabled || !e.filter.shouldFlow(t.filter) || 0 == n.imass && 0 == i.imass && 0 == n.iinertia && 0 == i.iinertia ? !e.filter.shouldCollide(t.filter) || 0 == n.imass && 0 == i.imass && 0 == n.iinertia && 0 == i.iinertia ? -1 : 1 : 0 }, precb: null, prelisteners: null, narrowPhase: function(e, t, n, i, l) { var a = this , s = null , r = e.body , _ = t.body , o = this.interactionType(e, t, r, _); if (-1 != o) { var p, h; e.type > t.type ? (p = t, h = e) : e.type == t.type ? e.id < t.id ? (p = e, h = t) : (h = e, p = t) : (p = e, h = t); var d = p == t; if (0 == o) { var u; if (null == i) { for (var c = null, m = (r.arbiters.length < _.arbiters.length ? r : _).arbiters.head; null != m; ) { var U = m.elt; if (U.id == p.id && U.di == h.id) { c = U; break } m = m.next } u = c } else u = i; var Q, N = null == u, F = !1; N ? null == zpp_$nape_dynamics_ZPP_$FluidArbiter.zpp_pool ? Q = new zpp_$nape_dynamics_ZPP_$FluidArbiter : (Q = zpp_$nape_dynamics_ZPP_$FluidArbiter.zpp_pool, zpp_$nape_dynamics_ZPP_$FluidArbiter.zpp_pool = Q.next, Q.next = null) : null == u.fluidarb ? (u.cleared = !0, u.b1.arbiters.inlined_try_remove(u), u.b2.arbiters.inlined_try_remove(u), null != u.pair && (u.pair.arb = null, u.pair = null), u.active = !1, this.f_arbiters.modified = !0, null == zpp_$nape_dynamics_ZPP_$FluidArbiter.zpp_pool ? Q = new zpp_$nape_dynamics_ZPP_$FluidArbiter : (Q = zpp_$nape_dynamics_ZPP_$FluidArbiter.zpp_pool, zpp_$nape_dynamics_ZPP_$FluidArbiter.zpp_pool = Q.next, Q.next = null), Q.intchange = !0, N = !0, F = !0) : Q = u.fluidarb; if (N || Q.stamp != this.stamp || l) if (Q.stamp = this.stamp, zpp_$nape_geom_ZPP_$Collide.flowCollide(p, h, Q)) { if (N ? (Q.b1 = e.body, Q.ws1 = e, Q.b2 = t.body, Q.ws2 = t, Q.id = p.id, Q.di = h.id, Q.b1.arbiters.inlined_add(Q), Q.b2.arbiters.inlined_add(Q), Q.active = !0, Q.present = 0, Q.cleared = !1, Q.sleeping = !1, Q.fresh = !1, Q.presentable = !1, Q.nx = 0, Q.ny = 1, Q.dampx = 0, Q.dampy = 0, Q.adamp = 0, this.f_arbiters.inlined_add(Q), Q.fresh = !F) : Q.fresh = Q.up_stamp < this.stamp - 1 || Q.endGenerated == this.stamp && l, Q.up_stamp = Q.stamp, Q.fresh || 0 == (4 & Q.immState)) { Q.immState = 1; var Z, f, S = !1; Z = Q.ws1.id > Q.ws2.id ? Q.ws2 : Q.ws1, f = Q.ws1.id > Q.ws2.id ? Q.ws1 : Q.ws2, this.inlined_MRCA_chains(Z, f); for (var g = this.mrca1.head; null != g; ) { for (var B = g.elt, b = this.mrca2.head; null != b; ) { var v = b.elt , W = B.cbSet , T = v.cbSet; if (W.manager.pair(W, T).empty_intersection()) b = b.next; else { var V = null , R = null; this.prelisteners.inlined_clear(); if (W.manager.pair(W, T).forall(5, function(e) { return function(t) { 0 != (4 & t.itype) && (e[0] = a.prelisteners.inlined_insert(e[0], t), S = S || !t.pure) } }([null])), null != this.prelisteners.head) { if (null == (V = zpp_$nape_phys_ZPP_$Interactor.get(B, v)) && (R = zpp_$nape_space_ZPP_$CallbackSet.get(B, v), this.add_callbackset(R)), null == V || (V.FLUIDstamp != this.stamp || l) && 0 == (4 & V.FLUIDstate)) { if (null != R && (V = R), null != V) for (var y = this.prelisteners.head; null != y; ) { 7 == y.elt.itype ? (V.COLLISIONstamp = this.stamp, V.SENSORstamp = this.stamp, V.FLUIDstamp = this.stamp) : V.FLUIDstamp = this.stamp, y = y.next } var D = Q.active; Q.active = !0; this.precb.zpp_inner.pre_arbiter = Q, this.precb.zpp_inner.set = V; for (var x = this.prelisteners.head; null != x; ) { var J = x.elt; this.precb.zpp_inner.listener = J, zpp_$nape_phys_ZPP_$Interactor.int_callback(V, J, this.precb.zpp_inner), this.precb.zpp_inner.pre_swapped = B != this.precb.zpp_inner.int1; var z = J.handlerp(this.precb); null != z && (z == (null == zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT) ? Q.immState = 5 : z == (null == zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT_ONCE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT_ONCE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT_ONCE) ? Q.immState = 1 : z == (null == zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE) ? Q.immState = 6 : Q.immState = 2), x = x.next } if (Q.active = D, null != V) for (var k = this.prelisteners.head; null != k; ) { 7 == k.elt.itype ? (V.COLLISIONstate = Q.immState, V.SENSORstate = Q.immState, V.FLUIDstate = Q.immState) : V.FLUIDstate = Q.immState, k = k.next } } else null == V ? 0 == (4 & Q.immState) && (Q.immState = 1) : Q.immState = V.FLUIDstate; b = b.next } else b = b.next } } g = g.next } if (S && 0 == (4 & Q.immState)) { if (2 == Q.b1.type) { var E = Q.b1; E.world || (E.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == E.type && (E.kinematicDelaySleep = !0), E.component.sleeping && this.really_wake(E, !1)) } if (2 == Q.b1.type) { var P = Q.b2; P.world || (P.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == P.type && (P.kinematicDelaySleep = !0), P.component.sleeping && this.really_wake(P, !1)) } } } if (0 != (1 & Q.immState)) { if (2 == Q.b1.type && Q.b1.component.sleeping) { var M = Q.b1; M.world || (M.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == M.type && (M.kinematicDelaySleep = !0), M.component.sleeping && this.really_wake(M, !1)) } if (2 == Q.b2.type && Q.b2.component.sleeping) { var w = Q.b2; w.world || (w.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == w.type && (w.kinematicDelaySleep = !0), w.component.sleeping && this.really_wake(w, !1)) } } Q.sleeping && (Q.sleeping = !1, this.f_arbiters.inlined_add(Q)), s = Q } else if (N) { var $ = Q; $.next = zpp_$nape_dynamics_ZPP_$FluidArbiter.zpp_pool, zpp_$nape_dynamics_ZPP_$FluidArbiter.zpp_pool = $, s = null } else s = Q; else s = Q } else if (1 == o) { var C, G; if (C = n ? this.c_arbiters_true : this.c_arbiters_false, null == i) { for (var O = null, I = (r.arbiters.length < _.arbiters.length ? r : _).arbiters.head; null != I; ) { var H = I.elt; if (H.id == p.id && H.di == h.id) { O = H; break } I = I.next } G = O } else G = i; var Y, A = null == G, L = !1; A ? (null == zpp_$nape_dynamics_ZPP_$ColArbiter.zpp_pool ? Y = new zpp_$nape_dynamics_ZPP_$ColArbiter : (Y = zpp_$nape_dynamics_ZPP_$ColArbiter.zpp_pool, zpp_$nape_dynamics_ZPP_$ColArbiter.zpp_pool = Y.next, Y.next = null), Y.stat = n) : null == G.colarb ? (G.cleared = !0, G.b1.arbiters.inlined_try_remove(G), G.b2.arbiters.inlined_try_remove(G), null != G.pair && (G.pair.arb = null, G.pair = null), G.active = !1, this.f_arbiters.modified = !0, null == zpp_$nape_dynamics_ZPP_$ColArbiter.zpp_pool ? Y = new zpp_$nape_dynamics_ZPP_$ColArbiter : (Y = zpp_$nape_dynamics_ZPP_$ColArbiter.zpp_pool, zpp_$nape_dynamics_ZPP_$ColArbiter.zpp_pool = Y.next, Y.next = null), Y.intchange = !0, Y.stat = n, A = !0, L = !0) : (d = p != (Y = G.colarb).s1, Y.stat != n && (Y.stat = n, Y.sleeping || ((n ? this.c_arbiters_false : this.c_arbiters_true).remove(Y), C.add(Y)))); if (A || Y.stamp != this.stamp || l) if (Y.stamp = this.stamp, zpp_$nape_geom_ZPP_$Collide.contactCollide(p, h, Y, d)) { if (A ? (Y.b1 = e.body, Y.ws1 = e, Y.b2 = t.body, Y.ws2 = t, Y.id = p.id, Y.di = h.id, Y.b1.arbiters.inlined_add(Y), Y.b2.arbiters.inlined_add(Y), Y.active = !0, Y.present = 0, Y.cleared = !1, Y.sleeping = !1, Y.fresh = !1, Y.presentable = !1, Y.s1 = e, Y.s2 = t, Y.userdef_restitution || (Y.s1.material.elasticity <= -1 / 0 || Y.s2.material.elasticity <= -1 / 0 ? Y.restitution = 0 : Y.s1.material.elasticity >= 1 / 0 || Y.s2.material.elasticity >= 1 / 0 ? Y.restitution = 1 : Y.restitution = (Y.s1.material.elasticity + Y.s2.material.elasticity) / 2, Y.restitution < 0 && (Y.restitution = 0), Y.restitution > 1 && (Y.restitution = 1)), Y.userdef_dyn_fric || (Y.dyn_fric = Math.sqrt(Y.s1.material.dynamicFriction * Y.s2.material.dynamicFriction)), Y.userdef_stat_fric || (Y.stat_fric = Math.sqrt(Y.s1.material.staticFriction * Y.s2.material.staticFriction)), Y.userdef_rfric || (Y.rfric = Math.sqrt(Y.s1.material.rollingFriction * Y.s2.material.rollingFriction)), C.inlined_add(Y), Y.fresh = !L) : Y.fresh = Y.up_stamp < this.stamp - 1 || Y.endGenerated == this.stamp && l, Y.up_stamp = Y.stamp, Y.fresh || 0 == (4 & Y.immState)) { Y.immState = 1; var X, j, K = !1; X = Y.ws1.id > Y.ws2.id ? Y.ws2 : Y.ws1, j = Y.ws1.id > Y.ws2.id ? Y.ws1 : Y.ws2, this.inlined_MRCA_chains(X, j); for (var q = this.mrca1.head; null != q; ) { for (var ee = q.elt, te = this.mrca2.head; null != te; ) { var ne = te.elt , ie = ee.cbSet , le = ne.cbSet; if (ie.manager.pair(ie, le).empty_intersection()) te = te.next; else { var ae = null , se = null; this.prelisteners.inlined_clear(); if (ie.manager.pair(ie, le).forall(5, function(e) { return function(t) { 0 != (1 & t.itype) && (e[0] = a.prelisteners.inlined_insert(e[0], t), K = K || !t.pure) } }([null])), null != this.prelisteners.head) { if (null == (ae = zpp_$nape_phys_ZPP_$Interactor.get(ee, ne)) && (se = zpp_$nape_space_ZPP_$CallbackSet.get(ee, ne), this.add_callbackset(se)), null == ae || (ae.COLLISIONstamp != this.stamp || l) && 0 == (4 & ae.COLLISIONstate)) { if (null != se && (ae = se), null != ae) for (var re = this.prelisteners.head; null != re; ) { 7 == re.elt.itype ? (ae.COLLISIONstamp = this.stamp, ae.SENSORstamp = this.stamp, ae.FLUIDstamp = this.stamp) : ae.COLLISIONstamp = this.stamp, re = re.next } var _e = Y.active; Y.active = !0; Y.cleanupContacts(), this.precb.zpp_inner.pre_arbiter = Y, this.precb.zpp_inner.set = ae; for (var oe = this.prelisteners.head; null != oe; ) { var pe = oe.elt; this.precb.zpp_inner.listener = pe, zpp_$nape_phys_ZPP_$Interactor.int_callback(ae, pe, this.precb.zpp_inner), this.precb.zpp_inner.pre_swapped = ee != this.precb.zpp_inner.int1; var he = pe.handlerp(this.precb); null != he && (he == (null == zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT) ? Y.immState = 5 : he == (null == zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT_ONCE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT_ONCE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT_ONCE) ? Y.immState = 1 : he == (null == zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE) ? Y.immState = 6 : Y.immState = 2), oe = oe.next } if (Y.active = _e, null != ae) for (var de = this.prelisteners.head; null != de; ) { 7 == de.elt.itype ? (ae.COLLISIONstate = Y.immState, ae.SENSORstate = Y.immState, ae.FLUIDstate = Y.immState) : ae.COLLISIONstate = Y.immState, de = de.next } } else null == ae ? 0 == (4 & Y.immState) && (Y.immState = 1) : Y.immState = ae.COLLISIONstate; te = te.next } else te = te.next } } q = q.next } if (K && 0 == (4 & Y.immState)) { if (2 == Y.b1.type) { var ue = Y.b1; ue.world || (ue.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == ue.type && (ue.kinematicDelaySleep = !0), ue.component.sleeping && this.really_wake(ue, !1)) } if (2 == Y.b1.type) { var ce = Y.b2; ce.world || (ce.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == ce.type && (ce.kinematicDelaySleep = !0), ce.component.sleeping && this.really_wake(ce, !1)) } } } if (0 != (1 & Y.immState)) { if (2 == Y.b1.type && Y.b1.component.sleeping) { var me = Y.b1; me.world || (me.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == me.type && (me.kinematicDelaySleep = !0), me.component.sleeping && this.really_wake(me, !1)) } if (2 == Y.b2.type && Y.b2.component.sleeping) { var Ue = Y.b2; Ue.world || (Ue.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == Ue.type && (Ue.kinematicDelaySleep = !0), Ue.component.sleeping && this.really_wake(Ue, !1)) } } Y.sleeping && (Y.sleeping = !1, C.inlined_add(Y)), s = Y } else if (A) { var Qe = Y; Qe.userdef_dyn_fric = !1, Qe.userdef_stat_fric = !1, Qe.userdef_restitution = !1, Qe.userdef_rfric = !1, Qe.__ref_edge1 = Qe.__ref_edge2 = null, Qe.next = zpp_$nape_dynamics_ZPP_$ColArbiter.zpp_pool, zpp_$nape_dynamics_ZPP_$ColArbiter.zpp_pool = Qe, s = null } else s = Y; else s = Y } else { var Ne; if (null == i) { for (var Fe = null, Ze = (r.arbiters.length < _.arbiters.length ? r : _).arbiters.head; null != Ze; ) { var fe = Ze.elt; if (fe.id == p.id && fe.di == h.id) { Fe = fe; break } Ze = Ze.next } Ne = Fe } else Ne = i; var Se, ge = null == Ne, Be = !1; ge ? null == zpp_$nape_dynamics_ZPP_$SensorArbiter.zpp_pool ? Se = new zpp_$nape_dynamics_ZPP_$SensorArbiter : (Se = zpp_$nape_dynamics_ZPP_$SensorArbiter.zpp_pool, zpp_$nape_dynamics_ZPP_$SensorArbiter.zpp_pool = Se.next, Se.next = null) : null == Ne.sensorarb ? (Ne.cleared = !0, Ne.b1.arbiters.inlined_try_remove(Ne), Ne.b2.arbiters.inlined_try_remove(Ne), null != Ne.pair && (Ne.pair.arb = null, Ne.pair = null), Ne.active = !1, this.f_arbiters.modified = !0, null == zpp_$nape_dynamics_ZPP_$SensorArbiter.zpp_pool ? Se = new zpp_$nape_dynamics_ZPP_$SensorArbiter : (Se = zpp_$nape_dynamics_ZPP_$SensorArbiter.zpp_pool, zpp_$nape_dynamics_ZPP_$SensorArbiter.zpp_pool = Se.next, Se.next = null), Se.intchange = !0, ge = !0, Be = !0) : Se = Ne.sensorarb; if (ge || Se.stamp != this.stamp || l) if (Se.stamp = this.stamp, zpp_$nape_geom_ZPP_$Collide.testCollide(p, h)) { if (ge ? (Se.b1 = e.body, Se.ws1 = e, Se.b2 = t.body, Se.ws2 = t, Se.id = p.id, Se.di = h.id, Se.b1.arbiters.inlined_add(Se), Se.b2.arbiters.inlined_add(Se), Se.active = !0, Se.present = 0, Se.cleared = !1, Se.sleeping = !1, Se.fresh = !1, Se.presentable = !1, this.s_arbiters.inlined_add(Se), Se.fresh = !Be) : Se.fresh = Se.up_stamp < this.stamp - 1 || Se.endGenerated == this.stamp && l, Se.up_stamp = Se.stamp, Se.fresh || 0 == (4 & Se.immState)) { Se.immState = 1; var be, ve, We = !1; be = Se.ws1.id > Se.ws2.id ? Se.ws2 : Se.ws1, ve = Se.ws1.id > Se.ws2.id ? Se.ws1 : Se.ws2, this.inlined_MRCA_chains(be, ve); for (var Te = this.mrca1.head; null != Te; ) { for (var Ve = Te.elt, Re = this.mrca2.head; null != Re; ) { var ye = Re.elt , De = Ve.cbSet , xe = ye.cbSet; if (De.manager.pair(De, xe).empty_intersection()) Re = Re.next; else { var Je = null , ze = null; this.prelisteners.inlined_clear(); if (De.manager.pair(De, xe).forall(5, function(e) { return function(t) { 0 != (2 & t.itype) && (e[0] = a.prelisteners.inlined_insert(e[0], t), We = We || !t.pure) } }([null])), null != this.prelisteners.head) { if (null == (Je = zpp_$nape_phys_ZPP_$Interactor.get(Ve, ye)) && (ze = zpp_$nape_space_ZPP_$CallbackSet.get(Ve, ye), this.add_callbackset(ze)), null == Je || (Je.SENSORstamp != this.stamp || l) && 0 == (4 & Je.SENSORstate)) { if (null != ze && (Je = ze), null != Je) for (var ke = this.prelisteners.head; null != ke; ) { 7 == ke.elt.itype ? (Je.COLLISIONstamp = this.stamp, Je.SENSORstamp = this.stamp, Je.FLUIDstamp = this.stamp) : Je.SENSORstamp = this.stamp, ke = ke.next } var Ee = Se.active; Se.active = !0; this.precb.zpp_inner.pre_arbiter = Se, this.precb.zpp_inner.set = Je; for (var Pe = this.prelisteners.head; null != Pe; ) { var Me = Pe.elt; this.precb.zpp_inner.listener = Me, zpp_$nape_phys_ZPP_$Interactor.int_callback(Je, Me, this.precb.zpp_inner), this.precb.zpp_inner.pre_swapped = Ve != this.precb.zpp_inner.int1; var we = Me.handlerp(this.precb); null != we && (we == (null == zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT) ? Se.immState = 5 : we == (null == zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT_ONCE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT_ONCE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_ACCEPT_ONCE) ? Se.immState = 1 : we == (null == zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE = new nape_callbacks_PreFlag, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.PreFlag_IGNORE) ? Se.immState = 6 : Se.immState = 2), Pe = Pe.next } if (Se.active = Ee, null != Je) for (var $e = this.prelisteners.head; null != $e; ) { 7 == $e.elt.itype ? (Je.COLLISIONstate = Se.immState, Je.SENSORstate = Se.immState, Je.FLUIDstate = Se.immState) : Je.SENSORstate = Se.immState, $e = $e.next } } else null == Je ? 0 == (4 & Se.immState) && (Se.immState = 1) : Se.immState = Je.SENSORstate; Re = Re.next } else Re = Re.next } } Te = Te.next } if (We && 0 == (4 & Se.immState)) { if (1 != Se.b1.type) { var Ce = Se.b1; Ce.world || (Ce.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == Ce.type && (Ce.kinematicDelaySleep = !0), Ce.component.sleeping && this.really_wake(Ce, !1)) } if (1 != Se.b2.type) { var Ge = Se.b2; Ge.world || (Ge.component.waket = this.stamp + (this.midstep ? 0 : 1), 3 == Ge.type && (Ge.kinematicDelaySleep = !0), Ge.component.sleeping && this.really_wake(Ge, !1)) } } } Se.sleeping && (Se.sleeping = !1, this.s_arbiters.inlined_add(Se)), s = Se } else if (ge) { var Oe = Se; Oe.next = zpp_$nape_dynamics_ZPP_$SensorArbiter.zpp_pool, zpp_$nape_dynamics_ZPP_$SensorArbiter.zpp_pool = Oe, s = null } else s = Se; else s = Se } } return s }, mrca1: null, mrca2: null, MRCA_chains: function(e, t) { this.inlined_MRCA_chains(e, t) }, inlined_MRCA_chains: function(e, t) { this.mrca1.inlined_clear(), this.mrca2.inlined_clear(), null != e.cbSet && this.mrca1.inlined_add(e), null != e.body.cbSet && this.mrca1.inlined_add(e.body), null != t.cbSet && this.mrca2.inlined_add(t), null != t.body.cbSet && this.mrca2.inlined_add(t.body); for (var n = e.body.compound, i = t.body.compound; n != i; ) { (null == n ? 0 : n.depth) < (null == i ? 0 : i.depth) ? (null != i.cbSet && this.mrca2.inlined_add(i), i = i.compound) : (null != n.cbSet && this.mrca1.inlined_add(n), n = n.compound) } }, __class__: zpp_$nape_space_ZPP_$Space }; var zpp_$nape_space_ZPP_$SweepData = function() { this.aabb = null, this.shape = null, this.prev = null, this.next = null }; $hxClasses["zpp_nape.space.ZPP_SweepData"] = zpp_$nape_space_ZPP_$SweepData, zpp_$nape_space_ZPP_$SweepData.__name__ = ["zpp_nape", "space", "ZPP_SweepData"], zpp_$nape_space_ZPP_$SweepData.prototype = { next: null, prev: null, shape: null, aabb: null, __class__: zpp_$nape_space_ZPP_$SweepData }; var zpp_$nape_space_ZPP_$SweepPhase = function(e) { this.failed = null, this.list = null, zpp_$nape_space_ZPP_$Broadphase.call(this), this.space = e, this.is_sweep = !0, this.sweep = this }; $hxClasses["zpp_nape.space.ZPP_SweepPhase"] = zpp_$nape_space_ZPP_$SweepPhase, zpp_$nape_space_ZPP_$SweepPhase.__name__ = ["zpp_nape", "space", "ZPP_SweepPhase"], zpp_$nape_space_ZPP_$SweepPhase.__super__ = zpp_$nape_space_ZPP_$Broadphase, zpp_$nape_space_ZPP_$SweepPhase.prototype = $extend(zpp_$nape_space_ZPP_$Broadphase.prototype, { list: null, __insert: function(e) { var t; null == zpp_$nape_space_ZPP_$SweepData.zpp_pool ? t = new zpp_$nape_space_ZPP_$SweepData : (t = zpp_$nape_space_ZPP_$SweepData.zpp_pool, zpp_$nape_space_ZPP_$SweepData.zpp_pool = t.next, t.next = null), e.sweep = t, t.shape = e, t.aabb = e.aabb, t.next = this.list, null != this.list && (this.list.prev = t), this.list = t }, __remove: function(e) { var t = e.sweep; null == t.prev ? this.list = t.next : t.prev.next = t.next, null != t.next && (t.next.prev = t.prev), e.sweep = null; var n = t; n.prev = null, n.shape = null, n.aabb = null, n.next = zpp_$nape_space_ZPP_$SweepData.zpp_pool, zpp_$nape_space_ZPP_$SweepData.zpp_pool = n }, sync_broadphase: function() { this.space.validation(), null != this.list && this.sync_broadphase_fast() }, sync_broadphase_fast: function() { for (var e = this.list.next; null != e; ) { var t = e.next , n = e.prev; if (e.aabb.minx > n.aabb.minx) e = t; else { for (; null != n.prev && n.prev.aabb.minx > e.aabb.minx; ) n = n.prev; var i = e.prev; i.next = e.next, null != e.next && (e.next.prev = i), null == n.prev ? (e.prev = null, this.list = e, e.next = n, n.prev = e) : (e.prev = n.prev, n.prev = e, e.prev.next = e, e.next = n), e = t } } }, broadphase: function(e, t) { if (null != this.list) { this.sync_broadphase_fast(); for (var n = this.list; null != n; ) { for (var i = n.next, l = n.shape, a = l.body, s = n.aabb.maxx; null != i && !(i.aabb.minx > s); ) { var r = i.shape , _ = r.body; _ != a && (1 != a.type || 1 != _.type) ? a.component.sleeping && _.component.sleeping ? i = i.next : (l.aabb.intersectY(r.aabb) && (t ? e.narrowPhase(l, r, !(2 == a.type && 2 == _.type), null, !1) : e.continuousEvent(l, r, !(2 == a.type && 2 == _.type), null, !1)), i = i.next) : i = i.next } n = n.next } } }, failed: null, bodiesInAABB: function(e, t, n, i, l) { this.sync_broadphase(), this.updateAABBShape(e); var a, s = this.aabbShape.zpp_inner.aabb; a = null == l ? new nape_phys_BodyList : l, null == this.failed && (this.failed = new nape_phys_BodyList); for (var r = this.list; null != r && r.aabb.maxx < s.minx; ) r = r.next; for (; null != r && r.aabb.minx <= s.maxx; ) { var _ = r.shape , o = _.body.outer; if (r.aabb.intersect(s) && (null == i || _.filter.shouldCollide(i))) if (t) if (n) { if (!this.failed.has(o)) { var p = zpp_$nape_geom_ZPP_$Collide.containTest(this.aabbShape.zpp_inner, _); !a.has(o) && p ? a.push(o) : p || (a.remove(o), this.failed.push(o)) } } else !a.has(o) && zpp_$nape_geom_ZPP_$Collide.testCollide_safe(_, this.aabbShape.zpp_inner) && a.push(o); else if (n) { if (!this.failed.has(o)) { var h = s.contains(_.aabb); !a.has(o) && h ? a.push(o) : h || (a.remove(o), this.failed.push(o)) } } else !a.has(o) && s.contains(_.aabb) && a.push(o); r = r.next } return this.failed.clear(), a }, bodiesInCircle: function(e, t, n, i, l, a) { this.sync_broadphase(), this.updateCircShape(e, t, n); var s, r = this.circShape.zpp_inner.aabb; s = null == a ? new nape_phys_BodyList : a, null == this.failed && (this.failed = new nape_phys_BodyList); for (var _ = this.list; null != _ && _.aabb.maxx < r.minx; ) _ = _.next; for (; null != _ && _.aabb.minx <= r.maxx; ) { if (_.aabb.intersect(r)) { var o = _.shape , p = o.body.outer; if (null == l || o.filter.shouldCollide(l)) if (i) { if (!this.failed.has(p)) { var h = zpp_$nape_geom_ZPP_$Collide.containTest(this.circShape.zpp_inner, o); !s.has(p) && h ? s.push(p) : h || (s.remove(p), this.failed.push(p)) } } else !s.has(p) && zpp_$nape_geom_ZPP_$Collide.testCollide_safe(o, this.circShape.zpp_inner) && s.push(p) } _ = _.next } return this.failed.clear(), s }, __class__: zpp_$nape_space_ZPP_$SweepPhase }); var zpp_$nape_util_ZNPList_$ZPP_$CallbackSet = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_CallbackSet"] = zpp_$nape_util_ZNPList_$ZPP_$CallbackSet, zpp_$nape_util_ZNPList_$ZPP_$CallbackSet.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_CallbackSet"], zpp_$nape_util_ZNPList_$ZPP_$CallbackSet.prototype = { head: null, modified: null, pushmod: null, length: null, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$CallbackSet.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$CallbackSet : (n = zpp_$nape_util_ZNPNode_$ZPP_$CallbackSet.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$CallbackSet.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, inlined_try_remove: function(e) { for (var t = null, n = this.head, i = !1; null != n; ) { if (n.elt == e) { this.inlined_erase(t), i = !0; break } t = n, n = n.next } return i }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$CallbackSet.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$CallbackSet.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, __class__: zpp_$nape_util_ZNPList_$ZPP_$CallbackSet }; var zpp_$nape_util_ZNPList_$ZPP_$Shape = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_Shape"] = zpp_$nape_util_ZNPList_$ZPP_$Shape, zpp_$nape_util_ZNPList_$ZPP_$Shape.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_Shape"], zpp_$nape_util_ZNPList_$ZPP_$Shape.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$Shape.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$Shape : (n = zpp_$nape_util_ZNPNode_$ZPP_$Shape.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Shape.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, insert: function(e, t) { return this.inlined_insert(e, t) }, inlined_insert: function(e, t) { var n, i; return null == zpp_$nape_util_ZNPNode_$ZPP_$Shape.zpp_pool ? i = new zpp_$nape_util_ZNPNode_$ZPP_$Shape : (i = zpp_$nape_util_ZNPNode_$ZPP_$Shape.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Shape.zpp_pool = i.next, i.next = null), i.elt = t, n = i, null == e ? (n.next = this.head, this.head = n) : (n.next = e.next, e.next = n), this.pushmod = this.modified = !0, this.length++, n }, remove: function(e) { this.inlined_try_remove(e) }, inlined_try_remove: function(e) { for (var t = null, n = this.head, i = !1; null != n; ) { if (n.elt == e) { this.inlined_erase(t), i = !0; break } t = n, n = n.next } return i }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$Shape.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Shape.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, iterator_at: function(e) { for (var t = this.head; e-- > 0 && null != t; ) t = t.next; return t }, __class__: zpp_$nape_util_ZNPList_$ZPP_$Shape }; var zpp_$nape_util_ZNPList_$ZPP_$Body = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_Body"] = zpp_$nape_util_ZNPList_$ZPP_$Body, zpp_$nape_util_ZNPList_$ZPP_$Body.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_Body"], zpp_$nape_util_ZNPList_$ZPP_$Body.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$Body.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$Body : (n = zpp_$nape_util_ZNPNode_$ZPP_$Body.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Body.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, insert: function(e, t) { return this.inlined_insert(e, t) }, inlined_insert: function(e, t) { var n, i; return null == zpp_$nape_util_ZNPNode_$ZPP_$Body.zpp_pool ? i = new zpp_$nape_util_ZNPNode_$ZPP_$Body : (i = zpp_$nape_util_ZNPNode_$ZPP_$Body.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Body.zpp_pool = i.next, i.next = null), i.elt = t, n = i, null == e ? (n.next = this.head, this.head = n) : (n.next = e.next, e.next = n), this.pushmod = this.modified = !0, this.length++, n }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$Body.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Body.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, inlined_pop_unsafe: function() { var e = this.head.elt; return this.pop(), e }, remove: function(e) { this.inlined_try_remove(e) }, inlined_try_remove: function(e) { for (var t = null, n = this.head, i = !1; null != n; ) { if (n.elt == e) { this.inlined_erase(t), i = !0; break } t = n, n = n.next } return i }, erase: function(e) { return this.inlined_erase(e) }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$Body.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Body.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, has: function(e) { return this.inlined_has(e) }, inlined_has: function(e) { var t; t = !1; for (var n = this.head; null != n; ) { if (n.elt == e) { t = !0; break } n = n.next } return t }, iterator_at: function(e) { for (var t = this.head; e-- > 0 && null != t; ) t = t.next; return t }, __class__: zpp_$nape_util_ZNPList_$ZPP_$Body }; var zpp_$nape_util_ZNPList_$ZPP_$Compound = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_Compound"] = zpp_$nape_util_ZNPList_$ZPP_$Compound, zpp_$nape_util_ZNPList_$ZPP_$Compound.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_Compound"], zpp_$nape_util_ZNPList_$ZPP_$Compound.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$Compound.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$Compound : (n = zpp_$nape_util_ZNPNode_$ZPP_$Compound.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Compound.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, insert: function(e, t) { return this.inlined_insert(e, t) }, inlined_insert: function(e, t) { var n, i; return null == zpp_$nape_util_ZNPNode_$ZPP_$Compound.zpp_pool ? i = new zpp_$nape_util_ZNPNode_$ZPP_$Compound : (i = zpp_$nape_util_ZNPNode_$ZPP_$Compound.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Compound.zpp_pool = i.next, i.next = null), i.elt = t, n = i, null == e ? (n.next = this.head, this.head = n) : (n.next = e.next, e.next = n), this.pushmod = this.modified = !0, this.length++, n }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$Compound.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Compound.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, pop_unsafe: function() { return this.inlined_pop_unsafe() }, inlined_pop_unsafe: function() { var e = this.head.elt; return this.pop(), e }, remove: function(e) { this.inlined_try_remove(e) }, inlined_try_remove: function(e) { for (var t = null, n = this.head, i = !1; null != n; ) { if (n.elt == e) { this.inlined_erase(t), i = !0; break } t = n, n = n.next } return i }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$Compound.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Compound.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, iterator_at: function(e) { for (var t = this.head; e-- > 0 && null != t; ) t = t.next; return t }, __class__: zpp_$nape_util_ZNPList_$ZPP_$Compound }; var zpp_$nape_util_ZNPList_$ZPP_$Arbiter = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_Arbiter"] = zpp_$nape_util_ZNPList_$ZPP_$Arbiter, zpp_$nape_util_ZNPList_$ZPP_$Arbiter.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_Arbiter"], zpp_$nape_util_ZNPList_$ZPP_$Arbiter.prototype = { head: null, modified: null, pushmod: null, length: null, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$Arbiter.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$Arbiter : (n = zpp_$nape_util_ZNPNode_$ZPP_$Arbiter.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Arbiter.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$Arbiter.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Arbiter.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, pop_unsafe: function() { return this.inlined_pop_unsafe() }, inlined_pop_unsafe: function() { var e = this.head.elt; return this.pop(), e }, inlined_try_remove: function(e) { for (var t = null, n = this.head, i = !1; null != n; ) { if (n.elt == e) { this.inlined_erase(t), i = !0; break } t = n, n = n.next } return i }, erase: function(e) { return this.inlined_erase(e) }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$Arbiter.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Arbiter.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, inlined_has: function(e) { var t; t = !1; for (var n = this.head; null != n; ) { if (n.elt == e) { t = !0; break } n = n.next } return t }, __class__: zpp_$nape_util_ZNPList_$ZPP_$Arbiter }; var zpp_$nape_util_ZNPList_$ZPP_$CbSetPair = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_CbSetPair"] = zpp_$nape_util_ZNPList_$ZPP_$CbSetPair, zpp_$nape_util_ZNPList_$ZPP_$CbSetPair.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_CbSetPair"], zpp_$nape_util_ZNPList_$ZPP_$CbSetPair.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$CbSetPair.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$CbSetPair : (n = zpp_$nape_util_ZNPNode_$ZPP_$CbSetPair.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$CbSetPair.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$CbSetPair.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$CbSetPair.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, pop_unsafe: function() { return this.inlined_pop_unsafe() }, inlined_pop_unsafe: function() { var e = this.head.elt; return this.pop(), e }, remove: function(e) { this.inlined_try_remove(e) }, inlined_try_remove: function(e) { for (var t = null, n = this.head, i = !1; null != n; ) { if (n.elt == e) { this.inlined_erase(t), i = !0; break } t = n, n = n.next } return i }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$CbSetPair.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$CbSetPair.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, __class__: zpp_$nape_util_ZNPList_$ZPP_$CbSetPair }; var zpp_$nape_util_ZNPList_$ZPP_$PartitionVertex = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_PartitionVertex"] = zpp_$nape_util_ZNPList_$ZPP_$PartitionVertex, zpp_$nape_util_ZNPList_$ZPP_$PartitionVertex.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_PartitionVertex"], zpp_$nape_util_ZNPList_$ZPP_$PartitionVertex.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$PartitionVertex.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$PartitionVertex : (n = zpp_$nape_util_ZNPNode_$ZPP_$PartitionVertex.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$PartitionVertex.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, insert: function(e, t) { return this.inlined_insert(e, t) }, inlined_insert: function(e, t) { var n, i; return null == zpp_$nape_util_ZNPNode_$ZPP_$PartitionVertex.zpp_pool ? i = new zpp_$nape_util_ZNPNode_$ZPP_$PartitionVertex : (i = zpp_$nape_util_ZNPNode_$ZPP_$PartitionVertex.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$PartitionVertex.zpp_pool = i.next, i.next = null), i.elt = t, n = i, null == e ? (n.next = this.head, this.head = n) : (n.next = e.next, e.next = n), this.pushmod = this.modified = !0, this.length++, n }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$PartitionVertex.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$PartitionVertex.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, pop_unsafe: function() { return this.inlined_pop_unsafe() }, inlined_pop_unsafe: function() { var e = this.head.elt; return this.pop(), e }, remove: function(e) { this.inlined_try_remove(e) }, inlined_try_remove: function(e) { for (var t = null, n = this.head, i = !1; null != n; ) { if (n.elt == e) { this.inlined_erase(t), i = !0; break } t = n, n = n.next } return i }, erase: function(e) { return this.inlined_erase(e) }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$PartitionVertex.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$PartitionVertex.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, reverse: function() { for (var e = this.head, t = null; null != e; ) { var n = e.next; e.next = t, this.head = e, t = e, e = n } this.modified = !0, this.pushmod = !0 }, __class__: zpp_$nape_util_ZNPList_$ZPP_$PartitionVertex }; var zpp_$nape_util_ZNPList_$ZPP_$PartitionedPoly = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_PartitionedPoly"] = zpp_$nape_util_ZNPList_$ZPP_$PartitionedPoly, zpp_$nape_util_ZNPList_$ZPP_$PartitionedPoly.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_PartitionedPoly"], zpp_$nape_util_ZNPList_$ZPP_$PartitionedPoly.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$PartitionedPoly.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$PartitionedPoly : (n = zpp_$nape_util_ZNPNode_$ZPP_$PartitionedPoly.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$PartitionedPoly.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$PartitionedPoly.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$PartitionedPoly.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, pop_unsafe: function() { return this.inlined_pop_unsafe() }, inlined_pop_unsafe: function() { var e = this.head.elt; return this.pop(), e }, erase: function(e) { return this.inlined_erase(e) }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$PartitionedPoly.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$PartitionedPoly.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, __class__: zpp_$nape_util_ZNPList_$ZPP_$PartitionedPoly }; var zpp_$nape_util_ZNPList_$ZPP_$GeomVert = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_GeomVert"] = zpp_$nape_util_ZNPList_$ZPP_$GeomVert, zpp_$nape_util_ZNPList_$ZPP_$GeomVert.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_GeomVert"], zpp_$nape_util_ZNPList_$ZPP_$GeomVert.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$GeomVert.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$GeomVert : (n = zpp_$nape_util_ZNPNode_$ZPP_$GeomVert.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$GeomVert.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$GeomVert.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$GeomVert.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, pop_unsafe: function() { return this.inlined_pop_unsafe() }, inlined_pop_unsafe: function() { var e = this.head.elt; return this.pop(), e }, __class__: zpp_$nape_util_ZNPList_$ZPP_$GeomVert }; var zpp_$nape_util_ZNPList_$ZPP_$AABBPair = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_AABBPair"] = zpp_$nape_util_ZNPList_$ZPP_$AABBPair, zpp_$nape_util_ZNPList_$ZPP_$AABBPair.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_AABBPair"], zpp_$nape_util_ZNPList_$ZPP_$AABBPair.prototype = { head: null, modified: null, pushmod: null, length: null, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$AABBPair.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$AABBPair : (n = zpp_$nape_util_ZNPNode_$ZPP_$AABBPair.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$AABBPair.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$AABBPair.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$AABBPair.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, pop_unsafe: function() { return this.inlined_pop_unsafe() }, inlined_pop_unsafe: function() { var e = this.head.elt; return this.pop(), e }, remove: function(e) { this.inlined_try_remove(e) }, inlined_try_remove: function(e) { for (var t = null, n = this.head, i = !1; null != n; ) { if (n.elt == e) { this.inlined_erase(t), i = !0; break } t = n, n = n.next } return i }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$AABBPair.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$AABBPair.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, __class__: zpp_$nape_util_ZNPList_$ZPP_$AABBPair }; var zpp_$nape_util_ZNPList_$ZPP_$Edge = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_Edge"] = zpp_$nape_util_ZNPList_$ZPP_$Edge, zpp_$nape_util_ZNPList_$ZPP_$Edge.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_Edge"], zpp_$nape_util_ZNPList_$ZPP_$Edge.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$Edge.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$Edge : (n = zpp_$nape_util_ZNPNode_$ZPP_$Edge.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Edge.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, insert: function(e, t) { return this.inlined_insert(e, t) }, inlined_insert: function(e, t) { var n, i; return null == zpp_$nape_util_ZNPNode_$ZPP_$Edge.zpp_pool ? i = new zpp_$nape_util_ZNPNode_$ZPP_$Edge : (i = zpp_$nape_util_ZNPNode_$ZPP_$Edge.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Edge.zpp_pool = i.next, i.next = null), i.elt = t, n = i, null == e ? (n.next = this.head, this.head = n) : (n.next = e.next, e.next = n), this.pushmod = this.modified = !0, this.length++, n }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$Edge.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Edge.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, pop_unsafe: function() { return this.inlined_pop_unsafe() }, inlined_pop_unsafe: function() { var e = this.head.elt; return this.pop(), e }, erase: function(e) { return this.inlined_erase(e) }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$Edge.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Edge.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, reverse: function() { for (var e = this.head, t = null; null != e; ) { var n = e.next; e.next = t, this.head = e, t = e, e = n } this.modified = !0, this.pushmod = !0 }, iterator_at: function(e) { for (var t = this.head; e-- > 0 && null != t; ) t = t.next; return t }, __class__: zpp_$nape_util_ZNPList_$ZPP_$Edge }; var zpp_$nape_util_ZNPList_$ZPP_$AABBNode = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_AABBNode"] = zpp_$nape_util_ZNPList_$ZPP_$AABBNode, zpp_$nape_util_ZNPList_$ZPP_$AABBNode.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_AABBNode"], zpp_$nape_util_ZNPList_$ZPP_$AABBNode.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$AABBNode.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$AABBNode : (n = zpp_$nape_util_ZNPNode_$ZPP_$AABBNode.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$AABBNode.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$AABBNode.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$AABBNode.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, pop_unsafe: function() { return this.inlined_pop_unsafe() }, inlined_pop_unsafe: function() { var e = this.head.elt; return this.pop(), e }, __class__: zpp_$nape_util_ZNPList_$ZPP_$AABBNode }; var zpp_$nape_util_ZNPList_$ZPP_$Component = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_Component"] = zpp_$nape_util_ZNPList_$ZPP_$Component, zpp_$nape_util_ZNPList_$ZPP_$Component.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_Component"], zpp_$nape_util_ZNPList_$ZPP_$Component.prototype = { head: null, modified: null, pushmod: null, length: null, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$Component.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$Component : (n = zpp_$nape_util_ZNPNode_$ZPP_$Component.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Component.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$Component.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Component.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, pop_unsafe: function() { return this.inlined_pop_unsafe() }, inlined_pop_unsafe: function() { var e = this.head.elt; return this.pop(), e }, __class__: zpp_$nape_util_ZNPList_$ZPP_$Component }; var zpp_$nape_util_ZNPList_$ZPP_$FluidArbiter = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_FluidArbiter"] = zpp_$nape_util_ZNPList_$ZPP_$FluidArbiter, zpp_$nape_util_ZNPList_$ZPP_$FluidArbiter.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_FluidArbiter"], zpp_$nape_util_ZNPList_$ZPP_$FluidArbiter.prototype = { head: null, modified: null, pushmod: null, length: null, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$FluidArbiter.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$FluidArbiter : (n = zpp_$nape_util_ZNPNode_$ZPP_$FluidArbiter.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$FluidArbiter.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$FluidArbiter.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$FluidArbiter.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, __class__: zpp_$nape_util_ZNPList_$ZPP_$FluidArbiter }; var zpp_$nape_util_ZNPList_$ZPP_$SensorArbiter = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_SensorArbiter"] = zpp_$nape_util_ZNPList_$ZPP_$SensorArbiter, zpp_$nape_util_ZNPList_$ZPP_$SensorArbiter.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_SensorArbiter"], zpp_$nape_util_ZNPList_$ZPP_$SensorArbiter.prototype = { head: null, modified: null, pushmod: null, length: null, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$SensorArbiter.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$SensorArbiter : (n = zpp_$nape_util_ZNPNode_$ZPP_$SensorArbiter.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$SensorArbiter.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$SensorArbiter.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$SensorArbiter.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, __class__: zpp_$nape_util_ZNPList_$ZPP_$SensorArbiter }; var zpp_$nape_util_ZNPList_$ZPP_$Listener = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_Listener"] = zpp_$nape_util_ZNPList_$ZPP_$Listener, zpp_$nape_util_ZNPList_$ZPP_$Listener.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_Listener"], zpp_$nape_util_ZNPList_$ZPP_$Listener.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$Listener.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$Listener : (n = zpp_$nape_util_ZNPNode_$ZPP_$Listener.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Listener.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, insert: function(e, t) { return this.inlined_insert(e, t) }, inlined_insert: function(e, t) { var n, i; return null == zpp_$nape_util_ZNPNode_$ZPP_$Listener.zpp_pool ? i = new zpp_$nape_util_ZNPNode_$ZPP_$Listener : (i = zpp_$nape_util_ZNPNode_$ZPP_$Listener.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Listener.zpp_pool = i.next, i.next = null), i.elt = t, n = i, null == e ? (n.next = this.head, this.head = n) : (n.next = e.next, e.next = n), this.pushmod = this.modified = !0, this.length++, n }, remove: function(e) { this.inlined_try_remove(e) }, inlined_try_remove: function(e) { for (var t = null, n = this.head, i = !1; null != n; ) { if (n.elt == e) { this.inlined_erase(t), i = !0; break } t = n, n = n.next } return i }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$Listener.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$Listener.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, iterator_at: function(e) { for (var t = this.head; e-- > 0 && null != t; ) t = t.next; return t }, __class__: zpp_$nape_util_ZNPList_$ZPP_$Listener }; var zpp_$nape_util_ZNPList_$ZPP_$ColArbiter = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_ColArbiter"] = zpp_$nape_util_ZNPList_$ZPP_$ColArbiter, zpp_$nape_util_ZNPList_$ZPP_$ColArbiter.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_ColArbiter"], zpp_$nape_util_ZNPList_$ZPP_$ColArbiter.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$ColArbiter.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$ColArbiter : (n = zpp_$nape_util_ZNPNode_$ZPP_$ColArbiter.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$ColArbiter.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, remove: function(e) { this.inlined_try_remove(e) }, inlined_try_remove: function(e) { for (var t = null, n = this.head, i = !1; null != n; ) { if (n.elt == e) { this.inlined_erase(t), i = !0; break } t = n, n = n.next } return i }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$ColArbiter.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$ColArbiter.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, __class__: zpp_$nape_util_ZNPList_$ZPP_$ColArbiter }; var zpp_$nape_util_ZNPList_$ZPP_$ToiEvent = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_ToiEvent"] = zpp_$nape_util_ZNPList_$ZPP_$ToiEvent, zpp_$nape_util_ZNPList_$ZPP_$ToiEvent.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_ToiEvent"], zpp_$nape_util_ZNPList_$ZPP_$ToiEvent.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$ToiEvent.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$ToiEvent : (n = zpp_$nape_util_ZNPNode_$ZPP_$ToiEvent.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$ToiEvent.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, pop: function() { this.inlined_pop() }, inlined_pop: function() { var e = this.head; this.head = e.next; var t = e; t.elt = null, t.next = zpp_$nape_util_ZNPNode_$ZPP_$ToiEvent.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$ToiEvent.zpp_pool = t, null == this.head && (this.pushmod = !0), this.modified = !0, this.length-- }, pop_unsafe: function() { return this.inlined_pop_unsafe() }, inlined_pop_unsafe: function() { var e = this.head.elt; return this.pop(), e }, erase: function(e) { return this.inlined_erase(e) }, inlined_erase: function(e) { var t, n; null == e ? (n = (t = this.head).next, this.head = n, null == this.head && (this.pushmod = !0)) : (n = (t = e.next).next, e.next = n, null == n && (this.pushmod = !0)); var i = t; return i.elt = null, i.next = zpp_$nape_util_ZNPNode_$ZPP_$ToiEvent.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$ToiEvent.zpp_pool = i, this.modified = !0, this.length--, this.pushmod = !0, n }, __class__: zpp_$nape_util_ZNPList_$ZPP_$ToiEvent }; var zpp_$nape_util_ZNPList_$ConvexResult = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ConvexResult"] = zpp_$nape_util_ZNPList_$ConvexResult, zpp_$nape_util_ZNPList_$ConvexResult.__name__ = ["zpp_nape", "util", "ZNPList_ConvexResult"], zpp_$nape_util_ZNPList_$ConvexResult.prototype = { head: null, modified: null, pushmod: null, length: null, iterator_at: function(e) { for (var t = this.head; e-- > 0 && null != t; ) t = t.next; return t }, __class__: zpp_$nape_util_ZNPList_$ConvexResult }; var zpp_$nape_util_ZNPList_$ZPP_$GeomPoly = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_ZPP_GeomPoly"] = zpp_$nape_util_ZNPList_$ZPP_$GeomPoly, zpp_$nape_util_ZNPList_$ZPP_$GeomPoly.__name__ = ["zpp_nape", "util", "ZNPList_ZPP_GeomPoly"], zpp_$nape_util_ZNPList_$ZPP_$GeomPoly.prototype = { head: null, modified: null, pushmod: null, length: null, add: function(e) { return this.inlined_add(e) }, inlined_add: function(e) { var t, n; return null == zpp_$nape_util_ZNPNode_$ZPP_$GeomPoly.zpp_pool ? n = new zpp_$nape_util_ZNPNode_$ZPP_$GeomPoly : (n = zpp_$nape_util_ZNPNode_$ZPP_$GeomPoly.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$GeomPoly.zpp_pool = n.next, n.next = null), n.elt = e, (t = n).next = this.head, this.head = t, this.modified = !0, this.length++, e }, insert: function(e, t) { return this.inlined_insert(e, t) }, inlined_insert: function(e, t) { var n, i; return null == zpp_$nape_util_ZNPNode_$ZPP_$GeomPoly.zpp_pool ? i = new zpp_$nape_util_ZNPNode_$ZPP_$GeomPoly : (i = zpp_$nape_util_ZNPNode_$ZPP_$GeomPoly.zpp_pool, zpp_$nape_util_ZNPNode_$ZPP_$GeomPoly.zpp_pool = i.next, i.next = null), i.elt = t, n = i, null == e ? (n.next = this.head, this.head = n) : (n.next = e.next, e.next = n), this.pushmod = this.modified = !0, this.length++, n }, iterator_at: function(e) { for (var t = this.head; e-- > 0 && null != t; ) t = t.next; return t }, __class__: zpp_$nape_util_ZNPList_$ZPP_$GeomPoly }; var zpp_$nape_util_ZNPList_$RayResult = function() { this.length = 0, this.pushmod = !1, this.modified = !1, this.head = null }; $hxClasses["zpp_nape.util.ZNPList_RayResult"] = zpp_$nape_util_ZNPList_$RayResult, zpp_$nape_util_ZNPList_$RayResult.__name__ = ["zpp_nape", "util", "ZNPList_RayResult"], zpp_$nape_util_ZNPList_$RayResult.prototype = { head: null, modified: null, pushmod: null, length: null, iterator_at: function(e) { for (var t = this.head; e-- > 0 && null != t; ) t = t.next; return t }, __class__: zpp_$nape_util_ZNPList_$RayResult }; var zpp_$nape_util_ZNPNode_$ZPP_$CbType = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_CbType"] = zpp_$nape_util_ZNPNode_$ZPP_$CbType, zpp_$nape_util_ZNPNode_$ZPP_$CbType.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_CbType"], zpp_$nape_util_ZNPNode_$ZPP_$CbType.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$CbType }; var zpp_$nape_util_ZNPNode_$ZPP_$CallbackSet = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_CallbackSet"] = zpp_$nape_util_ZNPNode_$ZPP_$CallbackSet, zpp_$nape_util_ZNPNode_$ZPP_$CallbackSet.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_CallbackSet"], zpp_$nape_util_ZNPNode_$ZPP_$CallbackSet.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$CallbackSet }; var zpp_$nape_util_ZNPNode_$ZPP_$Shape = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_Shape"] = zpp_$nape_util_ZNPNode_$ZPP_$Shape, zpp_$nape_util_ZNPNode_$ZPP_$Shape.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_Shape"], zpp_$nape_util_ZNPNode_$ZPP_$Shape.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$Shape }; var zpp_$nape_util_ZNPNode_$ZPP_$Body = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_Body"] = zpp_$nape_util_ZNPNode_$ZPP_$Body, zpp_$nape_util_ZNPNode_$ZPP_$Body.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_Body"], zpp_$nape_util_ZNPNode_$ZPP_$Body.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$Body }; var zpp_$nape_util_ZNPNode_$ZPP_$Constraint = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_Constraint"] = zpp_$nape_util_ZNPNode_$ZPP_$Constraint, zpp_$nape_util_ZNPNode_$ZPP_$Constraint.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_Constraint"], zpp_$nape_util_ZNPNode_$ZPP_$Constraint.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$Constraint }; var zpp_$nape_util_ZNPNode_$ZPP_$Compound = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_Compound"] = zpp_$nape_util_ZNPNode_$ZPP_$Compound, zpp_$nape_util_ZNPNode_$ZPP_$Compound.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_Compound"], zpp_$nape_util_ZNPNode_$ZPP_$Compound.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$Compound }; var zpp_$nape_util_ZNPNode_$ZPP_$Arbiter = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_Arbiter"] = zpp_$nape_util_ZNPNode_$ZPP_$Arbiter, zpp_$nape_util_ZNPNode_$ZPP_$Arbiter.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_Arbiter"], zpp_$nape_util_ZNPNode_$ZPP_$Arbiter.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$Arbiter }; var zpp_$nape_util_ZNPNode_$ZPP_$InteractionListener = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_InteractionListener"] = zpp_$nape_util_ZNPNode_$ZPP_$InteractionListener, zpp_$nape_util_ZNPNode_$ZPP_$InteractionListener.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_InteractionListener"], zpp_$nape_util_ZNPNode_$ZPP_$InteractionListener.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$InteractionListener }; var zpp_$nape_util_ZNPNode_$ZPP_$CbSet = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_CbSet"] = zpp_$nape_util_ZNPNode_$ZPP_$CbSet, zpp_$nape_util_ZNPNode_$ZPP_$CbSet.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_CbSet"], zpp_$nape_util_ZNPNode_$ZPP_$CbSet.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$CbSet }; var zpp_$nape_util_ZNPNode_$ZPP_$Interactor = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_Interactor"] = zpp_$nape_util_ZNPNode_$ZPP_$Interactor, zpp_$nape_util_ZNPNode_$ZPP_$Interactor.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_Interactor"], zpp_$nape_util_ZNPNode_$ZPP_$Interactor.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$Interactor }; var zpp_$nape_util_ZNPNode_$ZPP_$BodyListener = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_BodyListener"] = zpp_$nape_util_ZNPNode_$ZPP_$BodyListener, zpp_$nape_util_ZNPNode_$ZPP_$BodyListener.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_BodyListener"], zpp_$nape_util_ZNPNode_$ZPP_$BodyListener.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$BodyListener }; var zpp_$nape_util_ZNPNode_$ZPP_$CbSetPair = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_CbSetPair"] = zpp_$nape_util_ZNPNode_$ZPP_$CbSetPair, zpp_$nape_util_ZNPNode_$ZPP_$CbSetPair.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_CbSetPair"], zpp_$nape_util_ZNPNode_$ZPP_$CbSetPair.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$CbSetPair }; var zpp_$nape_util_ZNPNode_$ZPP_$ConstraintListener = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_ConstraintListener"] = zpp_$nape_util_ZNPNode_$ZPP_$ConstraintListener, zpp_$nape_util_ZNPNode_$ZPP_$ConstraintListener.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_ConstraintListener"], zpp_$nape_util_ZNPNode_$ZPP_$ConstraintListener.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$ConstraintListener }; var zpp_$nape_util_ZNPNode_$ZPP_$PartitionVertex = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_PartitionVertex"] = zpp_$nape_util_ZNPNode_$ZPP_$PartitionVertex, zpp_$nape_util_ZNPNode_$ZPP_$PartitionVertex.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_PartitionVertex"], zpp_$nape_util_ZNPNode_$ZPP_$PartitionVertex.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$PartitionVertex }; var zpp_$nape_util_ZNPNode_$ZPP_$PartitionedPoly = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_PartitionedPoly"] = zpp_$nape_util_ZNPNode_$ZPP_$PartitionedPoly, zpp_$nape_util_ZNPNode_$ZPP_$PartitionedPoly.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_PartitionedPoly"], zpp_$nape_util_ZNPNode_$ZPP_$PartitionedPoly.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$PartitionedPoly }; var zpp_$nape_util_ZNPNode_$ZPP_$GeomVert = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_GeomVert"] = zpp_$nape_util_ZNPNode_$ZPP_$GeomVert, zpp_$nape_util_ZNPNode_$ZPP_$GeomVert.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_GeomVert"], zpp_$nape_util_ZNPNode_$ZPP_$GeomVert.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$GeomVert }; var zpp_$nape_util_ZNPNode_$ZPP_$Vec2 = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_Vec2"] = zpp_$nape_util_ZNPNode_$ZPP_$Vec2, zpp_$nape_util_ZNPNode_$ZPP_$Vec2.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_Vec2"], zpp_$nape_util_ZNPNode_$ZPP_$Vec2.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$Vec2 }; var zpp_$nape_util_ZNPNode_$ZPP_$AABBPair = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_AABBPair"] = zpp_$nape_util_ZNPNode_$ZPP_$AABBPair, zpp_$nape_util_ZNPNode_$ZPP_$AABBPair.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_AABBPair"], zpp_$nape_util_ZNPNode_$ZPP_$AABBPair.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$AABBPair }; var zpp_$nape_util_ZNPNode_$ZPP_$Edge = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_Edge"] = zpp_$nape_util_ZNPNode_$ZPP_$Edge, zpp_$nape_util_ZNPNode_$ZPP_$Edge.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_Edge"], zpp_$nape_util_ZNPNode_$ZPP_$Edge.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$Edge }; var zpp_$nape_util_ZNPNode_$ZPP_$AABBNode = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_AABBNode"] = zpp_$nape_util_ZNPNode_$ZPP_$AABBNode, zpp_$nape_util_ZNPNode_$ZPP_$AABBNode.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_AABBNode"], zpp_$nape_util_ZNPNode_$ZPP_$AABBNode.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$AABBNode }; var zpp_$nape_util_ZNPNode_$ZPP_$Component = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_Component"] = zpp_$nape_util_ZNPNode_$ZPP_$Component, zpp_$nape_util_ZNPNode_$ZPP_$Component.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_Component"], zpp_$nape_util_ZNPNode_$ZPP_$Component.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$Component }; var zpp_$nape_util_ZNPNode_$ZPP_$FluidArbiter = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_FluidArbiter"] = zpp_$nape_util_ZNPNode_$ZPP_$FluidArbiter, zpp_$nape_util_ZNPNode_$ZPP_$FluidArbiter.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_FluidArbiter"], zpp_$nape_util_ZNPNode_$ZPP_$FluidArbiter.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$FluidArbiter }; var zpp_$nape_util_ZNPNode_$ZPP_$SensorArbiter = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_SensorArbiter"] = zpp_$nape_util_ZNPNode_$ZPP_$SensorArbiter, zpp_$nape_util_ZNPNode_$ZPP_$SensorArbiter.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_SensorArbiter"], zpp_$nape_util_ZNPNode_$ZPP_$SensorArbiter.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$SensorArbiter }; var zpp_$nape_util_ZNPNode_$ZPP_$Listener = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_Listener"] = zpp_$nape_util_ZNPNode_$ZPP_$Listener, zpp_$nape_util_ZNPNode_$ZPP_$Listener.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_Listener"], zpp_$nape_util_ZNPNode_$ZPP_$Listener.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$Listener }; var zpp_$nape_util_ZNPNode_$ZPP_$ColArbiter = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_ColArbiter"] = zpp_$nape_util_ZNPNode_$ZPP_$ColArbiter, zpp_$nape_util_ZNPNode_$ZPP_$ColArbiter.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_ColArbiter"], zpp_$nape_util_ZNPNode_$ZPP_$ColArbiter.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$ColArbiter }; var zpp_$nape_util_ZNPNode_$ZPP_$InteractionGroup = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_InteractionGroup"] = zpp_$nape_util_ZNPNode_$ZPP_$InteractionGroup, zpp_$nape_util_ZNPNode_$ZPP_$InteractionGroup.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_InteractionGroup"], zpp_$nape_util_ZNPNode_$ZPP_$InteractionGroup.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$InteractionGroup }; var zpp_$nape_util_ZNPNode_$ZPP_$ToiEvent = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_ToiEvent"] = zpp_$nape_util_ZNPNode_$ZPP_$ToiEvent, zpp_$nape_util_ZNPNode_$ZPP_$ToiEvent.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_ToiEvent"], zpp_$nape_util_ZNPNode_$ZPP_$ToiEvent.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$ToiEvent }; var zpp_$nape_util_ZNPNode_$ConvexResult = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ConvexResult"] = zpp_$nape_util_ZNPNode_$ConvexResult, zpp_$nape_util_ZNPNode_$ConvexResult.__name__ = ["zpp_nape", "util", "ZNPNode_ConvexResult"], zpp_$nape_util_ZNPNode_$ConvexResult.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ConvexResult }; var zpp_$nape_util_ZNPNode_$ZPP_$GeomPoly = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_ZPP_GeomPoly"] = zpp_$nape_util_ZNPNode_$ZPP_$GeomPoly, zpp_$nape_util_ZNPNode_$ZPP_$GeomPoly.__name__ = ["zpp_nape", "util", "ZNPNode_ZPP_GeomPoly"], zpp_$nape_util_ZNPNode_$ZPP_$GeomPoly.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$ZPP_$GeomPoly }; var zpp_$nape_util_ZNPNode_$RayResult = function() { this.elt = null, this.next = null }; $hxClasses["zpp_nape.util.ZNPNode_RayResult"] = zpp_$nape_util_ZNPNode_$RayResult, zpp_$nape_util_ZNPNode_$RayResult.__name__ = ["zpp_nape", "util", "ZNPNode_RayResult"], zpp_$nape_util_ZNPNode_$RayResult.prototype = { next: null, elt: null, __class__: zpp_$nape_util_ZNPNode_$RayResult }; var zpp_$nape_util_ZPP_$MixVec2List = function() { this.at_index = 0, this.at_ite = null, this.zip_length = !1, this._length = 0, this.inner = null, nape_geom_Vec2List.call(this), this.at_ite = null, this.at_index = 0, this.zip_length = !0, this._length = 0 }; $hxClasses["zpp_nape.util.ZPP_MixVec2List"] = zpp_$nape_util_ZPP_$MixVec2List, zpp_$nape_util_ZPP_$MixVec2List.__name__ = ["zpp_nape", "util", "ZPP_MixVec2List"], zpp_$nape_util_ZPP_$MixVec2List.get = function(e, t) { null == t && (t = !1); var n = new zpp_$nape_util_ZPP_$MixVec2List; return n.inner = e, n.zpp_inner.immutable = t, n } , zpp_$nape_util_ZPP_$MixVec2List.__super__ = nape_geom_Vec2List, zpp_$nape_util_ZPP_$MixVec2List.prototype = $extend(nape_geom_Vec2List.prototype, { inner: null, _length: null, zip_length: null, at_ite: null, at_index: null, zpp_gl: function() { if (this.zpp_vm(), this.zip_length) { this._length = 0; for (var e = this.inner.next; null != e; ) { this._length++, e = e.next } this.zip_length = !1 } return this._length }, zpp_vm: function() { this.zpp_inner.validate(), this.inner.modified && (this.zip_length = !0, this._length = 0, this.at_ite = null) }, at: function(e) { if (this.zpp_vm(), this.zpp_inner.reverse_flag && (e = this.zpp_gl() - 1 - e), e < this.at_index || null == this.at_ite) for (this.at_index = 0, this.at_ite = this.inner.next; ; ) { this.at_ite; break } for (; this.at_index != e; ) for (this.at_index++, this.at_ite = this.at_ite.next; ; ) { this.at_ite; break } return this.at_ite.wrapper() }, push: function(e) { var t; if (this.zpp_inner.modify_test(), this.zpp_vm(), t = null == this.zpp_inner.adder || this.zpp_inner.adder(e)) { if (this.zpp_inner.reverse_flag) this.inner.add(e.zpp_inner); else { var n = this.inner.iterator_at(this.zpp_gl() - 1); this.inner.insert(n, e.zpp_inner) } this.zpp_inner.invalidate(), null != this.zpp_inner.post_adder && this.zpp_inner.post_adder(e) } return t }, __class__: zpp_$nape_util_ZPP_$MixVec2List }); var zpp_$nape_util_ZPP_$ConstraintList = function() { this.user_length = 0, this.zip_length = !1, this.push_ite = null, this.at_ite = null, this.at_index = 0, this.reverse_flag = !1, this.dontremove = !1, this.subber = null, this.post_adder = null, this.adder = null, this._validate = null, this._invalidate = null, this._invalidated = !1, this.immutable = !1, this.inner = null, this.outer = null, this.inner = new zpp_$nape_util_ZNPList_$ZPP_$Constraint, this._invalidated = !0 }; $hxClasses["zpp_nape.util.ZPP_ConstraintList"] = zpp_$nape_util_ZPP_$ConstraintList, zpp_$nape_util_ZPP_$ConstraintList.__name__ = ["zpp_nape", "util", "ZPP_ConstraintList"], zpp_$nape_util_ZPP_$ConstraintList.get = function(e, t) { null == t && (t = !1); var n = new nape_constraint_ConstraintList; return n.zpp_inner.inner = e, t && (n.zpp_inner.immutable = !0), n.zpp_inner.zip_length = !0, n } , zpp_$nape_util_ZPP_$ConstraintList.prototype = { outer: null, inner: null, immutable: null, _invalidated: null, _invalidate: null, _validate: null, adder: null, post_adder: null, subber: null, dontremove: null, reverse_flag: null, valmod: function() { this.validate(), this.inner.modified && (this.inner.pushmod && (this.push_ite = null), this.at_ite = null, this.inner.modified = !1, this.inner.pushmod = !1, this.zip_length = !0) }, modify_test: function() {}, validate: function() { this._invalidated && (this._invalidated = !1, null != this._validate && this._validate()) }, invalidate: function() { this._invalidated = !0, null != this._invalidate && this._invalidate(this) }, at_index: null, at_ite: null, push_ite: null, zip_length: null, user_length: null, __class__: zpp_$nape_util_ZPP_$ConstraintList }; var zpp_$nape_util_ZPP_$BodyList = function() { this.user_length = 0, this.zip_length = !1, this.push_ite = null, this.at_ite = null, this.at_index = 0, this.reverse_flag = !1, this.dontremove = !1, this.subber = null, this.post_adder = null, this.adder = null, this._validate = null, this._invalidate = null, this._invalidated = !1, this.immutable = !1, this.inner = null, this.outer = null, this.inner = new zpp_$nape_util_ZNPList_$ZPP_$Body, this._invalidated = !0 }; $hxClasses["zpp_nape.util.ZPP_BodyList"] = zpp_$nape_util_ZPP_$BodyList, zpp_$nape_util_ZPP_$BodyList.__name__ = ["zpp_nape", "util", "ZPP_BodyList"], zpp_$nape_util_ZPP_$BodyList.get = function(e, t) { null == t && (t = !1); var n = new nape_phys_BodyList; return n.zpp_inner.inner = e, t && (n.zpp_inner.immutable = !0), n.zpp_inner.zip_length = !0, n } , zpp_$nape_util_ZPP_$BodyList.prototype = { outer: null, inner: null, immutable: null, _invalidated: null, _invalidate: null, _validate: null, adder: null, post_adder: null, subber: null, dontremove: null, reverse_flag: null, valmod: function() { this.validate(), this.inner.modified && (this.inner.pushmod && (this.push_ite = null), this.at_ite = null, this.inner.modified = !1, this.inner.pushmod = !1, this.zip_length = !0) }, modify_test: function() {}, validate: function() { this._invalidated && (this._invalidated = !1, null != this._validate && this._validate()) }, invalidate: function() { this._invalidated = !0, null != this._invalidate && this._invalidate(this) }, at_index: null, at_ite: null, push_ite: null, zip_length: null, user_length: null, __class__: zpp_$nape_util_ZPP_$BodyList }; var zpp_$nape_util_ZPP_$InteractorList = function() { this.user_length = 0, this.zip_length = !1, this.push_ite = null, this.at_ite = null, this.at_index = 0, this.reverse_flag = !1, this._validate = null, this._invalidated = !1, this.inner = null }; $hxClasses["zpp_nape.util.ZPP_InteractorList"] = zpp_$nape_util_ZPP_$InteractorList, zpp_$nape_util_ZPP_$InteractorList.__name__ = ["zpp_nape", "util", "ZPP_InteractorList"], zpp_$nape_util_ZPP_$InteractorList.prototype = { inner: null, _invalidated: null, _validate: null, reverse_flag: null, valmod: function() { this.validate(), this.inner.modified && (this.inner.pushmod && (this.push_ite = null), this.at_ite = null, this.inner.modified = !1, this.inner.pushmod = !1, this.zip_length = !0) }, validate: function() { this._invalidated && (this._invalidated = !1, null != this._validate && this._validate()) }, at_index: null, at_ite: null, push_ite: null, zip_length: null, user_length: null, __class__: zpp_$nape_util_ZPP_$InteractorList }; var zpp_$nape_util_ZPP_$CompoundList = function() { this.user_length = 0, this.zip_length = !1, this.push_ite = null, this.at_ite = null, this.at_index = 0, this.reverse_flag = !1, this.dontremove = !1, this.subber = null, this.post_adder = null, this.adder = null, this._validate = null, this._invalidate = null, this._invalidated = !1, this.immutable = !1, this.inner = null, this.outer = null, this.inner = new zpp_$nape_util_ZNPList_$ZPP_$Compound, this._invalidated = !0 }; $hxClasses["zpp_nape.util.ZPP_CompoundList"] = zpp_$nape_util_ZPP_$CompoundList, zpp_$nape_util_ZPP_$CompoundList.__name__ = ["zpp_nape", "util", "ZPP_CompoundList"], zpp_$nape_util_ZPP_$CompoundList.get = function(e, t) { null == t && (t = !1); var n = new nape_phys_CompoundList; return n.zpp_inner.inner = e, t && (n.zpp_inner.immutable = !0), n.zpp_inner.zip_length = !0, n } , zpp_$nape_util_ZPP_$CompoundList.prototype = { outer: null, inner: null, immutable: null, _invalidated: null, _invalidate: null, _validate: null, adder: null, post_adder: null, subber: null, dontremove: null, reverse_flag: null, valmod: function() { this.validate(), this.inner.modified && (this.inner.pushmod && (this.push_ite = null), this.at_ite = null, this.inner.modified = !1, this.inner.pushmod = !1, this.zip_length = !0) }, modify_test: function() {}, validate: function() { this._invalidated && (this._invalidated = !1, null != this._validate && this._validate()) }, invalidate: function() { this._invalidated = !0, null != this._invalidate && this._invalidate(this) }, at_index: null, at_ite: null, push_ite: null, zip_length: null, user_length: null, __class__: zpp_$nape_util_ZPP_$CompoundList }; var zpp_$nape_util_ZPP_$ListenerList = function() { this.user_length = 0, this.zip_length = !1, this.push_ite = null, this.at_ite = null, this.at_index = 0, this.reverse_flag = !1, this.dontremove = !1, this.subber = null, this.post_adder = null, this.adder = null, this._validate = null, this._invalidate = null, this._invalidated = !1, this.immutable = !1, this.inner = null, this.outer = null, this.inner = new zpp_$nape_util_ZNPList_$ZPP_$Listener, this._invalidated = !0 }; $hxClasses["zpp_nape.util.ZPP_ListenerList"] = zpp_$nape_util_ZPP_$ListenerList, zpp_$nape_util_ZPP_$ListenerList.__name__ = ["zpp_nape", "util", "ZPP_ListenerList"], zpp_$nape_util_ZPP_$ListenerList.get = function(e, t) { null == t && (t = !1); var n = new nape_callbacks_ListenerList; return n.zpp_inner.inner = e, t && (n.zpp_inner.immutable = !0), n.zpp_inner.zip_length = !0, n } , zpp_$nape_util_ZPP_$ListenerList.prototype = { outer: null, inner: null, immutable: null, _invalidated: null, _invalidate: null, _validate: null, adder: null, post_adder: null, subber: null, dontremove: null, reverse_flag: null, valmod: function() { this.validate(), this.inner.modified && (this.inner.pushmod && (this.push_ite = null), this.at_ite = null, this.inner.modified = !1, this.inner.pushmod = !1, this.zip_length = !0) }, modify_test: function() {}, validate: function() { this._invalidated && (this._invalidated = !1, null != this._validate && this._validate()) }, invalidate: function() { this._invalidated = !0, null != this._invalidate && this._invalidate(this) }, at_index: null, at_ite: null, push_ite: null, zip_length: null, user_length: null, __class__: zpp_$nape_util_ZPP_$ListenerList }; var zpp_$nape_util_ZPP_$CbTypeList = function() { this.user_length = 0, this.zip_length = !1, this.push_ite = null, this.at_ite = null, this.at_index = 0, this.reverse_flag = !1, this.dontremove = !1, this.subber = null, this.post_adder = null, this.adder = null, this._validate = null, this._invalidate = null, this._invalidated = !1, this.immutable = !1, this.inner = null, this.outer = null, this.inner = new zpp_$nape_util_ZNPList_$ZPP_$CbType, this._invalidated = !0 }; $hxClasses["zpp_nape.util.ZPP_CbTypeList"] = zpp_$nape_util_ZPP_$CbTypeList, zpp_$nape_util_ZPP_$CbTypeList.__name__ = ["zpp_nape", "util", "ZPP_CbTypeList"], zpp_$nape_util_ZPP_$CbTypeList.get = function(e, t) { null == t && (t = !1); var n = new nape_callbacks_CbTypeList; return n.zpp_inner.inner = e, t && (n.zpp_inner.immutable = !0), n.zpp_inner.zip_length = !0, n } , zpp_$nape_util_ZPP_$CbTypeList.prototype = { outer: null, inner: null, immutable: null, _invalidated: null, _invalidate: null, _validate: null, adder: null, post_adder: null, subber: null, dontremove: null, reverse_flag: null, valmod: function() { this.validate(), this.inner.modified && (this.inner.pushmod && (this.push_ite = null), this.at_ite = null, this.inner.modified = !1, this.inner.pushmod = !1, this.zip_length = !0) }, modify_test: function() {}, validate: function() { this._invalidated && (this._invalidated = !1, null != this._validate && this._validate()) }, invalidate: function() { this._invalidated = !0, null != this._invalidate && this._invalidate(this) }, at_index: null, at_ite: null, push_ite: null, zip_length: null, user_length: null, __class__: zpp_$nape_util_ZPP_$CbTypeList }; var zpp_$nape_util_ZPP_$Vec2List = function() { this.user_length = 0, this.zip_length = !1, this.push_ite = null, this.at_ite = null, this.at_index = 0, this.reverse_flag = !1, this.subber = null, this.post_adder = null, this.adder = null, this._validate = null, this._invalidate = null, this._invalidated = !1, this.immutable = !1, this.inner = null, this.outer = null, this.inner = new zpp_$nape_util_ZNPList_$ZPP_$Vec2, this._invalidated = !0 }; $hxClasses["zpp_nape.util.ZPP_Vec2List"] = zpp_$nape_util_ZPP_$Vec2List, zpp_$nape_util_ZPP_$Vec2List.__name__ = ["zpp_nape", "util", "ZPP_Vec2List"], zpp_$nape_util_ZPP_$Vec2List.prototype = { outer: null, inner: null, immutable: null, _invalidated: null, _invalidate: null, _validate: null, adder: null, post_adder: null, subber: null, reverse_flag: null, valmod: function() { this.validate(), this.inner.modified && (this.inner.pushmod && (this.push_ite = null), this.at_ite = null, this.inner.modified = !1, this.inner.pushmod = !1, this.zip_length = !0) }, modify_test: function() {}, validate: function() { this._invalidated && (this._invalidated = !1, null != this._validate && this._validate()) }, invalidate: function() { this._invalidated = !0, null != this._invalidate && this._invalidate(this) }, at_index: null, at_ite: null, push_ite: null, zip_length: null, user_length: null, __class__: zpp_$nape_util_ZPP_$Vec2List }; var zpp_$nape_util_ZPP_$GeomPolyList = function() { this.user_length = 0, this.zip_length = !1, this.push_ite = null, this.at_ite = null, this.at_index = 0, this.reverse_flag = !1, this.post_adder = null, this.adder = null, this._validate = null, this._invalidate = null, this._invalidated = !1, this.inner = null, this.outer = null, this.inner = new zpp_$nape_util_ZNPList_$ZPP_$GeomPoly, this._invalidated = !0 }; $hxClasses["zpp_nape.util.ZPP_GeomPolyList"] = zpp_$nape_util_ZPP_$GeomPolyList, zpp_$nape_util_ZPP_$GeomPolyList.__name__ = ["zpp_nape", "util", "ZPP_GeomPolyList"], zpp_$nape_util_ZPP_$GeomPolyList.prototype = { outer: null, inner: null, _invalidated: null, _invalidate: null, _validate: null, adder: null, post_adder: null, reverse_flag: null, valmod: function() { this.validate(), this.inner.modified && (this.inner.pushmod && (this.push_ite = null), this.at_ite = null, this.inner.modified = !1, this.inner.pushmod = !1, this.zip_length = !0) }, modify_test: function() {}, validate: function() { this._invalidated && (this._invalidated = !1, null != this._validate && this._validate()) }, invalidate: function() { this._invalidated = !0, null != this._invalidate && this._invalidate(this) }, at_index: null, at_ite: null, push_ite: null, zip_length: null, user_length: null, __class__: zpp_$nape_util_ZPP_$GeomPolyList }; var zpp_$nape_util_ZPP_$RayResultList = function() { this.user_length = 0, this.zip_length = !1, this.push_ite = null, this.at_ite = null, this.at_index = 0, this.reverse_flag = !1, this._validate = null, this._invalidated = !1, this.inner = null }; $hxClasses["zpp_nape.util.ZPP_RayResultList"] = zpp_$nape_util_ZPP_$RayResultList, zpp_$nape_util_ZPP_$RayResultList.__name__ = ["zpp_nape", "util", "ZPP_RayResultList"], zpp_$nape_util_ZPP_$RayResultList.prototype = { inner: null, _invalidated: null, _validate: null, reverse_flag: null, valmod: function() { this.validate(), this.inner.modified && (this.inner.pushmod && (this.push_ite = null), this.at_ite = null, this.inner.modified = !1, this.inner.pushmod = !1, this.zip_length = !0) }, validate: function() { this._invalidated && (this._invalidated = !1, null != this._validate && this._validate()) }, at_index: null, at_ite: null, push_ite: null, zip_length: null, user_length: null, __class__: zpp_$nape_util_ZPP_$RayResultList }; var zpp_$nape_util_ZPP_$ConvexResultList = function() { this.user_length = 0, this.zip_length = !1, this.push_ite = null, this.at_ite = null, this.at_index = 0, this.reverse_flag = !1, this._validate = null, this._invalidated = !1, this.inner = null }; $hxClasses["zpp_nape.util.ZPP_ConvexResultList"] = zpp_$nape_util_ZPP_$ConvexResultList, zpp_$nape_util_ZPP_$ConvexResultList.__name__ = ["zpp_nape", "util", "ZPP_ConvexResultList"], zpp_$nape_util_ZPP_$ConvexResultList.prototype = { inner: null, _invalidated: null, _validate: null, reverse_flag: null, valmod: function() { this.validate(), this.inner.modified && (this.inner.pushmod && (this.push_ite = null), this.at_ite = null, this.inner.modified = !1, this.inner.pushmod = !1, this.zip_length = !0) }, validate: function() { this._invalidated && (this._invalidated = !1, null != this._validate && this._validate()) }, at_index: null, at_ite: null, push_ite: null, zip_length: null, user_length: null, __class__: zpp_$nape_util_ZPP_$ConvexResultList }; var zpp_$nape_util_ZPP_$EdgeList = function() { this.user_length = 0, this.zip_length = !1, this.push_ite = null, this.at_ite = null, this.at_index = 0, this.reverse_flag = !1, this._validate = null, this._invalidated = !1, this.inner = null }; $hxClasses["zpp_nape.util.ZPP_EdgeList"] = zpp_$nape_util_ZPP_$EdgeList, zpp_$nape_util_ZPP_$EdgeList.__name__ = ["zpp_nape", "util", "ZPP_EdgeList"], zpp_$nape_util_ZPP_$EdgeList.prototype = { inner: null, _invalidated: null, _validate: null, reverse_flag: null, valmod: function() { this.validate(), this.inner.modified && (this.inner.pushmod && (this.push_ite = null), this.at_ite = null, this.inner.modified = !1, this.inner.pushmod = !1, this.zip_length = !0) }, validate: function() { this._invalidated && (this._invalidated = !1, null != this._validate && this._validate()) }, at_index: null, at_ite: null, push_ite: null, zip_length: null, user_length: null, __class__: zpp_$nape_util_ZPP_$EdgeList }; var zpp_$nape_util_ZPP_$ShapeList = function() { this.user_length = 0, this.zip_length = !1, this.push_ite = null, this.at_ite = null, this.at_index = 0, this.reverse_flag = !1, this.dontremove = !1, this.subber = null, this.post_adder = null, this.adder = null, this._validate = null, this._invalidate = null, this._invalidated = !1, this.immutable = !1, this.inner = null, this.outer = null, this.inner = new zpp_$nape_util_ZNPList_$ZPP_$Shape, this._invalidated = !0 }; $hxClasses["zpp_nape.util.ZPP_ShapeList"] = zpp_$nape_util_ZPP_$ShapeList, zpp_$nape_util_ZPP_$ShapeList.__name__ = ["zpp_nape", "util", "ZPP_ShapeList"], zpp_$nape_util_ZPP_$ShapeList.get = function(e, t) { null == t && (t = !1); var n = new nape_shape_ShapeList; return n.zpp_inner.inner = e, t && (n.zpp_inner.immutable = !0), n.zpp_inner.zip_length = !0, n } , zpp_$nape_util_ZPP_$ShapeList.prototype = { outer: null, inner: null, immutable: null, _invalidated: null, _invalidate: null, _validate: null, adder: null, post_adder: null, subber: null, dontremove: null, reverse_flag: null, valmod: function() { this.validate(), this.inner.modified && (this.inner.pushmod && (this.push_ite = null), this.at_ite = null, this.inner.modified = !1, this.inner.pushmod = !1, this.zip_length = !0) }, modify_test: function() {}, validate: function() { this._invalidated && (this._invalidated = !1, null != this._validate && this._validate()) }, invalidate: function() { this._invalidated = !0, null != this._invalidate && this._invalidate(this) }, at_index: null, at_ite: null, push_ite: null, zip_length: null, user_length: null, __class__: zpp_$nape_util_ZPP_$ShapeList }; var zpp_$nape_util_ZPP_$InteractionGroupList = function() { this.user_length = 0, this.zip_length = !1, this.push_ite = null, this.at_ite = null, this.at_index = 0, this.reverse_flag = !1, this._validate = null, this._invalidated = !1, this.inner = null }; $hxClasses["zpp_nape.util.ZPP_InteractionGroupList"] = zpp_$nape_util_ZPP_$InteractionGroupList, zpp_$nape_util_ZPP_$InteractionGroupList.__name__ = ["zpp_nape", "util", "ZPP_InteractionGroupList"], zpp_$nape_util_ZPP_$InteractionGroupList.prototype = { inner: null, _invalidated: null, _validate: null, reverse_flag: null, valmod: function() { this.validate(), this.inner.modified && (this.inner.pushmod && (this.push_ite = null), this.at_ite = null, this.inner.modified = !1, this.inner.pushmod = !1, this.zip_length = !0) }, validate: function() { this._invalidated && (this._invalidated = !1, null != this._validate && this._validate()) }, at_index: null, at_ite: null, push_ite: null, zip_length: null, user_length: null, __class__: zpp_$nape_util_ZPP_$InteractionGroupList }; var zpp_$nape_util_ZPP_$ArbiterList = function() { this.user_length = 0, this.zip_length = !1, this.push_ite = null, this.at_ite = null, this.at_index = 0, this.reverse_flag = !1, this._validate = null, this._invalidated = !1, this.immutable = !1, this.inner = null, this.outer = null, this.inner = new zpp_$nape_util_ZNPList_$ZPP_$Arbiter, this._invalidated = !0 }; $hxClasses["zpp_nape.util.ZPP_ArbiterList"] = zpp_$nape_util_ZPP_$ArbiterList, zpp_$nape_util_ZPP_$ArbiterList.__name__ = ["zpp_nape", "util", "ZPP_ArbiterList"], zpp_$nape_util_ZPP_$ArbiterList.get = function(e, t) { null == t && (t = !1); var n = new nape_dynamics_ArbiterList; return n.zpp_inner.inner = e, t && (n.zpp_inner.immutable = !0), n.zpp_inner.zip_length = !0, n } , zpp_$nape_util_ZPP_$ArbiterList.prototype = { outer: null, inner: null, immutable: null, _invalidated: null, _validate: null, reverse_flag: null, valmod: function() { this.validate(), this.inner.modified && (this.inner.pushmod && (this.push_ite = null), this.at_ite = null, this.inner.modified = !1, this.inner.pushmod = !1, this.zip_length = !0) }, validate: function() { this._invalidated && (this._invalidated = !1, null != this._validate && this._validate()) }, at_index: null, at_ite: null, push_ite: null, zip_length: null, user_length: null, __class__: zpp_$nape_util_ZPP_$ArbiterList }; var zpp_$nape_util_ZPP_$ContactList = function() { this.user_length = 0, this.zip_length = !1, this.push_ite = null, this.at_ite = null, this.at_index = 0, this.reverse_flag = !1, this._validate = null, this._invalidated = !1, this.inner = null }; $hxClasses["zpp_nape.util.ZPP_ContactList"] = zpp_$nape_util_ZPP_$ContactList, zpp_$nape_util_ZPP_$ContactList.__name__ = ["zpp_nape", "util", "ZPP_ContactList"], zpp_$nape_util_ZPP_$ContactList.prototype = { inner: null, _invalidated: null, _validate: null, reverse_flag: null, valmod: function() { this.validate(), this.inner.modified && (this.inner.pushmod && (this.push_ite = null), this.at_ite = null, this.inner.modified = !1, this.inner.pushmod = !1, this.zip_length = !0) }, validate: function() { this._invalidated && (this._invalidated = !1, null != this._validate && this._validate()) }, at_index: null, at_ite: null, push_ite: null, zip_length: null, user_length: null, __class__: zpp_$nape_util_ZPP_$ContactList }; var zpp_$nape_util_ZPP_$Math = function() {}; $hxClasses["zpp_nape.util.ZPP_Math"] = zpp_$nape_util_ZPP_$Math, zpp_$nape_util_ZPP_$Math.__name__ = ["zpp_nape", "util", "ZPP_Math"], zpp_$nape_util_ZPP_$Math.sqr = function(e) { return e * e } , zpp_$nape_util_ZPP_$Math.clamp = function(e, t, n) { return e < t ? t : e > n ? n : e } ; var zpp_$nape_util_ZPP_$PubPool = function() {}; $hxClasses["zpp_nape.util.ZPP_PubPool"] = zpp_$nape_util_ZPP_$PubPool, zpp_$nape_util_ZPP_$PubPool.__name__ = ["zpp_nape", "util", "ZPP_PubPool"]; var zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair = function() { this.colour = 0, this.parent = null, this.next = null, this.prev = null, this.data = null, this.swapped = null, this.lt = null }; $hxClasses["zpp_nape.util.ZPP_Set_ZPP_CbSetPair"] = zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair, zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.__name__ = ["zpp_nape", "util", "ZPP_Set_ZPP_CbSetPair"], zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.prototype = { lt: null, swapped: null, data: null, prev: null, next: null, parent: null, colour: null, clear_with: function(e) { if (null != this.parent) { for (var t = this.parent; null != t; ) t = null != t.prev ? t.prev : null != t.next ? t.next : this.clear_node(t, e); this.parent = null } }, clear_node: function(e, t) { t(e.data); var n = e.parent; null != n && (e == n.prev ? n.prev = null : n.next = null, e.parent = null); var i = e; return i.data = null, i.lt = null, i.swapped = null, i.next = zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.zpp_pool, zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.zpp_pool = i, n }, __fix_dbl_red: function(e) { for (; ; ) { var t, n, i, l, a, s, r, _ = e.parent, o = _.parent; if (null == o) { _.colour = 1; break } _ == o.prev ? (i = o, r = o.next, e == _.prev ? (t = e, n = _, l = e.prev, a = e.next, s = _.next) : (t = _, n = e, l = _.prev, a = e.prev, s = e.next)) : (t = o, l = o.prev, e == _.prev ? (n = e, i = _, a = e.prev, s = e.next, r = _.next) : (n = _, i = e, a = _.prev, s = e.prev, r = e.next)); var p = o.parent; if (null == p ? this.parent = n : p.prev == o ? p.prev = n : p.next = n, null != n && (n.parent = p), t.prev = l, null != l && (l.parent = t), t.next = a, null != a && (a.parent = t), n.prev = t, null != t && (t.parent = n), n.next = i, null != i && (i.parent = n), i.prev = s, null != s && (s.parent = i), i.next = r, null != r && (r.parent = i), n.colour = o.colour - 1, t.colour = 1, i.colour = 1, n == this.parent) this.parent.colour = 1; else if (0 == n.colour && 0 == n.parent.colour) { e = n; continue } break } }, try_insert: function(e) { var t = null , n = null; if (null == this.parent) null == zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.zpp_pool ? t = new zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair : (t = zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.zpp_pool, zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.zpp_pool = t.next, t.next = null), t.data = e, this.parent = t; else for (n = this.parent; ; ) if (this.lt(e, n.data)) { if (null == n.prev) { null == zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.zpp_pool ? t = new zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair : (t = zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.zpp_pool, zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.zpp_pool = t.next, t.next = null), t.data = e, n.prev = t, t.parent = n; break } n = n.prev } else { if (!this.lt(n.data, e)) break; if (null == n.next) { null == zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.zpp_pool ? t = new zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair : (t = zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.zpp_pool, zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair.zpp_pool = t.next, t.next = null), t.data = e, n.next = t, t.parent = n; break } n = n.next } return null == t ? n : (null == t.parent ? t.colour = 1 : (t.colour = 0, 0 == t.parent.colour && this.__fix_dbl_red(t)), t) }, __class__: zpp_$nape_util_ZPP_$Set_$ZPP_$CbSetPair }; var zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionVertex = function() { this.colour = 0, this.parent = null, this.next = null, this.prev = null, this.data = null, this.swapped = null, this.lt = null }; $hxClasses["zpp_nape.util.ZPP_Set_ZPP_PartitionVertex"] = zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionVertex, zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionVertex.__name__ = ["zpp_nape", "util", "ZPP_Set_ZPP_PartitionVertex"], zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionVertex.prototype = { lt: null, swapped: null, data: null, prev: null, next: null, parent: null, colour: null, empty: function() { return null == this.parent }, remove_node: function(e) { if (null != e.next && null != e.prev) { for (var t = e.next; null != t.prev; ) t = t.prev; var n = e.data; e.data = t.data, t.data = n, null != this.swapped && this.swapped(e.data, t.data), e = t } var i; if (i = null == e.prev ? e.next : e.prev, 1 == e.colour) if (null != e.prev || null != e.next) i.colour = 1; else if (null != e.parent) for (var l = e.parent; ; ) { l.colour++, l.prev.colour--, l.next.colour--; var a = l.prev; if (-1 == a.colour) { this.__fix_neg_red(a); break } if (0 == a.colour) { if (null != a.prev && 0 == a.prev.colour) { this.__fix_dbl_red(a.prev); break } if (null != a.next && 0 == a.next.colour) { this.__fix_dbl_red(a.next); break } } var s = l.next; if (-1 == s.colour) { this.__fix_neg_red(s); break } if (0 == s.colour) { if (null != s.prev && 0 == s.prev.colour) { this.__fix_dbl_red(s.prev); break } if (null != s.next && 0 == s.next.colour) { this.__fix_dbl_red(s.next); break } } if (2 == l.colour) { if (null != l.parent) { l = l.parent; continue } l.colour = 1 } break } var r = e.parent; null == r ? this.parent = i : r.prev == e ? r.prev = i : r.next = i, null != i && (i.parent = r), e.parent = e.prev = e.next = null; var _ = e; _.data = null, _.lt = null, _.swapped = null, _.next = zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionVertex.zpp_pool, zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionVertex.zpp_pool = _ }, __fix_neg_red: function(e) { var t, n = e.parent; if (n.prev == e) { var i = e.prev , l = e.next , a = l.prev , s = l.next; i.colour = 0, e.colour = n.colour = 1, e.next = a, null != a && (a.parent = e); var r = n.data; n.data = l.data, l.data = r, null != this.swapped && this.swapped(n.data, l.data), l.prev = s, null != s && (s.parent = l), l.next = n.next, null != n.next && (n.next.parent = l), n.next = l, null != l && (l.parent = n), t = i } else { var _ = e.next , o = e.prev , p = o.next , h = o.prev; _.colour = 0, e.colour = n.colour = 1, e.prev = p, null != p && (p.parent = e); var d = n.data; n.data = o.data, o.data = d, null != this.swapped && this.swapped(n.data, o.data), o.next = h, null != h && (h.parent = o), o.prev = n.prev, null != n.prev && (n.prev.parent = o), n.prev = o, null != o && (o.parent = n), t = _ } null != t.prev && 0 == t.prev.colour ? this.__fix_dbl_red(t.prev) : null != t.next && 0 == t.next.colour && this.__fix_dbl_red(t.next) }, __fix_dbl_red: function(e) { for (; ; ) { var t, n, i, l, a, s, r, _ = e.parent, o = _.parent; if (null == o) { _.colour = 1; break } _ == o.prev ? (i = o, r = o.next, e == _.prev ? (t = e, n = _, l = e.prev, a = e.next, s = _.next) : (t = _, n = e, l = _.prev, a = e.prev, s = e.next)) : (t = o, l = o.prev, e == _.prev ? (n = e, i = _, a = e.prev, s = e.next, r = _.next) : (n = _, i = e, a = _.prev, s = e.prev, r = e.next)); var p = o.parent; if (null == p ? this.parent = n : p.prev == o ? p.prev = n : p.next = n, null != n && (n.parent = p), t.prev = l, null != l && (l.parent = t), t.next = a, null != a && (a.parent = t), n.prev = t, null != t && (t.parent = n), n.next = i, null != i && (i.parent = n), i.prev = s, null != s && (s.parent = i), i.next = r, null != r && (r.parent = i), n.colour = o.colour - 1, t.colour = 1, i.colour = 1, n == this.parent) this.parent.colour = 1; else if (0 == n.colour && 0 == n.parent.colour) { e = n; continue } break } }, insert: function(e) { var t; if (null == zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionVertex.zpp_pool ? t = new zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionVertex : (t = zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionVertex.zpp_pool, zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionVertex.zpp_pool = t.next, t.next = null), t.data = e, null == this.parent) this.parent = t; else for (var n = this.parent; ; ) if (this.lt(t.data, n.data)) { if (null == n.prev) { n.prev = t, t.parent = n; break } n = n.prev } else { if (null == n.next) { n.next = t, t.parent = n; break } n = n.next } return null == t.parent ? t.colour = 1 : (t.colour = 0, 0 == t.parent.colour && this.__fix_dbl_red(t)), t }, __class__: zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionVertex }; var zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionPair = function() { this.colour = 0, this.parent = null, this.next = null, this.prev = null, this.data = null, this.swapped = null, this.lt = null }; $hxClasses["zpp_nape.util.ZPP_Set_ZPP_PartitionPair"] = zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionPair, zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionPair.__name__ = ["zpp_nape", "util", "ZPP_Set_ZPP_PartitionPair"], zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionPair.prototype = { lt: null, swapped: null, data: null, prev: null, next: null, parent: null, colour: null, remove_node: function(e) { if (null != e.next && null != e.prev) { for (var t = e.next; null != t.prev; ) t = t.prev; var n = e.data; e.data = t.data, t.data = n, null != this.swapped && this.swapped(e.data, t.data), e = t } var i; if (i = null == e.prev ? e.next : e.prev, 1 == e.colour) if (null != e.prev || null != e.next) i.colour = 1; else if (null != e.parent) for (var l = e.parent; ; ) { l.colour++, l.prev.colour--, l.next.colour--; var a = l.prev; if (-1 == a.colour) { this.__fix_neg_red(a); break } if (0 == a.colour) { if (null != a.prev && 0 == a.prev.colour) { this.__fix_dbl_red(a.prev); break } if (null != a.next && 0 == a.next.colour) { this.__fix_dbl_red(a.next); break } } var s = l.next; if (-1 == s.colour) { this.__fix_neg_red(s); break } if (0 == s.colour) { if (null != s.prev && 0 == s.prev.colour) { this.__fix_dbl_red(s.prev); break } if (null != s.next && 0 == s.next.colour) { this.__fix_dbl_red(s.next); break } } if (2 == l.colour) { if (null != l.parent) { l = l.parent; continue } l.colour = 1 } break } var r = e.parent; null == r ? this.parent = i : r.prev == e ? r.prev = i : r.next = i, null != i && (i.parent = r), e.parent = e.prev = e.next = null; var _ = e; _.data = null, _.lt = null, _.swapped = null, _.next = zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionPair.zpp_pool, zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionPair.zpp_pool = _ }, __fix_neg_red: function(e) { var t, n = e.parent; if (n.prev == e) { var i = e.prev , l = e.next , a = l.prev , s = l.next; i.colour = 0, e.colour = n.colour = 1, e.next = a, null != a && (a.parent = e); var r = n.data; n.data = l.data, l.data = r, null != this.swapped && this.swapped(n.data, l.data), l.prev = s, null != s && (s.parent = l), l.next = n.next, null != n.next && (n.next.parent = l), n.next = l, null != l && (l.parent = n), t = i } else { var _ = e.next , o = e.prev , p = o.next , h = o.prev; _.colour = 0, e.colour = n.colour = 1, e.prev = p, null != p && (p.parent = e); var d = n.data; n.data = o.data, o.data = d, null != this.swapped && this.swapped(n.data, o.data), o.next = h, null != h && (h.parent = o), o.prev = n.prev, null != n.prev && (n.prev.parent = o), n.prev = o, null != o && (o.parent = n), t = _ } null != t.prev && 0 == t.prev.colour ? this.__fix_dbl_red(t.prev) : null != t.next && 0 == t.next.colour && this.__fix_dbl_red(t.next) }, __fix_dbl_red: function(e) { for (; ; ) { var t, n, i, l, a, s, r, _ = e.parent, o = _.parent; if (null == o) { _.colour = 1; break } _ == o.prev ? (i = o, r = o.next, e == _.prev ? (t = e, n = _, l = e.prev, a = e.next, s = _.next) : (t = _, n = e, l = _.prev, a = e.prev, s = e.next)) : (t = o, l = o.prev, e == _.prev ? (n = e, i = _, a = e.prev, s = e.next, r = _.next) : (n = _, i = e, a = _.prev, s = e.prev, r = e.next)); var p = o.parent; if (null == p ? this.parent = n : p.prev == o ? p.prev = n : p.next = n, null != n && (n.parent = p), t.prev = l, null != l && (l.parent = t), t.next = a, null != a && (a.parent = t), n.prev = t, null != t && (t.parent = n), n.next = i, null != i && (i.parent = n), i.prev = s, null != s && (s.parent = i), i.next = r, null != r && (r.parent = i), n.colour = o.colour - 1, t.colour = 1, i.colour = 1, n == this.parent) this.parent.colour = 1; else if (0 == n.colour && 0 == n.parent.colour) { e = n; continue } break } }, insert: function(e) { var t; if (null == zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionPair.zpp_pool ? t = new zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionPair : (t = zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionPair.zpp_pool, zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionPair.zpp_pool = t.next, t.next = null), t.data = e, null == this.parent) this.parent = t; else for (var n = this.parent; ; ) if (this.lt(t.data, n.data)) { if (null == n.prev) { n.prev = t, t.parent = n; break } n = n.prev } else { if (null == n.next) { n.next = t, t.parent = n; break } n = n.next } return null == t.parent ? t.colour = 1 : (t.colour = 0, 0 == t.parent.colour && this.__fix_dbl_red(t)), t }, __class__: zpp_$nape_util_ZPP_$Set_$ZPP_$PartitionPair }; var zpp_$nape_util_ZPP_$Set_$ZPP_$CbSet = function() { this.colour = 0, this.parent = null, this.next = null, this.prev = null, this.data = null, this.swapped = null, this.lt = null }; $hxClasses["zpp_nape.util.ZPP_Set_ZPP_CbSet"] = zpp_$nape_util_ZPP_$Set_$ZPP_$CbSet, zpp_$nape_util_ZPP_$Set_$ZPP_$CbSet.__name__ = ["zpp_nape", "util", "ZPP_Set_ZPP_CbSet"], zpp_$nape_util_ZPP_$Set_$ZPP_$CbSet.prototype = { lt: null, swapped: null, data: null, prev: null, next: null, parent: null, colour: null, empty: function() { return null == this.parent }, find: function(e) { for (var t = this.parent; null != t && t.data != e; ) t = this.lt(e, t.data) ? t.prev : t.next; return t }, find_weak: function(e) { for (var t = this.parent; null != t; ) if (this.lt(e, t.data)) t = t.prev; else { if (!this.lt(t.data, e)) break; t = t.next } return t }, remove: function(e) { var t = this.find(e); this.remove_node(t) }, remove_node: function(e) { if (null != e.next && null != e.prev) { for (var t = e.next; null != t.prev; ) t = t.prev; var n = e.data; e.data = t.data, t.data = n, null != this.swapped && this.swapped(e.data, t.data), e = t } var i; if (i = null == e.prev ? e.next : e.prev, 1 == e.colour) if (null != e.prev || null != e.next) i.colour = 1; else if (null != e.parent) for (var l = e.parent; ; ) { l.colour++, l.prev.colour--, l.next.colour--; var a = l.prev; if (-1 == a.colour) { this.__fix_neg_red(a); break } if (0 == a.colour) { if (null != a.prev && 0 == a.prev.colour) { this.__fix_dbl_red(a.prev); break } if (null != a.next && 0 == a.next.colour) { this.__fix_dbl_red(a.next); break } } var s = l.next; if (-1 == s.colour) { this.__fix_neg_red(s); break } if (0 == s.colour) { if (null != s.prev && 0 == s.prev.colour) { this.__fix_dbl_red(s.prev); break } if (null != s.next && 0 == s.next.colour) { this.__fix_dbl_red(s.next); break } } if (2 == l.colour) { if (null != l.parent) { l = l.parent; continue } l.colour = 1 } break } var r = e.parent; null == r ? this.parent = i : r.prev == e ? r.prev = i : r.next = i, null != i && (i.parent = r), e.parent = e.prev = e.next = null; var _ = e; _.data = null, _.lt = null, _.swapped = null, _.next = zpp_$nape_util_ZPP_$Set_$ZPP_$CbSet.zpp_pool, zpp_$nape_util_ZPP_$Set_$ZPP_$CbSet.zpp_pool = _ }, __fix_neg_red: function(e) { var t, n = e.parent; if (n.prev == e) { var i = e.prev , l = e.next , a = l.prev , s = l.next; i.colour = 0, e.colour = n.colour = 1, e.next = a, null != a && (a.parent = e); var r = n.data; n.data = l.data, l.data = r, null != this.swapped && this.swapped(n.data, l.data), l.prev = s, null != s && (s.parent = l), l.next = n.next, null != n.next && (n.next.parent = l), n.next = l, null != l && (l.parent = n), t = i } else { var _ = e.next , o = e.prev , p = o.next , h = o.prev; _.colour = 0, e.colour = n.colour = 1, e.prev = p, null != p && (p.parent = e); var d = n.data; n.data = o.data, o.data = d, null != this.swapped && this.swapped(n.data, o.data), o.next = h, null != h && (h.parent = o), o.prev = n.prev, null != n.prev && (n.prev.parent = o), n.prev = o, null != o && (o.parent = n), t = _ } null != t.prev && 0 == t.prev.colour ? this.__fix_dbl_red(t.prev) : null != t.next && 0 == t.next.colour && this.__fix_dbl_red(t.next) }, __fix_dbl_red: function(e) { for (; ; ) { var t, n, i, l, a, s, r, _ = e.parent, o = _.parent; if (null == o) { _.colour = 1; break } _ == o.prev ? (i = o, r = o.next, e == _.prev ? (t = e, n = _, l = e.prev, a = e.next, s = _.next) : (t = _, n = e, l = _.prev, a = e.prev, s = e.next)) : (t = o, l = o.prev, e == _.prev ? (n = e, i = _, a = e.prev, s = e.next, r = _.next) : (n = _, i = e, a = _.prev, s = e.prev, r = e.next)); var p = o.parent; if (null == p ? this.parent = n : p.prev == o ? p.prev = n : p.next = n, null != n && (n.parent = p), t.prev = l, null != l && (l.parent = t), t.next = a, null != a && (a.parent = t), n.prev = t, null != t && (t.parent = n), n.next = i, null != i && (i.parent = n), i.prev = s, null != s && (s.parent = i), i.next = r, null != r && (r.parent = i), n.colour = o.colour - 1, t.colour = 1, i.colour = 1, n == this.parent) this.parent.colour = 1; else if (0 == n.colour && 0 == n.parent.colour) { e = n; continue } break } }, insert: function(e) { var t; if (null == zpp_$nape_util_ZPP_$Set_$ZPP_$CbSet.zpp_pool ? t = new zpp_$nape_util_ZPP_$Set_$ZPP_$CbSet : (t = zpp_$nape_util_ZPP_$Set_$ZPP_$CbSet.zpp_pool, zpp_$nape_util_ZPP_$Set_$ZPP_$CbSet.zpp_pool = t.next, t.next = null), t.data = e, null == this.parent) this.parent = t; else for (var n = this.parent; ; ) if (this.lt(t.data, n.data)) { if (null == n.prev) { n.prev = t, t.parent = n; break } n = n.prev } else { if (null == n.next) { n.next = t, t.parent = n; break } n = n.next } return null == t.parent ? t.colour = 1 : (t.colour = 0, 0 == t.parent.colour && this.__fix_dbl_red(t)), t }, __class__: zpp_$nape_util_ZPP_$Set_$ZPP_$CbSet }; var $_, $fid = 0; function $bind(e, t) { return null == t ? null : (null == t.__id__ && (t.__id__ = $fid++), null == e.hx__closures__ ? e.hx__closures__ = {} : n = e.hx__closures__[t.__id__], null == n && ((n = function() { return n.method.apply(n.scope, arguments) } ).scope = e, n.method = t, e.hx__closures__[t.__id__] = n), n); var n } Array.prototype.indexOf && (HxOverrides.indexOf = function(e, t, n) { return Array.prototype.indexOf.call(e, t, n) } ), $hxClasses.Math = Math, String.prototype.__class__ = $hxClasses.String = String, String.__name__ = ["String"], $hxClasses.Array = Array, Array.__name__ = ["Array"], Date.prototype.__class__ = $hxClasses.Date = Date, Date.__name__ = ["Date"]; var Int = $hxClasses.Int = { __name__: ["Int"] } , Dynamic = $hxClasses.Dynamic = { __name__: ["Dynamic"] } , Float = $hxClasses.Float = Number; Float.__name__ = ["Float"]; var Bool = $hxClasses.Bool = Boolean; Bool.__ename__ = ["Bool"]; var Class = $hxClasses.Class = { __name__: ["Class"] } , Enum = {}; haxe_Resource.content = [{ name: "__ASSET__:file_SpriteJson", data: "eyAic3RyZWFtIjoic25kL3Nwcml0ZSIsICJzcHJpdGUiOiB7ICJzaWxlbmNlIjogWyAwLCAxMDAsIHRydWUgXSwgIkFjdGl2YXRlIjogWyAyMDAsIDE1MjEuOTA0NzYxOTA0NzYyIF0sICJCYWxvb25Qb3AiOiBbIDIzMDAsIDIwMDAgXSwgIkJvbmVzIjogWyA0Mzk5Ljk5OTk5OTk5OTk5OSwgMTE4NC4zOTkwOTI5NzA1MjIgXSwgIkJvd1B1bGwiOiBbIDY1MDAsIDU0OS45NzczMjQyNjMwMzg4IF0sICJCb3dQdWxsU2hvcnQiOiBbIDc2MDAuMDAwMDAwMDAwMDAxLCAyNTkuNDEwNDMwODM5MDAyNjMgXSwgIkJvd1JlYWxlYXNlIjogWyA4NzAwLjAwMDAwMDAwMDAwMiwgNTQ2LjcxMjAxODE0MDU4OSBdLCAiQnRuU291bmQiOiBbIDk4MDAsIDczLjU4Mjc2NjQzOTkwODkxIF0sICJFeHBTb3VuZCI6IFsgMTA5MDAsIDE2MzEuMzYwNTQ0MjE3Njg2OCBdLCAiSGVhbCI6IFsgMTMwMDAsIDE3MzMuMDgzOTAwMjI2NzU3OCBdLCAiSGVsbWV0SGl0IjogWyAxNTEwMCwgNDE1LjczNjk2MTQ1MTI0NjUgXSwgIkh1bUhpdDEiOiBbIDE2MjAwLCA3MTAuNDc2MTkwNDc2MTg5MyBdLCAiSHVtSGl0MiI6IFsgMTcyOTkuOTk5OTk5OTk5OTk2LCA1NjQuMzA4MzkwMDIyNjc0MiBdLCAiSHVtSGl0MyI6IFsgMTgzOTkuOTk5OTk5OTk5OTk2LCA5MTAuNDc2MTkwNDc2MTkyMiBdLCAiUmVmbGVjdCI6IFsgMTk0OTkuOTk5OTk5OTk5OTk2LCAyNjcuMDA2ODAyNzIxMDg4MSBdLCAiUmVmbGVjdDIiOiBbIDIwNTk5Ljk5OTk5OTk5OTk5MywgMjc1LjQ2NDg1MjYwNzcwODQgXSwgIlN0YWIxIjogWyAyMTY5OS45OTk5OTk5OTk5OTMsIDE5My42OTYxNDUxMjQ3MTUgXSwgIlN0YWIyIjogWyAyMjc5OS45OTk5OTk5OTk5OSwgNTExLjE1NjQ2MjU4NTAzNDkgXSwgImZvbiI6IFsgMjM4OTkuOTk5OTk5OTk5OTkzLCA1OTg4OS41MjM4MDk1MjM4MSBdIH0gfQo" }, { name: "__ASSET__:bitmap_GameLogo", data: "aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVVBQUFBRVFDQVlBQUFEQkhxMWRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQk5tbERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFyWTZ4U3NOUUZFRFBpNkxpVUNzRWNYQjRreWdvdHVwZ3hxUXRSUkNzMVNISjFxU2hTbWtTWGw3VmZvU2pXd2NYZDcvQXlWRndVUHdDLzBCeDZ1QVFJWU9EQ0o3cDNNUGxjc0dvMkhXbllaUmhFR3ZWYmpyUzlYdzUrOFFNVXdEUUNiUFViclVPQU9Ja2p2akI1eXNDNEhuVHJqc04vc1o4bUNvTlRJRHRicFNGSUNwQS8wS25Hc1FZTUlOK3FrSGNBYVk2YWRkQVBBQ2xYdTR2UUNuSS9RMG9LZGZ6UVh3QVpzLzFmRERtQURQSWZRVXdkWFNwQVdwSk9sSm52Vk10cTVabFNidWJCSkU4SG1VNkdtUnlQdzRUbFNhcW82TXVrUDhId0dLKzJHNDZjcTFxV1h2ci9ET3U1OHZjM284UWdGaDZMRnBCT0ZUbjN5cU1uZC9uNHNaNEdRNXZZWHBTdE4wcnVObUFoZXVpclZhaHZBWDM0eS9BeGsvOTZGcFBZZ0FBT0dOcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrQ2p4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TlMxak1ERTBJRGM1TGpFMU1UUTRNU3dnTWpBeE15OHdNeTh4TXkweE1qb3dPVG94TlNBZ0lDQWdJQ0FnSWo0S0lDQWdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRLSUNBZ0lDQWdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlDaUFnSUNBZ0lDQWdJQ0FnSUhodGJHNXpPbk4wUlhaMFBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWRmRtVnVkQ01pQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T25ScFptWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZEdsbVppOHhMakF2SWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwbGVHbG1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDJWNGFXWXZNUzR3THlJK0NpQWdJQ0FnSUNBZ0lEeDRiWEE2UTNKbFlYUnZjbFJ2YjJ3K1FXUnZZbVVnVUdodmRHOXphRzl3SUVORElDaFhhVzVrYjNkektUd3ZlRzF3T2tOeVpXRjBiM0pVYjI5c1Bnb2dJQ0FnSUNBZ0lDQThlRzF3T2tOeVpXRjBaVVJoZEdVK01qQXhPQzB3TVMweE9WUXhPVG93TWpvME5pc3dNam93TUR3dmVHMXdPa055WldGMFpVUmhkR1UrQ2lBZ0lDQWdJQ0FnSUR4NGJYQTZUVzlrYVdaNVJHRjBaVDR5TURFNExUQXhMVEU1VkRFNU9qQTBPakV5S3pBeU9qQXdQQzk0YlhBNlRXOWthV1o1UkdGMFpUNEtJQ0FnSUNBZ0lDQWdQSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVStNakF4T0Mwd01TMHhPVlF4T1Rvd05Eb3hNaXN3TWpvd01Ed3ZlRzF3T2sxbGRHRmtZWFJoUkdGMFpUNEtJQ0FnSUNBZ0lDQWdQR1JqT21admNtMWhkRDVwYldGblpTOXdibWM4TDJSak9tWnZjbTFoZEQ0S0lDQWdJQ0FnSUNBZ1BIQm9iM1J2YzJodmNEcERiMnh2Y2sxdlpHVStNend2Y0dodmRHOXphRzl3T2tOdmJHOXlUVzlrWlQ0S0lDQWdJQ0FnSUNBZ1BIQm9iM1J2YzJodmNEcEpRME5RY205bWFXeGxQa0ZrYjJKbElGSkhRaUFvTVRrNU9DazhMM0JvYjNSdmMyaHZjRHBKUTBOUWNtOW1hV3hsUGdvZ0lDQWdJQ0FnSUNBOGVHMXdUVTA2U1c1emRHRnVZMlZKUkQ1NGJYQXVhV2xrT21JeVlqRTVOakZsTFRNMk9UQXRNak0wTnkwNU1qY3dMV1l4TmpReE1ERm1ZVE5pT0R3dmVHMXdUVTA2U1c1emRHRnVZMlZKUkQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRTFOT2tSdlkzVnRaVzUwU1VRK2VHMXdMbVJwWkRwaU1tSXhPVFl4WlMwek5qa3dMVEl6TkRjdE9USTNNQzFtTVRZME1UQXhabUV6WWpnOEwzaHRjRTFOT2tSdlkzVnRaVzUwU1VRK0NpQWdJQ0FnSUNBZ0lEeDRiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VRK2VHMXdMbVJwWkRwaU1tSXhPVFl4WlMwek5qa3dMVEl6TkRjdE9USTNNQzFtTVRZME1UQXhabUV6WWpnOEwzaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRTFOT2tocGMzUnZjbmsrQ2lBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2VTJWeFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwSUhKa1pqcHdZWEp6WlZSNWNHVTlJbEpsYzI5MWNtTmxJajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbUZqZEdsdmJqNWpjbVZoZEdWa1BDOXpkRVYyZERwaFkzUnBiMjQrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHBwYm5OMFlXNWpaVWxFUG5odGNDNXBhV1E2WWpKaU1UazJNV1V0TXpZNU1DMHlNelEzTFRreU56QXRaakUyTkRFd01XWmhNMkk0UEM5emRFVjJkRHBwYm5OMFlXNWpaVWxFUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2ZDJobGJqNHlNREU0TFRBeExURTVWREU1T2pBeU9qUTJLekF5T2pBd1BDOXpkRVYyZERwM2FHVnVQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4YzNSRmRuUTZjMjltZEhkaGNtVkJaMlZ1ZEQ1QlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ0tGZHBibVJ2ZDNNcFBDOXpkRVYyZERwemIyWjBkMkZ5WlVGblpXNTBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnUEM5eVpHWTZVMlZ4UGdvZ0lDQWdJQ0FnSUNBOEwzaHRjRTFOT2tocGMzUnZjbmsrQ2lBZ0lDQWdJQ0FnSUR4MGFXWm1Pazl5YVdWdWRHRjBhVzl1UGpFOEwzUnBabVk2VDNKcFpXNTBZWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2xoU1pYTnZiSFYwYVc5dVBqY3lNREF3TUM4eE1EQXdNRHd2ZEdsbVpqcFlVbVZ6YjJ4MWRHbHZiajRLSUNBZ0lDQWdJQ0FnUEhScFptWTZXVkpsYzI5c2RYUnBiMjQrTnpJd01EQXdMekV3TURBd1BDOTBhV1ptT2xsU1pYTnZiSFYwYVc5dVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwU1pYTnZiSFYwYVc5dVZXNXBkRDR5UEM5MGFXWm1PbEpsYzI5c2RYUnBiMjVWYm1sMFBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwRGIyeHZjbE53WVdObFBqWTFOVE0xUEM5bGVHbG1Pa052Ykc5eVUzQmhZMlUrQ2lBZ0lDQWdJQ0FnSUR4bGVHbG1PbEJwZUdWc1dFUnBiV1Z1YzJsdmJqNHpNakE4TDJWNGFXWTZVR2w0Wld4WVJHbHRaVzV6YVc5dVBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmxFYVcxbGJuTnBiMjQrTWpjeVBDOWxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajRLSUNBZ0lDQWdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtDaUFnSUR3dmNtUm1PbEpFUmo0S1BDOTRPbmh0Y0cxbGRHRStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0Nqdy9lSEJoWTJ0bGRDQmxibVE5SW5jaVB6NmtXRjArQUFBQUlHTklVazBBQUhvbEFBQ0Fnd0FBK2Y4QUFJRG9BQUJTQ0FBQkZWZ0FBRHFYQUFBWGI5ZGFINUFBQU1POFNVUkJWSGphN0oxM2ZCekYyY2QvTTd0Ny9kUWxXN0psV2U3R3h0MWcwNHZCOUdvZ29ZVk9Ya2lCaE42VGtGRFNReUNoRTNveHpmVG1RakVHZDRNcjdySXNXZldrNjNlN08rOGZzM2UzZDdmWHBKT043WHMrbjdWUGUzdGJaNzc3dEhrR0tFaEJkcitNS055Q2d2d1loQlp1UVVGMnN3ai9lWERXendFTUtOeUtnaFNrSVB1Vm5Eemp3Q0craGdlNzZ3YVduRmw0QVJla29BRVdaTCtTLzd0MDJqbFdpOGw1NDdYSEhnVmdVT0dPRktRQXdJTHNOekpxUkwvVEFlQzRvMFpPQXpBV2dGQzRLd1VwQUxBZys3eGNmUEgwQVlOcVNpWURRUDJnc2dtREJwU1VBNmd2M0ptQ0ZBQllrSDFlZm5iR3hKOUtKdEVFQUpKSk5OMTYzWXhKQU1ZQUVBdDNweUFGQUJaa241YWhkWlduNi84KzlzaVIwd0NZVVVpTEtVZ0JnQVhabCtXZUc0NnZxdWxmZExCKzNlQUJaUk1IRFNpeEFCaXBnYkFnQlNrQXNDQzdSV3lhK2JsYlpPYXhveStRVElLa1h5ZVpCT25PMzU0d1dUT0JSeFllU1VFS0FDeklicEVYamlnYThLY3BqaXQybC9rNWNFRHBHYkcvd3RGUFJ4NDJiTHIyY1pnRzVkMHRqa0kvS0FDd0lQdVorR1hWZk1Gdzg1WFRxcVJqQVF6dHkyTzkrc1RsWmYwcUhJZEUvbVpLWTh3TUhsZ3lzWDVRaVVWcmk2TjM4MjB3VFN3VFRrQWhIN0VBd0lMc1gxSnFKOFZtZ2RyL2ZhanpHZ0NUQWRUMTFiRkdEQ3U3UUpKRUh1bGxBWUM1K2Y4QUpFa1ViNy8reE1rQW1IWU96dDNWOXNlWGlVZjk1N0RpMzJyZ2xRcXRvZ0RBZ3V3bkVnb3pDUUFHMm9XeHp4MVpjaktBcWVpajhibjlxcHhuUjdVLzVvcjdId0NPT25Sb1JEc2tBQTdZVGJkZzFHT0hGZjJ1eUV4cVVJaEVGd0JZa1AxTEhDWXBxbWtkWFNPZWYvNVE2MkFBMHdEMHorZHhscys3cnFTaU5HYitnblZyLzNkRlZ3MGFXREp4V0gyNVZkTUNCd0FvN2VQTHIzNzUySktiNjRxRWFTcGpzbmJjSWVEK3dJSVVBRmlRZlYzQ1RMVkVQb3NDRWUrWVpQdFZxUWttQU5NQlZPWHJPRGFyL1h4UnBOeThaSDZBQlRVQWh2amZVVFA0aElnWnpOQzN2a0RuSFJQc2x4emVUN3dJQUZRVlFWMWZHRk5vR1FVQUZtUS9FQk1oY1JIWE1qT3RmZkdZMGd2QngrWk9BMUNlaitPVUZsdk9pWm0vWFhIZjZmOCs4dEFoaCtxdFpnQ1ZmWERaMG9rMXBwT3VHRzI1UmFDRTZFOUZXL3JxdUFVcEFMQWdQeVlSS0xFa3JodGZMcHgwMjNqSE9QQ0F3S0VBU25wempFMUxiaTR1TGJFZEZzTk1QQUQxZjlmV2xFd2NQcVRDMnBkYVlKVVZVeDg4eFBFN2kwQ0xFcjVpdXVXQVFyOG9BTEFnKzdnUXdxeEpqWUVRWERISy9Nc3hKWUlEUERuNVVBQkZQVDJHMVdvL1R4UUZNV2IraGhLd0V6T0RSVkVRNy9ydDhRZnBRRlFLb0RxUGx6emloV05LYjYrMENIRUoxN0krS1pGTEVRcHBNUVVBRm1UZkZoRXhFOWhjUXFGNTZXQ1RhTW1UUnhUL1BQSVZnRVBRdytDQXhTVDhKSlg1YTdUKzhPbkREMDM0ZW5TZTJtalZJNGM0cno2d1ZEd3A2ZmdxUWdrYUlBT1BDSnNLcmFRQXdJTDBuWmdBRk8rcGd6UENvaDJjU2tEUjRGaEJsc0ZGd3JTSEQzVWNyY0hBcWtFd3AxRWFXNWJmVStKMFdBNVBhZjRhckI5UVhUUmg5SWgrZWpQWUFXQmdMeS9WY2VWSTIxbW5ERGIvSW1yK213alNtTUJNY3dFTTY0UGJYb284K1ZZTFVnRGdYaTNiVnQxbi84VmxoNTNYUngwdE0zMEZhbythd3hRd0Z4TllLMlBONGRRNjZ4VW4xVXI5TkNEWU5BaGFzdTdweGVaWmFjM2ZGR2J3SGIrWk9TMEJTaVBRODZLcDRvR2x3aEUzanJmZVphTEVCQUNpaGNBeE1LdG1QeGo1UzR1eEFCaDM3YVdILzJUcXBJRlRDLzJ1QU1EOVh1ckczZHA1MzkybjN2VEcveTY5RmNEaHVjQWxMNkxHYXZCRjRxSE9XZ0dpaGY5aG9yRGNQN1hvZWxPc2pkakJVMlN5cTlyQzhOTk01cS9SOTRjZVZIK29CcjZJV05IelVTcmpuejZpK0s0aUU2MEdBQ0lBeGNNRTZPTy9tZytRR1N3QU1Db1AvV3V3S09MdzkxNjY4di8rY05zSk55OWV0Z01BYWdvOW9BREEvVjdDSWVYRE0wOGFmOW1XcFhmOTgvQ0Q2MmNodjA3L0RCcGdiTWdaRVVoVUV5d2FFZ05FbFkyT2VQbTQ0bGs2SUJRQk9CZ1ovR1BiVnQxWDZyQ2Jqc2hvL2hxYXdjVVR4NDd1WjB1QTBURGtQbFJ0eU9zelNuNDEwQ2xFUzNBVkRlYUFaenE4S2dvSnBUR0ZLOUh6dEpoeUFOT1BPbVRvdEMzTGZuZmZTVFBHL0h6enRvN0Z1dXNwRklFdEFIRC9GdEVrdmdRQWd3ZVZUZnp3dFdzZS92c2Z6dmdsZ0FtN3BYTVFuVm1wMDRna0c0RjlRT3lyZzZ1azg2NGRiUjJoZzBJSitMQzVsT2RZVVVyUEVvUjAwVjhHTEZzT2RIVVptTUZVdU8zNm1kTVRnQ1FodDlMNUZYZE9zdjFrV2hWUGRnWUFXejhLUzJseWN5YzBTZXRMbEpFNTloTUxnUEVBcHZ6M0wrY2MrLzdMUC8vdndPcml5UUR3N3NmZmY2VWR4NFErSEh0ZGtBSUE5d3E1L0liRml3TEJjRHNBMkt4UzBhK3VPdUxXcFovZWNOK0FBYVV6MGNjQkVvR2J0THdSSkhqWTdQMG9URTVPUllFUWV0MDQyMjhHT2FJbU9nTlFCbUFLVXZqbVZJV2NIMk9kSzNtREZTdUJKY3VBcGN0Z3ROMmhVNVBNWUdnQXpNYjh0cDFRYTVweCtVanJ6WkZrWjVPVHdEa3dveHVScFZnY0FHcXp1NldvQjNCWVRVMUozWGZ6Yjd6MnlvdW0vODVxbFlvQndPc1BkdDc3dDgvVzZyWWZoRUlSMkFJQTkyZDU3YlhYRkw4Ly9INzBZVkNLU2VNSG5yQnEvbzMvdmZxUzZaZWdEd01rUkJjRk50QU9VVlF2Z0dqTWNFcTAvLytPTExzeUFVcVZBQ1lsdHFHRzFmZVVXUzJDenZ6dFR0Ny9pT0hjOGJoMU82QW9HalZqWm5CTi8rS0o0OGZXT0JKQUpJQ1AxMDJyVkZkWWNOQmZEM0pHazUycFJGQThSSXpUY3BtcWMwT29MS1M3cmxRUUhKckI3SzhBSHowei9QcXJqeHEyK291Ykh4bzdac0NwbE1adXpmYUd6b1d5TEt1NmZZb29UQWhWQU9EK0xtYUp2cFM0cnF6RU52RGY5ODM2eTdzdlhYMDdlREt5TmU4YW9HNGtDREZRamdRVFFWRmQ3SXZScGNLTUJ3OXlURXNBUXovTlpJKzJvNG9pKzVreDg5ZG5IUDIxMjRHU0VrQ1dnYzdPQ0lyNDlsRXorUGhwQmxBYWxPRmVIUERxak5JYnk2MTBCSWM4VURKVWlPWTR4dWw2bWlncUMyY3dnYUhCeWdpK1Z1MzZKNG9pN0ovTXZ2YnNCKzg1OWFHU0ltdFNJdlZuQzM3NDBrRGJISUE5VXdTMklBVUEvamhrd1pyR3VlR3c3RTNxY2FJZ25qeGo5Q1VOSys1KytOZ2pocDJGUEFkSUNDTm12Y1puNk13cW83Q1V4WnJJZVVQTnZ6cXNTaXBMZ0ZJMStQeStXczltMlVWLzdWcS9Ed1JndFAzMEtYV0hHMENKcHRHS0J6OTZXUEhGQjVURWtwMGRBd1ZJRHBMdExXRnBGb0RuSXpwMDV1NFE4TlNneXVPUEdsRzJmZVh2N3B0eDVQQ3JvcWsvT2dtRkZOL3Q5Nys3SW1GL2tmK0hGbnBCQVlEN3JaeDAwa05CcnkvOGNhd2J1cUlCQVFBWU9LQjAvTHN2WFAyZlJ4NmM5UXR3NTNwZUFpUWlqWm5BaEthR1JGR2RFRTBjTmd2VThjOURpMzVsZ014YUFHTjJyUDFUdVVrU2o0cXVWZE1BTUdLSDZzekVPRE80WC9HRVNlTUhPQTFnVklQay9MeXluNDh5enp4eGtQUkxQYnh0L1RJM2IwSm9vdmFYQ29JRVBDZXhVak4zaHdJZ1QvL3pKNGZNZWU2cXg2cXJpaWZGOXVEbnp6SGlGbWpzV05UZEhRd2JRQlhnbFhlS0N6MmhBTUQ5OXlFSTVGV2QzZ1dtYkFMVWx0Z2FpK1Q4djBzUHUyM2x2SnNlR0R5d2JBWjZXYVFBQUNnaDFoZ0UwZ0JDNFA3QWlBeXcwOG5QSDFWOHNnRWc2cG9hMnE4V0JDMmt3bnhJSG1hckU0OVBNeUwxRm1ETURCWUVLdHgrM1hIVERhQ0VCQzNRT3JaVU9PU0c4WTU3b3NuT1ZvS2l3VUpHOWdKQVdHWEJGR0F5MGc3THRKZVF0VzVBcVduTlY3ZGNkOG41MCs0eFc4VFllR20xaFQ4L1hWcm5vaVhidjh5Z2JSYTB3QUlBOTE5cENuYThKOHNxcHdXeEFFUUNVM2VCS1p2aklESnViTTNNNWZOdmV2STNQei82WWcwQ1BYNStsT2dTb1RQc3hlUWtzUGVQYlhSRWpYVDVoVVBOdFlrZHVicWZ2dkp6R3UwdkZBSzZ1d0ZCQUlyamF5M29memR0Y3YzaEthRFVUOU9hQkFrWS84eFJ4WGM2Sk5vL0F1emlvVUxhYTRyTEErUUZVYk14Z2FOLzMvS3I0NFo5OThYTi94MDlvdi9KZW5nelpUT1l1Z3NnRW4rT0FPU3dFdnJkWHo3NE50Myt0R3VwS1BTRUFnRDNTeGsxNmtHMzF4ZGNFRk83TkNnd0w1ajhRMXlpY0VteHBlYUJ1MC85MjhlenI3bmRLb3JUME1NQWlhQ3JCMGl5YUFYMkFRSkVXMlNVQ0pGdW4rUzh1ZFFjZytqVVNiVkYvZnNWamMvSy9OMjFpMU9vc2lMZUJFNzRYYjhxNTRTREp3NXlwb0RTY0FDalpoOWY4dk9CZHVHZ3lHK0tCOGRHcytRZzJaakFzSWdpK2Z5ZFg1NzNoMXRQL0xmVGFZbU5VV1pkMm5QeXhqOC9BTTJ0M1V0LzJOem1Td0ZWdlF3cDlNY0NBUGZuSi9GYXpDVFZ1NFFVTUdVN21MSURBTGZkUkpFS3h4MDU0cEtOSys1ODVOU1pZODVFRHdJa1RQL3NzK0FGSVVCeGZVeXpLaldUK3BlT0tmdFpwRVBmK3VzWjA3TTJmN2MzOFArcmphcnZ4NXZCdDE1LzNDRXBnRlI2NzFUbnFWTXF4SXVqa081UFlTN05yVWtUbGhGTUFNQk9QM0ZzeGRhVmQvLzU4R2xEcnhURlNPYWtDcWJzQUZPMkExQmc5UHlXcldyTVpQNUdGcHVtMlJha0FNRDlUL3d5ZTFOUlZONEJpUTFKc1E3V0NhYjhFSVVEQU5UMEt4Ny8ycE9YUHZyRTMzL3lTd0Rqa0VPQVJLU3hRQUxKc2hXSVZnS0hMcUg0d0RKNjlwMlQ3T01Bc0lNbjFoMmVsZm5MR0xCbEcvODhlSENLVFdLL256cWg5a2lqYlU0Y2FLcTZjSmo1Vm4yeXMyTkFkalVUbUJMalhGQ04xT2hQYlFJLzkvQ0ZSN3p5K0NWUDlLdHlUb2p0eEtjOWo4N0V1NFJJcFRGRlVkbGYvdjNwVnlrQWEzU3NPdlM4OEVOQkNnRGNlNlY2K0cydFBuL28yOWlUTWFoRHlrTGNMNmkyUlB1UzJTdzZMcjl3MnExcnZycmx6eU9IVm1ZZElLRmdPV21BRWJGVlVaaUxvNk5FY01rSTY0M25IVGE0Smc0TzZjemZsaGJBNXdPY1RtNENHMG1DR1h6SWxMb2lQU2pLekJEK09zMTV0MFhndGlZMUVSUVBGYk8vRGoyR1NMUVlRaEtZUmd5cHRLeGZkTnNORjU0NzVXNnpXWFJFdjFaYitITXd5bkhVUGJmMkR0L0tMNzdaNmtKcXYyS2ltTkJITS9NVnBBREFINzJvQ25zOVprWVZwZXk5MFFDSnJnT09IdEgvK01XZi92YkpXMzk5N01YZ1VjVzB6MWFnTk9vN3BFSnVQck9pd1NLb3BtdmFSVkx4NEUvSDNDb0lBczNLL04yMGhmOWZQempORWZSbXNFQnYrZlh4aCtyaDhkYk1zbCtVV2Vqd2lHbGVNa1NJbms4UEpRbE1kOTE0L0tpbGMzLzcrSWloVlNjbXZvQ1l1aXNsdy9UUDdmdjFUVjlrT0pZUkZBZWdVSXkxQU1EOVVSaFZYbFZWTFVlRE9OSmJROHdIcG15TXl6ZHpPaXcxZjdqMTVMOHRlUHNYZDBxU2RCRFNCa2lZMkJNTkVJZ1VVSTJkVy8veHc0Wm5aZjRDd0ZiTi9CMmFmaFNZZm16d2xFa0RqNHA4ZnVhSTRoTkdGQW5SNkt1ak5xZGs1NHdRZEZoRXN2QzlYMTl3MTI5UGVNaGh0OFRLVmpHWGRyOTk2VjRyMm5NRFZGWEZZODkrOVVVYXpTOFZCRVZrTi9hNElBVUE3bHRTT3VTT2JmNUFlSFdVU3NTWjRSY0ttTklBcGpRZ0VpQVJCQ29jY2Npd256V3N2UE94czA4ZGR3YU1BeVJDSkdjT3lONEhxQmR6Q1lXMWtvSTZiREFOcjBOVzVtOUhCK0R4QURZYlVKbWh5cFFhRzBOY1ZlNFlmOFMwSWNXL1BNQTI3SmlCMHE4aTZ5MWxGTGFxM0U5ZW53Y1lWT0NQZ09tYzA4ZjMyN3ppbnI5TlA2ais4bWhBQjZydUhpdnBkMHljMGJkSnR6dXc0WlUzVnpSbjBQWlNhWWY5MEFmREh3dFNBT0NQWHNKaDVjMFltTEtjajRpNWtnSWsvU3FMRG56eHZ4Yy8vdndqRi93U3dJSFExZE43WUdScy9DbnBoZkxrckJWZ25UZ3Fsc3JDdk9uTjM2WmQvUCthYklMVzRXaGFpU0FJOUs1ZkhIM3NkUWRhczA1MlRxOWQ2amlycWpJQTl0cVRseHp6L0NNWFBWbFo3aGdmcjJYL0VLZGxwK1dmN25sdDJOajJlUmJtZHFwOFE0TEN4RXdGQU82UElwcWtWNHcwaWlUcFRxaXlZdUNmTXBsRSt3WG5UTDExL2RlMy8yM2NtT3Bqb1FWSXpDVjJXejVhQUtHQS9lQURrTFg1NjlKQVVsNldKYWhpK3p0b1dPbEZkbDJ5YzBtR1pPZHN4VkxxTUcxY2N1ZXRzMDZiY0tmSkpOb2pEREx5c3dJQWRqWUI3MzBBTEZ1UmVEZmlOUFpYM2w2MkFGa2tWYWZSRENzQU9BczlvZ0RBL1VxY2cyNzgzaDhJYllzK0htSXdMWVdxQW0rOERienpYZ0lJalNPVUk0WlZ6dmpxdlY4LzlidWJUN3dJd0pCS1NiVDN4dnlOMGNNR1VqTW9PL01YQVB6YUdHZExsdFgvZGZ0ejFnOXdVZ2ZuZHZGZ0FZS2w5MzQvcVc0QWpuL2dtb3VHMXBYUFRIeVI2Q1B0OFFEY0NUVHVCTUlKbWk1eFJMdVR4eHZZOGJmL3pOL2FRL00zc2ZwTlFRb0EzTDhrR0ZiZWpwbW9CdVBrUFI1QWtvQ21adUN0T1VCcmEwSlhTczVSYzlndDFiZGZQK01mQzkvLzlkM3Z0aWtUWS92dkJVaHFSOFJzYU9ZRklHZG5lNXF6clFNcXgwWlhVQUx6dUZFOVNuWk9KZzJGL2ZqRFVmYXJpMkVwZHNUc1ZvTmN5emhSRkdERFJ2NTVjRHliOU05cHk5YjJ6M01FWFNyTnNBaDhKcm1DRkFDNC80aEFTY3dNcGdabWNGRVJjTjRzWUVnOUVBZ0NIMzRDZUJNcmFpV1BVaEFFZ1U2ZlduL3hRN052ZkVBb0srNjlCbGczTW52elZ3KytRREI3V09uMmE1c3lPdXRrNTVSaUw0YmpvZ3ZnT1BFSTNUQzg1TkUyaHZMdEV2N3lxU2dIK3ZXTE4zOXB6RnI5YU1INitUbUNMcDFtV0lnSUZ3QzRmOG5sTnk3OUpoaFNOTFV1TnJJZ1RrUVJPUFpvb0hZZ055Mi8rQ29GUVJMR3FRSW83MWM4dFB6R0syR1pOQ2JuRkppWStXc0hxbkl3ZndIQW9abnpuWjNaSDBlM1gzRndIV0MxOS96R0RqNEFPUGxTQ0xXNnFZWU54bHNieXVvMXdIZmZjNDMzME9rSjVtOXM1STR2RUdxLzhlNDVhNUNkbnkrVFZoZ1pJbGRaNkJVRkFPNDM4dHBycnltQlFQamRtSG1WSWhwTUNIRGtFWUJKNHVOckd4dFQ3REVNcG15SkM1QVFpeG5GRjUwQjUzbW5BMUlQcHFiSTFmd0ZnQ3F0SDdlMDVIQWduUmxNQ0Q5dXJpS1pnVU5QNFl0a2lqS0hCenEySUcza0d1QnptSHoxTmY5OHlQUUU3Uy8rK1RRMnVSYWtVU043b2hVeThHS3NoU0Z5QlFEdUViR0FUNUs5Vy9PeVJBbTZhSENhZEJpYkZSZzNqbjlldmpLZE1SbXJWYWNMa0pqR2p3Rk92Z1NvekhFRVZxN21MeENyL3RMYTFtTXpXSC9jN0k0NUFEajVVcTc5UlhjWTB0VmNURk1KWDVhQmVmTzU2UXNBMHc4R3hvdzJlQkhGbnMrWEN6Y3Z5S1A1cTU4VnIxQW9vUy9jVFlWYmtGNlduRk5xUDJHQTVTWlhRQzNlNUZZc21xMFRRTWFzMk43SmhPbWxEU01HRHJoZUVLZ0pSQUNZTzdXV1ZWNEdyRjdMcDVrY09pUkRsRlVHV0NjSUpDQlNFOVZrQVlZY3lCMkNMVHZTUXlGaS9rNlpvV21BREZBYWtkWjNwamZibTNjQlhkMjhEbUJGbGlYd1dCaUVWZ0FnZ0wwSStHRWxJR2ZRMmdnRnhoMEdURCtSWDEvVXBPNEVVN2RsMXZwYTI0QVBQdUpwTDVJRUhITVVNTW9BdnNRS1FybG1Hd29wbnVQUCs4OWZBZ0U1MTdiQnN2amVEcUF0dXh0ZGtJSUdtQ2VaOGxwblY1MkRxazhkWGZUQzZyUExubnJocUpJYkQrc3ZuQVpnTXZwdzNPYTU1NzRXOHZsREgyVTBnd0hBWk9MZ0E0RDFHN0xZdXdxbUpwUnhJZ1E0OEJEZytQTUJSMGtPNXE4dk8vTTNJcEh6WExjK1J6UFlsNzBaN0NqaDEzSGdkRjJtdHhib1VETUVPbFFWV0xvY2VQc2RucmRZVmdhY2VSb1BPQmw2SVdMUHBXbFg5NWVkbmY1d2p1WnZ0cm1CQXZJOEwweEJDaHBnVmhJSytMK1kydDk2VHBsRk9HQklrWERRMllNdHMzNDJ3bnJROUNxcHVzRWptNXY4ek1MVkV3VHorWWErL2Jjem1Va1N6b2srS3RhUlJpdXpjUGo1L01DQlk3SThRaEJRWFNERUFrUkd4dG1jd05BREFiOEg2RXpocTV0OE5HQXYxc3pUdHJnNVRESktTVEhYVnJ2ZHdLQmFQa05jTmtKSUREYVNDZGo4dmZGMlE4WUNSNTRGT0hVUVp4NHdaU3NBWC9wamVEeGM2OXU0aWY4OWJpd1BOTmxzYVJUTkdvRHdBTWhuQzM1NDh0VTV5N2YwVXR0THQ2ME5RRWRmV3g4RkFCWWtUbGE0SUJkSlpPdmtTdWtjZ1JDQkVrSWNFcWtlVml4Ty84a3d5emtYRDdkTW1sSXA5ditoVzVIYUFzd2FvMHZ2WUhqaGxZZHVMelZKTjFDQkNpQ2lOaVFyUmR0MzJJRjFHM2duemdVc1VMWDlNaEJpNXh3WEJLQjJPRkJTRGpSdmpjM2RDd0JXQnpENTJOek4zNmpOUWZsTWNMdGF1TFkxdUM1M005aG1ZQWFiTE1BaEp3RmpwL1B6MS9qQjFGMkFtc1U1dHJZQzc3elB6WE9IQTVnNUF4ZzlLcmxpZFJ6OVRDQjhjQXJrc0JJNjUvTC8zZGZXNFpGN0NibE0zNHNBWEdtMnQydmJ5SVdlV3dCZzN1VExYZUdtdy90TEZiVU9ZVXBjZnlhRU9pUTZjRVN4ZU5nRnd5em5YRERNTW1GaXVWUzVxaU1vZG9kaDFScHdNTWRPQVFCNDVKSDVvWnQrY2N4aEpwT29UUUlVVGwrTnhPTUJXbHA1VkhqZ3dCeTlVRDZBdVRrRU5ZMEd4UlU4ZU5DeEMvQjJ4elNzQWRvY1BzeWJYaXROSmNYRlBLMmtxd3M0Y0d4NnlPaEF6Yy9OeE9IcjdRYmFtL2hYVmJYQU1lZkdCM0pZRUV6ZG1qbTlCZUJGR3Q3OUFBZ0dnWUVEZ0pOT0JFcExzb0I1S1lnMi9LMmx3L3ZWclg5NDU3MGVnaTZYdG1FRjBJVjRKNllOUUZXcENmVi9tdXljdWRVWENyUUhzS3ZRYXdzK3dIeUsrN3hQdXA1dTl5dmZwOXBBb2tRYWFCY09QYlBlZk9kWHAxVyt2ZmowOG4vOTZ4REgxZjBzT0JMQWFBRGx1ZDV6S3BJVXBmS04vR3VhbjJyVGx2Z1IvMWxEME05TFBxazZxTm1MZ0JrL0FjWnJpY04xbzJLYlp4djlUUlNua3dkdVpKbHJndG1lWG1JMG1GSmd3aEg4L093Nkg2bmFvWld1eXNJMEQ0V0FqejdsL3c4WkRKeHdQR0RKTGkxSS96eSsrMzduL0Y3NCtYTDFHUTdRUUZqOWszckw0YS9QS0xseDFWbGxUNithVmJGd1duL3A4UFdkRUpDSG1RUDNCeEVMdHlCN0NRTU52MXZtZWVDdjA0c2ZseWlmOTlCU1NpSGFDWUlkS3NLK1dGczJDVERYT3VuUnRVN3IwV2NNdHZxYXZNb1hDNXJDYy8rMHpQMk5TMFl6Z0JidFRaN1dOdXZ5K2Q4MlMrSmpnaURRV01KdEN1dW1YejgrU3FTN0cyall3VTNobkVVRlV4dTVOaWdNNE1jakJCZzdEYWlwQjBxcll2MVQ3ZTc1elN3ckE5cmFnVTRYTUtBbXkxUHJCbWdOTjRNckJ3SXpMd0xLOU5raE1walNDTEFjem12UnQ0RGJ6WE1VanprNlMyMVU2enJSMHZlS2V2Ky9QMTdRQTIwdVo4M1FCdEM3RDdJZmNuQ1YrYkFCZG5LWVhTU2p0RmtCMEJWaUswLzhvT01oeENhczcwWWhhbHdBWUI2bDVkVXRvYTFuMUFjZlBhYkcvR3NBQ0xoVWxQVVRZZTh2UWdrd0JEb1pBaDBxWkw4T2hoUzJPcWN3ODJLbk1QUGNvV1ozbzRjdG1OY1krT3lQcTd5TC9USmFkREJNa3BxUjk3UzV0ejZ3eUdFWER1RXFZVkc4aHBZb28wY0IzM3dMTEYvUlF3Qkd1bDQzbU93REVXcGpCUm4wc01rMitUbVZSRkoxd3VFY2ZxUWxSUk1IaDNMYytYaTBtbjA1bkZObkp3OGNDUUpQYzZFNUtPZTYwbGV1cnNDeXVaOXY2c3Fqbnk5T2poOGdsbDQyMGo1OVZJbHdXSm1GSG1LaXlTa0JRWVYxL1dHcCs1YXVjUFFHbU1Ebk1XNHJkTnNDQVBNbENvRG1pK2Qydjczc3JQTERxbXgwTWhqUXRWVkIrUUVpQkF1QnZackFYazBoK3prSUE1ME1TaURXdmkwQ2NRNHRKcWNNTGJhZGN0RklTK2RXRDV2M1dXTmc3bjNMZkV2REhJUnQycHRiMXp2WTZ3QU80V1pYRVJqU0FIRE1hR0RWZDl5MFhMZmVPSGN0QitBd1pRdEFLelJuUCttOStadlk1Mmx1WGhqR3VrRGlLdVF3TUxVWlVIdlF6NWV2NUs2QzBhTzQ1cHlENk5OZk5temFOVCtmZmo0Sm9IZFBzbzg2cE5wMGFLMkRIbUVYeUFHVXBxNWFvVEtHVDNhRTduaCtVN0FwMFNZQTBJbEMxTGdBd0R6S1Roa1llT3NTOXdQL09hejRHUk9GVFFrd2VIWW9jQTZLeFpSRUs1K2x6REVBQ1BzNERJTWRERW9vMWcvTUFpMGRXWXl6UmhiYno3cGtoSzExbTBlWis5NjI0R2QvK2M2M0FrQ3JCa09QckdDMnFxcC9wWlRxU3VXbmFOT2l5RWNzekowUExGekVUYnV5c3Q1ZHNkb0d4andnZEJCQXpMMDNmd0hBN2RGc09sdU81Nkl6ZzFrUVROME9zRUR1eHc4R2dTMWJ1U1k1Ym15TzdLWnhwZS8vKzcrRmN4UDhmRG1idjRmM0Y0dXZPY0ErYlVTeGVGaUZsUnhtcGlTMUQ0L0VIMlZMdC9yMEZWOTBHeFZnRmNEckNoWUNJbWx1WlVGeWwzRUFTdjkzVlBFSk13ZWFib21zTEIwcHd1Uk1mMHZEbm9obXFFSk5ZZjM1WkhYbnhtNTE3dHViUTU4K3ZNNzdIWUMyN3EzM3YrKzBXOFlBNEtaZXBpckY4ejhITnZ6QWg4cWRmQ0pRbW8rcVNwUnJnc1NzamFIdGhiendNcTlnYzg1Wk9aOGJFZW8xK0RYMzNNVzEvZ2Rnd2VmQXdCb2U5YzFPL2RSdVF3bUl3QXRCZEhmNzF4UVB2ZlhDSHBpNDVKNkpqcEZIMUVpSERMQUxSemhFakJOU2FYa0VNRGtJVEVVVWtwMmdhNnNDVlh1UmRvWFlpb1BmYkx2TUZZYVM0amdxZ0EzSU9QU2xBTUNDWkMrVjRGRmRMRCtyN0UvVk51RlFBQkJNQk9WalJKQXNrNHRDYmswejdGU2hwbkJkZWNMcXRrM2R5bWY5ci9tcGZkeTBrZWZ4N3RTbGplSklweW1wUEttM2NTY2ZLWExNVWIzekNTWXBGaWswVUVFRVJBa1FKQkJSNUg5VFFUTjFTY3prVlZVZ0hPTER6RlFWVUJWQWtjRmtHVkRDUE1kUGtYTS9mcmJ5NldmQTVxM0FvWWNZais5TlpCZlRBN2dPb0R3Q3ZQTDd4b2NuSFAzbko3UHg4MDJyRWgyL09NQXhiVlFwUGJUS0toeGhvaWhQK2FxUkFITXhoYW1Jd0Z4TW8yMnE4d2Nab1M1K3FKREtYTGN1OHN4NllYT2dKY01GZEFEWVdlaTJCUk00WDlJT250dG51bkdSNTg5UEhGbDBvRVVnUlVxSXdkMmdaRDFYaGNsSllISUt3Q0FoQ3NOQXB3cW02OXNPaWRhTkw2ZVhpZlBuQTlNMGYxNjBWSDZhUGtjcFQrbVlPNStiZWg5OXdqdjZRVk81bWR3cjBRMmZrOHdnSmd1dnVDS1pzcDlraEZMQXJBVkNxSURJbENVa1VlTUtoNEJ3RUN3VUFNSkJUUXZMZzB0clp6UC92M1pBVHZEajV4dXIvZmZHZXlzK1MyZiszanJPT3Z5WVd2T2hBMjNDNFVVbU1sRWdLU293RWtDeWM5aVppZ2trVy9KOTlEYXBVZmlwak9IVHh2QnRPdmlsQTNDSnJzMFdwS0FCNWtVR1F5dFcrZGpoUlVlZlZtZitYYlMxRFJlams0Zm5Lb3dCb1M0VmdRNkdvRXVObThHcy9OYWZRNnppU2dOVHRtV2Y3ckY4SmJCMEdkZTBuRTVnK2tIQTRNRTliREVFTUZ0QkxEYkFaTzNkckVvOXVqbCtzSUFQQ1BwN2x1c0k4QVRzVjJaejk4Q0Y1MmNQUGpDQUZuRVRISURQRjlwbXI3dnBkUDBXQjVhSnRodkgyUTQrb0ZROHRNSWlIR0VSVUpYeUhTQUNwbUlLY3hHQnFaaW1uZHM0NUdIb1hDOUh6Mm1MVzNsaSt0c2QvOHpDMUk1SU40Q0dRcmN0YUlENWttYndoRlJ5MVJmZGN5ZFhsQjA1d0M0Y0F3RGRXeFdVanhGN05GazNJWHpLU1hNSndGUUJRUTJHb1M0VndlODJRRHgydXJaZEVWaTJBSnc0SGhnMEVKajNPUi8xOFBGbi9POGpEczgrQ0NHWlFLd09YZ21HN0tIM0ppR0EyUVppdG5INEJieGdmZy9YRW5PUkprMzc2OTh2TlQrTTRNZmlrNThibWx5ZkFjRDFCOW9HbnpEUWZOZ2dCejI4U0NLVEJVcFNQbm5KVHJoWlc4TDllZG1JS2dOZG01VG9PYm5ENnJJWnNYeS9qSzhON1g4bitJZ1JYNkhyRmpUQWZNbG84RndyVEtzVWlsNDV0dlI1czBqS0FENW5iZkdRL0kwMFpBb1FOdmVENmJ5ZmFXdGtNSGtkY2dvNnFpcXdkaDJ3WkJtUGd0cHN3SWt6MDgvU1pyYUIySjA5SzVxYWVPeVFuL3Y0VkFXZ0F2Y1JtcXc1cDhJa1NUZ0k1bk1EZ1N6Nzluc2ZjTi9vRVljRG8wWmswUG9RcDJrUzA1aW8zckRoSHk5OFl0NjBlYXhGcE5WcHRid2lHb1ZlVDE2S25SdGtoTHI1T1lSVjFubmJONTVaejIwSzdNcFM4OU4vN3dPd3JkQnRZMUlZQzl6TGJnMnRYUGtPSHdzT0t4YTJIVkFxSGdjQXNwOUJzaEtJMXZ5OFl3Z0ZCTlVMREJ1dlZUV21BUE1ncCtBZUlUd3RadmhRb0tNZDZPamsvc0g2d2NrVEZWbHNJTVVWSURZbkQyVDBWQlFaek4wQmRMZHpzelVjQkdUdTEwUFFEL2k2QVNVTUlwbDZEa0pCQkxIWXVGbk8xUFMxQXB1YitRdkFiQWFPUEF3UWFFYXRML3FaT0VBRVhzTlE3WEpEbWZQUlVKRW16MTR2Mmdpc0ZSVE9nUUtjdFFJc1pSU1NqZlJvL2hWdmt3cC9teHIxKzMzY0dMenVEOHQ5YTlKQUxxMGVyL2tCUTRXdVd3QmdQc1FQb0NweUg5OXZDRFdjVjIvcFgyeW1Jd0FlNWJXV0MxbEhoYk1TUnpGUVVhMnA3NG9Hd1J6RlpBS0dEUVhhTzREMmRwNDBQVktyOFNlYVFFb3FRR3hGV25DaU4zZkhDK1pxelZ5OFZBNERmZzhJRlhVbDYzc2dWT0FnTkZ2NENCTTFJVmdTQ0FBZmZNekgvVTZkQWxUM1R4MUxZaXdCZ2d4RXFBSW9yN0xqWC93ZFFtdDUyU3dpY0xlRnZUOUZVWjBJZTM4S1V4R0ZZQ0s5c3JGQ2JvYnVyYkZyMk9wV0h6L3Q0NjVYY2pVZUVuVjZwSzhtVXdCZ1FYTHJkZ0NpanFIRnJlSGxaOVZiWmtxVTJKa0tLRUZ1RHVkUDUxUjRSUllBSUZMUFJrQkV0TUc2UWNDbXpYdzhydE1KVWo4TXBMaThkeHBmRkg0ZXNPNGNLOFVFL1NDQzBEc0lSalJDbTROUCtSa09jUVlFZ3NBSEgvSnJyYW9FRGpza2hTOHpCcndZUGhqQUdJZzBDSkczbWYvVCtURFRiamdHQ0NnYXBOUHk4dFNqVkJubzNLQkVNd0s2Z3VyU3c5N3J1RFdrcEp4VUtWc0lSbktJQW9XdVd3QmdQaVFJWGFYZVpyOGFHdXlnbThhVWlpY1NRcUFFR0VRemdXakxrN3ZWNXdaR1R0SWdsYUZVZnNhbkx3QjJHOC9aTzJvR1lIZm01eHpESWE3NTllaHUrcmtHMXhzSVI3UTN5UXhpdFFPZEhjQmJiM1A0T1J3OE1keGtTbUhxR210L0lGWVFzYjkyamdHWU4zNEdrNU5BTUpNKzhhUzdOc3JSOGVSaGhYWGN2ZFI3K1pKVzJaMkRwcGRPTE9Cano5biszbmtMQU95OUtPQ2xpV3lSQnZYUmpsRGpyQ0dXMGxJelBRQUF3bTRHU3prRkZmTFFVeGdEU2lxaVZWbUlmdGEwM05WQWtOckJJSk9tSmdCQmI0Y0ZlYVRWNStaTHdBZUVneUNNY1VnWmFGR3NxeTNaL014RlpKbEhuSTJ1UGVqbkFRK2ZHL0M3dVI5UkRvT0FHSnZzaElBVWw0S1lURUJYQjgrTmpCYUxUUUNmSG5nczBmeXRCQVR0QmRHd0h0aStvYzhhVkp6ZlQyVnNibVA0Vjc5YjdsM2JBOUN4TkZhTHFybHdDZ0FzU0s5RkJoOXpHWlVGamY3bDV3MjFIbWNTU0JGalBDaGlMYytqS1Z3M092WUllMUtVVkJCQlNpdDVXb3NoK0FKY2kvTjE4NENGSWtkSGEwQU9BVUVmNFBlQzBBU1RWUTREbmw2Nm1GU0ZCelQwUUl2NEV3TmVmbno5K1lTRGZIM1FEeUpJT3UxUlo4YjJyd1laTng0Z0RGRzdraGxwZ0N5bUFiTFlaMklheEYwT0FQRGRWMEIzUjU4MHBFUy8zM1l2KysvSkgzVysxa1BRcGZ2ZUFzQ04vYnhjVmdHQStUT0R5NkRMcSt3SUlWeHBFOWROS0JOT29ZUVFKUWdJRXNrNjl5dWpHVHg2S28rYUVsR3JlcHlEeG1XeWdKUlZBWUprM0ZzOFhieURxMnBtYlRUbzU4QXlhek1CQkh4QXFQZnVKU0pLMGRRYjF0MEJlTHN5Sno2cktwL0xCQXpFWkk3MzRRRUFwUnlzNFpCVzV0OEFmRWthSUFPSUdjUTBNQWI0Yno1Q1hJWjZua1FOODVTWENKODlZWFh4SWUrMDM2YjUvVmd2SVppeU5lM1BIYmRRRVRwL0VwbGtOcnJjdWRpOVltTTNlekd5Z2J0QmdSTE1nOXRGRGdNN2RjVUlTQTZsbkt3T3J2bWx5c253ZHZFbEYvRjdPRFFCTURVL2xaY2krMkdlTGcxcUdVQ3MwOWJnN2VZTFl6cXc2YlM1b2pMQWJOV2VVc0wzVEkzOXIycUxVQkk3VnRQV05HT1VlM1BCUU5jV09Wb2dJNnlpL1E5TGZOZDdRa2ljWXlSZlZhVUJvQWlSTVlnRkFCYWtsOUp1WUU2d2l6OXJmOFFiWWx0NHAwYWNlZE1yYWRpZ2MzTmxDVUI3RWUvOHFiejJvV0FVWkxrN3JybzFNT1FwSWlBTTVmdnpkbWNHWHlvdE5oUklnRi9zTTNFVUFSYk5iUnVGbnJhb3FyYU9BNUNJcFliM1BaL2liVmFqeWM0cVkrcThuWUViL3JmSjM5SkwwR1g2bm1pV1N3R0FCY21MSDdBOXNRRnU4eVA0dngvOGR5dU0yMHdoTjROdlZ4N01wOFpOTVJPVjJESy95TzNGSUJubSsyV2V6bDZwTU16WERTTGtaM1FsTVo4QTV1dE83dk9KMmw0cUZqQUc1dTdTZ1UrTlgxU1ZSNGdqdytwVW5jYW4xLzZJR0F0K3FDcS83M21Xa0p2QnMxUG45L01vLzcxNHZ2dXJITFU1aHA1cGgzYnczTUFDQVBkUnFRQlBWcTRDbjVSSXY1U0M1L0RwRjN2Q1lnTjNHT3NYU2ZQM1JaYUlMN1hWcVBIOWZybDN6WVl1K2FuSUNYa2FGY2lCWHByQ29RRFFvaHZiVHB5cHdXQXJBbkZrbUZBcEhNcDlURzJTS2V6VFRVblpDekVONHhxZzM1ZHNvbWFBWHV5dU14NGNDUWRpR2w0aTVKZ0tZclh5cWpRSmNEUTBmMXNhOHVMZlRQVDdkVzJPRlRub0RxdmZIUGRoNTc5Nm9NMmhGOXBocWRhdTl6dUZhSjh2aGpEdmpXdFBKZ0laS1ZJaW1zMVN5cEgvSmtrMFMyYWFNZ1BYTElrMlNsTVBqVENaUkNjSWk3UC9DQ0VNQUFoamdpU0tEbXRubTA5VVZCc0FNQkdBWFd0dlZFaGZva3FVakZNOElvRUhBSVFXZ2FudE1TMUo3L056bG1RQjFEeGtSREMxZCtrdjJya1QrMmthSFpRTS9Sb3AwbGgwWHdRRHNYdkhFczFkL3BtWXJXQnlHQWo0azB4aEl1bEs5cFgzQjA2L3lvQmlTdnJSTHBIeHp3YWkrRlFVVFF5Q01RWVZDSW5WL1gxYjd6WDlQYlp2eGtKaDVrNTl1MVJaWm1wS0o2a2lJNmdvY2twcUIwT0tUMVZZdUtYVnZmUFlzeDk1Rzd5RWZnR0ErNHBzMytYKzlQZ2poMTNhdjdMb3lEMStNdVgydnR1M1VhbDhrMFh6K1dYQkhUay9CWU5aTUFDSUpwNnFrZ1hza3Q4a1F3SHpBYjJEbmk2U3k4S2gyQmpoTk1FT1lyR0NoVFF0V0ZXMTMxUEFwUFAvU2ViZUY0VklrQVRIaGNrR0hMMjdtNlhMNWZ2azNyOS9mQ040VUtRWG1mVUZBUDdvNUdmLzkyeWpDZmo1L1BkK2ZkbEJrK3V1RXdTNmowYTlpR1lHYXkvd1NKNWZ0cVdyVkRVR3BONlV1d3I2QVlzMUJzQWNhL1lSeCttWmdaZHlYZkx3TmFnS1g0ekFwdzk0cUFxSTFRb1dDc2EyTjFkZ1h5NllwQ2hxZU5QVzFudEhUcnZ2V2QwZExRYjNaZThYc3IrVXd5b0ZNT1QrTzA4ZCtjc3JENy9mWmpYRjE0YjM3Z1Q4YmRBS3Zta3dpZHdlN1RPVFkyQWdCQXlFLzAwQU1JSzRLc242ZlJDaWRVdzE3dmZSVzA4aW8vRlYzWEVUSU1RWVQrQ05naTZKWHZIdUhVSkF5dnR6VFN6bGs0L2ZDZXRxejV4dWtxMVk3WUEvMTlFcERKQ0dnRlRjRVZ1ejg3SVUwRXNBWGRKbjNmOW1DNGk5U0FlOWhEU1h4UC9sRUpqYm8rVUprbGlxRElTRTlCZ0ZSSVV1VjVKcTM3RmtVeHVVbStHUjNFRjl2aUVZcjM5UEJjUUNzd205VXpJbnRCbkV0eC9SSEw4dXJoMVJ3TjRQS0I0VWQ3Y0RRWG5yRysrdXZQYUNueiszMnVCaE5HRS9xUml6dndDUUFoZ0R3RFJwWEsxdHp2T1gzVHFndWpRMkU0NHFBNjNMZ001Tk1ZRFJDT0JvYkozK015aEE5U0RVYjVld3dPZ3pETllqQWI1SWdHWWl2RWpDVStRZlNIRTVZSFBrOW9oN1Vyd2dwY1BVeWpYQlZDWnNpajlKMlhXQVpWenM2OFpMa3pmTUJub1JzNWd4WHNzd0d1UXcxdnlpbW1JRWJnRS9tTmVmREVkRk01ZWptbVZDMENRdWdLSzkxRlNETkp2RTBTWkVkMjBrRVdDNmRnTENYNFNKYllvZythVWIrVng1QUZCN0NQU0ZDTnM3dkcrZmQ4WFR0MzMyeGNaVWI3d0FlRjdyUGkvN3kwaVFTTk55TnUzcUR2L3RQd3ZtSG5ISWtLYmE2cExwVktBaUNBVWNBd0J6RWVCcDFqb0RqT3ZEUlRvWDBmTEo0alpVRTdiVE5YZ2tmRTdVYUZpeS95cTVZeWY2emd6TVM0c054Rm1hKyt0TkVQa0lFLzF4U0M5dU42R1pSNUxvNzRPcEhxVDQzUGl2M1crbEJwNGg5T0xoQndJUW14MXhhVENSQ1ppaVMrTGZNcjl1T2F5VjFFcUFuNnJHaHVIcDFzYytzK1JJc3BIcG5RVEV4SGFnSnNkcU00MWEwNzg0UlJOUWZ3eFFQVEdhOUs3SVNtRE51dVpiNmlmLzRhOWJ0bmVFVXIrS0lHb2FvRndBNEw0aklmQ1VHQUlBejc2eWVMMnFzczhPbWx3M3hTU0pQRkpnTGdHS0JnSCtWa0QyeFd0WXFRYk5jeDBRQkdyeXlBSVlOSFJETU1JQWJrZ3hNRCt4emVwV1VnSlMzaSsxRHk4Y0FueWVXUFhrWUlCM2FFSGt3K29ZNDJranZUVVNWSVZIdGZXUlQ0YTBHaUVwdVFTSVZGdUpTTmVicVlGbkJEMndlRlBYWWdXUkpINGVmaCtZM3h1N2JsbXJGMGlZSVJBSkpZQS95RTFoUlFGUitSS25LU2IranFsOG5MR3E2RFEvSXdobWdoOUxodDh1TCtDUTB0eExuZGlyZ0ZHbkFzNmFtRW9YQ0s5LzV1VnZ6ei9wcDQ5OWtlVlROQUh3N090UTJOOUs0ZzlDUXViNzRNSGw1dmx2WEh0alhXM1oyYkVHcHdLdHk0R085VHB6aE1aTVk3MFpHekY5RWZ2TWtrd1VnNzlUbXNiNmRVaHRIaHVZeWFTMFVqTjlFeDVyT0FqVzFRbklRZVBIVHdrZkpXSXZCdXZZeGZQbmV0czhCTUY0eUJneklLS3BIcVRxN3FUanNlMFhwZForMDhLRFY2b2h6aUl3bjVmbkU2YlN4Q2dCTVp2NVBkQ0RqYW04aHFBbmtKUTdtREpwbWlVQVdEVjRFUnBwOVNTRmY1WVFydlN0N1FJYXZFQi9LekNsd3JpdFJFemZtb25Bb09uUUZ5WnNhL2U4TVBQOC85NnpiTm1PWUdhL1JKeDBBdkR1eTBEWTM0b2hoTUVUb0tNUDNlWHl5Lzk0ZE1IbjB5WVAybHhYVzNxSUlGQVRDQUhzTllDbERIRHZqSm5FQnVOS1l3MGVRRmdHQW1FUWtYTFRtR1ZZa0VZN1RPem9LZjFmR2dSTUp1NzdTMmpUek8wQ1hLMHB4cS9xZmg4S0FLRUFpTE9NVjNxSnBJTDAxQVMySEFDRVd3eTZXckp2Z1pSZUFrZ0cwMnE0M3NpZzlTVm9WZEhSR3dURWJnZnI3dUs1ZlhIYW1kNWtWUUJaQVFJQkVLWndDS3BLVElzajROV2pJM2w4aW1JTVA2WTNmWldZRHpEdWVldmJqd0cwRTFIa1U0QkdQN0NxRTJnTEFnSUJSaGNEMWhTSkc2SUZHSGtpMEg5ODFPU1ZaZFd6ZkZYRGRjTVAvdU4vbXBxNjVjd1BMVWtrOEdJSnJBREFmUWVBZGsyOWo1TVhaaS9kNlBZRlB6eDBhdjBFczBua3hmWk1SVURKWUI0aERuc1MvSElzMXNoVkFBdlhBbCt2QjlZMkFLdTNBVHM3UUlKQkVMdUZOMTdHRWt4azFXQWR5K3cvTkhTa0E2U3NYOElvRE1hREdtNVhNa1NTVWxPMGRZckNTMG81U3dGeElpQzNBeXlFOUtPc2pBY1prTklyQU45WHhpRFhhM1BTSUpEUzg0MjF6YzdaQ2RldWorQWFqZDNscmw1aXM0SjFkOGR5K2xRMXdkK24wL0lpZndkQ0FOTk0zK2ozbWdudkQrckFxTWFEa0NVR09sSkZnclhmZFN1QUt3UjBob0QyTU5BWkJscERRR3NRMkJrQXR2bUJEVzVnazVldkN6T2dTQVFtbHdHbEptTnVGUTBBRGp3YmNNUm11Zk1Gd2lzZmZ2cUxuODY2OUpuRk9XaDhSc0ZEaG4wNElydy96Z3BYb3BuQ2htL0J5a3FiK1BYN3Y3bXVmbERaeFRReVNROWpRT3Nxb1BVN3hLWEtSTm9JQWJDeEdmaXVBWkFFSUtoTEtoWW9NS0lhT0dBd21GbUtOM2xwS3ZPWHhrelRiQ0xJVmp0SVJmLzRSeHIwZzdYdlNuYU9KLzVOREpvQ3BTREZJd0RiLzRGMVBnUDRWK1NvQURLUWdmOEI2M3dlOEg1bEhQVFFQcENxM3dDMktjYTcyWFNlc2NtWVVvc0dpTlVHNXZVWW1LUXNHVlpLYkQySmFHME9zL2JDaWdCT0FicjlRQ0NjUEtTT3NaU2pTMkp3WmtCemdNT3RJd1RJTEx2ZUtGR2dUQUlHMm9BcWM4ekVUVndHVHdmcXBrZk5abFZWMGRybWVXejZLWC83MDVZdHJseUNHT25HR2JZZ0w3UFJGd0Q0WXhBS1lBUXlWQTk0NjluTGpqanhtREgzbXN5NndhRGVabUQ3NTBCa1pKRWVoQ3A0eHlFRWtGV2dwUXZZdUF0bzFhcVpXQ1JnNGhCZ2NKVXVkWVlZcDlpazh3c20rUVlKU0hXdFZwUTA5ajNidFNNMlBJc1k1SWNsNVJNbUFKSVFrS3BMQU90eGdHY2VXTWNMZ0pyOWNEa3k4Ri84UEhiOEJtRGg1RDdHQUpnR2dReThQMlV6WkQrY2t6SzlCVVl1Qm9zRjhQc050TElFK0treHJaRkVOVWp0ZndxZ3lCSnY0b1psd0pYZ1I0ejdEQU10bFFHN2dzQjZOK0RWc2NNdUFEWVJNQkZBcER3SUkvR1VLcGdJWUJZQUd3V3NRanowa0FCQXN3TVlld3BRRW51WHkyR2xZOW1xeHVzUFB1RnZuK1VJdVV6YitMR1BUcVMwUHhaRTFUSlQ0VWozMEY5K2MvbTI1bGJYZTBkTUd6ckdZcEY0T00za0FFcUhBb0YySU5BZDMvbW96aDlJQURndHdLQUtvSDh4MEJVRTNINmdvUjNvOUlKVUZuRlR5OGl2eUppQi8wZy8wRitOMTM2c05sN2FTVytlKzMzSnBtOVVjMG9STkdBR2NQR3ZCeWs2Q2pDUEFyRWZBZ1MzY2I5ZVd0K21OcjYyYUFZZzlRTVVIK0JmYnpnVWpWUmNEa1FLalJwSjY4c0o0RXFSWnFLcWdMVU1FRWNEdnEwSjN5bnhQcjlvRW5Na3BVVnYxbXArUGtJQXFoMUgwZTVIV09hK1FKYW8vU1VtV0RQK0FselZEV3owQUNIR29UZk1Eb3gxQUlPdFFIOFRVR2tDeWlXK2xJcEFpUWc0UmNCS0FKR2swTm8xS2E4SEpwMEwyR05GeUQzZTRLSS9QenovcHhmOC9ObnZrUC9pcVpIcE5OVUNBUGNOaVZSd0p1a2F4ckpWamQ1L1AvbkZPMmVmTWg1bEpkYkpoQkFDS25JSVVncDRtclRzZnBZTXBrakhzRWdjaEdZSmFQTUFuVjVnV3l0UWJBV3htWGhIakVCUE5ZQ1JIb3BJaGlNcHErUytQOTJ4bWR2RnA0QkVxc0JCR3BOU0QwRTFCQ2h1RVB0VWdOcEFuSWVEVUR2Z1c4MjF1alFnSk1VekFLRVl4RElVNlBvRVVJUHhQanRUTFVqVlpRbVBJS0d5VTh0TDhkcVpZY0t4Q3BRZUROTC9DbURuSzREc2p3ZWZvc0ZOVVRYb0tTQ0ttcHdIR0JjQlpoeEMrbU1SQnZoREJ2QkxNTEY5TXZCTko5QVI1dnNZNGVEZ0t4SzVoYUMvVEpLaTVSRWorMHl6RWtZY0JZeWVHYTNtcmFxcTJ0elM5ZmNSMC83NDIvYy9XZFBkUzlDbCs0MklmWEFPa2YwVmdLb1dDTEZrakpxRUZmWGZUMzd4N1FFait5OGJQcVJ5dWlob0U4UGErL0U4cTY0ZFBMMGt5U3pUZ3hGQXFSVVlXQWE0L0VDWEg5aldCbmo4UUptZHAySXdGbDI0U2FYR2dKY3FvbXd5Z3hTWEpCK3YyOFVEQUVid1E1b290TkV4QWx0QkhKTUJVWHRmV0lhRE9LWUQvbzFBdU0xQWU0MW9nRWNBVWdWQVRDQ2dnR2Q1WEhDQVZGME9tR3NSR3dhWStMOEtOTCtjQUR5V0FDVXp5S0NmZzFUL0ZHenJ3NEJub3k0aG1jT042TUNYcUFYcXQ0dlRGTUVBRTQySEd3SDM3Y3BLL0QzVFA1OHVHVmpzQXZ3cTErWW1Gd01Wa2tFVVBOSDFrR2FZWThUOHRSWURrODhEK2grZ2I1dTd2bDZ5OWJLeGh6LzRpdDh2cTNtQVhMcHRCUERFYUtVQXdIMURaUEF4d3RrMENEYjduWlU3Tm14dG1YUHNvY09IVzYybU9tNFMyNEdLRVVDZ0UvQjFHSml3Q2RxQ1NJQ0JwZHozMCtZRk9uM0FsbGJBRndDc0VtQVNvME90U0Z5VTJSaFNwTGdVa0tSa3dIVzdlTnBMMmhFSW1aSnpkZHNGdDRHVUhCdnJySUlEcFBob0VFaUFkdzBmUFpGb0FoY2ZDVWlWZkh2TFlLQnpQaUI3K1BlbVdwRHF5M1JSWTlVWWdrMHBORUJWQlJ5alFZYmZEVGhIQXEyZkFnMXZ4RUVzQXI1VUpuQTB3R0VVSVFZRHpHTDgvWW5jazJBS3piZGJBUlozY3BPM3dnUk1jbktJUmdZaFJVWVBHUVNNa3NDWG1NamVieFF3NWFlQXZVeG44b2JtM3ZYbjk4Ni84cnBYMS9jQ2RMbHFpUHVjRmtpd2Y4dGc4SUtudVRRRzh0MkNteThkUGJMZjlZS2dLOUszNjN0ZysxZGNxeUNJSDllcGo3Z1N5ajk0Z3NEM3pjQXVkMndUcXdTVTJMalpiQkU1K0JRVkNQTDhRaGJTZ2drMk0xRG1BRG5qT0Q3aUlpRXBtdTNhQ1FTREJrRVRvNENJa2IrSkdBUTFmZ21VSElPa1lUSEI3V0E3L2duNE44ZHZYM2M3NEp3YzI5YTFBS3poSHp5SVB1aDZvT1F3Skk5bWlUZUIyZEl6ay8yU1JBSVplRDVRZlFwZkYyd0ZXLzVya0pBM2RTUTJidnh2RnV0RXlnTWhSaStEVms5ODVSekdlQnJMeW00ZTRlMW5BZzUweG1BWDFmb1NvdTZHVlhJU2dsU0NBQnh3SEZBM05XYTZxS3JjMk5SMTM2QUp2L3N2a05Wa1NmazJoZDM3RWdUMzkxbmhWQURPSEJzQis4OHpYeTBmWEZmNjFhaGgvYWRMSXVVVGNqaXFlTTVnMXc0ZzVFdnc0Nm14ZkVGb24wMENNS0FZNk9ma2pkMGZCdnd5QjJPbmovc0xPelF0MFIwQS9DR1FrQUlTVmtCOFFhQ3lGR1RVWUFQZm84b2pvY0ZBdlBhb0puWjRvOVFRTmNHcHI5dTNkeDFJeFhFYXdOWFlJanBCU28vaDIzcldSdjFwcFBnZ3dESWdwczFaYWdIWHR3QzFndFJlbWNMc1pmSDdibmc1dmhDQmZTaklxTnVCMGtteGJkWStBT0xlbHF3aHFrcWF2eFhqMFIyUit5TlJybzFIeCtQcS9LYXlBb1ExTTdnakRLenhBQnQ5L0hScXpNQllJL2dsUUU1ZkFDRVZCQjNsd01FWEFQMUdScjhKaGVTR2VWOXR1SERTTVgrZFk3RGpmRUl1M1RhaTVrUGZKNUtqOTNjTmtBSVltc1dMd1BCaG4zRHNpS0puLzMzeEh5b3JIRE9qSzVVd3NHa2UwTEl1NFZlSitYdUlWWldKZlBhRUFXOFFDQ284a2loU25rZG9OV2xhb1ltblMvakRRTjFBb0Y5RmZNcE1SSHZ6ZXNIYVdyVXJUS1VGSnBSV0lnYk5JVkVUN0g4bVNNMUZxYjMzdmsxZ1cvOEpCSGFBRFA0MVVIWkUvSGJkcXdDNVU3ZWVwZFQrQUlCOWRhWUdDd295NkZ4ZzRKa2FnTFZ0ZG40QXJIdlUySXhQR2lVUzhkbXBxYmVKTEVVV0RrQ2pzY1l0UG1CSkcrQ1NnWkRtZGhNSU1OUUcxSm5UZ0UrdjlaSDB2Vy9nZU9EQWsrTEttWFc3L2U5ZWY5ZnJOenoxL0JMWGJnSmRPdkZoSHhraXQ3OERFT0FGRWlwNjhFYUxici84c3h0K2V1QUIxYmNKb2hCcnNidldBRC9NNVVCRXZJbXF6OWRMeXUrakZLbnoveUtsdWlnd2VEQTNrUXp5QXNFWXNHTUhuMW95YVN5eGJ2eHZFdVRTNVFtQ0J6VEcvZ093VktlK0hXb1lyUEZGRU1zQW9QTFlGUDByTmZUaVBpODRFM0RVQWlOL0NUaUdJRzYwaWI4SitQcDZIdlZOTlRRdUhSQlRMUVM2eXQwRzBYSlpCVjdleXROakxCU290UUFEeklCRWpNYzVJMXVURjN6cWd3TlBBZ1pPaUwxUFpTWFVzTk4xWi8za1AveHZOME11M2U4WWVGN2dYaDhRS1V5TXpvZjVsS1I0R1dUbFJINzAyWVhmVmZVcit1ekFVZjJuUzVMQUF5dU9TcUJpR05EWkFFVDlVNGczVlpHUVBCdnRLR3F5Q2ExUGY3R1lBYWZkSUNkTmpZdGFFbzhQUkV2MkpTcmpuOVhVU2NGSitYYUpaaVdUZ1VBVFNNVmg4YWFxZmlFRXBIZ2NZS3ZWVEVFMXk4VWdHS0lFZ05HL0JzeGw4ZHN5QlZqeFI4RFRtRDQ5SnAxSm5DcjQ0ekFEb2dERHNicVJVVUIyQXRTYWdXRTJucjlIU1k3Z005QkJpdnNCMHk0Q0tvYkUzS3RCZWVNSDg5ZWNOMjNtUHovZERhRExkYjhFKzhBUXVZSUdxQmwzNFBNaDlLcEJIVHhwb0hYTzgxZmZYVlhwUEN2bVpaU0JEZk9CeHVVeGpZdkJPTU0vMWJDM3hIVmxwWHd4MU81MGY3ZTNBeDVQc3NhWkZBQXhOb01aTVc0dTVNQzdnSklKT2R3aWxrRUx6UGF6dG14OUcxanp0SEh5ZHFhaUUwbnJkTCszU0Zyd0k4SHZsd2d5VDREN1pkT1p1MW5CVDVQQlU0R3hNK09LbG5hNS9hOWNjczBydDd6MTRRcGZIMnR6dmRsM0YvYnltb0VGQUhLeEFLak5WMFA2OXVQclQ1ODRkdUFmUkVtSVRkdldzaDVZOHlHdnR4Y0JXaVE0bUFpNFZQN0N5SGNEcWdHckpjMzJPaDlmVnhmZzZqSTJnNDJxVENkRmdBMUdJOWdIQUZQK0VWZHlLYlBGbEMwQU04RFAwd0FzK0MxUDBqWUVYQW9nUm9Ca0JFQXd3RzRDN0paazhCbE51aFNTZVJwVGI4RW5tWUVKcHdQVnNkdytSVkY5VzdhMzN6ajhvRC9PM28zYVhFLzNIUWFQQ2hkTTRMMWNaUEFxTVdKUFRPQkVlZnk1UmVzY2R0TUhFOGNObkNwSlFpV0hSZ1hQNTNMdGpBMmpTK3dzK2psdFU1WElJZ3dvS3pIUWFnem11bUFxWURZQk5tMXNhemlzbXlESW9Jb0pTekI5azc3VGxtQVhJRm1BNGhFNW1MZ0dVZDVVK1grRzJ6SSsrbVRSdllCdlYzSlNkR0wxNVhURDFhSXBOWVNYbHlxeWN1MHZKZmdTSGpVbFhBdnNLZmdBb0hRQU1QMW5RRm5zdlJzTXlLdGZmM2ZGMlVlZS91K3ZmbVNnU3lWVTh3UHV0VVBrQ2hwZ1RKd0ErdlcyRVEwd1EvakxvVVVISDFBaXpDaTFtNDhyUDNOR3RlMXdYYlVUcG5LVGVPczNCcHBYWW1RMjBVUUdZRElCdGRYR3dSVDlmbVNabDNHeURRRnFaZ0psQndQVXl2MW5janZBdE9DQkd1Um1ldVRjOUZQSXl2NVkyMVpsUUFuR1gwZnRDVGxxZ09tMHdTeTB3UFd2QW10ZU1xaXZsMWd6RU1ZRlV5VUhVRklMVk5RRHBVUDRmZDc2R2RDK1FSc2hUbmdDdEVCVFgwdGsvNjF1SGhESkZYd2d3TEJEZ0ZISHhNMzE3T3IyUFhuU2hZL2MvZlhYTzBJL01zaGwyazRCMEYwQTRONHZGTHhNbHBCcm81ZzVRSEwrYXF6OXFIcW5NS1BJUkk0VUtZbkxMVFFmT0JKRlB6MEYxS29iZWRlMkNWajFEczhaVEpXU2ttZ0dnd0FPRzFCVm5qcTZHd29ESFYxQU1CUy9IMHNaVUg4Q1VIY2NZSzRDWU5aZFFsaFRna21lbXdiTEF3UzEvN3MyQVhOdjRWRjFsbjRpSkVoV29LaVd3NjY0bGxkTUthNERMRm90M0hBWHNPSTVZTjNIUExDVGVCb215clZDU1VpdDNibDhnQy9IR0lESkJrdzZDNmdhcGpONWxhNE5tOXQvZGNBaGYzcS9qMERIOHJ5ZGtmakFjd01MQU56THBReXg0WEZwRzhXdngxaHJadFZiaisxdko4ZmJCSEtRUUlsaHFWNHFBS1ppQ2t0dE1jd25ud0ZVeHVacFFOQU5ySGdiNk5pVzJoZVhDTG9TSjFCV0hIdDhlamgyZVFCWGQ0SXZMd0dvMUFRTVBBUVllZ3BRRXVtSW9zWjlsbUNPOXFTWnNGNkFNTVgvYWhqNDlFYkF0VFVlUm9LRkZ3TXRxUVdLQmdJbGRVQlJEV0FyVDNpUGFWWWFrNEVObndBclh1WnVpS1JUVEtoWFdHUUc3Q2ttUW5mN0FYY09mYjVpTUREcGJNQVNlemNHdCt4QTYvTnp2dGkrdGUyNWU1ZDJmUEJCSXdKN1dKdnI2ZStZNWd0VUN3RGN1MFVFRDRZWVZZa2hqeHpxSEh0UWxYUnNoWmtjWnhIcDZKU09WVE9CdVpqQVhFSmhjaWJNMFRyK01PQ0FnMk9BWWd6WTlDWHd3K2U2RVFKcGhxOVZsSEF0TUM2Zmp3RGRYcUF6QVg2WnB0Y3NId1VNT3htb21SNFhnY3hmczJDOUJLSDJlZTFzb0dFUjErYUthN2wyVnp3QXNGZW0yQWRCL0F4OUFIWXVCeFkvRGJoMkdFTXY3cU51WGJHRkR6MU0wbmxDWEF2TTJNTW9NT0pJWU1UaHNVSzNqTUU3ZHhFODc4K1B6cHluTU9iMmg5VjN0M2pVVjg1ODM3WFFZd3lUM2FITjlkVGtEb0pQcDFrQTRGNHVsZEJxQlE1eFFucndvSkxwSTB1RUdVVW1Nc01za1A2cGZpVFpPZkRNeFFTaUxjTnRyUjRNSEhJeVlMSEgxblZzQjVhL0FRVGM2UUhXcjV5UENORkRVWmFCNXZhRU1rdHB4dmdtcnJlV0FjTk9CT3FQQTh6RmZXUUM5d2FJK3M5cUZ0dm8xblUxQUl1ZmlhVWhwZEwyVXZWN0FxRENvZVVHNnJ1N0RMUm5tRFRONGdRbXp3TEs2MkxyQWw0RTMzOFgzdVdiRVBZWUh6T3NzcDNlRUp1OXNqMzA2bm56M0d2M0VPUnlQUVlEbjBWT0xRQndMNVpIRDdkVkQ3S2JmbExuRkdjVVNUaFNwTVJ1ZU9NSUlCVVJXRFRvVVZPT3Q5SmlCdzQ5QmVpdjZ4d2hIN0R5YmFCbFk4SVQwa0d3dXB4WGdORURyYjJMVjVSSk9aTERDS2dHajE4d0FYV0hjeGlXRHMzem5jMFZma2pvU3l3M2FJYTh3UElYZ2ZVZng0L3BUYVg5R1o2eTlyMUY0bVhMNGlpbDhFQklLdWszSEpoNEp2ZjdSYVI1Ry9EVnUwQ0FqeUpUZ2d5QkRvWkF1d281WUh3dUlRWGZkNFhVbHo5dERMNXgvU0pQODQvTTk1ZjQyekQyc2tJSkJRQUMrT0lrNTRoeWgrbE1HeVdubUFSTXA4UTR3WTJLM0o5bkxpRXdGOU9vUmRQenUwK0FBNllCNHc5RjNNNDJMd0xXZnByY3ZnaUFta29lcFl6QVQxR0JuVzNKNW0yNklXNXhUNTRZdDRqS0E0QVJKd0VERHdhSW1HZEZJM0c5bWlNWTA4QTA0dWRiOWdyM3NXWXljVk5CTDFINkYrdEdmR2ozZlpkQjhKTUt3QUV6Z0NIVFlqZVRxY0NxcjREVmkxTHVQK3psSUF4MHFOR2dmTndkWWt3TnFWalFFVkJlL2V0M2dYZGYyT2ozL3NqTTRzaDJQdXhGUStUMlZ3QmFQam1oWkZxMWc1N3VrTWdKRm9HT1N1dlBLOUg4ZVE3U04zZXNhaUJ3eUNtQVhUY1l4YlVUV1BZYTRPdUtCMWhOUmF5eU1BalgvRHJjcWJVNmt1SHZ0QVB6Q1E4b2pEZ1JHSHFzemp6T1J0UThtY1k1d0s4eDR1ZHJ6QTE2NmNBWGtSSWJZRFBwaVFRMGQ4VnZZeXNCcHB3TGxPZ0NYZDV1WU9HN1FNdU9yQkVTN09Zd0RMcFVQbUl5UVJRR1gxQlczMnZ5c2xmUFhkQXhyOUVkQmM2UHdTeFdOQWdXQVBnakVRckFkRklsU240MXRmU1lPaHM5eVdHaXgwa1VWUm45ZVNVRW9uVTMzU0t6RlpoMklqQXdsaUlCT1Fpc2ZBZG9XaE5iTjZDQ1gxSGs4WFY3K2F4bFNVODBnNlpuQ01NMDN3a1NNT0lFWU9MRnlGNzFaVGwreDNxd0RRQlh4TSszSW52Z1pRTTl2VGpOZ05NYWZ4cE5ydGpmTldPQUNhY0JvaTVnc21NanNPZ0RJTmd6cTVBcFFLQlRSYUJkUmNodGZLNEtRNHN2ck03ZTdGSmVtZm14YTJXZWZYcTVpZ28rUGpoY0FPQ2VCWjRaZ1BtYTRhYnFXY050SjlUWXhlT2NKbktrUUdBenZBa1VNRGtqMEtPZzBwNTZHZ1E0OWp5Z1g4S3NuZCsrQk96NmdYOGVXQjcvMUZ4ZVhrTXcwOVBNWlBLbTI0SEpBUnh3Q3A5NDIrVG9Bd1dENWJCZXR5N2tCWmE5Q0t6L0pQdUozRmtQbFNTN0NTaE9hRDQ3TlFEMkd3RWNmSDc4ZDd1MkE1KzkwdlBqSllJdXBQTVgrbzMzS2F0c3ZUdU1WNVkyQjE2NThBdlBqajZDWEtyZmg3QVhGa2ZZbHdCSUFWVGRNOUV4NHNSQjB2RVZGanJES3BLcGxCaXJLMVJFTkdwcnlvYy9MeThhNEFuQXdPSEpHdURPMVRwTm8weFhTeEJBbDg5NFdGYW1tbk1aV3dNQkxFVWErRTdpeWNWOVlsWDFBSXlxQW16NEdGaitDbythOXhYMDlPSXc4K1RvbkRUQUg0QkZIL1pZQTB3bHNvL0IzNjRpME1HZ2hwT3ZUVlVaQ3dNTHU0TEt5OC8vRUhqcndWWCtyajQwaldVTmZIdmxjTGg5Qm9EM0hBWHh6UEx5bTh2TjVCYVJrcFJxaW1naGNBNFM0dlB6OXJSVUR1UVI0VVFmNEpKWGdjUzJXMTJpMVF6VXhCZmtNODBaUFZLU3hTTTMyc1pTREJ4NEJqRGllRUMwOUVHZnlYWDdCRC9mdDgvRSsvbjZBbmlKa28wUDBGNEtURDRuMlFmNDFidEE2NDc4bnhNRFFtNE93MkJuQ24raGltQ1lxUiswKzlqTHY1alg4Y25YM1NuTjAxeDlnQ3BpUTRqMld0blhUR0JwYkRFRy9lWFEwdU9HT09oWmRva2NJeGhFZElrQVdFb3BMT1Zhb3ZJZXUvdUVKMFdQUDB6blYyTThDcnptVTY3cEpFb2lBSmtLTkhYbDlwaFRYYkt0VEFQZkRKNFMwK01tMG9lKytPM2ZBb3VlQUx3ZGZRdThST2x0RkhqbGw4Q2FiL3JzWEprS0JEdDVGRG5ZelF4dm84eFlaMGhSWisvd0tLOGM4VzdYTjcxNEVHSHNBN1VBOTBVQUFudzRteDBBTGhoaUt2bkZnYzdUcWkwNHl5U1NTZFRBNlMrWUNDemxCSlp5Q3RHeUcyOUhxanpBNVcvRy9IMUdVbFdrRzZPcW5XK25oNWZKNzdGNVZ3a2NlQ1l3NHRpRUVTRjlvTExrWXg5aFA3RHNKVjVlak8wR3k4c3FBYVg1endQc0sxSERRS0NEQjAvQ3ZsVEoxdGdTa05XWFZuZW9MNS94YWVmbWJLMXZEWDc3ekFUcCt5SUFKZkFDcDNGUC9rOVRySFVuMWxyUExyWFFzeXdDcVRQOG9ZMkQwRkxXeDRFUXc1RWcyNEFsc3pQN3RDb2NmSkwxdUdhcEFDM3VaTzJDWkhpOFJmMkFjV2NEUTQrTXEwenk0NUFzWU5tK0NmanlVYUI5Y3gvMkVBSlU5bUlreUpSWlFGbjhTQkFzZkE5bzJycGI3cUljMFBJTDJ4bVVVSXBrYTVWOTY1SFZsei9kNW4vdFY5LzRPdzAyVVRUd0tmc2FMUGJWTkpneXBKbnU4cVdqblpQSGxVbG5GcG5wR1JJbEpVWjN4VnhFWUNtak1KZm1NVUJDS0REdU1HQk13bGpnRFo4REd4WmtwODBrK3FJaSsvRnBzOGxsNWM4YUFJeWZCZFFmbWdKOEJMdG4wcTg4SEVOVmdIVWZBa3RmQk1MQldJQkl6ZFA1bDFqek5CYjRpUGhudnVZYmJoYXozYWRNaGR3YUREdFZNQU9VcVNxVHd3d2ZlVUxzNVQ4dWJuL3Z4ZTBJSWhiazJDZGxYd1dnQktUTzg0djB2bm9McEVlUEtqbTZ2bGc0MnlxUzQwVkNURWJ0MTF4S1lTMm52UXVjMkl1QXcwNEZLZ2JvdEFFM3NPeDFvQzBIYlNBeEgwMHYzaURRbFNiaVdEb0ltREFMR0R3OVFUc1VkTkJqcVMyY29Cdm9iZ1k4dTREcWNUeEsvR01SYnh2dzlaUEE5c1hhSlZGdFJqenRjdVFlS0MvRjF2eFdnNWs4Q3pEcjRuTnRqY0NYNy9CQXlXNVVyRU51QnZkMkplWHdPNEFYWi9DRjJSOS84bVg3UTB0MzdqMkp6UVVBeG11Qmx1eWFCSEJPdmJub3VnUHRwOVJZeVN5elFBNm1CZzVES2hGWXlnaXM1VFJ6d1FPOURCd09URDhSTU9sT3AzVWpzUFFOclI1Z0wvMVJpYjZwTGg4UTBuWDQ4aUhBeEZuQW9LbmFJMDhzZnhVcEY4VUFYenVIbkhzWDRHNEN1bmZ4eGQwY085ZXl3Y0FaZjk3enpjZlh5YzNnOXMxQXEvYS96OENDRXlpZjZ6ZFNPU2M2dDIrSy9ab0Vudk1ucFhFTGRIcHo5N3VhYk1Ea3M0QktYYko3S0FCOC9RRlBtZWtyNXFsQXFFdEZzSXNoNkRJZWFnZnc0WGF5aW9WaGxiMzNneXY0emdrZmVUYnJUT0JRQVlCN254WlkyUk5iNjU2SnRnR24xNXZQS2pNTHM4d0NHVzYwaldpTitBc0poRlNGRUtnQVREb2FHRGtwd1dTYkMyeGMyRE1UVUJTQUttZm03UlFWc05VRG84NENxaWRyMEtPQUdnQThPNER1SFVCM1V3eDIzYzJBcHdWUXNzaHFtSEVUTU9pZ0h5ZnNzdkhwV1VSZTRFQ2cvRDdKR2d3RkdsdWZTVnJjUGRNcVUxU0V4dnBsd0xKNXhwSC9ubmdHd2tEUXhZZlRoZHdzcGFXdE11WU5xZmdrR0ZiZlc5VG8vK0JuWC9zN1VyMWFzWmVudk94dkFBUjRjZE5NV21CYUNyMTRiUEdCNDh1RVdjV2ljS1lvb05Md3hlN1VZRmhLWS9NRU9VdUJ3MDhEU25WVjluMHVZT2xyUUdkajc2NnF1amg5Z01NeENCaHdCR0R0Qi9pYUFNOU9vRzBiME5ZQWVOcDc1M3NycndkT2YzRDNONTJGai9FS3pubHQvWVJyMU5HcE1MTlZxVmdXcVVlWld1WUFuak5vSzlGcGxidUFMK1lBN3M0ZTdWTDJNd1JkWE1zTGU5T2F0ODFoQmU5MWgrVjMvN1BZdGVBLzI1UHErS1g2OFY2YjhMeS9BbEJDOXBPZXA5Mm13Z2JodVNOS2p4eGFUR2ZaUlhxQzBiQTZRdm5vRXR1MHNaQ09tZ2xJT3BkaTAxcGd4VnZjVWQ5YnFYQUFwaXpUVmJyOXNhRnkrWkRqYmdGcXAreitKOGxVNExNSGdlMUwrbWIvaVNNOTBrbElCdG84ZVdpZFptRENHVUMxcnJhdUhBSysrUmpZdWlZN2Y1NkhhWm9lZ3hKTUF6MlZyUTRwN0wxZElmV2RhVzkyTGtQOEhBUlpLNWI3bWltOFB4UkRLTkZwZ1hrcEIzNXFuY1YrK3dUclNWVldlbzVGSUlkSGh0c1Jrd1RuMlNmQWV0QTRYWk9SZ2U4L0FyWXV6dDhWRlZrQVJ4YnV6Wjc0cWRLQ2R3aHcyZ043cnRuSVFlQ0R1N24vdEM4a2szODFJcDRBMEozSDRzY0c4d0pqOC9mQTRrOEFPWnowSGdoMmNlQ0Z1dEw2OHhTWjRhdVFyTDZ6eVJWK2QrYkg3cTA5YWVzcElCamVWK0N3UHdCUUFnK0k5UGJCRzI3eis4bjIvcWNOTnAvWmI4aUFpeXN1T1dPb1dGV3U2eWh0d0pMWGVCQWhuMklXZ1BJTWZzQk1FZUVlYVgrM0FyV1Q5K3pUREhRRGMyN2k5N1l2SkYza055THRiaUNZNTVTNG9uN0FsSE1BUjRWT2UyOEh2cGdEdGJVRlFSZER3S1Vpbk42ZjV3NnI1R04vV0hsdndhN0FoMWQva2RaSjJwczhJUm43U0U3Zy9sSVBzQVM4UWt3MkR6N25ockYxK1owL0c5aS81SStDS01SczNvWVZ3SGZ2SmIzQjgvYlUrcWZ4QXpMR2gybXBlY3pscXh3R25Ici9qK05wZG00RDNyc0RDUFZCOFdGS2dINUY2ZTl0YzFmZnBFbUtFakR1WkdEZ2hOamhaQm51Tno2Qi8rdGx4aVJpckRHczREMXZXSG4zdnBXZEMxN1lHR2VpNXZNc21RRUU5M3AvNFA0Q1FBbnhzNzMxdEhIRS9lYi9ManVzNk1HN1QvMjd3MlkrTGM2SHMrbzlZTWZLdnIyaU1qdVBXQnFKUDVSOVVuUzJNdk1PWU1DRTlOczByK1lUUEIxNmRjK1BzK0Jmd0FFbkFwWEQwMi9YOUIzdzBiMTVpNXJHdnk0VGtzM2pOTkF3ME5HM1E5a3djRHdIb1JnN2g4Q0t0ZWgrNVQyd1FCQ3lpbFV5VTk5cDhiSDNEM3E3WTNtZVFaUkxVWVM5M2hRV3NYOUlHSHpXS2xPK0dzR1g3LzE2NGtFVDY1NlFKQm9yM3RmZHpFMWVUM3ZmWDVFL2xCcUF3VHkzeTZvUjZlSFh2SnFYb0c5ZUF4eDRhdStPRlhRRDc5d0cxRTBGSnA4UGxBdzAzcTc2UU9Ed2E0RUZEeUh2NnBnL25CcUEvdDBRQTlpeGtzOWVOK1Vjb0lqUHcyV1pNQnJpOFBxTzF1VWJyaHA0NWxQdjdpYklaZnFkc0xlYndnTDJIMUVSbnhMVDA4Z3dhVnI5KzJ0R0RhdDZUQlJwVEt2YytpMncrRlVnNk4wOVY2TXdIcmswTXRYY3dmeWF2NGRmQXpqN0p4c056YXVCei84TkxIOE44TFR5ZFZNdjRzVVZESDBGWHdPK0R0MitES1JyQjlDOEZ1aHFCTlo5eEhNVXkrc0JrejNaZUNtcjQ0K29lVTJlZXdVeEh2Nm1NcUROcDZ2SXJXc2xRUlVJTWlDZzhwWkdFRjg5SmxjSitZSHR5d0dUbFE5ZEJFQk5vdFUrc1BLc20zNTVqTzlQLy9qMG16NENYUzYvSVgxZ2FoYzB3RDJnQldiMUFQOXd4d2tWdjducW1IL2JyS1lac2IwR2VIcEwwN3JkZHlVdUdkZ1pBZ0lDVUc5UStqQ2N4L2JZYnhSUU0xNzdnL0wzaUY3ajA0dlpEbFNOVEdFNmRnTUxId2ZzNWNEcDQxSjdYOHFHNko0S0F6WXVBRFovQ1l3NmpvOWZ0cGJvSGhrRkpwN0xOZTlOWC9TOUVialpBeXgwQVRZQk1CRU91cURLRjZQZlNBUW9Gb0VxQ2FpV2NnZWlxZ0NyM2dkYU4vTjBHY2tDU3Fsb3Q1bnZEemIrNWVqUEZxMjc0cVN6bjJqWnpWcGdLaVZxci9RSDdrOGFZT1FobVh2U1VKYk52ZW13czA4YTk3clpMTVZ5WERwM0FBdWY1Zi92RHZHcndIZGVZR01BY0N1QVR3R0dHMFNEUXlHdUllWkRqcmdXY1BialRhWDV1MlNOVHkvMWh3Q0RweG52NS9PSGdMWk5nTjhGRk5jQXBYVXBXcVFJckhrLzRRa3dudnF5N2tOQURnQVZRN1Y2aFl5L3d3ZE5BbmF0NHlOWjhpR1NZR3dDciszaUw1K1F5alc5b0FySTJtVDJGZ3FZS1dDbE1kREpEUENwUUdzWTJCSGlyK0FTSVhjUWV0cUFuZDhCcGJXQWxZKy9GZ1E2Yk1qQThwOWVlOW1oeS8veThQeHRmUXk1YlBiSkNnRGNPd0FvcGJodXd3Zll2NzlEMkxMa3JwdnFCNVgrU3hBRVozVFRUVjhCeTk3a0d1RHVrQTRaV09ZQlBDclhMT29zd0NBVDREUWxEOTJTMWZpeHdEMlYvcU9CU1Q4QldqWUFDLzZSR253Um1YQTJVRkpyYlBvdWZ5MzJkL3RtWU5STTQwbzBaanV3K2oxQUNSdHJSTHZXeFVhRWxBL2h4V0dKR2FpYkFqUXNCUUpkdmI5dXE1UmNjaXdrQTJZRkdHd0crcHVBZmlhZzFnd01zUUREclVDZG1mODkwQXdNTWdQMUZtQ0FDWEFLWENQM3Facm1IZ1ljQW1ETHNjUlFPTWg5ZzFRQXltb0JFRkJLblZhcjZZSmJyNXRCdmxyMnc1ZGJ0N3JVUG9aY09sT1k3STBRM0IrbnhaUUFPTE5wQUUvOTY0THFuNTQxNFRHTFdUbzAxaEc4SEh5dG0yTGFTVjlMUzVocmZpcTRPWFdBalVNUU1KNjBPNXRhZGRuSXBIT0I5ZzNBdGhWWnZFcEY0UHhuQU1tU2JQcStjUjMvWHkvVExnVU9PTmw0WCsvZmxaMWZ6MVlDakQ4YkdIa2NRRzE4alBPY203T2JKeVNkbERzQWM0SjNxTGRKNVYweXNOYlBOWGVBUTNLNE5kbWZtSTFVRHVWRkZYUitVVmxXUHY5K1hldlBKaDU5ZjJNZmdpN2Q3OWplYUFidnIvTUNPNUhCLzdudTI5dU9HMVpiOFlnZzBsaG1jL3RXWU9uc1dLQ0Q3UWJOdnlFSXJQZnp3OVNaZ1JFR3c3V3FuTWxqV1Z2ZHZPSkpqMXNHNFRPaGVZUFpYZUtBY2NETXU1TFh6LzBMc0hWUjhucUxFempuRWVQSmxyNTlCdmcraDBDbnN4S1lkQjR3WkNiUXRocjQ0QzZlanRSVDg3Y3k0ZjBZS1RpYkQ3MXFXeERZcUQxUHB3Q010WEdOTUZleE9JQkpad01WOVRvRldXM3JkZ2N1THgxKzJ3ZDVNazJ6L2UxZUd3bmUzMHhnL1lNMXpITVlONjZmdEc3aDdiK3JxU3A2VUJBb0grL0xWR0REZkQ1RG03eWJoa0xLakdzTVc3Unh2QkZUeTlDd1o0QTE0WEpFMm5PTmhSSmVkOUFUeXI0TEhIZ2FVREVzdmVrYmQzMGhEdG1hQTVPLzg3dUFiZDltZjc0aEg5OSsyNWM4UGFadUtyRGw2NTcxL1ZKYjhzdWt5OC9kQ3ZsUU4wcEVvRUlDT21YQXEvSmdGZ1AzRFpJYzlCRTVCT3hZeGR0bWVSMUFDQWdsTnBOSitPa2R2em5PNFZIZDh4Y3QycUhrRVhMWVY3UytnZ1lZcndWR0c4QWJ6MTFXZC9JeFk1NHltWVJKY1NiY3N0ZUJqb1prYzdldk5NQ1dNSWRmU09Vd09zQUtWR2RJWVRRcWtOQ1RNYXNDNWNQQlhMNGNVbWtJY041L0FIdEZ2T243NXZYSnM5ckZRZG9FelBvM240d3AyaHdaMExrZGVQTTNQWWQzL1hpQVdZSE5YK2YyVzZNeDF2a3FmSkNrTXpGZ1F3RFlvYjNnTEpUN0YydE1QQTBuRnlrYnhFdnY2d3JVeXJLeVpIdHo1L2xESjk2N0pRK2cyNmUwdmdJQU5XTUgydVJKQUxCbDZaMW4xQTRvMFFVNndKMy9LOS9tODdvYXdTNmYvaisvQ3JTRnVVYlFyYlV0aDJZaU9iTlExRTBDVUdIZzJuUUgrSktObUFXZ3lNWkhPaWc1dk5qTDY0SFQveHkvYnY3ZmdNMExNLzkyeEF6Z3NKL3JDY2FMMlQxM29YRWdKRnVJbDltQmJsLzJZM1pURlpob2MrY25vSlJLWERLd1R1Y2JGQWhRSnZKb3Nnb2VMS25MSW5IQlpPV1RNUFViRVRNTVZMVXJHSlN2dGcyNmFYWWVMU2RnSHlxSnRiK2F3QUJQaHhGT08yMnNaZkdIdi9sTHY4cWlleWlsWnMyWkFxejlGRmo5RVNETFBUY2NRb3hIYnp0a29GVUdta0pBY3dobzFFQzNNNlQ1aEFMQTFpRFFKdk5rV2hNRmhsdDRzTU9jcFpkY1lienpTQWxhb0Zua2k2eWtUbzBoaEFPZzJNYWQvYm1hZTZPT0E2ckh4cHUrcTE3UFRvUHMzTVpMOUVlMUY4cGZ5dzFMZU5KMGo3b3A0OWRiN3VBYVlUcUFtUVJlQWNacW9HSDdRb0MzajEwZUZzb2p4dzZCdHhlZnlwY3VoYjhJM1NvSFlDWlZSWkdCeHU5NVZrSkZQVUFvQ0NFV1NSSm0zWDc5Y2RYRHgvZjc3TTAzVjhrNVFNN1EyWUs5T09tNW9BSEd4S1pwZ0wzMWkrd09CM08rekpjZjgvSHllZHplN0NmZm5adnRvZC8yeGY3VmZSRUUreU1BN1Vqdy9mVnhROXlkNEdGN29KT3hQZGl4OXlSazl3YlE1V3ZmNnI0S2cvMEpnQlNBTlkzWlg5RG1DdHJjL3FMTjdWZVEyNjhBMk5EUVVOYS9mLytyQUlBUU1sa1FoRm1NTWZoOFBqQ0RvSVhMNWJvNzhubjc5dTN6RHozMDBPVjdvVGFYOWJhZmYvNTUvYWhSbzg2Sy9DMUpVcjNGWXJsTXUxOXBmeHNPaDVjSGc4RTNJbjl2M2JwMTlwUXBVN1lVdExuZEM3bVdscFloeGNYRjUwUTdNU0gxb2loZW1iR3pFd0pWVlplcHFock5UZko2dmErVmxKUnN3bjRxK3dRQVhTN1hVTHZkZmc2bDlHWkthWWt2QU16VmFtV3MzNmJpNVFXQnRCTlEzM3hlN1BQWVlRVDl5OE5iRnk1Y2VOckpKNSs4cFk4YmZaK2FqdzBORFdlWnplWjZRUkJLYlRiYmJ5S2RvTjBGZkxNNjFnS2EyNEduNTZWcUlQRk41S0Jod0xFVGRIK1BBVW9jOHZKZ01QaDZlM3Y3M09IRGh5OHJhSFA1T3plZnozZU9JQWhEQUpSSWtuU1QvcnMyRjdEbys5amZUZTNBVTU5bDE2Mm5EUVZtNklwN1R4cWhycTRxVjU4UGhVS2YydTMySmRoUFpLOEdvTXZsR3Vwd09PNFhCR0ZXV3lldzZEdmcwVGw4RUVSVXIxZjhZRXd4ZkJ1bXZUR0t1M3ZqdDMrL3JtUE5neXQyN2RxMXpPRnc5UHdtSnh4cjBhSkZZNDg1NWhoRHVIWjNkNzhyU2RMUlBUbE9JQkI0cXJTMDlCY0FzR3ZYcmtjWVk1ZDhzNXFocVpYQjVWSHgrb3FLTkEyQjVONGlkTnNlTkFRNGRqd3d1azUxOXk4TFByQmd3WUluVGovOTlLeW1OL040UEkrWXplYkw4OTY0czB3c1ZoUmxpOWxzSGdFQWZyLy9QeWFUNllvKzdYUVp6b3RTUGtnNkZBcjlWeFRGSzBPaEVMNytUa0ZqcTRvdWo0cG5GenBqTjcvWDAzM0Ziek50R0hEa09EWFF2NVE5VVZ2ZWRIZHRiVzFIQVlBL1FnbUZRbGRMa3ZUZk5oZnc3THZBcTE4YVh4VmpDcGdjeUh6RmhDUjl0KzJiQno5c1dmbTduWmRkZHRsbDMwa1BaV3JWT2QzaEgrYis2aTdYK2llU0pyYTQ2YWFienQ5Q3JqbHNxNmRmNXYwbEhwTUFudGJ2bHF4OWFlcjhVMDQ1NVVSYWYvdVlKakl4ZXlEa0JEK1M4bmNWZHVES0djQ1VZY0YvMXc1dy9qWkZkendOUEJxUDIyKy8vZHdPeHlXbkxHMGIzQk9hOUtMeHgzNnJobjB0aS8vcC9NV0REejU0OVE0NjY5aHZtdXQ2cjhQbGVtNDZVSDN6VjNycHpUZmZmSGxOVGMxaHk5cVB4enJ2cUo0RHJvZmZWenFBRXlZb24vL25nNll6VnorNWI0SndyNndIS012eVk0SWdYRGwvS1hETEU1SFhab3BHVGdVQUlwZ3F4eG9rUVhZZzRPRVM1dmY3UFREQndkZVR6TkFnQmw4bWJCY09kbzBDMEozWS9MNy8vdnN5V3Q4RUNQMnlnazNTdlFtNkNBQ3oxK3Z0S3FJVWhHYi9XK05yeWVIMzJqWnRRWUw3M2dNQXl5K2UvaUI0NWVrSGV5OHRLeXRMVE1hdEJWQUZBTXVXTFhPVWpEOEpFQWZuSFhRa1M2cXJzaUlCR1BIdHQ5K3FwdEVuWk44ejlPZlZZeSttNFRrV056VTF1YXFycTBFRmtqNWp0NmNBelBDN1ZqL3czRUxoQ0VmeHdQWWJINUhuL1BrYThmUjlEb0RoY1BqQllERDR2TVBoV0xVM3dlL3hONEVuUDAwQVh5b2xURFNCS1FZNW5DUTl1Q3lsZFE0QUtxV1VXV2czQXFRNE15UXlRakcrM3lXdThQbDgzVVVpaklkRGtSUWRXL2RSWmI0QUFKVVF3aXhDUjNMSFNYZitKRmZ0TUxORytaOHZxSG4yTXVlTHI4enovZlM4bzIxbjY3NzFSaDRJcFpSSlFvRC9vSWNLSGVtbE1hTW8zUjNhZlZQdG9pc1pEaWtuU2VxQndaWGhOM0xJM1E1QUZVVlJGUVFCVG5NM0wrWGJFd0RtQXI4MDIzNitSVGp0bUZ1VmdEc2dYN3o0NytaWDkzYndlVHllY1dheitRSUt3R3UxV2xmSXN2eFVlM3Y3d0IvelNZZkQ0VnNFUWJqeThiZUFKei9UNEtkZmlNRTZnY09FU0NiZDM5cENDUWROWkluK3JYMVBDQVBBQ0VuWUxuRkoybS9DMzZMK013RkVBa3BKaE1ocXdzTE1wQ1A2T3lJU3d3V2l0bDhKc2M4Y25Bd0FDd1FDQVVKSi9IY1NpUjRma200UmtXYlJ0aGQwdjQwdWlEK1B4RVg3cmpVSS9IV2VkT29Ec3dOTGRGM05CejZlVkFtRlFqNHFVREFSWUVLS0pYTCtLUlltb1pjTFlRQlVXWmE5Z2tqQkpCSy9wRGt2bG5pUDQrNnR3ZjFLYzY4Z0FneGhId0ExR0F4NkthV2dBczN3akF3V2ZkdkxacjFSVzBwWXZLQm1hakc5Y3RDTjRRZjJWdkMxdDdmWHlyTDhsTlZxWFFIQVN3T0J3R3hLS1JFRTRkS1NrcElmd3VId0h6ZHQybFQ4WXp0eGw4czFWQlRGKzk3OUVuaHlyZzQwbWVDai9VMUVBVVFVNDhFbEpteWJBRVhSVW13R29BWUNnZTZrN1FTRGhwV3VFK2hoSXdIdXphKzZFQnRhRkYzQzRYQ0FDcFNEVGlDcGo1R3k0Uk1HUUtHVXFwSVFpQWVlR091dytzNGI3ZVNpdHNSMWZoMGt4SVFsM1hkSit5R1l2VlljZCtzTFVRajZJaStBenM3T0RwTVFpTUtBbUVqeWtoSFVHV0FjdHlURFNWYTYyaU9hczBrTVpkNm5pY1F0c1h1WTVoNmx2RmZ4M3lzSStyUm55Q2lsTUV2QjlQc3hXcTk5VGdKc0N1aW1CV25DMzhRczNqVDFkdm14dlFsOG16WnRLZzZIdzM4c0tTblpJQWpDcFpSU0VnZ0VYcWRPcDNPMXFxcnIvcjBPMk9LbEZsRVVieHM4ZVBDbVVDaDA3YXV2dm1yNnNWeUF3K0c0dWMwRjNQdTZFYlJTYUZzSkN6RkpVWTB3WHVQVGF6ajZoODZpR3FDVmRocDBpaFNnU3dHcnFBYkh6ZHVVR3FDa3dTQ3hNY2YvblFBdERUaUs2ZzRBWUYxZFhTNGlKUDR1dnRQR3pqMUZ4MGdGRUpPMlNBYjNJTHAvNDk5KzJpQ091LzY1d0JzNkRaQ2JuVUpYRkhhWkFaWUQ1QXlYNU8wVjFlOERvTGEydHJaU2dSaENMdjdlcGJnbnBzVDdnL1RiR256UGFNZ0xRRzFwYVdrUkJBRkVvTms5SDRQMVNaQVVzMXlYcHUxQkFxaEp1UEtndTMvOG11RDc3Nzl2RG9WQzF3NGVQSGlUS0lxM2JmRlN5OFByQUZWVjF6cWR6dFVpQUtpcStycFZvTGRmOURsd1VpMXc5UWhhWG1taC96Nzc3TE92RHdhRE41bk41cmV3QnpQRkd4b2F5Z2doNTd6NUplSjlXaVRENTZSMUJJU2F3Rmc0L2JhUlZWeWJVaFZGQ1VDa0hIQWt2WHVINktMSmlmNXRSdEw3L3dBd2w4dlZTUVN1U2FRTlFLVDZXeFJVelcrcDJxaUxkOVpzWEhiWkJuTnkzSTlSNVBtck51blVFZGZPWDdMaDRhTlVBS3k1dWJtZFJLQ1RrNnN4VDBrTWhFQmxmaThBV1JSRjVoQzdqWDErZlpHMWFiQ05Rb0plQUlvZ0NDcWxGRVVtTnpKT2Q1NnJINUQxL08vWWVBTHhwa24zQkpjdXUrZEg2Uk9rd1dEd0RGRVVINlNVRG0wSkFJOXRBTjV2QUM0Zndaa0g3WDJCVUNqMCtqSFY0dTJQcndmZTNRNTgwZ2o4ZEFodzBWQTYxRzR5dlM3TDhqZWhVT2g2bTgzMjlaNjRrcXFxcWhtQkVDMlpzenppbThzR2RzYVFJQkRBVkNXV0dFMVNCekZNSmYyZEFGZ29GQXFJZ3A5REtiS2ZGSEJpMlo1YlBBQWpUWXBSU3BtRmRNU0R5eER5eEhpL0FoZ0F4ZS8zKytPZ2tsVmdodVFTd0ltSFhJNFI1dXBSVTM2N0FiaGZDNEtvZHVMaTUwcnlERHFTRU1SSUFRb21NUVpBYld4c2JLRWl6YjVVZmI1R2xNY0JKdWdCb0xyZGJvOGdDS0RRTkdyV1E3amxDanlXL2Y0RVVid2Z3SThLZ0Q2Zjd4Q1R5ZlEzUVJBTzlzckFjejhBTDIyT1ZVWTdwaG9JaFVKdlJBRm90OXVYSzRxeWFiQ0REdDNxNFJzKzh3UHcxamJnaXBIQUdZT0VnNjFXNjBKWmx0L3llcjAzRlJjWC83QmJVVTdwNURWYmdkYUFkc2FwdEIrU0hSUUprNkNxb1l5YUZlT1REYW15TEFkTU5Nak5zK3pnWnJEZldLUlZsUVBCVkFCc2FXbnBvRlFEbDFGME5vTW1LTXZkZmdETTdYYjdUU1JvQUJXU25VYVpUcHNqUFZUSWROLzdZUzBhOFp1NVIyejQyekh6dDIzYjFpb0kxQmo2T1Iralo3QlVWWjgzNG9adzB1NVl2ZkRkTVpJNjRYdVYrVDJhYjlSTktZV1Z5UEhhY1U4QWw0OXRERDRUMFBxcGZ3bmZzdmdHNmY0OURiNnVycTdoZHJ2OVFVRVF6Z2lyd0p2YmdDZldBeTZkOWx6dkFPcHM2a1pCc0MrUEFqQmlCaDlkVFc5NldvYzJWd2o0eTNmQXk1dUJYNHdHanV3dm5PRndPRTZWWmZteDF0Yld1NnVycTF0M3g0VVJRaVp2Yk5LZGJRcjRSRTNPaklBa0lLb0l4bmg1Tk1OY09RTEFSQ0tCQ2IrRCt1TWJJVW1obFdVQlJWVUpCVklBRUFDWUZaMHhHR1FMUCsxek9OanAwd0kzSGpNSkdPOG5FK1J5MVFKeitpNjJvbmpZeEVNQXpBVUFPMXdwSmlrd2VpUG1QMzlmbGowZUFFcEhSNGVIVXBwYTQrb0RremZ4TzBYMWVnQW83ZTN0YmtvcHpBZ2J1d2R5VEdYSml3Wm85Rm1nVjBIVDV2ZUVORFUxVlZaV1Z2Nk9FSElWb1ZTWTN3ejhleTJ3dzV1ODdkRTFnS3FxMGZIc1VRQ0d3K0hYajZrVzR3QVlrUjFlNEpZbHdOZ1M0THF4VkJoYmd2K3JxcXE2S0J3T1A3Qnk1Y3EvVFpreXhkZkhBQ3hkMjZ5bEcyUmo4cExNV2lHQndNMWd4bEx1U3lvcUs5YWM5RXdTZ2pwek1qdlF4YTJqdXQ4b1JHOEN4elczWGJ0MmNRM1FsQmwyUnRvY0VhbXFhUTgrRS93cDkwTXlKVGozSkdrNkd5MU1mMWhUY1ZIVm1YZFh0N3o1dXgxK3Y3OERFc3I2R25RcE5jQ2d5d05BYld0cjgxaUVjSDZxUmZiRU53ZUFtSWtLUUcxcWF1b1dCQUVXaEpPZjQrNDJmZFBzbTREV1QzeklPMlg1TDNmdkdPSWxTNWJZeG84Zi94dEs2UzJVVXZ2M25jQS9WZ1BmdTFMLzV1aitRQ2dVbXAwRVFKdk50a1JSbE8wRDdYU1FFVGtCdnVNcnZnU083QS84Y2pSMURMVFRQMHljT1BHYVVDaDA1d1VYWFBETWE2KzkxbGUxdzB1N1FvajNaMlV5ZHpPWnhRUWdUSXdGUkl4TVZva3lBRW80SEE1QUFJOGdaand1eWF5Qm1nd25rNG1hd1RhMVBkN1VUK1h2TTRLTFNLTDdOcEVVWm51dTRDTzlBMTA2S1QvNHRIRXRiLzV1bXlBSUtCRTljQW5PbnJlU252S1NBU0ZmdXdmYVBCY2s3UEZEZ2pXdm1sOE92L0YzTmpSSHppVnFBZ3Q5Qkwxc3RjWU1ud1ZxT2dmQWJnSGdPZWVjSTd6d3dndVhDSUx3QjBwcDlRNHY4TkJhWUVGeit0L1Yyb0doRG5XYklOaVhKZ0dRVzhIcUcwZFgwK3VlMjVoK1J3dWFnQytiZ1RNR0ExZU9vTlVsSnZyRXl5Ky9mUDF6enoxM284VmkrYUF2THJvem5DVUFTUTVhSW9pV0VLY2Fmazl0a2htQTJ0SFIwVG1ZQkdKdllVb3l3eUtkZHNoZkU2bE1ZTWl5SElDWldMTHpMY2I3NW53N1ZyVnJSMkIrdjc4VEpwVDJHSElreFJjOU1ZZFQrQTlOL2FwcndaT2gyeUNpTEs1RjdzYVI2cUd1Umsva21UREd2RFlwWlBVUlU5OXFnQ20rRC9zNjNOcTVzR0F3MkdLejJhcmlzaDk2RXd6SnQvbXJmU2FVVE40ZHp5a1FDSndvU2RKZktLVUh1RUxBNHh1QXQ3WnFzejFrYUM5SFZRT3FxcjZwNzN0eEl4N0Q0ZkRzWS9xTDZRRVk4Vk13NFBVdHdBY053RVhEZ1BPSDBERm1zL2w5V1pibkJZUEJHK3gyKzdKODhnOFM2cU1PL1Z5MHZRd2FHNDhLYTNuSUNkdFFoOTJpTlVLL2xYV205cWRsR1h5SlFFQU5odjJJSlQ4bk5UdFZWUU5tR3JRRUJiTmhlazI2Y3lBQ1ZmWGFneFBkY0V0RldXaUFPVlNEeWFHZ1JLYmZTbVZsZ3lLZHZaaDQ0SktjZXdTQXZzWWZJdEFCSVlSWmhUQjh3aDRDWUhkekZJQ0NJRUFRQkZTSlByUVFXMzQwd042WXhxbjJ4Zm9XZ0Y2dmQ1TFpiUDZMSUFoSEJ4WGd4UitBWnpjQ2ZqbmhQTkswbVdPcWdYQTRIRGRQYXh3QWYvYXpueTE2NmVXWGQvYTMwcHBtZjNZUHl4Y0dIbDBMdkw0WnVIbzBjSEt0Y0xURllsa2l5L0pMYnJmN3R0TFMwbTI5dlhqRzJPWlNCeWJCbXdKc2VmQUhNbFZKL2s3bHBxcmI3ZmFaWUJCUlRibmY5RDVDeG9KK0pFOHJHQjBOb3FxcXp5U0dTa0ltUzJZTk1IRzlRQ0lKMVFnRUF1MlFTR21TN3pMYmZhWDBRZWFRRjVoaEd5cVpMZWJ4eDFyOGZuOHJFY25JdEw2M2ZKcTlDUkpjOGFFNzBzSURnVUFMRVZHWjF5bkRjZ2lRZUJ2WGRVZmFSeUFRYUhZNEhGVng3cGZlYUhoOVlRWURJSXlXakhtaW9XejFGZm10R3RQWjJWbm5kRHJ2STRUOEJJU1NkN1p6M3JRRlV6ei9GQkNzdGdJam5Pck9uLzdrWjkra0JPQnJyNzJtdlBUU1MyOGVWWTFyWDk2Y3c4MWhRSnNmK09OUzRLVU53SzhPcEdSYVA1eGZWRlIwVmpnY2ZtVG56cDMzMXRYVmRmWUNnRXRyU3pIcjY0NDBZT3VWVDVBQWpDYVp3cUtwcUFTQTB0VFUxRzVDSUI2QWxHUTJzMU44MWl3ckpkVWREb2ZEZmpNTndpTmw2YnZUcDVjMGI0cWFjb0lnb0ZoMXcyMHF5aDBpQ2RvY3l4VThKSHVBMlFhUHRGSktXVEZ6ZzBuOWQ3c1BVUEY3VzNYUGd3bUN3RXFKRDYyU3ZXOUFsMkc3d0RkdlJhc0VSWWJEVlFnK3RBalczTUNYYjk5Z0JsUFo0bkNXQXNnTEFMZHQyMVphVTFOekI2WDBHa3FwWmRFdTRGL2ZBWnZkdXY1TVVnQ1BKYmVISTZzQk1QWkdZcHdpcWVoUE9CeCsvZGhxZ1FNd213Z1dpOWRmTm5jQjEzME9US2tBZmpXQldrYVUwdDhNSERqd1orRncrUDVQUHZua29aTk9PaW1ZczM4bUZQcDBaSC94UGpSa0NiWWM4d0o1ZjZlOFlrenl0Z3dBSkY5enpDK1hSZlNYcE5FQ2lVVDBRWkNrcGtRcFpkRWN2blFtYTJKdUx3RkNxeGQ0ZGI1RUw3VHhxY1ltZXk5R2llUkxDeU1BUktySXN1eU5Gbm5ZelFEVU5MMW94eEJGRVVSRXo4NmxsN1dtVlRuczFaK0xxcXB1UVJCQUpBSkdjenh1amhvaTZhMTJhTzQ5K041Ly8zM3pjY2NkOTB0SzZhMlUwcklObmNDL1ZnQkwyaEFyZUlJRStLVXlmWFVnbk1ITjM5Y1ROMGw2eEE4ODhNQVh0OTl4WjB1bG1WYTFCbktBbjk2SVU0RWx6Y0FsN3dQSERRS3VtVVRMKzlucG4yZk9uSGxOTUJpOHcydzJ2NHdjaHRiWjdmWWxHMXFWblpCb1RiN04zL2dVRWdFTWF0eDYwOGpEVEtIMVgvb1ZSVW55eTJVQ1hTcElNbU1BTWgyNC9FUTBHQTZYalRhb203dFZVUlNmR1VFZXZlNnA2UnUxVmZzSVFnUUFvV293R1BSWVNJYjBrNzdTQU1PK1hmcm40ZlY2bTRsSXh2Ym9YSHFiT3lpSFBmcG5HQTZIM1lJZ3dFYmwxRURPazBiSWVtSSs2ei8zRG9BMEdBeitSQlRGZXltbDlidTh3TU5MZ1U4YkFKVm1BYjgwL3I5S016Q3FTRzM1NDcwUGZKa1JnUGZjYzQ5OHh4MTN2SDFrTmE2Y3ZTVjd6Uzl1YUwrMlRsV0JqellCOHpjQ1o0OEVMcHRNNngxbTB3dXlMRjhYRG9kdnRscXQ4N0s5Ty9VbDZrT2p5dWg5Nnp6SVB2Q0I3QUhvMzdseDliWVg3LzI0KzlQL3VRQ1FvZmQ5ZEpoOTRLZ2hsdHFocHRENkx6M0JZTEREUk9QOWN0RW9SalpBSVVsM1hVM1YzQlJGOFZvUVNnWlhPdjljTEdkT2lleEhFQVJtQ0JYU0M0Q1EvRU9KVUtpQ0lEQXp3dWlWMzYySEFLUlNYRm9Ta3lTSmxURWY4dW9EekJKS2loSm8wcHZqa2lReFNpa0hvSlJIQUJwOXAvWlNzd3owN0piNC9mNmpKVWw2VUJDRUtaNGc4TlJTNFBYMVFKQWdOdlExOG9Tbzd2OHNOY0dqcWdFQzl0WTk5OXdqWndTZ3BvRzhka3kxRUE5QWxnS0NSb3UrdG9uQ2g5YTl1QUo0ZnpWdzBTVGczQW5DVkl0Rm1Ddkw4cnQrdi84V3A5TzVPdE5OYW01dWZ1eU0rcHE3NzE5UExWbURMVXYvWE5mYWI3OVkvOHVEUDlJZmI5T3RNK2NEbUIrNTBsQW81SE1vM1hDTFJaa0JsMnFkQmltbWxheEsxYXdvcGN5TWtIR0RwNmxMN3l0ZWQ3dCt2OEZnTURlek1ndUFMSjVNSXZObHNKRlBmMzFTdjVwQmgvb3JhL3IzWnQvZWhvM3VZSG1keDBKSlhnSG9XdnI1WXo5Y2Z1UW5pVjEyNUl2THo0aDh0dGJXSDZJRXZjMkpQbG5TMjNOSnZHOFR5WW42ODNETU9NOCs2TXE3VGdhSmxSYXdEeHR6dVQ2UFUydDNia0VRUUVXU253bGR0VzBYVHlXSFJWWmQvTzdhUDFrcmE0NVlKaFQxRElEYTN3SHF6c25QNzNhN3gxaXQxdnNGUVRnbHJBQXZMd1dlWFFwMHlZaFZWQ0lHbWwvaU9TUkNNS0U5SEZNTnlMSTgyK2djREx2R25EbHpGcHg1MXRrZFpTWmExaEZNQXo3RWEzeEpoWjBVM2Y4SzRBb0NEODBGM3ZnR3VQb0k0TGd4d2lrMm0rMUVXWmFmNnV6c3ZLZXlzbkpucXB0VlcxdmJzYU1yZEZ0VkEvMWJTeGhaQlQxWUppMFFnT3p2N2x6L3k0TS9UTGc2a25qVlhxKzN3NHhnNm1JTXlacFlhbk5WaW52ZkpqVW5RUkJBSXRWbnNnVUppYjRWby9zTmg4TmVzeHFLTng5NnIwRkZOZGYxbDA1L2R6M3d6cXhuNS81eTIvaWpKL2NFVklyZjJ4cjgrdjF1TXZFYTFkSmJEVEJCZ2kwN20yQVFiRnAvL3NUWGRmZjl0Y1R2UFI1UE14SHlBRUR0Q0dvNDNxOEhnSGsrZmFWN3phZXZ2SlRRN2w1TWJCT2hVS2liYTRCSzd3RElVai9IWjA4WmZmUFRUejk5MGNTeFIxL3pKSzNya1JuTnd1SHRxMC9JTGdMYzJ0cGFVMXBhK2p0Q3lLV0VVT0hqNzRGSFB3Y2F2WWlWOUlxQVR6SG90eEV0TU5MbVdZbyt5WUF5TTNCZ2lkcngxSlAvbTUrMVorZmNjODhORWJDM2o2aE9vK1d4RlBCVFV2eXZBMkZqQjNEWGJPRHkvd0lydGxKQkVJUXJ5OHJLTm9URDRkK3ZXN2N1NVZDQWdjV212MTljcHk2TDFEbHJXOStFemkydEtXdVh4ZFZKUzFFQXNtbitsOThsbkdYa1RHWDkrbEFvNUhXR3V3MExZcmF2YVlacmMxdHlkV1VoMVJKOXl5dTZSWTRjMCsxMnR4SjlaZW9zbC9ZMXpkRHRUeVdFTUNzTEdSZUtOVm9vMEw2eUNhNzFyYW0zVDNxYVVOdWYvc09jWTNaOUZ5MVFHOTFIbXVORUZ0bmoyZ3hlL3AxUlNtUDdXTkVFMTdyVzVBcmZPU3llN1YxSjU1cncyZWg3bFZLcWxxbiszcDlINUxtczJPSHV5WGtBVUV3bUU2T1V3dFRTRmJ1bktZNlQ5bjRMUVB1cUpyZzJ0T3FEUHRIakxGdTI3SnZKYU1XRlpHZjZOcWJmaCs3WVNzaTdIaGxHYzY5YnQ4NFpEb2QvWDFaV3RrRVFoQ3RXYktYQ1pmL2hMR2pzTUxyNk5Dd3hZcERCY2dRM2Y5KysrdXFyd3ptNXRtVlpmdjNZNnZRK1BpTnpGNW1hbks3THI5a09YUE1mNElZbmdHMHQxQzZLNHAzRGh3L2ZFQXFGL3UvUlJ4ODE5SGhNTis4ODdxUXExZFd5c2dFN0YyNUM0eGMvd04za1NsM05OazNSekpibERXaGR2TW1iNGdyaXNCNEtoYnhtRnRhVmlPZjdiMW5jZ0oxZmJFTGp2Qi9nYm5BWmxNUFhGMHJWTGNZZFFJVldCNjRvN0U0UGo0VDFMZDgwb0huZUQzSFhJb3FpR2dmU0RCMjI1WnNHN0p5N0NZMmYvQUQzTmxkOHVnR050cGFrVGp0djNyeU5BNzFOeWZ2WW1yQ1B4SDFSSU5UZXNnbThmRmMzcFh4NmdaWkZDZWZSQS9pMExHcUFhL0Y2ZHpxNHBBS1FLSXFNaXFUMzUwRWkxL0pEajg0akFtTkJFQ0EzdVdMM3RBY2didm0yQVR2bmJVTGpwOXExSkJ6bm9ZY2VXaTBJQW9ZUmQ4cDIxcks0QVRzWGJFTGpaei9BdmQwVjk1MGM2RjROd05BVjh1aWpqMHFoVU9pYTRjT0hieEJGOGM1dExkUit3eE84NzY5dFNGQURNcjBtRXU4VVM4K29ZN241KzNyT3NiMnZ2Lzc2cy9HbGFuZXhsTWJIbCtva1pTTzlKdlh5NVhmQWhYOEM3bjhCNkhEVC9wSWtQWExGRlZlc0RBYURaeHFad29PMjdaZzhzYVBWRHdxb3FvcHQ3NjlHNjhvZFlBS0wxL2drR0piMkRuVUhzR1hPYXV6NlpodnN4VlgxS1c1dDNGVzF0cmEyV3RSZ2RGK2g3Z0Mydk0zM0FRS29Dc08yZDlhZ2RWa2pyd21ZQUVwOWd5SmF6YjVVajVWU3lpakozTGxBZ0pBcmdDMnZyOGF1aGR2QUVOWURNRHFuUkNyNFJDRVUyY2RYMnJYSUtyYTl1UnF0Mys0QUE0czdubEdIcmFtcHNWUUdPelB2SStIY1FZQ3RqOXp6TVFEVjcvZTdMYUVndHN4TzJNY2JxOUg2elE2d1NOR0tkQXNGUWwyQjZENVVYM3RYaHVlcUdPa1psRkkxdUtHdDUrZEJnRkNuN3A1QzZjN2hQT0srRDRmRDNZSWdnRktTL3A3U05NODI4WjYrdFJxSng1bzZkYXFkVW9vQkpKRDhrdXJTWDB0c0g2MUxkb0FSZmg2Ti8vdjdxd0FjMmdLZEgvck1LNjY0WXFVa1NROTN1R24vKzU3bmZUMXFkNlZhWkFPT3FHbWVtb0VtV0N3QkU4clU3cmx6NTM2YWluTXAzZU5ISDMxMFFKYmxydyt2eHN4M3Q2UUlmT2lKYTZEaHBiMmdoTWV0S01CYm53TWZMUVIrZWh4dzBZbDB0TlZzZWtPVzVRVXJWcXc0U1Y5eDVySlQ2alkvOHZxR3NTRDQvc1BOUGlzRFEvT2lyZWhZdXdzVmsycFFOTFFja3RNVTV4TlFaUlcrSGQzb1dMMEwzVCswOGVGdkJBZzVCNHlpZFNlWHF0dmVhMHZuOWZENWZGNUhxQnVlSFYzbytFNi9EMTNDSUdOby9uSXJPcjdmaFlvcE5TZ2FVUTdKSG04VnFMSUtmN3Rha1M0S1RDbGwvdTkzb3QxVmc2S1J4dnZ3N2VoR3g2cGQ2TjRRdXhhQXhnVlhHR09xME5LQmNIa29oMzNvcnVXTHJlajRiaGNxcG1yWDRqQVoraTVQUHZua3NXRlZoR2RMdkErY3FRek5uMjlGeHlyZFBuVFBKYkJqNnllQitYTzZBSUFRb29yTmJmQnNEV1Y3SHNiWHNsNS9MVW5CSnBiZWpjOC9CNE5CTjN4QmdBaTlQdzhBVjAxMlR2N0pOVjh1aUhPREVnSks0L1dQVFpzMlBYL2hoUmMrckQrbnlNeHdEZ3NCaUdwOEhqMTR0b24zNWZMTEx6OUlFQVFFSUFBMHQvWlJNdEw2V3NkTC8zQnBYMVVCOEMxWnNzUXlZY0tFOXdWQk9OSWZCSjc3QUhqcEUyM29tcUFMY0tnNlAxKzZZYTRSRVl3REhVbS9KOERoMVFBRit6cGQ3bkZLQU02Yk44OUNDSmwrZEEzdzdxWU1Qc0JVQUV5bithbkdCcUEvQUR6MU5qQm5IbkRaYWNEcFJ3bEhqaHMzN2ljQW50S2YzelZuajlpTWMxNGRlUEtJK3EyZmJRODRBU0RVN2NmTytadXdjOEVtU0E0elJMc0poQklvQVJtaExuKzBRZW9DQmdDQWtnbG5ITjJ4N2IxWDBuV1NiZHUydFFqTmJkank2ZmNaQXdlaExqOTJmcllKT3ovVHpzT2hPdytYSDJyUXh4SUFHTmNCS2FWTURTdHA5eEc5bHVSemlBTEtaREl4cGJrYjYrWitHOXVIa05VKzRxL2wwMDNZK2VrbWlCYnFTK3c0Z3dZTmNoeCsrT0VYYkhkWnN0cUg1TlNlaTBEUTlkNC9aMGYySndnQ295UjFzbUhJNWNmT1R6Wmg1eWZ4KzFEOEJ0Y1NrVFgvMjVGRkhvTlJGRjUxbUVsK3pvTUFUNndHbmxodHhGdzE0ZG1PdnRCMDN1c3M5TXJaRDBYN3V5QXdQak5jUElEaTdtbTY5bUZ3VzVncXUvWHRaUHIwNlVWVHAwNjlqbEtLRFR0VWJQaDRXVTd0WS92L1pqK21heGNpZ05KeDQ4YWRBUWhIdnY0WjhQUWNvSzNiMkFLSXdrOUpvVTBqUXlxZVBnS2NzQnhkQXhCQ3ByLy8vdnZtVkJCTUNjRHAwNmNmU3lrdE9xZ0tjRkRBRTA1amF5Y0NUYzRBd1JUdzA4TzF6UVU4K0F6dzJzZkErU2NLdHlVQ2tNZnZ6dTE0RHlpYTlidWxqZTl1OHRYb2IxallHMFRZRzh3cXl1a3JHWFVJQnAvMkNiYk9hVTNWU2RyYTJqeFc2ZytBd0pKTDlEVE5lYVRVVENpbERCSFROWmRyb1lqVGVGcGJXNXVMaC9IOUdPNGpSd2w3ZkhGSnVpZWZmUExRV2JObS9aOWtMYXA2ZFlranUzMjRnd2k3ZzFEZFRSOHB5NTVxakt6ZnVIRmo0NVNqYVZiUjZMQW5pTEFucTJlckluT3RrNlIxNFhDNFc2S1pDenRFcnFWMzl6VCtXbFJQKzJvOW5IYnQydFZBS1FVbExMZjdrZWErRUtqUnNjWjMzWFhYbU5OT08rMGVtODAyd0I5aWVQalRiZ1E3NWZUUFFYY3FhdEQ5Q2hiZHZ6VmhpK0lQdjZLM3Z2Z0JzR1duRG5wNmZtUUR3VlRRRTNULzZ3R29nNnREQWc2cUFpaWxSY2NjYzh3TUFPL2xCRUJSRkdjQmdFU0JzV1hBb3AwcEFHamtENVN6TkgrTlFnNHN2bGx1YVFUKytEZ2RPdlhjOE84WHZ5cmRaWFN1cysrZVBPREt2Njc0OXJsVjdxazlUTzFBN2JUelpqVnNuZk53V20xQjlyU1VTY3FnRGpuTC9BaVNYVHBKWW9jTWhVSnVxU2VsM1JtSjB5d0pJV3FaVGVsTnlvdlJiOVM3Nzc3N3JKS1NrbjVEaGd3NXZybGJ4TlBmMnJEZUsyUy9Uem13SzdUdzRTZjE1eW9JQXF0d0ltL0ZEWmdxZXhKYUZBQmcxS2hSemwvOTZsZW5hbTROOXcwMzNQQjI0alAzZXIxZFZSYWFPUWVrRDZyVnlLdmZXYVIvaVFtQ29BcUNnS3JpSEkvSDByZVR0OTkrKy9MaTR1TGE2dXJxY3dCZ2U2dU1mMzNpeHJKMk9mdDJMWWQzaEphLytHRENQV2JqVDkxNi9SOGZGNGJHamRkRkF2elVCUE5WU1hOUDlYc1hFaUJJalRYQnNmMDR1elNXblowVEFGOTk5VlVUSWVRMEFBaXJ3UGZOR3NCWTlqbC9obHBnR2g5ZzZuQzJ1azVWNU5zWHYycCtJOTB6ZWZ5M0V3NjYrYkh2My9qbndzNHplOUpRVzYyRHh0Q0RieHFoZnZQZzJsUm1rOHZsMmxacmt3ZDF1SHVaSUVhUXlqY1Z5UU5rZGpQTHVhTXgyYnNyQVNvcUZZUzhkZFRSSmFhcTM4K1o4eVlBZkxYWmd1OVhDM2hoa3lsSE1JVzk0UTJmM0l2R0JkMklud3hLU2ZTSjlVWU9MQlVkZjEyd1lHN0UzNmIvUHhBR0ZtMGlXTzkyclJCUGUxcVY1MXo2dHI2YkNZS2cyczBFK1prUUpJZDdFdzZzeGRaM1hQcjdJa21TU2lrRm9XcXViU3lsVEs2MkRodzlldUJ2QU9DRFpUNDBkeW40KzdlK3pHMU5QM0dUb25UTFRhdXV4ZHJuT3hOdjFNcDNCdjkxelBHTHZuZFVUUDBOUUVjbS9WNU5PRWNsd3pFVDFSR3ErMSsvNkRUTDc1czV1eVFLRUVKT2YvWFZWMDNubm50dUtDc0FubmJhYVVkUlNzc0E0TnVkZ01lZlFQQlVBTXlrQmFhQ0gwdlcvQWhUVzJSRitmMlNINTUrREV1TmMzZ1M1WUdyeHA1MTNjUGYvZU8vUzF5Lzdra0RxUnB4eU5uTjMrRDNxY3ltN3U3dWxzR2xRYXgwbTN2WEVFbEc4NHdSUW5zdzdDemU2YjlwMDZhbWcyZmtEeXJyUEJUbnZsM2FPNU52eTlkL1VMOStjSDNpOWM2Yk42L3hGNys1TTIvbituMFhNUFBaVE5VRGlpY1FTK0I3M1QyTEJSNm9nTjA5RXl3TGV4Y2x2aGpYckZtei9lU1RUNFpBODNjdVM5dGtqSHRnVjA4dEFLNzhkVzY2UnZua3VwV3BBa3FyUDU3MkFTWS8rdlNVNFpkZUpRckNYWXpRS3NQaHM5bEFOMUdERkZJQVVHY0dlL3pBNGliZ2tBRUFwYlRzdE5OT093ckF4OGxlb3pUbUx3RE0yNlE5a3JDMnlBWkxPT0d6MFhaWitnQ0pxdnBWUmI2MzAvM0RzQ1V2bXg3T0ZuNFIrY2UxQjE3Mzc3TUczSnN4VmNGQVhGSjVMWjEyMHlpa3lHeDB1Vnk3S214eVZta1FhWjI0c2ZlZ1lhYVRJQWdxN2RIc1p2RUoxb1FRdGN5K2U3V1lkQ1pwYVBXNzE2anpiMStNRk9rZlpRNnkrODhyNk4yUitLelhybDNia0U5dE5GdFJ3OTd0aVcxUGtpUkdDRUZsaWZqamVJNkswaDF1WEhteU11Znl6dzNVb2ZqVXJxVlhoNWU4YkhxNDAvM0RNS2JLZnlTcTZzL0tlbFJTTUNhY2dqbEcyeW5BM0kzR1RFc0x3SHZ1dVVja2hKd0pBTElLZkxFNUJlRENDU2VWNm9TeUNZQm9aVUNacWp3WjdPNFl0dmhGNmM3MWMwYTVlL3FRcmpoMXlKMnpyNmovUHFzM1dzSmlIWHpRTWFsMDIrKy8vMzV6dWEzMzA1NFF5VnFKTkhsaDNPekpIUVlrbHZZUlM0U21aTTkzR3A5clFmRFQzMStnTG5wZ0hkSWtBKzhKNkxDdWJhc1R6NFZTcWxZVUNidi9YRnlOM3lYZUcwbVNGRUVRSU95QmU1TUU2SkQvdmVES2w2WXJILzVpSmJJWVBCRDUzZm81bzl6ZnZpRGRFZXp1R01aVTVVa3dWVTBiUTBnSFFqbUJPVVlzMHI3N1lqT2dSSW83RVhMR1BmZmNJMllFNE0wMzMzd0VwYlFDQUpZM0FsM3VOTERMQm41eVp2Z1JWZmxBRGZ2R2ZmdThlTVh5T2FuSEErY2l4MDJ1L01QNUI5aHkxczRVZTcrSnFEcklZZ1NvbFN0WE5wV1pmZjQ4dGFlVXlhK0NJRERTa3diUEI5Wkg5N3R3NGNLZDNKVGJReDBtNkY0bU42NjZKL2pTcVhlallaNExHWktCVlZYMTdHYXQxSzNNdjJ1MXdRdUlDY0x1QjQ2eWZlbjJSSWc4L1BERDJ5aWxvSHNTZ0hMZ1M2V3I4ZWVoNTQ2L0Nzc2ZkU0gxdUl6RUpVNld6Nm5jK2UzejRoVnEyRGVPTU9YRGpCQ1VzNFJnQ2loMnVZRmxXcDRCcGJUeTVwdHZQaUtqRDFDU3BMTWpuejliciszTXlQK1hhUmljbXNIY1ZRR1JxcXNDL3RCMVMxL012aXhXdHRMUzB2THA1U2ZVNGNXMWEzUCtyVERwZ3FuS2g5OStadVNOVVAwdHF5cWwyb05idzcxc2tBZGNVSWsxTCt3eThnUHUyclZyNTVEQnZUS0JvL3NxYyt5NWZsUGV1ZnFOcGc5dlhKREN6NW5rNGxaVnRidkdBc2ZPd0c0Q29CeGFBNE82akpzMmJlcWtlUVNnN0dxOFczNzlKeThuSGw2YzljcFBLSldLaUNnV0VjbHhFamE4MGduakFybW9LdGx6TDdLd3AvVWg1Zlh6UDgvd0hCUFhwM1JhTG43SnVSckFpWlBQOXg5dHNacitJYXQwbkdHclNJejQ2a3RpQ1lndmowV1MvWUFSaGsydGpXUGIzSlFhNERubm5DTVFRczRDQUpVQm42L0xvUDJGTS9nR1UwUjdSYWc3bVJLNjRLc25oWWw5QVQrQUQ1a2JQN1M0Ujc4VmJHV1ZxWHgwMjdkdlgzbHdWYWpYNTBjZGxiWlV2akJCRUZoRlQ4QkZTRkphdWlEc3VZNVRWRGZsRGd3K3dZNHN4NytLb29nS3kyNDAyV1gvR3FOWDlLSkZpMXhPYXg1OWJvUVllcjNrMmVlOUdIcjFyUDhHWHp6dGdjRC9qamt5aFliTW84Qmt6N2t5SkdmL1ArT2dhNHV5MFByMG1Ncm9LMXI2b25YZVYwOEtFNWtTdWtDRXVqTmxZRFdkcnkrVk8wNWJQbC9IV2FhWndXZWRjODQ1UWtvQVB2dnNzNGRTU3ZzRHdNb0dvTU9WNWtDcG9KZG05SWNJMWNzVSthWmRPejhhOHUyejVoZlJoMkUycjljN3hXN3BZU08yRnRjanhWak5OOTU0WStIb2luRHZBVmhjVzVVS0RJSWc4Q2h3emlvTlNSeGpyQWFEd2VZOTFYRzJCVVhMMU5PdSt5ZlNGd0tJbnF1cXF0MjdzNTh6SmV4S2RUNDJjLzQwUUtLR3U5S1lqZWw4YUNvQVZaYmxoajM1SW9NZ0RUS1BQdVBQU0YvOExxTUpuTXBUOHUyejVoZDM3ZnhvQ0ZQa20wU28zb3pEYVhQd0NYYTRPTXMwTTdqL3M4OCtlMmhLQUlxaWVGYlUvUDAreFk2ejlmM3BGc3BVUllEOHIyN3ZqdHB2bjVIK3ZQR0RrNEo5L2N4TUp0TTVXNXE4dlhKaEdYWFk3ZHUzZDVXd0hkLzIrZ1NMYTRhbThvWHhuTGdla0lBbWxkbFNLYVVZVzd6bklzSGZlZTBqUjE3MDNNK1FvZXdUQUpVeDFsMW0zWDBFVkwxdDN5TjFKRDUveDVGRG5aa2dsdzZHa1ltUkRxb3k3YkhuU0VUTGFlYnozN3NvQzgxUGYrNVp5OFlQVGdwKys0ejA1Mjd2amxvQjhyOG9VNVdjQXlJcFdEWDNlMlBHSlFLUVVrcG5SY3pmQmQvbFEvTlRZWk9VdHdQZTdxRUxuNUIrL2QyTFBaOFpUaThORFExbGlxSXNEWWZEdHdTRHdYUDEzd1VDZ2VOa1dYNU5GTVdiNXExbzc2RnFRRmc2Wi8xM3l4ZStlMFp0Nzh6Zzh1S3lRMUs0ZnRYSStNODhhSUNLSUNRTUl1MkZIRmJxWFZOanlmMTNQdnVncXpIMWwvMlJQbnRVRlFTQmxWanlBeDY1YzhjOWdTY1BQMEJiUmdlZVBIeFU0TW5EUnltZWxyOUdseC9tZjVjS1N1RndlRWNlNlpHVHhwZjRkeVFJa3E5WHcrMUhscUhlMFFQcnlPSzRHeWM5UEFpcHM0RVRJWmo3Qy9QRnVzNkZUMGkvRG5pN2gxb2w1VzBvYW02YW9NRXkvN3VZR2F3eGppWUIwT2Z6SFVRcEhRQUFxN2NEcmUxSW45ZVhBWDRPU1YwbUJ3S1Q1ejBpbnJIOHhkN1BEWnpvMyt2MmhZVkwvcjdtdmpsZnQ3M3kxZmR0akRIR1FxRVFreVRwNHpYYlBMUHVmbllEcm4xOWV3OU5Gc1dOTkJITFo1NTVadG5Ja3M1TnZibUdMdGhxUnAvMTU2T05vQ0NLb3RyRHFGK1NCaGdLaFJyelpWWXUyTkk1NzRJRFdjN3BTYTFoU2ljY2N1WXphWHhJRWRNZmVUT0JZMG5oaXI1emhsODUrOUh3SzJmL04veksyZi9WZ2c2R1VCSUVnVTJwa1BKekxzRnVWK0p4N3IzMzN0ckZpeGYvZlBIaXhmK25MZGRzMzc1OTRkeTVjMDgyY0Exc3kyY1V1TXdPMTAzSFYvVGdsdEppYzc4RG5rSHFhbnc5TVlFTlpmbUxwZHZtUHlLZUlRY0NreDJTdWl4ckNCcmtEYmEyODlxakdnQUgrSHkrZzZJYVlkVFJLVW5SUk1IUGxpTVcvZFZIWllEMFZhRVo0TFNvTzkzdThKV2ZQVzU1dnk5VmNvZEYrQWpBK0l1ZTI1eC8zMURZMTR6VUl6VVlBT3hjL2RHVHg5ZGM4S2VQZC9aY1k3SFZIWHp6SFE4OFB2aTFwLzd5NHZyMTY5MEFNSFBtek9xcFU2Y2VJZmNvRFlZa1BoRUlnb0M2WW9MdlhIa3dneWxocHRZRk4wOG9QZnFSRloyNTdXK2RSeXFiZGRjbmo4LysvWEdYSmR6UDZPZGdNTGlkRU9uZ1BBY2VZSEM4cE9lWnVKNEhIdkxUbnBiLzQ3VDNLb3JPaWpqaW8vKzNkWVh4OWJxWW00WTArWERkVytSTzZkelpMUHpxckRtSWpVeGhsRklNcnpUaG01YmVCK0FXZk5mKzdtUFhqYnZ3MllXZCtMbzVOMjhVb2VKNDg4OCt1U2Y0ditQdVN2RUMxcnVRZWkxTG43Y3ZBekQ1NEVzQ0p6a2MwdU9lb0c1bXlNUW9jSm9aSXo5ZERveXRpN0x1SEFDTDRnQklLVDBiQUJnREZpelhLSm9OQUxYRlpsYTlZTXBObno1MHdhUEFhd3I2V0ZSVlhYck0yQks4dnI0NzcvdVcyell0UmNMd3FNUk84L2pqankrNS9nOUhMUUFHSGRuVDQ2enVKbGpkUGVxOFczN3oySG5UaHdJV1RlRncrUWcrV2R2ak5KaTQ4MVpWdFp1UEtza0RBQmxSNzd6enpxLy8vTVRIWDY3NDJucFlyajkvdDlFeTVhQnIzN3JsMjRmUCtLTlJweEVFQWJXbGVmSzlrZlJ6TDJlQ29hSW8yd0hVNXVOVUR2cHpEZ1lRRVFlR3QzMCtYLzhDWm95NUNDRjVBL0piRy8wYi8rNzEvdTlQNXczODJkSC96TjJRSWFMbGV0UEZuM2FHbnAzeHR6UjlKSzhCem0rZXNid1BuRFBvNkd0ZXVCcEVlTkFYcFBhNG9nb1pBTGhnT2ZEcjAzbjVUa3JwV1FCK0d6V0J2Vjd2VkVycFlBQll0eDFvYWtYNm9nWTZ3MElpcWxMcGxQKzZmdnZ5cW5tUG1CN1pIZkFEZUo3ZnFFSDIvTzlZRGphckMrNWNpc3pGdU5XLzMzbkI3eThlNnUrMVgvUCtieWxPZjRsaTVyTjhPVzgyd1JPcmU4Uy94RFFZVlZHVXJpSUx6U2RVbE5lZnVPdVd5OGNLdnA3c1lsV2cvUHhqci96dlVVYjNWeFJGbHJkMEQwSllid0lQZ2lDdzRma3lnWE41eHlqaFZmam1YeDBKNStpaWxLTFVMdWJ0M2p6OTlOTjNqcXExYnIzbjJNcWVHUU9TK2ZmaVQ5NGFqL1F6ZE9SWlhsUG1QV0o2WlAzMjVWV1ZUdm12RWxHVnREVklkWitiV29GMXNXandZSy9YT3pVS1FKUEpGSTJNekYyQzFLTTVkTTJGTUJXMUZjb2NiMmRMOWJ0L2wyN1krYzRVMys1c0tMVzF0UjFqNjV4ZGVlZGZ4NWFYa1VQcDhzK2YvZFhGVTh0a0dUOEtNUXlDb0NoUHVYVkVsYnVnNWNrTk0yMyswNlR5bm9GMXMzakF2eWVjL1lmUmlSRHllcjNiOHdWQW9paWQ2R1hnWVUvazNxbXFQQy9SeHhZSmloWGI4cU1kTXlpdU8rNjRvNk96cy9PdXkyZlc0TkJxUzQvMlk3YVZmb0F6WHg0TTR5blMraXoxWU9jN1UzenYvbDI2b2J1MXRhYTJRcGxEbUpxNkpKK09aWE1YeC9ZUllSN1ZpQmdyZnJBMFE5ZFhnTm9LZGJuQXZLTm0zeStldnZ5MTZ0WTkxZDN0VnVHVFlVWDVlMHVyWWQ4UDhqdFh6a0VXczNWRi9sNjNibDFYMC94L1h6RGNydXg1Q0pMa05CaWZ6OWRBODlTUlZSWkw2TDMrMmd2Zk9HNXdjRzVQOXRNVUlrUVlkTlNyR0gyaFV3OGxTWkxZZ0ZJcFR3QU11TkREdkR2d2xCd1g5a1R1c1J4WWtXaHBoTVBoTFhrRk12ZVBzaUZEaHN5bUNQL3Q5ck1HOW1nM0NxRkY1cExxOTNIYTQ4VXB0TUErbFZWdjltK1pmYjk0T2xHOG8yc3IxT1ZwSjFkU2dmbExkUnFzeGp6cThYakdVMHFIQWNBUDI0RWRUYW1OdjVveXRibTJNamh6OWdQQ3BLK2VLbHEvcC9zN1kyenBXUk5LODlYd21wUVZyOTJOTEdmcjBuL2V1UGoxeHUvbTNIOUt2VG5ZdHFkdkNRd2l5dFVsUXA4QTlzdlgvM2pMYjZlYWUxUzBZblUzcEFPT3ZlSWRmUXNUUlpIbERUcFV6RWJqUzVuTFJnanBMTFh0L3VUajhQWmxjeFBNeU9pVW9iVVY1bndlU2dYQTNuLy8vYjhjUExKbzZ6OU9yK2xaazZCMHNMbGl4QWN3TEdxM2UrVHJaNHJXelg1QW1EU29Lbmg4VFpuYW5HcUd5b1ltempnTmdNTThIczhFYWphYm8yTi81eTAyYmhybFR0VjM0SkR3TDk3OHF6Qmc5cDh0SCtOSElxcXFiajZ3enBFWCtJVlh6TDVlV2ZYRUR2Umc3bFlBQ3JaKzJMWDJrUm1uMUlSM1BMK0hiMHZjK2ZZNHB6Q05EekN5Nzg4Kys2eXp6cnJqajFNcWV1YWIydXdYYXNUejNqaFBaM2FxK1RwWGhWQ0d6QW03S1lISVRjN2RXNEtLS2NvS2ZIbFBvditQUlh5akpFOXZCOHBvRkZRWFhYUlJ1OC9udSsyOG8ycHdXSTIxaDgyQ1RqUmZNdTl5ZzN1OFcrVzFCeTJmdlBsWFljQ1l1dkF2eXAycXorakp6dE9ad1dheitXeXFOMy9uTG81bnVNT3FxbE5HS1E5dDJQUlIyUk4zbXg3ZUV4ZVZUdngrLzlLYVhyNFZtYjlyWG1EQlh5NVRWajY2QXoyY3UxWGZtVFkvKzlOL0JWYStkb1lsMlBIZWJ1czRRZmZIaXJ2NTc2RVhUN3NMeVFtOWVmT1Rza0QzdGtTQVhQV3pzMTQ5WXd3VzV1aHJhRkI5bmZjSG5qeDhrUHpLV1Mvb3pjNThtZXVJbWV0WmEzMkpMNDdkN2dKazRYa3d5SzFUVmJXVFY0WE96d25KcXJ4WmI2NVdWbGJPTmducWszZk9HcFNqQmFadVVlWHdiWUVuRHhlQ3p4ejkySjdTQUJOYjExTy9OejI4WWROSFpaTkh5UDl5V0xYU1c5b3liMG1jR1h3MmtXVjV0aUFJWjI5cEJINTZNLzlDRWxWTUdNaythbXhzdnVETmh3ZTI0MGNzS3plMlAzandmV3R1elBrdWhYenIxWTdOejhudi9kOWNuZm1JaE05cHAwL011TTNnVTUzU2xBdk9wcmJ5R1VTeWpNNWJQMUZsdCtwdGU0TEpjcGY4eGs5ZlRUaDIwdm1JczE0NVR5eXUrWDJ2emJQV0h5NVM1bHoyWmVMK1R6dnR0T0lSTSs5YStPOWxmbnNHVGZ0THhkditmSGoyVDk1TmNVOWhQdS90QzRpajdNRmVuNnRyNXl6bDlmTVdaSGgycWY0R0FHYTYrTk4vVU1uOHM5M1djNE8rQzBQUHozd2poV3NENW9zK3ZweVlyUC91L1F2VGUyTHcrUk0rMDEvMzU1OS9YanB0MnJSdkhucHJlLzN0SHpWbEF0OW5UQTQvSG5wMnhtc0pKdldQVG43NjI1MFY1ZVZWejY5WVQyYUdaVzVkdlBRQVVEOEFVQlRsZGJKcjE2NStGUlVWM3ozOUZxMTg4ZzFnd2toMWpjWGtPL2Z2dHpoWFl5OFIwMlh6YmdFQXdzaGtRb1ZacWJXOTdybHFxR3VkdW12dFl1V0xQNnpOQytSeTJFWTg3Y25qaUtWb0lBQlFTOG5NYktDb2VIYjlMZHJDUEsycmxmZitieUY2a05mVzE5czkvOXFINXo2MnRPUXYzN2FHRFJTYndMdEsyNmFINWZkL3ZpckQvbkk1ZHJiUEJWbitQcHY5WnpxZm5oNG4yL1c1L2piYit3QUE4UGw4c3hTSUw1OTEveXA4MGVnM2VQRXFzMVU1OUVENHVlT1hZQytUNis5M2p3bUViSytzV0UvSFhINDJjT25wYW50Ylc5c1lBZ0RCWVBDYys1OFNIN1NaNU4vY2VMbjVUZXdiWWdNd0JyRXBWSFlMNVBLd1RVcE5iazlETHROMmYzMXU4ZE8zenc4Y3I5T3lYd2p0V1BVUTV0MjRyUUM1SHdma01wbW40WEQ0dnJlK2FKNTgwUXRiajQxcGZNcmpVSHdQQlA5MzBxYTlIUXIzUFJZOE02eUtmNzM1VXZsbXM5bjhHc0crTGRVQUJoWWd0L3UyTTEvd3dSMU1vTVdoSGFzZnd0emZiQ3RBN3NjSHVXek1WZk9sOHg4QVFlbStBcjVVc2s4QmtESEdVSkNDRkNUL29OaVRGVmtMQU13ZWdLVy8vQ2IyK21PNlY2RUJHNDF3eVppYThaM0tzbnpuc293L3l2YTZjdHE2ais1dEFRTDd1d1NlUEh5Zmc2QzRyMTBRbjh1QkpYVll4blFGQVZnQ0tuUi9Fd2daWVVtTW9HblFOQWlMcldSWlRqaWRCTTZjMzFLWnQrNEp6SGdLNEkvcFpWY0FVdnp6S2R5REFnQUJVRkVyQThHaXBUUmdSQ0dtbzE4MnNFd0ZUS1NCcHY0NEJHbTBUWktJTUJKLzNHd2FkeVlOdE5kcWYrNi82a3RJL2RpQXZDOGJjL3N5WFBjNUFJb1M1UjJQNlNEQWtqdGsxRjJvMFNWYldCcDFiUDUzZHRETUZweVo0Smxrcmh0cG9Ba2d6UW1vV1ZqVkxJTzVUZmJTRGwrUS9lZFc3NE1BNUZCaFdzZGxMQmxjMFhWUkxUSFNtVWw2V09xL055UmhhbWltQnlmU3c5UFFUTllBbW9XNmxmaFZwdmFjNUFjbHFmb0ZTZXR5WkgzUmNWZ3VtN0o5aEQ4a2w0MEwvTnZmTlVEb29jYjA0RXZRNFBTZ2pGRXRKU3oxbXlRQ00ydG9HcEl3dVpsbEE5RDRkUVRwSWpVc0s1TlpwNW4yd0k3TkZiU1o5NmYycWpjYWd1UEh6c1MrQUJpaEtNaCtBRUJDQ0JueHdHb1dCenlkTHpBUmFzYmJwWUJsU21ERzd5c2xOTE1FWitUWVJOOGptSkZHbUJtaXladXh0TUJLRGRac3FacDloRHliVGVKQTNBTWc1MFhoWkwxdGs3dTlFK1NQcy91QmwyRmZ2TVQrQUt4cCtsWmZKd083QVpnQm1GQVk4WkRQMzJaN0g3TEZyb3FDN1BleUx3SlFBaDhCUXREM0l5T00xbldCVHlsVmFuQi9DNUFyUUs0Z0JSTzRUeVVNb0J1QXN3OGhsMjdiU0RGdUgvaDQ1QjhENUFLYVZscUFYRUVLc284REVCb0FyV2swc0w2cVFzSVFtMC9QcDJtamRBOXJjcEZ6b29DUlU2MEF1WUlVQUxpdmlhcVpva1Y5QUxsMDN3VVMxdnNBMlBld3Vhcm9ORk5hZ0Z4QkNyTHZBekFDSDR2dUduc0Z1UnR1dUtINDZxdXZ2a1Mvem1xMTFqa2NqcDhCZkU1YnU5MmVOSEdOMysrSHJFMGExOW5aZVErbGxBSEFxbFdyM2p6NTVKTzM1QWx5NmRaSEFLaDZ2ZDVMd3VGd09RRFliTFo3SXh1a0d1Y2VEQWIvUWdqcHROdnREMlp4ZnRsTVByeFBRNjZob2FHc2YvLytWK25YRVVLR0NJSndaYmI3a0dYNTFzaG5yOWY3V2tsSnlhYStQbGRLNlZXVTBuckRCNmFxVzFSVmZRd0FHR09kSnBQcDBYM3BtZTMxUVpCMEZXQmtXVVpYVjN4RmVIMW5iMjV1dm0vTW1ERVBBUWltNjl4dGJXMHJSRkdzSTh3UGVENk4zNSt5RTNBL0NLc0ZFQVdqQmdUNDlYcGgyYjlpbVFxMlF4R1FuVytHUXFIbDFkWFZmKzBGNUZJQ01oQUlYQ3FLNGptQ0lCd0xBSExuQjREcTVsdnQram5nVjBDNnc0QXJCQVJWUUdWeG1SVHlzSDk0T3BkZTkxRC9hM0EzQUZXVzVSOFNPd3NoSkpvMmxFM1JFRVZSdG9xaU9FYTc3NHJMNVJwYVhGeThzVGZ0d09QeC9OTHBkRDRKd0wrN3FnS0ZRcUduekdienRRQUNpcUpzcHBUV1EvVUM3ZzhUR3VJT29Qc1BzU0wwSVJYd0s0QTdESGhsL2xsV1kwOXU4aXV4M3c0NENvcWxmRFpqYktra1NmZjM5cHpENGZBdFVlRHB6OVg5RkJEK3h2aEgwc0dBOHpMdFlUdmhVZy82ZldscDZlOTFMOWNDQVBlRWVMM2VLVGFiYlRHMlZLVGV4ZytFUXZyT0d2Lzl4NS83dmo3dlYvNVRkTnBKVXVmcDZPaFlLZTc2U1Iza3BVbjdJUUFrQ1RCSjZUb0tJQ3ZhYnhnNFpCVEdHNzBDb09nWGdIa01QTTdqL3JGeDQ4YkhwaytmdmlVWHlCbXQ3Kzd1dnRGc050OW9NcGxLNFA0WThINEFlSjhEQzZoUTNXR1FyakRRSFFiQ2FzWkc0ZktpdSt3cW5BN2djMW1XTndyZm4xd1A0UnZBUkFHUjlLZ1ZkWFdyWFNVVE9zOEVNQThBV0hnWHcvWURldkFHMUlEaWx2SGVSNzdYVHJsTE9WZFJsTTMwWmFFK3E5WXZVY0FtQWtVU1VDd0JGb0d2enpKM2VPMFA0YThQT0tIN01FVlJOdExHVSt2aklCSUJYamdDUEJud2hqWGdNVUROZ2RPRDd3REtENFE4OUt3SHZWN3ZZN2xxaG9GQTREaEpraDZsbE5hajYzVmo0T2tkTUNvRHdnd0lLdnorQmxWK0hXRVZrQm5XYkZTZUduTzlldFhlRHNHOTJnUVdSWEVJUWx2U2JtTzFBSW5UbHVzaGFMTlNKNERoQU5hbUFjb1dTa2xkVXRFQ0FvaGlldmlCQVJJWTFDQnZPRkFZU0ZEaG5TQ29BaUVGSUE4QVpvb2lpM0RkcEdIL3VHN1g1Z1dQOUJ0eTVQVTk4Y2sxTlRWTktpMHQvYThvaWhPcCswMmc4VDdBdXhsd2NTMlArR1FRT2ZQc2s5RjdKRktVMW9wRlFHZ2lnUGtBTnFOVXFJY3NaTy9kTTN3cEVEK0Fnd0I4QlNBRXNTcDc0Q2tNOENsQVo0aERQS0FBQ2dQcjFtSExlVFRnbmhmL1cwbzA0QWtjZUVVU1lLWjhmUThIU3pBVkZFQU5ZMnd6R09yamdPZVIrZUtUY3dkZW9teTlGOWhPSUs2aE54V1BlK3ltWU1mS3Y1akx4bWMxRjA0NEhINUFGTVdiNFA4ZWFMMlpnNCtCbjFOWTVaQUxST0FXQVYza0JhMmRkMklPZkFoVkFLWUQrTElBd0Qwa2xOSWhDTzVLdnczaEVBd0VqWlBrUnc0UmF3QWNBaURWSENoOFNrSnBPQ0F2aWNLQkVFQVNBVUZJNkp3TXZQRW9HdkJDS29oUGh1aFJvUGdVRUFhdU9Wa0VrQktKbjV4SUFKRUNBZ0ZDdDZGTXdEVmRXeDg2ODlPbE5aUFBQdnZzdG16OWxsNnY5MHFMeGZJZkJMWUFHKzhHYVg2ZEF5S2t4am9mMCtZSVlDa0dEUkFPUFRoRW9OZ0VPRVd1RmFHOVA0QWFBSjJRUmdEeU43MTZkb0dBR2dEZ0FEQU93QkpWVlYwVUtFbnB4UXlwUUpkbXF2dGsza2tUN3NUbVpuUURNRFBHTmdPb2p3ZWVDU2dTQVpOZzNPcDd3aVlHdEhjb2JRRDRkR3JkdzRDR1R6bWN3MnJ2Z0tkL0ZqWUJjR3JBdGdvQXV3bW1UdHdRYW41MDFxN3dTWk5yYTJzN01zSnY1OVBBbGwveSt4aFdZLzlyTDJVd2x0TTlNSXV3QTZnRk1BSEFpZ0lBOTRUOVRzaGt5STBadHpOSlhBczA4Z3pWOUJQTEFCd0FvQnhBVzRvdXNabFNIQVhLb1NGUURqNEM4TmhxNUUwcHEveE42cE81ZGhkVWVBTTJVWWhPRWF6Y3pEdWtRRUFrRFhvVUJ1V3dBSHY0bnVvVEo1eTI5WlBadjVsMjNLeS9yY3FnRXlFWURONHNTZEtmMFBnUnNQQmtmaTdaYUhoNlU5QWhBYVVTTndtdFFweFdkT2drYXZwcW1Ub0JRQ2VFMHF3QmthWnpSK1lZUGdUQU1nQ2RJSU5Mb0c3bFpxUE13RHd5U0VlUWExR2hySUZTQlFCczZJR0F2Qnd3QzhuM3VLZGNpaVlWTWE1MWVtU2dNY0EwQUc1R3Ezd3NPa0s5YTlRQzRTOUlod1JXSklJNEpQNjN3VFZJN3RzRzl4Y1hON2kyUFhKZ1NkMDFteE4zRlF3R3p4VkY4U2FzZVFKWWRWWE9rTXR3bXBFcFJFZUFaMXhzS1FCdzl3TndDSUxaVFY1bk5nSEJCRjlnQkFMWFhDaVVQL0s4Y2hTQVZ3eCtxa3FTeEVUTEVOQWdRRlVWQ0dwdnpZaXBFekZsRmNhaFpoR0FVaE0zcnlLYW5VZ2dDUVNNWnVsOFpZQVZjMHlIalorMjhLKzNtc2YvOXI3Z2huU09iVkVVLzRUMXJ3Skx6OHROdXlpU2dCSUpzSXN4V0JpQVl1Z2dtTDVhaG5HS29yZ0VVbXhZTlNjWGNiblV5QVRnSlFCR0F1aGtnYXA2MHJTR2EzcEJoZnRKMDBGTHArR3hJaE5XZVh5dGdGb0xZRE9LNmJIdzljNU1Ud0tlVndieHlJQmZBN0xDNEdtQkYwQzVvaWlDNEJ5UyszRWl6OEVxZ09tMVBNMjNHdDJkclBQSitSVVFUWU1UUS8rejJZVnRLeHVlUUYzdEZlaEljQkhkangxZkFjdXZ6SHNFd0NUQnJ2UC9UUUJQQVdzcUFIQTNTVU5EUXhtbGRCTGt6ZG05c1FUQWxtTGkrNU9QTWxjLzhyeHZNb0E1QURxVDRHazJieFE3Q05BYWlEbUZaYzJXTkFrY2RNWGFtMXFEWFRydExwZE9ZcUdMTEJlZk4zUGViKytiTXhUSmVZYVJ0L3g5V2NHUGdLdXZEaEVvTXdGMkVjd2t4S2RIcHpnM3dxczQyRnRiVzJtTnBUaTNERUJqUDE1MFltNEFCelBHT3VtMklxRFZuLzc4dGFBRks5RmdZZEo4ZUFRQTlURUFQUGdoRGU1aFppUFRBVThCOFdvK1BBMTRpZUx4d3dPQXRiYTJkZzdJOWo0SWhMY1p1OGloNXhENWRSRXQrQkJTZ0c0VkNHaWdTd2hBSkdweUl2bkVVVkYyNGhmQUIyTmlQdGJRMVpUU2VpeTdNL21jU0M4MVlRQW1NUTZBQURCRjgrZDJGQUM0RzZTc3JHd0lWQzhRZkxmWCszTFlxUmtjQThjQmVOVndJM2tBVDFrd1U2N2RtVFR0VGlTOFFRc2s4d1NjdVdvZk1nUDhDaXE2UHEzNS9FLzBYMGZjcGw2VitCSVFSZkYrTkg0Vmc1OVJZeGNJNzJ6Rkp1NUxzbWlnenJZak1HRDhhS0VZYjZ0dExTMHQxUU1HTzhIVUhLNkRhV0JSR05laU9zTUlyQTc2RUl1OFY0ZENJWXRWS2s4K0Y1RUFWaEVzb3FsYUJFMTkxK3ZvL0w4bjMxQmJBUFR6Ky8yTmRoVXA0NU54aDFDMTh3b29JRjVOeS9QcFRPNE05NmJUQ3k4QXRidTd1MmlBdmRZNDAxSHZ5N09MWUhhUnR4OEdEdHJXRUVoSWU3R0d0RUNFaXZRbWY0STViUEY4Y0VEN3c3aSsvRnI4WGZPUHo4RG1ENEd1ZVQzemQ1S01YK3RmWUpGZlROVWc2Q2tBc0k5RmtxVEprSGYwN01lYWp5bml1eHRaWVIwRWVMNENNQTNBeHdCY3laUWt3QUJyektUTk5NQ3RKNmFXQ3E1aGVtV2dXd1k4NFdodTN1U0JOUmNBTzI4SDBCcjVXWFYxOWYxVThjZS81WmxPeTdDTFlDVW1UVlBTbkpjazRaaFordStJMWlVYkdocnNFK3NRMzlHTjlxTXlRQVZZU0FWeGhYamFqVi9XSE82QTF3MmZIbEhOemMzKytraEpMNHNBVmlTQmxacGl2a2k5MHpMMXVhdmF2cXFHbGc0MGhqVGpwaVR4S3p4WTRkTUJUOG45QWE3YWpsMEFGSS9IVXdSSHd2MDNVVENyeUY4NGxQRDlCMVhBSFFDSlJGb1Z0ZWZ0SmdGU0RzZUF1NERHdjJ2dW9SbG8vQ3AxNmpsSm81MUc3amRGRE1RSjk4WW1vcC91K1RFZFQ2WUErQnF4M05vQ0FQdk0veGY0SVR2WXFZZ1BWSVNaNXJ2ajBicCs4SlVmUEFLbWJ6WkFCWEFNZ0RmaSt3enJoSW53enRnVHVLWDZTa1hNcitPUlFicENnRmRKRG1Bd3dFWjIydDcvTFc0KzZhKzRnZnZRWEVNRlFiZ1N5LzhMdU9acEppRGgvckFTTFhwckZUSkRqMlYzMnFWRmdnVUlxMTFkWFg1RysvRnpad25BWS93K0U0OENkSVZBUERJMzRReWM3MFNOSWg4QW1OL3ZkN0w2NFdCbEpWb256QXA0MGZVZWI5U25pTGEydG41RGk3WHVxWjBUZkRMZ1V6anNJajQwdGZkQkFjS2dBbEM2dXJxQ2NJSURUOVR1dWN4QTNETFFxZVY3NXJ0aWJNTHZUV2dzYWZvYkxwWFBhWGliVWxxQ0hhOFlXd1NFUkYwMVROSlpNVnFLRVltNGVkSzlFTlRvdjRtdlhndUFTUUNXZ0JjbUtRQ3dMNFJTT2dQeXpvemFIY0thUHllb0JTc1V4aCs0V1loRk93V0NNMC8wVm42elFkNm1hWUdmZ2hkVTBCM1FtUlBnR0V0ajFvWTEvMDVYbUR2OEU5SlVVa21wRGRPMEJoYXcyKzFYd2RzQ3JMK1JYMGV4eFAxSkZzMkJyZ0ZFUHo5S3p1YTU3dnRpQnpFRFVEczdPLzJndzNuME8yTFdCbFFRZDVnRDNLOUV0YngwZmp5M3dMd0FpMnFBN2UzdGJheWVnTkZZUjh5cC9MM01JbEZsdUZ5dU1JSU1hUENCK0JTdTdZWHlrSlppNEZyNDkzeldyTFZIRlZJUmlGc0JWRGwvUXd4SW12VUdsNk9xT056cGRINk9rQmVRTndFV01RWTVFNDB0bFBENzRkZk1mbmNrdFNnN1NFZWVVa0pMaWZ3ZlNXOWFnUjk1b3ZUZUhBVWVBdTg4TFdGVEE1NldkOGVCcHptTktRQkpDMVE0cFdnYVN0Ui9wd1VxeG84M1ZRTHlWczBYZUNTQWQyS05TdDJjcUlWa0ZmM1VwOGlFVlJCWG1BOS9DbVNBUkFwUURhM0VVQUFIQWxoTUtiMktOYjRML0Q5N1p4NG1SWG5uOGUvN1ZsVWZjekdBREllb1NFQlExRWlNWkRjbWlvcnJSaE1UV1RWRzQ1M0VqVVpOWERjbTVqQnVqSW5aOVlnYjBYanRKdDVFUE5jekF1S0JZaFNSVSs1RFFHYVlxKyt1NDMxLys4ZGIxVjFkVTkzVE13d0kwdS96dkU5ZjFYVy9uL2Y3Tzk2MzltOEExV3RGMHp6Z0Z3dTlQWHZaWnRoSU1pYVYwdUdjUzZBZTZEREJ1bXdWRlMyWDgwWkZVRkJjQnpYcVFLTUJpbW1nOXF4ckR4WTFIak5HUXpwOVVORytEc1Z1c3oyZklxWFQ2VFRMTlFDYmNqdnE2dy8wdWo3elVCS3NIQlhNK0UyYk5yVmk5QWlRVFRzT3R6Sy9zZUFIN2xkeEhEQVk2cHZ3NWJmZmZudm9TY2RPaHZoTWszSjl1T1kzczVRU1p1MHFsNUtaZ2V2R3F0L3Z1STRSQWJnRjc3SkJVTkg5NVRVQURuREpaREtmNTV3M28zVVJrTXI1UmxTNGFSRlJyaHptRWE1TXdFS2ljZm1MZk9Cb3ZjV0hqWCtFR3ZXUUtqb2RSL1dFWHZDelRVVVltRW9WSWUzbUJIcGpQZnN6cllGN3N3OGJ3a1lBOG9oOFB0L01PVytXK1R0VXNqSUxRSS9LZzZ4UDI2ZWlMNjhSTWdaQUxscTBxSjJkZmd5d09sM3l2SlVnS0NqcTViSVpJQyt0dzlmSVVrbksrUGVZaU5RalFCd3F1Z2RDM1JrRTVrZ2dweExNV1U2QTVRWHNEcG54R21RaWtVakJHTG5qMm9QNWZJL2s5NE9wVjl1Q2R3eWthWnBFNDZpQjJXWVBjeFVnZzRQY25GSVlEQlRoUUZSVDhETllvZk9yWjJ6Y24yNzYwOWgvbW5vWFNBS3N5MUVLTCtPQTVVdkhIUHNmV3NWNkEzTnd2M1N1OUdiNEhlVzlEb09LeXErdkFYQWdkMXJYeHlLNURtaGZXVXhCTWFKRjBPbXNUNEVLSW1EL1VaRXh2Z2FwdTc3QXB3RWduOCt2aXhvQlZTVjhxdE9XeXIrVWNZZTQyYTdxRTcwL1E2TXNlQXJEczFUS0JBMVNhU3ZubjVJK3hEVE53eVAyS2hCdHFHNUNyNUJscU5JeTdyQXRsblBBRWpaWTBvYTJVUklBcVdtYVFNTUkxd1QyclMraTBsTmtrOG9wSklNVmp3TTl2VUhkU1VyN0ZVUTJtMDFEQW1TR0JGUGNvQVhMS2VBaEw4QUNROHZzZkJGR0FBaVJ4dUxNakgyUmdhemNDZXBaL050Y3ZIanhOcHp3V1hXY2ZWUjJoVTVEVXgwNEdWd3BONE9Eb3BvS3BoaGVCKzZ1Z0lmNHVhVzZKdzgybnFuTG1YZHRqNjFNRFdQbGZIbXM5SlY2MjAvdUJuWHEzSHpGT2gxQVFsVG9WcjNYZlFGWUFMYlVBRGh3L3I4alFkdUtVVm1kaGM5MFIxWDQ1VHpQYllRaVgvd3NqODcvUUhxSmFFZEJqWFBzVUFxd1JZSEI4eVZtaEZKNGVha2llWjVKVzQycUtnZEZ6Z281YmVSRmNac00xZE83Zmh2R0lQUDUvR2NibkhjTFVLRksyNkR5dnNXQ3loSks1VEZiZ3FVY3NLU3RnZ1ZPOFUvTVVYcnc3cnZ2M3Y2bi8vbzFJQmtvcGtFMkt0OGpGVVlydU00cER6NU9HUlZLaFdaTEFKQk9welBnVFNCVEtyaVpRdm52c2dMTUZHQTJWWFRLNXhXTUJBQXNXYkprRy83NXFKM3VncmN0RkNET09aZG9IRkVLM1RMQUlkY0ZReEZWRVZHZ293aFhIUWN2cW1YbUI3SVRjaUVscWV1V1V6bUxMQ09ndFF1Wnp1UER1SDdNc01KNGFGWWwrRm1wajVPaUdxaEJCelhvU214NHUyQkovT1o4RFAvWm43RzFDZ2p1NzBKd2V3MkFBeFVBRWF0VVhsVmZZVmZCQkx6NFRHUC8rUitZM3FRSUhNQUo4UElDQllDMWFhWHlIQi93dkp1VldNK29vdTk5SW9mdTVzdHhHd0M2OVhSODVwdGYvY2JVa2RaVCt4ZVNrN2s3U2lTdWdScGNQNW1YYStnNXZJV0tPc2JqOFVuVXVnbmtnd3ZKS201RC83bnlCcm1iRWp4bHF5QkdUcFk5aG1GeERDa290c1lXT0dNYklibXZzWG80Q3o3Q3Jvd3lYYkpLdFBrVllDS1JTTUVaQlcxdHRpcmc5WWdxMjhXOE5DS2lBb3gyWklyV1hrbzZqVzNlTVRER2hCb0hYdXEySU5kSFI2NktvNmlxMExrQ29VL05aUzNaT3ZUVTVNVUE4UEJQSWtjY1AvVmZ2alZJUEQ4cHVNOU1LbCszNWtFdks4Qjg2VFE2SUpZdlh6N3YySmFqdjR5MnVaVk4yb0JwUzRhcjh1b1U4TWp0a0ZsT2duV3BnQjF6TFJ5OUE3S01IekRzRGhqaklyeXJCc0NCQ0lCa1h5M3ZnNnJHK1I5aStrMDh3QmlPNHRnNkFuQW9nRGVhbTV2WFVycFZPWStaTC9GWnVBR1lhcUFqaWw2Nkh6Mk8xVDk2L0tsVmJmTm1YRFowM2VVallYQ1ZIRnZuUXM4TjFCVFNaUHp3SjhqR3hzWWh6cW9GSUxzVS9zRkhlSmFtcVNqb01lR2FrMGtWd0dCT0FEUlVxbFRJQmJLamt4dE9CeXpMeWtsaWNRaVVCbk9xbUY2V0pLblphTEt5UkFFQ0lJNEdVSWZkTjMrbFc3cFNLaDhQQURSTlUyZDdCNGJsWm15ME5mNEdsM2xiUC9VemFQamw4VGlScVRITU9MUUZwN21xV0FEQVRUZmQ5UEh2cnIwS0lxb1hsSjJNS244MGFhdzBlWnNoTk5HWlRQSzZXcHo5TytzOS9PNlJkenNYM3Z2SDJQcC9HOGVFQkRNbGVNWUJ6d293eXgwcUdISmVOQWw1M0hISHpUR1h2UGdEWTFGZ2dva1EwNVlpNmpyTHFBYW11d0dUdEFEcnRBdWRQZk02Tis1RzZnMkcwUzFhZ3pKL3lsNnBNQWdLQkRNc2FnRHNld0NFN0tYbFlWT0ZINHo4YXNoVWVXR2p1VE95WnlnQkp3QjRBUFV0b0xpdUhQQldHV2k0N3lsc3U3SWtiUUFBc0ZSTVhIek1aMzgra3RwdmRVMGZWKzBKRkhMWS9BOXhOeTJaWjZNdWtnQWdFMitGdzQ4Q1NzOGhNQ0hCMHc1WVVpWDlzaEJ6UFpWSHg2S1A4ZWJ5ZG16Ni9oUDRzTlFoNk9DaGY0dE85czZOYVpwWkF3Zkd5VnhmNXZuRXBmdkRIQWxtU2ZDc0FNOUw4SnpBMnJYdyt3QnB5WklsMjNEaVVUMmhWV2s0TUpVb3dJSWF1ZlhXVzdmZGN0MVBRRHNBd0d5MkNGUUFlR1l0RXMrc3hlTytMZisxeDU0MHRjQnNpWmVDeHJ1V0tCTnQ5U1Y0azlWamRBVzJSdjVoM3NTNks4Ymh2ZCtBMnlGVGFnV1VuRTFJLy94VmJBYUF0enZqdDMyNTZiaGZvV051ajhBS1JSaWtPL2FiU1FKU0VscTNBSWpVakVXcVIxSWRzYUdoM2NHY2E1OTBicnp2TFVvOWRDV2ZlUFNreUdsRFJ6djFBUUJXQXFIMytRQUE2d0JrYWdEc1I0bEVJdE5ncmxjWks1VmdGL0pROHNJSEYySXNMOTBjS0RWSjVRaExHeFVDd0FQZENwWjAvTTg3THgvVjliOXFia1JVZGU0bDYwNmxVbG1NT3d5eW14Y1ZRUVdvcFJMVXdUbVhsR3RUalp0OGtWN3lxVHpYTDhSVEtyK0xtVkxkNUNHdUFsTWk5OVJxL3ZDM0hwUUxLOTNBNTl4c3Z1dDl4eGdqb2hHZy9MckFPVmJiWUxaS3VlQjVBWjRUNEo1Zno5ZHB2THlwUkFXb3ZSODBvankwZW9uQWV6N0t3aStEV25aSUFkcDVwSUl3cXRDb2kzMnFHUlp3WUpYTkZNL0ZrWk5BSUxmT05NMGtiejRVbEpJSWZWWjlZTlY1QzF1OWRSeDc3TEd6azY4OWNrYjlpM01ua1JzWUpBWXdBbGlPb0dYY0taSmM5d3ZwcnBrZTB5Q2pybjlTQTdhbDVGTUgvakQzbThLOThBZXhETWd0cTlMaEV2WitmNmpJY0w0R3dENFd4dGlSeUM0c3hWUWwySG12bHBxcWl1V0VHbUxtbWhGcVVnUGxsRFlhRWJuMk5EN2l4aWRsTUdJMVRVcTVuZ2tjR0FiWlVJVnB1S2FzSU1BRVVyYldFVFFYUm8wYU5SaGFad0ZtQlFYcGg1cHZPOHRYTys5N043YzBxUUE5SnBVcHprd0JMZVdBWjV4U0g1cC9QYTVmU3NZMUpIV3Q0eWRQNVcrNzUxWFozc3RSOVRpelpGRmhINWhEeWp3emhmSkxtVkpCVUZaTXd5azVGMnZXckVrcDUzb2ZmSGErejVrY1VrRjQ5QldBNVBuc2RJYXNnUlFnUkIrVURYSzUzRGFaeDRpZUNpM2NmbWRTblNOdUtuOWV2dHZaR25RTERCa3laQVM2bW9ySDBvcy83K05PelBhdjQ0Zi8rN2VyN3B4NitTeDk2WDgzZ05UakRraGprQVlENlJ3eXhpRmpHZ3FBOUNiejhHMW4vb2YyNHdodGNaWHZrUXEvTXhlQ0cvRUpENW5iRXdFNGxyTExTcDMrWWNyTEczZHBxVEdmTEtXY3hZVmhaam9IUlhWUW94dEl5VXV3ck1BSkI4Z0Rid1ErQ2x5d1laWmxSYU9OeHdGZGMzdHVrNG85dlJldGhTQVFzVUpBUTZROUNxdWxwMDZkR3Bzd1ljTGg5UEhqSUl1SzVtNlBkUmNoTm5PdXVWQS9TRlBmcDVXcVl2a2k5UHlSYUw5bFNreXBVQkhYSU9yMXdzMyswejluYjczbk5XenZhMCtleVdUYW1wSzBqNzdOVWlyUEExNlZhVDhaQzl1RHNIcnV1ZWRTaU5XSFE2dUtnRmE2RklEb0RZQlVBQUZYTmNJaElnb0twREhzOTdYYlQ2TGJMenFwM1ArWEwxOSsvNlJKa3g3cnNTZDFSME4ydmhFdTBBaGdST0EyUVRNRnRMd0V0eVM0bTV2SHpkTFJGZWVlZTI3ajhPSERwMkxWS3oyUEpSakVjQU1wenl6SGJQODY3ci8vL3U1RG9tZWVlOW5Fcno2S3JwZWpNc1pMWUVkYWNUQkFJZExzdUtyVVhmZTJOcEZBNWFSbm9POXFrQU1ZRGRYV3JCb0FxeWplRkZqU1hPdlArSExOV2lxTTdVVk9xbW1NOHNMTmRsZktSMFk1VUdlQURLWWlXWGtKbHJiY1lWS3VnNklKbzBKTUg5aTJIWXNLWDVTUGluMFo2VzYwVnJyUWkyaVFjUTFrYU1xM3h4aWtsSVdiZStyVXFYVVBQZlRRK1EweFBzUmNQeE5rVWluOEFuQWxBbFovWk0yL1o3WnN3K3c3Y2NkTnY0S3hJYXNpY3c3MTdIdTl4aDNUNE5ScHFvZlhHTWh6eEF0Z3dVcnJpYnRmazl2NmVRTWpLc1lEVzE3dS9WOWh3TEtCc0FabGNTT3JXNmlyQ01BeTYwNW5rZlJmdDJ3MjJ4cXpNTHhFM1drTXdtQXU3RGlFd1VyUEM0b0F5TTIrSExuWmw1ZTlGMGNDRjgyL05FcGZuR0UrRWpTQktVZWxMVjBRdUMyaDU2VUNYMWhuZ1lJV0VnQnd3UVVYTk41MjIyM1h4NWtjS2VjL1hCNkF2aG1JdG1YeDFJOFhZRk5RalYxOTU4eVB4QS9PT3ZPN2svL3BFZDQ5dDY1RWZ3ZjJnN0dlY0oxeWdENEJFQnY3cWZZcUpuNUJ6VEsrQlovUXVPRTlDb0F0TFMzVElESkEram1RZEhQRkxHOHFJM2V3dXlYVkNGUFBwMUZ2S0IrY1VBNHZsblRBVFZITVR3c0FaM1JqNUNCWHFaWDhta3dtT3hzY0RQSHl2SWk3YWc4cS9ZWEFJUnMwbFRkbE1CQjM3MHpiTldsdG91OTk3M3VEenpubm5DT09PZWFZcjVHZGdmbm16eURhMyt3QlBnK0d6RTJtdHJJeWQvVmQrU2U4MjlhT051ZjBMaEV2TVpzNUF4a01UbHlIaUx2N3dKVFBwNUNlUVZSUWhqUGZzdDZwd3NjVitoMWpqSmhOUFV6M2FoV2JZNVlFUUFxLzJMYWQxbUxqNjVCYzNXY0FrdE56YktvWWZUeWMxbmt1N0xneSt6anpUVEtLOE55NktzdTc2K3kvKzgraGFacGJZV0VFWlNXNFE5QnNnbTRLYUtiNnpBamxFNC9WL3RCTk45MDBjdnIwNmNlTkd6ZnVVdVF6a1BmK0dMUWhaRW9yN2lwN2pVRkdHUEk2Uy8zaURlZjJjdGYwbWo4K3VtblZaSHpsOTVlZDlSUnJmV1p3RDlqNWxIRXdTRE51MzBNdkJ0NTdvYitkWlM4ZzFBQ01BTER0azREZ0hnVkF6dm1SMVAwQjBHYUNwOTFaUGZKQzVjTnBibzVWWXdTcE1UZDExbSs3ZGdpemxGbkx1a3dGU2hIdVcvTi9qc0NLWEhjOFJsNC9CNXVEalI3TmgwQjJ2MWFjMnNoUnZqUVoweUJkMDVjWUswd1VRRUFoYWpkeTNFVUgvZWw3Zi9pRnpMVEJXdkU0ckxjdktwa3J6d01URTZUTVNadWdaUVcwck1DREM4VGRzemNXaCtWMWRuWnViSW1PbnloemF5QWpyc3FMcUp3dDRnQkI3UU9GbU5FZ0lHdFMrejN6c2EyS1hqejA1azZuMDYzN09KaFVOUUFEbnkwMWlXZzRmT09qZ2ZiVlZadStudUpsb2pTeG1qRkdtWG9OVG9NUlVKNjlUenBSVFhFRXBhOTRVYTRJTnZKbzVDQ3dyYTlBc3dtOHQrbTFBc0dNNWk5Yyt2a2YvL0RIZjBWbkcyajJUTWg3djFrRUpsT2RuTlNWaWhWUkRxbTUvbHlONFkxTjRzZjNMeXZKc2V0eGJ1OTdIMTMzZmVmUlkxdnZPSDJXdnUyNThjVENUV29XK0J6TnJ6ajRwWXVOZnpqcFB2dk5LclI1ZjBDb0FSZ09vSFZYUTNCUEErQTBmTFFjYkcwYU1EUlFUQTBSazk0a21ZSmdwVVQrZ2JmNGs1ZU52ZUJpZkhSSHova3FaRS9vbFZ3V0NSdzBCSU1CYkFwZUxBTEFUSUtNY1lnR1EwRkhjL09pM0NRTUlpcWQzOCtWZFBiYSsyR3Z1YjlrZXdXbDUyWHp1OURUTTByWk1rbDRaUU1lL05jNVdPYmZ5N2EydGcyRER2dm5pZmFhZXdzTkF3UlFJZkUzRVBGMTk0a0FNQWxrdTB1VGtQc0tRY1lZWVoreHBlN3Jhbkl1M1RMc1M1Y2VSay9jTVN2c0dnc240QkVLMnhNR1NCY0dUb1RCTVRqZXk5aGIvQW93bjg5L0xDMk1rTGwra0k0cXc0b1JrTW5KbFVHSU04WW9tcEdncEt3ZWZQN052allENHZVWnhXUFVGTnljQ0lNVDRaQzY2dUNrbHpUUEdDQ0ExVzN5aHE4L2FyOVZoY2xKQUdqNFpZOS9ZL045VjkwZS9YREdDU3drSVpyOFk2RGRLUFhrTVJOdUJaWit2Zy9kWFY5QnlLREdEcmZ2U3AvZ0hnUEFndjh2OFNyay9nM3FBaEhjV1ZiY2pQaWN3TEwxdE9EeTJ5NWZlZkhLMTFPeDVYYzBsZ1ZmR0FqZHp4T2JzUy9VZzNvS0Z5K1JTTFFQTS9oNFowak03WGw1MFdsTUlUNjhZRkREQjBhU2J1UlVxQWlnbnBYUThrSkIwT2ZiZkdJdDdqcGpEdjRldkhIV3JWdTNidnlvSStDc0RGZDRKV2EwVktwU3N5UTBVMEt6Sk9xU2tzb29zR29ocUFheTJlalRISU9GZlpzM0EyTGVqT3IrNDhFQURFSm5jQXkzNnF3SUFyVk1qem1nK2RDSmNEYk1xMzQ3RlpaaEFMZ2thQTdCc0FoZDNiUWlhSEpuczlrdGpRS2ZMK3V2NndXSWtnTlNaN0FqSEhaRXdZODBCVHkxZ052UnN1S09MbWtUVjA5N3dubXByd0dLMFJmZmN0bTYyNzkvYmNPYSs4OEx5MHRrckRSdmtabHJtbGI4MjhUTEQ3NzV3eitnVDZudmZZSWxnM280V1NkMlVYUjRqd0ZnUzB2TE5EZ1p5TlRUS3NpUnRwVjU2NlY3dUEzeHVjVllCRUMrMjBxdmZhbnB1RlBRUGpjd3Uwbmd2WjhkbXNxREdqMHFmakNRZXRwL3dUam5VdTV6SUp5dGJzNWVuc29EamtwQlN5NkF1YU9DRnBvcG9XZFZGSkE1WHBhOXR4OE1HM0o0OTlaRk5QT09GWVd4a3lVMzBkMTMzNzMweEp2KzNhSWNSUW8rd0lJSnJZQ24yeEs2cGJhbE9lN29DM2VmZUQ1MExyZXFJV2lhWmtvOXFySVg5ZGVYejhFQU1nZUV4bUM3d0xNOTRKVWtHSmVNVlJaQkU1Z2NVbmw1MUhmbU1WZVo2d0xRYlZMVklYQko0QVRrRXRnYzdFUTQ1NFRoWTlWNTZXMUdGVmRwZWNkb1J4aUVxL2lrQjNVUGVNRzlaRURLa2k4L3M4YTU1ZXAzZW1Rc1ZBM0NzVmZjZWNPV0Z4Nkk2MDllZkVaeHBBb1ZWV0JnbjVzanllOWROUm4zM2ZJK0VuMElkUFQxN2lBQWc2Rm1Zc3FoL0p6V2V4Y0FPZWRIMHBaRjBOWm0zTmxLZk1yT3ZRU2RhV3krZmc0MkFzQjExMTAzZjg3di8vVVVlbTV1Q2ZqSUQwSG05cklSRG1KTVJWUXR3aUFqUCtyNEF4Q2RzeEZaLzRVaW9mTGZTSlpUZWxTcUFvVktDdFljcGI3MGpBQjNUVnYvYlNPWnEyNmlHbTVlYVAvcXVyY0wwd2VGM3J3dnZQQkNzdlUvZjd1Z3lSajNaU1JXZ3d1M2dWb1NtcWxVQ2hQRmpQNmd3bTAyNHVQVnREVlZtU2M5M3VmeitSVHFCcFUzVlVOdWUvL1A5dWUrbVRZV1B0WlFNc3JETldzZFhjSE9NVndnK0lIbmxMOC9WbmZBbjZwQnRtMG51ZVBtUzFhcC9MZ0VOS0ZBWjlnRTNRRTA2VHVQdmtQYWxzWG1ZQ2ZDbUpvZm1zcnNwMmUrT2pxRDVRSlArSUVuQXMyZGhZOGVtYlBaUHVQYnIyUFpBQVFnY05mOFZiKzk1cXdIejBqOStkdUZiZlI0WktyM3ZkVWV2ZWdRL2F4YjNuZnVyTkwwM1JFWTFydFhmS2NxUWI1SCtmKzJyQUR5S3JJS3oxZmt1S2FZRFN6ZG90UWZBREYzN3R6MHBvYURsNUFGa0FXUXJWN2hNRWpPNGNSMDJIVUdKT2RBam9BY3dlRWFyRG9EZHR6QStjZHFFMUFjNGk4Nk96dmJwQVBJUElIY0t0MUtPZmU3SElFeUVpd3B3THNGSXEwVzRsdE54RGRiaUc2em9TVWxXRTVGVDZYRFlHc2FzblVHMGswR012VUc4Z2JIeWNlZmREUUtIc1hDYTQvMzg5OWY4bnJqb1JlaVladU54cTAyNmx0dHhEb0ZqTFFFenhHWTVaNGZyOXJGVnlPWGl6NTBDQTROV2Evb2Jic0FoS1pwRW5WTmhYTmFPTDhWS255MWs5Vzl3NDY1RkZJQU5qRmtkWTVrVkVOM25DTVo1Y2pxVEkwMnRFbDFPRzZWRmVxVHJRVUFDZ0JTQ0pGazhjSEYvUXVwekFTMExDR2FJalIyU2d4cUZ4alVMdERZSmJGdUcvMDJQb2VtUkY3RkZHTWVqakxtNGZQcmt2amp1aVQrYUpyWSt2Z1dMQXRlcDJ3MisxSEJOZUJXNlFBV0dOSUdSM2RNUTFlZGhrU01JOHNaVEFJY3AvUTQvTWRMWnVDOVd6OS8xTmUrN3R1dXY0ckFlNzhxRG40bkFZaGYvL3JYWGRya0U3YjR0eUc5Nm4yWFY2OHNLekdNRGJrd1pOdit6MVJoZjNwYkp2aVo3WFN1N0VuK1A2eDVwYVFoRnlEb05ySkgzOGQ3L2h2eTdjVXIvczZPK0RsSXVOQ0xHN0FhREFoTkE4c1NlTGNEYVROWU1SMW12UUU3b3NHR0JrY0FCdzdTOS9OZkRNYVk1STM3Z1hJKzhIazE1MEl2SVJCdGN4RGZhcU51czRYb2RrZEJMMDhnR3hCZ01BME5tUVlEcVNZRG1aaUd2TVpoU3diSEFZUUY3Ti81Nm9sL1BPc0xFM3FENExubm52dEJidFNrOVViS0JaNFpEanVFd2NrQnZuN1VGNjdzQlhpVklFaUYxQnFudE1IM3FMN2Z5UUVjeWJCMXpwL1haWS83ZW5kM1hFTjNuWWFVd1pCbmdDTUE2WWVlcldvQkRuYWcrbUFSYlBoRVJLeXV1V1Jkc0FqY0pFU3lFdlZKZ1VGZEFvTzdCSnE2QmVJWkNjTWtjSGVmZlFxdmNBOU1lQi8zVDNnZjl6VzhqVlB1N1VaM1NPTWxqTndQRGpGa05ZWkVsS096anFNcnhwSFdTNEVYUE1heXgycjFyQTJybnYvMkN4ZWVPS1VNUUtvQllja3l2SzVCYWlPT0xRTFhmV1U1QXM5SUdDbUp1azZCeG5hQjVvKzNENS8vT1J4V0pjQW9aTjlrajNOV2ZqblVBT2o1Lzh3TXNPNnhJdkFDeXE2ckd4L2R0Umh0L2d0Kzk5MTNMN01PT2Q2eUdndzR1ZzdrQ1BwMkJ5d2pZZXNhOGcwUldERWROdGZnQ0FaaG9kRGpqVzZvbitSZkYyT01TQlFWSUxJU0xDV2hkU3JvMVcyMVViL1ZSclRkZ1paV0QwK1hnc0htSE5tWWpsU2pnVlNkZ1V4Y2g4azRIQUU0cm9rbXpXSlBpenpoWDRZNy8zN1NFTVI2ZzlGZjNsOTVGNzUwS2NncG5vZmUxSmNIeWVpNkJjM0pXMzh4WS9yMDZmRytRakNmejZjS0FTQVBjazRJK0J3MVo3REZHZElSanU0WVIyZWNJMldBdHV5ei8wdzVacXBTZWVXVW8zdU4vZXN0VVhIK1l3dzBlaUZFVXMxeENPZzVRbDJhMEpTUUdOd2wwTnd0MFpBaVJISUViZ0hNOFIyRFd6WHFlOGVnYVpyTWNhQWp6cEdJY21RMUJwc1lwRkR3TDF5bmtHTXNlNXhsenMyaFRzZmRQOXdYRFJWQTFCdWNKQUQ1MUZOUGpZNUVJdnVSUTRBRmFEbUNrU1hFa2hJTlhRSk5uUktOblFMeHBJU1dKd2dCREk1aHYzNm91ZjRzVndOZ3dmKzNjVkhKRFZGUU82N3lXZDZHOXdESWwxNTY2ZWo1OCtlZk9ILysvQk9mZi83NUc2S2ZtUkxScmJIZ1NRRkJETGxHQS9rNkE1YXV3U0dtVklkUDVpdDFCelRKN09nVDlvTUhCNUhKWk5Ld0NUd3RvWGNLeE5vYzFIOXNvYjdWUXF6RGdaWlRFeXc0WURCMURlazZIY2tHSGFtNGhwek9rZmpNdDlZNkFoRGVOa3gzNEh4ZW1SWjZVaUxXSlZDLzNjSGdGUXVqajV4ejZxOTZhM2hYWG5ubHFzMlRwODB0VWNTOXFURUJTRGNQM0hqaWhuMGYvZEloajY2WS84YlpzMmJOT2p5NGpXWExscDNlMnRwNjdkS2xTMC8zYjVjeEpsSGZWQW8vZDkwazFkdWNwNEJpSEYxUmpwVE9rQWNnQkNGbnl1U05OOTc0TkQvbXpIWnlDT1FRMG5tNUN1ZjhZWEg5TjI4cXFoLzNONzlDVXBQVEZDczVoSndwdHdiVm1tbWFpWGlzQ1lPN0JJWWtKSnBTRXZFY1FmZUFKMEtxNy91RVZhcndYbnZ0dFNrYk4yNjhjT1BHalJkdTJyVHB3bncrLy94VlYxMVY3Mi9FcG1rbWhIdU1KZnRmcHZZNGxpTy92YmpTc1pmOGYrdWkrSTlPUCszUk1MTTJDSlAxNjlkL0paMU96MmhyYS91K2Y1a3RXN2FjZmZMSkp6OGlPdHFnTFoyTCtvUkFZN2RFVTVkQVkwSWltbFA1cUE0WU1ycUNlaUxLWU1aNTB3NG92dDVVbnd5RUsydFJZTTc1Tkd4ZW9ScWM3L1FRVTRtZ0lxTGg2UDllK1ExNjdNQnZBSUN6NkVXd2RBcDRaelB5TC84S2pyMGVNcTVEY0thU2hLVXZaMDc2eHVINkxnMUp3bm1IODRtelA1THZBQ0RHR0JsR0k3U3ROcmhVa1Z0eW83YU9CdGdHaDZNek9Od1hyUlRGbkpTVjh4NWM4TGxMWmd4eC9ucjVZRWFBNWhCMHkzVzIyMjdnd3VjaWJsejB6UDRyenp2eG9nbC8rZHM5bGFKNlkwNlpmbXZtVDcrZkhQbmZIemVYYzNsTERnam1CaFJJT2ZZMXg1MUU0ZUViTU83aEc4NCs2THJISUpkL0FIYnc0YVgvZlhZbTJGMDNOQ3laQURwc0pSNEJnRXdtay9USGtTVURIQTJ3ZEFaTEEydzNlRkZJeEJhbGdRaE5RRDd3d0FPSjdITVBmUHMzQjdNL3ZOTkZNODVianI5dmZXVDZOZlRDdzRlWEN5S1VUVThSSmVHd1FrUTJVdGNFMmMrTXN0TVd0ajVLKzdTVWZPZXNXQXg3N1ljUURFZ21FMjNmZi92V3Y2YUdZdm85SFdwbUc4YVk1SFZONGNFYTF2dmh0TTErNE1VeFYvMXBlSGJHSmNPcjJzbjNuNTZ3OHRLdlhUOWh4ck8vcUJSY21EbHo1bXMvbUhiMFhmeU5GMDlKUHYvWVR4dS9jbVl4SVBYcWkzRHUvejJha3JJd1VrVnd3TlFZVEVQZDIwSmpFTHdZZERUejZFYlBXWlA2RWV2dmRhWk8ydXNCV01qL1c2YjhmNUtySVUwaW9rRkV1RXJ1dFFuaTVnblFjaEpNcUFidlJEaUV6aUVaQXpHdUVwUWRCYllnNkVyNkc2SEdibW9PWVNLeE1WQVBlUVpqVEdxMlNuK1J6STFXZXZsb2JwNmE5S2RuK05jcENmazBVcmU4cytIblA5MzMxRDhhQzU5Z21pQndpZkRKSE56M1kxZi83ZVJudnZQTjkwKzk5N0VGbFNCNDNzc0xMbm5vOEZNZjB0NTdSaWNQZUZ6ZHZPUkdOdzJiRUpFb2pRejdRZmZMYjVhOVpRY0RrLzh2aWJzODVLVlNxUVNHRDBhZU01ZzZZTGtOcENSaVd5bnRqYmdFcEpqVmljU3NOK2w4YjB1WlRHWnpWS0prcHV2dy93TWFBUkVCUkJ3QzJUM1RlcGlYeU5ZUEhVRUFyT09IdythQTZVTGQ4UitmNjVtUmtwYmQwNEh1UXBDWGN3SUJKUHJ4cERXbEhMdGVqd3c5ZmNvUjArYzU3ODdpMVVBMHR2aTVDOTc1NVJXdlRmbVAyMThxZDQ5Y2M4MDFuVmQydEM5emZ2RGxTVndBbVorZkJjUE5FdkJ5bmdWWDE5R0tBQTVuRUF5UTNtT3dCWldjeCs2Y1hCOXlacW1ma0t1aW05dUxUZUNXbHBacHlHZGdiWHNDMmNFeFpJZEVrSzgzNEJBRFMwa1liVFlpclRaNFFzSUJSeTZxSXhmVFlXa2FiR0lRRHBSak9lK0w0SnErUUlZSmtHdUdha21CYUplRHVqWUhEYTBPeGd2amNBOXBIMzMwMFRiQmdGUk1RNkpPUXlxbUlhdHhXSkxCZGdJUlM1UEE4Z1E5SXhGUENEUjFDRFFscFB6ZDczNjNkZmxoWDduUGFCZ0hidlgwbHhYTU1GODlhZFBiMS83M0tjZU9xV1FPejVvMUszRnYwOWdmcGlkOFVhWWlEQm1kd1NFZ1loTHFzbFJxK2ptbHBsNGxNOUJ2M0x4U3pIc1RtcVpKdTZFUm5SRWdyUUVXQ0VJU1NMaFZ1bFdVcVU1aFlvaVNZMktNa1Q1eXZ4NEdFWk5LNVVVc29DRUhERWtUOWtrUm10T0UranhBVm5IZnZIOVpsdFVOcW5DY2dTcWw4cWlrTmFBenlyQTl4dEFaWmU3eHVjOC9DL3duYmVKTi81NTJkM2R2TE9ZbzlxTTZ3UFRwMHpkWXA1eC9IUjg2UHR5akY2amtFRnJlZmZhK0Y3OS85aUdWekZGVE4rWU1tWHdtR2pPRXFFbUFVTGRlU2dlNllneWRNWVpFRk1oeHBnd3RDdHlMN24wcWJOcDQwa0xsYnFyU3ZLVXFsaTIzUE8zMUFPU2NIMmx2L2dCbVJJZTBBWjZRTUZwdFJMZlowRHNkU01GZ1R2NnV6TVYxNUhVT216RTREb093U3ROVjFIczM2T0NGOVRNU1dsSWkxcWw4YjQxdEF2VWRLcFVFRmlFT2MvK1RtNVVmVU5NMEtWdjJWVGVJS0FKUFJmU1VMMUxMcVpTS2hpNkJRUjBDelowQ0RkMFMwU3hCYzFYS1A1Ny9uV2ZhVC92UmdsQVFPVDFoeUxkdlpOK041Vy81MldtbkRLdVF0aUorOEorM3JmeExJblpadE9WelZtT2FVSmNqNktiUDMxVkZZd291Sndtd0dOQUtySG80VzBnemtZeXBtZjZJcWxoZlNOVW9ORUlwT09kcUpLSDdpK1lBTVJOb3loS0dwZ2xETTRTbUhDRnF1Mlp2TVFleng1NXd6Z2tOVFNvMU02UktBRFlETXJvQ1hsdWNZWHVjb1R2Q2tPTnVxcWxVKzFLdWR0bFk3QWN2NTV6MDRhTXEvcWRTZForOUxNZWU5TFg3OVhOKytuSzEvMFA3QmpheGM5M3pULy9zUi91Vjg4MmwwK2xGN0l2VGtOT0FSRlFCcnl2R2tJcTRFWGh5ODF3OUgyT3cwM0k3dEp4Ri8xTUdYT1g4ZUdHZ295cVhyeWxBenZrMHVYRUZJbTAyb2g5Yk1Eb2NrQTNrb3hweWRUcVNqR2RYVHpyakdWRTNEdEpHVDlpWkJIUEtMOWV5NkRqSVBJRmxDWHBLSXQ0cFVOL3VvSEc3ZzdvdUFUMmpvcEVtR0RJR1J5S21JUm5qT0hzQ1B4U0E3T3pzVEJJVkkzT3dDTXdrR0ZtSnVvVEVvQzZCNWc2VldsR1hKaGg1QXJOOWpiNDRXRitNdlBEUy94RGZ1eTFiVVhsNVFRVUJzRFVMOUt2UmV2UDBSdFJWU0hFUVYvN2ZuSlhmZWVHOU04ekRUbW9OamJPSlh2cGU3NUhHREVqcURKMFJobzRvdzhjYVZ2aTNzMnpac3MyQTJ3RGRmZXhUWXk4K0pVVUdGYUJHcnNyTEVQWkpFd1pubE1vemJEWEtwV3h6QytCYlBjRGQ1eTkybjJPVjUwRENBTnFqd1BZWTBCVUJzaHJCQWJudWtlcHJldzRiL2R0TnA5T2Ruc3VqVnp5RUk2UHdqMUZuWFhoZS9TVzNwU3AxSk53QmRCdUkyRUQ5aWdYR3NZdmZlUGIyUVdnS1cvdnMyYlBuMmhNT1JtZUVJYVVCZWVhNjFNT0FXcVpERXc1dG1QUU9idTZubWd0K1IyWEFXRk9BUWY4ZmUrOFZrRWt3SXhxeWNSMjVxQWFMY1ZpQ29TMUZTMzcxbjM5NHpwajZFOXRUZHA2SnU3MWJMcjErbm5YRjRuMCsrMnpkbEl0UTErV2dvZDFCWTd0QXZGdkF5QkxJQWZLTUlSM2xTTVJVSW01RzV6Q2hsTjdvR0kwRklMWnUzWnJpZGZWSzVhVWxHaElTelIwU2c3c2tHdE1xWXFaWjVZR1dGa2o2SWZKbkdiK0dUVHd1VklGSktxcVQ3Z2hEUjR3aHZlMjlvWmNlZ0pQTFJQMEs2MzNVUkhmalF5K2QyWGJRbDE4TS9sb09TQ3BxcTdiVkhsUFFTeG9LRm9LQWxGMmFFMmNZaHRDSGpRaFhscUhHVUNrNHVreHNDdHQzeTdLNjR4SVlsQ2ZFYkVBVEtBemZxMVF0V2JJK0NVRG04L2x1QW1CeElHMEFYVEZnZXgzUUVWT2ZMZTU3aUYwL3FwQkluclVPSC9pdlEzdDdlemV2YXdnOTVtcXFGT2p5SDhlMm80NmJyaDg4dFVTNmNra3dCQ0ZtRStvdFFuTk9kUkpOZVVKODVkOUhuREVNNTRYQjU3enp6dXZVRDVxVXJFYTFoOTRqZ2hKclV2aGFIeUhYVnpDR3dYSHZCV0JMUzhzMHltZVFXVDhMT1VPRHlWVFNzTEJkRTljaWZOd3AxejM3N0xQSjliSFJUN1BZdUVJKzNkTE56a09IelhTdXYzTTF0bjcxcTE5OXd6andDRFBlTGFIblZDNVRUaXVPUGtpNU9Wc20zR1RjUXZvQk1ETGFNTmxWSjBLTE5XQndsOENnaEVSZFJnMktEMDJwQ0ZGelNic3dZN0VBSUMrNTVKSVBXOC85MGQ5S1UwZUFoS3U2T21JTWlRaERtbE42VlpMdTJlOHRtanB0S1I0c28rZDY1S1h0KytUck56emNqb3N6KzA1YVJWUnFycEpVQytVNDBPVUN0alBDa05hVnlWc0FnOXN3a3lZKzhtK0xNWGYwTWxYWnVIMjNNNWRBeEVaWU01U2NjMklOVGRWRktmenJwQkpGS2FCR1pYU2JUWTNZSGdPNkkwQldLOHhiTVNBMUwvQjZVRk56emlXdmIralgrZ0FnUndVQUVnQjUrT0dIdngvNy9pOGZaUkl3QkJDM2dTWVRhTTREZy9OQW93VVl5bmVaYUFPdWo2NUM4OGcxdUtVY2lHUTBQb2NQRytlN0x1WDhBNlhYVGtqYTBKbkh5U2V0d05vcUlFZjlnRnc1RmJoM0F6QWFqYzdjL0lNaDM3S2xtNjluRmRXZEI3cGIzaEV2QVpDUFBmL1MzRzN4UTJaSGtoTHpQN1J2UG5HMm5PVnZGTkV2bm5CV3Q4NHlpWmhTZW1sRCtYcHNxYVpnS2lTZU9tcUlsSkdUcUU5TGpPNUtqL2xHSFBFYmI3eHg2M1VUaGwrazJiNWdRZ1gvV2ZCN1hmWU1YdXg3OHFtL1RWLzIrNjdPcUZKZVhSR0dqTnRRSFpNK1hyT2RiaDc3RGs2WnVnSVBvUExJak5EZnp0K081YzJ6bDUzL1NqZXU2REF4UnpBZ3F3UGRVYUE5cGxSUlZpUFlJQlVsTHdPdWhTa3M5Ni8vaWl1dTJIVGpZY08vV2pLV3QxekRkcUVYZFlCQmVXQm9GaGpxaEoreDhlUEhQN0xxZ3E5Y1YyMFdHU2xmUHZKYXlWQXZDVUFlZGRSUnI4ODkrMHZuRXZWZjVWV3FwaWdNdXl6cy82bW5ucnIrNGNuRHY5Q2Y5WkVFRE5uemFJY2RmZHlsUTc1NzgvWWhXYUE1QjlTYmdPNm9leVRKc1hFRHd3OEhyY0wrKzYzQ0xiMzU1bks1M0JNNDRMQmw1VHFTc0pwMzZKWnhDM0h3bEtWWVdJWEpLaXZBclJ6OGV2dmZUaTBNdTMvUkFSd05OVmRZeFlIVlY3ZWdaWElUUnB5ekJoK2dIeE45aG1pTWFuN3I2MzlMdnZ2TFgvNXkwTlQ1czJiUTM1L1JkUWtJaTFhdFN1TEJhUjloTHZyMzFLMksrejF2SWk0QWdDRTZwalFZbU9JSFdDSGZqWkRhYXVKL0FHQmVPMTYrcmgyYnNlUFRuKy9vL2xlempmN3VSNlhQZlozN3JpL0xWYlhzNnRXcmp4aDl3OVYvRTI4OWJaZ2FrR0g0b0V2aTFzOStpQ2Y2bUU1Q2l3N0I5SWlHTVRyRHhUckRtREFhV0FMM1MyRDlJVXZ3WDZqK1FRZm9RLzVmdFdrdnNnYkFJZ1MvQUtDbEQ0MW1SeHJjamdDeXp4QzhjemdPT3IwWk55eEo0ODdqdDJEMkRrSnVkLzU5SUVBNWtIRGFVWUR0TWlDK09SNlRSOFh3NTRTRFh4NnhBazlXK2YrcXdkaVAvMVJ6bkxzRjVENE5BQVRVdE5sSFFqMC9vTitLYXpmNmIxL1d2U3UzM1IvQTd5b1E3czVxcmk4SnZ3T1JIRXdERExrZFZYTzdMZVErTFFEMGZKWkhBQmk1bTBKd1YwTnliMVp6bjVSS0cxRHpkaWNvczRGUWM3dXR5YnEzQTlDRDRHRzdHUVEveVhYdkxoRGJGV3J1azRiY3psQnpPd055ZTZXYTIxc0E2RUh3WUtobml1NHBFQnhJSmRtZjN3Y0NsRHNLd3I0c2d3RmUxKzZpNXZxanlqNlZBWWdhQUhjY2doTjJvUkxjMDAzYW5hblU5c1FBeEk2cXVWMWxzdlpIU2RZZ3R4Y0EwQ3ZqZDRJU0hFaTF0cXNERExWMGt2NkRxNmJtYWdEY0k4dG5kb0lTL0RTcXViMCtuZVFUVm5PZjJuU1NHZ0EvK1RLbUNnajJSYTNWMGtscTZTUzFBRVFOZ0h0VTJhOE1CR3RxcnZkbDhtNGR0QWVwdVZvNlNhM3NVTkUvWmNmakRkb2ZnVm82U1YrV3NZRENOT2NNUU1OT2h0ek9VSE8xZEpKYTJlc1ZvRmRHdUxVM2s3Yy92dzhFS0hjVWhIMVpwamRZNUFFa0FyODNBb2p1QUx4cTZTUTEwTlVBK0FtWDRWQmpoM2NYdFRkUXNPelB0c0tXa3dEU1VNL1ZDeXROQVF1aGxrNVNnMXdOZ0h0WWFRR3d6eWRvOXZhMmpIQ3ZBY091RFVEa1hmaFZLcHByQ3JPZFpMTFcxRnl0MUFDNEM4b3dBRU1HV00wTlpBQWlqWjN2YzZPUWh1eE4wRnFwNkFEcUJrajVEYVNhcTZXVDFNcUFGSDB2T01idDdnMC9HTHRuT2trZXl0L0dCeGh5dlNtdWVCVXEwQUdRUTJWLzRJNnF2NTJsNW1xUXE1V2FBdlNWZmFEOFdqdFR6ZlVIVENtM1FUWU9BT2k4R1haNWxTQ3lYQUQzVnFKdVoxbExKNm1WbWdMY1EwdTcrOXFBM1d0MkVoMUEwZ2VadnF3ditGNUNCVFZpVlc1ZmQ2dlR5N256QWlYVmdMV201bXFsQnNEZEdJS0VVci9XSnowN2llYSt6NkxvQyt5UFdlbXBQOHU5cnJ4SzVXV2crSmpLU3NWMjE4dXdjd01RRXVIUHFxbUJybFpxQUJ5QTB1Ryt4ckQ3akdmVlhNQllxSng2MHR0NnBROVdrVDZZbjNyZy8rV1VsdU1ETnFvOC92Nm91UnJzYW1XWEZHMHZQVzdUcDVLQ1Q2cnlLem4vOTVaUC9WUmFydHhUclhwN1VwWnczeHVvN2xsaVlWRHhQeGxOcTZCS3cwREsrcUhRcUlyMWx3UGRMbjhDV0szVVNnMkF4Y1pwdXJCaFZjSXJnOUtjdmJEbFpDOE52TnlvRTNMVlZSQXVxTEE4bGZsTytENnpDZ0FPMndhdkFsN2U4YkYrUXE0R3VscXBtY0M3UVpGUVE4QUdvZFM1WHc0OGx2c2FGa1R4Z2c4UzVmUG1LcWtrdjg4cnpIeXR4b3dOdmhmdWVxdjEyUVdWWUc5RjFKcFByZFFVNEo2dkJPMkEyUm1tbUJ4M09ZbWVrVm9US29BaFFuNnZaTEtHUVpRQzVtc2xXSlhiWHhtaTFGRGxQZ0UxLzF1dDFBQzQxeWxCNzF5VU05ZXNnR21wdVo5ekxoaURaaVR2ZzhrYU5Ca1IrSDl2Y3dwV2dtSTFDakpvcnRaS3JldzFoZFZPUWRuT0lNeTM1NVdvVHhFaUJJQTdBdUpLNittdk91TURzSTVhcVpWUFhmbi9BUUJOZTJTb0llUitjQUFBQUFCSlJVNUVya0pnZ2c9PQ" }, { name: "__ASSET__:bitmap_SponsorLogo", data: "aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURrQUFBQXNDQU1BQUFEbzNlQ2ZBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBS1QybERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk5uVkZQcEZqMzMzdlJDUzRpQWxFdHZVaFVJSUZKQ2k0QVVrU1lxSVFrUVNvZ2hvZGtWVWNFUlJVVUVHOGlnaUFPT2pvQ01GVkVzRElvSzJBZmtJYUtPZzZPSWlzcjc0WHVqYTlhODkrYk4vclhYUHVlczg1Mnp6d2ZBQ0F5V1NETlJOWUFNcVVJZUVlQ0R4OFRHNGVRdVFJRUtKSEFBRUFpelpDRnovU01CQVBoK1BEd3JJc0FIdmdBQmVOTUxDQURBVFp2QU1CeUgvdy9xUXBsY0FZQ0VBY0Iwa1RoTENJQVVBRUI2amtLbUFFQkdBWUNkbUNaVEFLQUVBR0RMWTJMakFGQXRBR0FuZitiVEFJQ2QrSmw3QVFCYmxDRVZBYUNSQUNBVFpZaEVBR2c3QUt6UFZvcEZBRmd3QUJSbVM4UTVBTmd0QURCSlYyWklBTEMzQU1ET0VBdXlBQWdNQURCUmlJVXBBQVI3QUdESUl5TjRBSVNaQUJSRzhsYzg4U3V1RU9jcUFBQjRtYkk4dVNRNVJZRmJDQzF4QjFkWExoNG96a2tYS3hRMllRSmhta0F1d25tWkdUS0JOQS9nODh3QUFLQ1JGUkhnZy9QOWVNNE9yczdPTm82MkRsOHQ2cjhHL3lKaVl1UCs1YytyY0VBQUFPRjBmdEgrTEMrekdvQTdCb0J0L3FJbDdnUm9YZ3VnZGZlTFpySVBRTFVBb09uYVYvTncrSDQ4UEVXaGtMbloyZVhrNU5oS3hFSmJZY3BYZmY1bndsL0FWLzFzK1g0OC9QZjE0TDdpSklFeVhZRkhCUGpnd3N6MFRLVWN6NUlKaEdMYzVvOUgvTGNMLy93ZDB5TEVTV0s1V0NvVTQxRVNjWTVFbW96ek1xVWlpVUtTS2NVbDB2OWs0dDhzK3dNKzN6VUFzR28rQVh1UkxhaGRZd1AyU3ljUVdIVEE0dmNBQVBLN2I4SFVLQWdEZ0dpRDRjOTMvKzgvL1VlZ0pRQ0Faa21TY1FBQVhrUWtMbFRLc3ovSENBQUFSS0NCS3JCQkcvVEJHQ3pBQmh6QkJkekJDL3hnTm9SQ0pNVENRaEJDQ21TQUhISmdLYXlDUWlpR3piQWRLbUF2MUVBZE5NQlJhSWFUY0E0dXdsVzREajF3RC9waENKN0JLTHlCQ1FSQnlBZ1RZU0hhaUFGaWlsZ2pqZ2dYbVlYNEljRklCQktMSkNESmlCUlJJa3VSTlVneFVvcFVJRlZJSGZJOWNnSTVoMXhHdXBFN3lBQXlndnlHdkVjeGxJR3lVVDNVRExWRHVhZzNHb1JHb2d2UVpIUXhtbzhXb0p2UWNyUWFQWXcyb2VmUXEyZ1AybzgrUThjd3dPZ1lCelBFYkRBdXhzTkNzVGdzQ1pOank3RWlyQXlyeGhxd1Zxd0R1NG4xWTgreGR3UVNnVVhBQ1RZRWQwSWdZUjVCU0ZoTVdFN1lTS2dnSENRMEVkb0pOd2tEaEZIQ0p5S1RxRXUwSnJvUitjUVlZakl4aDFoSUxDUFdFbzhUTHhCN2lFUEVOeVFTaVVNeUo3bVFBa214cEZUU0V0SkcwbTVTSStrc3FaczBTQm9qazhuYVpHdXlCem1VTENBcnlJWGtuZVRENURQa0crUWg4bHNLbldKQWNhVDRVK0lvVXNwcVNobmxFT1UwNVFabG1ESkJWYU9hVXQyb29WUVJOWTlhUXEyaHRsS3ZVWWVvRXpSMW1qbk5neFpKUzZXdG9wWFRHbWdYYVBkcHIraDB1aEhkbFI1T2w5Qlgwc3ZwUitpWDZBUDBkd3dOaGhXRHg0aG5LQm1iR0FjWVp4bDNHSytZVEtZWjA0c1p4MVF3TnpIcm1PZVpENWx2VlZncXRpcDhGWkhLQ3BWS2xTYVZHeW92VkttcXBxcmVxZ3RWODFYTFZJK3BYbE45cmtaVk0xUGpxUW5VbHF0VnFwMVE2MU1iVTJlcE82aUhxbWVvYjFRL3BINVovWWtHV2NOTXcwOURwRkdnc1YvanZNWWdDMk1aczNnc0lXc05xNFoxZ1RYRUpySE4yWHgyS3J1WS9SMjdpejJxcWFFNVF6TktNMWV6VXZPVVpqOEg0NWh4K0p4MFRnbm5LS2VYODM2SzNoVHZLZUlwRzZZMFRMa3haVnhycXBhWGxsaXJTS3RScTBmcnZUYXU3YWVkcHIxRnUxbjdnUTVCeDBvblhDZEhaNC9PQlozblU5bFQzYWNLcHhaTlBUcjFyaTZxYTZVYm9idEVkNzl1cCs2WW5yNWVnSjVNYjZmZWViM24raHg5TC8xVS9XMzZwL1ZIREZnR3N3d2tCdHNNemhnOHhUVnhiendkTDhmYjhWRkRYY05BUTZWaGxXR1g0WVNSdWRFOG85VkdqVVlQakduR1hPTWs0MjNHYmNhakpnWW1JU1pMVGVwTjdwcFNUYm1tS2FZN1REdE14ODNNemFMTjFwazFtejB4MXpMbm0rZWIxNXZmdDJCYWVGb3N0cWkydUdWSnN1UmFwbG51dHJ4dWhWbzVXYVZZVlZwZHMwYXRuYTBsMXJ1dHU2Y1JwN2xPazA2cm50Wm53N0R4dHNtMnFiY1pzT1hZQnR1dXRtMjJmV0ZuWWhkbnQ4V3V3KzZUdlpOOXVuMk4vVDBIRFlmWkRxc2RXaDErYzdSeUZEcFdPdDZhenB6dVAzM0Y5SmJwTDJkWXp4RFAyRFBqdGhQTEtjUnBuVk9iMDBkbkYyZTVjNFB6aUl1SlM0TExMcGMrTHBzYnh0M0l2ZVJLZFBWeFhlRjYwdldkbTdPYnd1Mm8yNi91TnU1cDdvZmNuOHcwbnltZVdUTnowTVBJUStCUjVkRS9DNStWTUd2ZnJINVBRMCtCWjdYbkl5OWpMNUZYcmRld3Q2VjNxdmRoN3hjKzlqNXluK00rNHp3MzNqTGVXVi9NTjhDM3lMZkxUOE52bmwrRjMwTi9JLzlrLzNyLzBRQ25nQ1VCWndPSmdVR0JXd0w3K0hwOEliK09QenJiWmZheTJlMUJqS0M1UVJWQmo0S3RndVhCclNGb3lPeVFyU0gzNTVqT2tjNXBEb1ZRZnVqVzBBZGg1bUdMdzM0TUo0V0hoVmVHUDQ1d2lGZ2EwVEdYTlhmUjNFTnozMFQ2UkpaRTNwdG5NVTg1cnkxS05TbytxaTVxUE5vM3VqUzZQOFl1WmxuTTFWaWRXRWxzU3h3NUxpcXVObTVzdnQvODdmT0g0cDNpQytON0Y1Z3Z5RjF3ZWFIT3d2U0ZweGFwTGhJc09wWkFUSWhPT0pUd1FSQXFxQmFNSmZJVGR5V09Dbm5DSGNKbklpL1JOdEdJMkVOY0toNU84a2dxVFhxUzdKRzhOWGtreFRPbExPVzVoQ2Vwa0x4TURVemRtenFlRnBwMklHMHlQVHE5TVlPU2taQnhRcW9oVFpPMlorcG41bVoyeTZ4bGhiTCt4VzZMdHk4ZWxRZkphN09RckFWWkxRcTJRcWJvVkZvbzF5b0hzbWRsVjJhL3pZbktPWmFybml2TjdjeXp5dHVRTjV6dm4vL3RFc0lTNFpLMnBZWkxWeTBkV09hOXJHbzVzanh4ZWRzSzR4VUZLNFpXQnF3OHVJcTJLbTNWVDZ2dFY1ZXVmcjBtZWsxcmdWN0J5b0xCdFFGcjZ3dFZDdVdGZmV2YzErMWRUMWd2V2QrMVlmcUduUnMrRlltS3JoVGJGNWNWZjlnbzNIamxHNGR2eXIrWjNKUzBxYXZFdVdUUFp0Sm02ZWJlTFo1YkRwYXFsK2FYRG00TjJkcTBEZDlXdE8zMTlrWGJMNWZOS051N2c3WkR1YU8vUExpOFphZkp6czA3UDFTa1ZQUlUrbFEyN3RMZHRXSFgrRzdSN2h0N3ZQWTA3TlhiVzd6My9UN0p2dHRWQVZWTjFXYlZaZnRKKzdQM1A2NkpxdW40bHZ0dFhhMU9iWEh0eHdQU0EvMEhJdzYyMTduVTFSM1NQVlJTajlZcjYwY094eCsrL3AzdmR5ME5OZzFWalp6RzRpTndSSG5rNmZjSjMvY2VEVHJhZG94N3JPRUgweDkySFdjZEwycENtdkthUnB0VG12dGJZbHU2VDh3KzBkYnEzbnI4UjlzZkQ1dzBQRmw1U3ZOVXlXbmE2WUxUazJmeXo0eWRsWjE5Zmk3NTNHRGJvclo3NTJQTzMyb1BiKys2RUhUaDBrWC9pK2M3dkR2T1hQSzRkUEt5MitVVFY3aFhtcTg2WDIzcWRPbzgvcFBUVDhlN25MdWFycmxjYTdudWVyMjFlMmIzNlJ1ZU44N2Q5TDE1OFJiLzF0V2VPVDNkdmZONmIvZkY5L1hmRnQxK2NpZjl6c3U3MlhjbjdxMjhUN3hmOUVEdFFkbEQzWWZWUDF2KzNOanYzSDlxd0hlZzg5SGNSL2NHaFlQUC9wSDFqdzlEQlkrWmo4dUdEWWJybmpnK09UbmlQM0w5NmZ5blE4OWt6eWFlRi82aS9zdXVGeFl2ZnZqVjY5Zk8wWmpSb1pmeWw1Ty9iWHlsL2VyQTZ4bXYyOGJDeGg2K3lYZ3pNVjcwVnZ2dHdYZmNkeDN2bzk4UFQrUjhJSDhvLzJqNXNmVlQwS2Y3a3htVGsvOEVBNWp6L0dNekxkc0FBQUFnWTBoU1RRQUFlaVVBQUlDREFBRDUvd0FBZ09rQUFIVXdBQURxWUFBQU9wZ0FBQmR2a2wvRlJnQUFBd0JRVEZSRkFBQUEvOVhWLzlYVi85WFYvOVhWLzlYVi85WFYvOVhWLzlYVi85WFYvOVhWLzlYVi85WFYvOVhWLzlYVi85WFYvOVhWLzlYVi85WFYvOVhWLzlYVi85WFYvOVhWLzlYVi85WFYvOVhWLzlYVi85WFYvOVhWLzlYVi85WFYvOVhWLzlYVi85WFYvdFRVLzlYVi85WFYvOVhWLzlYVi85WFYvOVhWLzlYVi85WFYvOVhWLzlYVi85WFYvOVhWLzlUVS85WFYvOVhWL3RQVC85VFUvOVhWLzlYVi85WFYvOVhWLzlYVi85WFZsbGxVLzlYVi85WFYvOVhWaENNUnJINTlaaGNOeDR1RXhYTmxjUmtNNkxxNVppSWFZeE1JN0xtM2JpTWJoakVqWERFeGdrRTdoMDlJdFdOVWREdzNYUjBZb2xOSFVRY0FYd3NBNmF5a3VVWXN6R0JIMDE5QmsybHBueThWeUp5Y3pZQnlsa00xdG50M3ltOVR6SGxpcVdaZlNBNEp6NStmcjRTRlNCUVVuM056ejZXbGVFNVBsMDVFY1JzTjVsQW5waUFBMTBnaTRrNG0zMDBtcEI4QTNVc2swMFlnNUZBbm9SNEFrQllBYVFjQXJ6SVVlUXNBbWhzQTdYbGFWQUFBY2dnQXlrQWN6a1FnMVVjaHhENGJseGtBaGhFQWtTRUtueDBBd0R3YTJrb2o3bnhlV2dBQXVUY1dmQXdBakJNQWd4b0ZUZ0FBZHhJQlhnUUFqeVlRZ1JZQ29ENHBZd3dBUndBQWJnOEF4RTR2WXdJQW5Da1FtQ1VNcXk4U29pa09raGdBc3pNVDZuTlM0MU1yNDFvMGpDQUtpQThBaFJrRHlsMDl5R0pEZ1EwQXhXUkZ4a0VmMVVzbWJRZ0EzbE1zclNZQ2lSNEl1ellSY1JFQWZCVUNtRFlncDBrMnlsUTE1MlZCdXprYXRqZ1pweXdSaEE0QTZHOVBvRTQva2pZa3BFVXhxamNlUHdBQXoxUXg1bWxINTFRczZHaEdrQndBcDAwNWt4MEZ4TVRFeGNYRnhzYkd4OGZIeU1qSXljbkp5c3JLeTh2THpNek16YzNOenM3T3o4L1AwTkRRMGRIUjB0TFMwOVBUMU5UVTFkWFYxdGJXMTlmWDJOalkyZG5aMnRyYTI5dmIzTnpjM2QzZDN0N2UzOS9mNE9EZzRlSGg0dUxpNCtQajVPVGs1ZVhsNXVibTUrZm42T2pvNmVucDZ1cnE2K3ZyN096czdlM3Q3dTd1NysvdjhQRHc4Zkh4OHZMeTgvUHo5UFQwOWZYMTl2YjI5L2YzK1BqNCtmbjUrdnI2Ky92Ny9QejgvZjM5L3Y3Ky8vLy9DZGFBa2dBQUFBRjBVazVUQUVEbTJHWUFBQUFmU1VSQlZIamE3TUVCQVFBQUFJSWcvNjl1U0VBQkFQQmdBQUFBLy84REFBbjRBQUdqRTV5NkFBQUFBRWxGVGtTdVFtQ0M" }, { name: "__ASSET__:bitmap_LoadBarContur", data: "aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU40QUFBQVJDQVlBQUFDeTJSTFdBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBN2hXbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0S1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MUxXTXdNVFFnTnprdU1UVXhORGd4TENBeU1ERXpMekF6THpFekxURXlPakE1T2pFMUlDQWdJQ0FnSUNBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9tVjRhV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdlpYaHBaaTh4TGpBdklqNEtJQ0FnSUNBZ0lDQWdQSGh0Y0RwRGNtVmhkRzl5Vkc5dmJENUJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdLRmRwYm1SdmQzTXBQQzk0YlhBNlEzSmxZWFJ2Y2xSdmIydytDaUFnSUNBZ0lDQWdJRHg0YlhBNlEzSmxZWFJsUkdGMFpUNHlNREUwTFRBekxUSTNWREUyT2pJeE9qRTNLekF5T2pBd1BDOTRiWEE2UTNKbFlYUmxSR0YwWlQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRHBOYjJScFpubEVZWFJsUGpJd01UVXRNRFV0TVROVU1EQTZOVGc2TWpJck1ETTZNREE4TDNodGNEcE5iMlJwWm5sRVlYUmxQZ29nSUNBZ0lDQWdJQ0E4ZUcxd09rMWxkR0ZrWVhSaFJHRjBaVDR5TURFMUxUQTFMVEV6VkRBd09qVTRPakl5S3pBek9qQXdQQzk0YlhBNlRXVjBZV1JoZEdGRVlYUmxQZ29nSUNBZ0lDQWdJQ0E4WkdNNlptOXliV0YwUG1sdFlXZGxMM0J1Wnp3dlpHTTZabTl5YldGMFBnb2dJQ0FnSUNBZ0lDQThjR2h2ZEc5emFHOXdPa052Ykc5eVRXOWtaVDR6UEM5d2FHOTBiM05vYjNBNlEyOXNiM0pOYjJSbFBnb2dJQ0FnSUNBZ0lDQThlRzF3VFUwNlNXNXpkR0Z1WTJWSlJENTRiWEF1YVdsa09tSXlOekEyWVdNeUxXRmhPV1l0WmpVME5pMWlZVFF5TFdSa01HRm1ZemN6WXpObU9Ed3ZlRzF3VFUwNlNXNXpkR0Z1WTJWSlJENEtJQ0FnSUNBZ0lDQWdQSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUStlRzF3TG1ScFpEbzVNV0kxTWpSalpTMWxPVE15TFRGaU5ESXRPV0U1T0MwMU16RXdZVEF6T1RCa01EUThMM2h0Y0UxTk9rUnZZM1Z0Wlc1MFNVUStDaUFnSUNBZ0lDQWdJRHg0YlhCTlRUcFBjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUStlRzF3TG1ScFpEbzVNV0kxTWpSalpTMWxPVE15TFRGaU5ESXRPV0U1T0MwMU16RXdZVEF6T1RCa01EUThMM2h0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJENEtJQ0FnSUNBZ0lDQWdQSGh0Y0UxTk9raHBjM1J2Y25rK0NpQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNlUyVnhQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cElISmtaanB3WVhKelpWUjVjR1U5SWxKbGMyOTFjbU5sSWo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT21GamRHbHZiajVqY21WaGRHVmtQQzl6ZEVWMmREcGhZM1JwYjI0K0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwcGJuTjBZVzVqWlVsRVBuaHRjQzVwYVdRNk9URmlOVEkwWTJVdFpUa3pNaTB4WWpReUxUbGhPVGd0TlRNeE1HRXdNemt3WkRBMFBDOXpkRVYyZERwcGJuTjBZVzVqWlVsRVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNmQyaGxiajR5TURFMExUQXpMVEkzVkRFMk9qSXhPakUzS3pBeU9qQXdQQzl6ZEVWMmREcDNhR1Z1UGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2YzI5bWRIZGhjbVZCWjJWdWRENUJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdLRmRwYm1SdmQzTXBQQzl6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FTQnlaR1k2Y0dGeWMyVlVlWEJsUFNKU1pYTnZkWEpqWlNJK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwaFkzUnBiMjQrYzJGMlpXUThMM04wUlhaME9tRmpkR2x2Ymo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT21sdWMzUmhibU5sU1VRK2VHMXdMbWxwWkRvek5XTmpOV05sT1Mwd09USTBMV0ZoTkdNdFlURmhPQzA1WlRrd05UUXlaVEprT0RjOEwzTjBSWFowT21sdWMzUmhibU5sU1VRK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwM2FHVnVQakl3TVRRdE1ETXRNamRVTVRZNk16RTZOVE1yTURJNk1EQThMM04wUlhaME9uZG9aVzQrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHB6YjJaMGQyRnlaVUZuWlc1MFBrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QW9WMmx1Wkc5M2N5azhMM04wUlhaME9uTnZablIzWVhKbFFXZGxiblErQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHBqYUdGdVoyVmtQaTg4TDNOMFJYWjBPbU5vWVc1blpXUStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwSUhKa1pqcHdZWEp6WlZSNWNHVTlJbEpsYzI5MWNtTmxJajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbUZqZEdsdmJqNXpZWFpsWkR3dmMzUkZkblE2WVdOMGFXOXVQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4YzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDU0YlhBdWFXbGtPbUl5TnpBMllXTXlMV0ZoT1dZdFpqVTBOaTFpWVRReUxXUmtNR0ZtWXpjell6Tm1PRHd2YzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbmRvWlc0K01qQXhOUzB3TlMweE0xUXdNRG8xT0RveU1pc3dNem93TUR3dmMzUkZkblE2ZDJobGJqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblErUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESUNoWGFXNWtiM2R6S1R3dmMzUkZkblE2YzI5bWRIZGhjbVZCWjJWdWRENEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9tTm9ZVzVuWldRK0x6d3ZjM1JGZG5RNlkyaGhibWRsWkQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT2xObGNUNEtJQ0FnSUNBZ0lDQWdQQzk0YlhCTlRUcElhWE4wYjNKNVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwUGNtbGxiblJoZEdsdmJqNHhQQzkwYVdabU9rOXlhV1Z1ZEdGMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFlVbVZ6YjJ4MWRHbHZiajQzTWpBd01EQXZNVEF3TURBOEwzUnBabVk2V0ZKbGMyOXNkWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2xsU1pYTnZiSFYwYVc5dVBqY3lNREF3TUM4eE1EQXdNRHd2ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajRLSUNBZ0lDQWdJQ0FnUEhScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK01qd3ZkR2xtWmpwU1pYTnZiSFYwYVc5dVZXNXBkRDRLSUNBZ0lDQWdJQ0FnUEdWNGFXWTZRMjlzYjNKVGNHRmpaVDQyTlRVek5Ud3ZaWGhwWmpwRGIyeHZjbE53WVdObFBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmhFYVcxbGJuTnBiMjQrTWpJeVBDOWxlR2xtT2xCcGVHVnNXRVJwYldWdWMybHZiajRLSUNBZ0lDQWdJQ0FnUEdWNGFXWTZVR2w0Wld4WlJHbHRaVzV6YVc5dVBqRTNQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDancvZUhCaFkydGxkQ0JsYm1ROUluY2lQejZ2cnhjUUFBQUFJR05JVWswQUFIb2xBQUNBZ3dBQStmOEFBSURvQUFCU0NBQUJGVmdBQURxWEFBQVhiOWRhSDVBQUFBQkxTVVJCVkhqYTdOTXhFUUF3Q0FDeFVrdjFYMU1JQUFsc1RJbUV2L3ZJLytvQXE2NEVZRHd3SG1BOE1CNWdQREFlWUR3d0htQThNQjRZRHpBZUdBOHdIaGdQR0RVQUFBRC8vd01BbE1zREJWV0hscEFBQUFBQVNVVk9SSzVDWUlJPQ" }, { name: "__ASSET__:bitmap_LoadMeter", data: "aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURrQUFBQXdDQVlBQUFDckY5Sk5BQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBS1QybERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk5uVkZQcEZqMzMzdlJDUzRpQWxFdHZVaFVJSUZKQ2k0QVVrU1lxSVFrUVNvZ2hvZGtWVWNFUlJVVUVHOGlnaUFPT2pvQ01GVkVzRElvSzJBZmtJYUtPZzZPSWlzcjc0WHVqYTlhODkrYk4vclhYUHVlczg1Mnp6d2ZBQ0F5V1NETlJOWUFNcVVJZUVlQ0R4OFRHNGVRdVFJRUtKSEFBRUFpelpDRnovU01CQVBoK1BEd3JJc0FIdmdBQmVOTUxDQURBVFp2QU1CeUgvdy9xUXBsY0FZQ0VBY0Iwa1RoTENJQVVBRUI2amtLbUFFQkdBWUNkbUNaVEFLQUVBR0RMWTJMakFGQXRBR0FuZitiVEFJQ2QrSmw3QVFCYmxDRVZBYUNSQUNBVFpZaEVBR2c3QUt6UFZvcEZBRmd3QUJSbVM4UTVBTmd0QURCSlYyWklBTEMzQU1ET0VBdXlBQWdNQURCUmlJVXBBQVI3QUdESUl5TjRBSVNaQUJSRzhsYzg4U3V1RU9jcUFBQjRtYkk4dVNRNVJZRmJDQzF4QjFkWExoNG96a2tYS3hRMllRSmhta0F1d25tWkdUS0JOQS9nODh3QUFLQ1JGUkhnZy9QOWVNNE9yczdPTm82MkRsOHQ2cjhHL3lKaVl1UCs1YytyY0VBQUFPRjBmdEgrTEMrekdvQTdCb0J0L3FJbDdnUm9YZ3VnZGZlTFpySVBRTFVBb09uYVYvTncrSDQ4UEVXaGtMbloyZVhrNU5oS3hFSmJZY3BYZmY1bndsL0FWLzFzK1g0OC9QZjE0TDdpSklFeVhZRkhCUGpnd3N6MFRLVWN6NUlKaEdMYzVvOUgvTGNMLy93ZDB5TEVTV0s1V0NvVTQxRVNjWTVFbW96ek1xVWlpVUtTS2NVbDB2OWs0dDhzK3dNKzN6VUFzR28rQVh1UkxhaGRZd1AyU3ljUVdIVEE0dmNBQVBLN2I4SFVLQWdEZ0dpRDRjOTMvKzgvL1VlZ0pRQ0Faa21TY1FBQVhrUWtMbFRLc3ovSENBQUFSS0NCS3JCQkcvVEJHQ3pBQmh6QkJkekJDL3hnTm9SQ0pNVENRaEJDQ21TQUhISmdLYXlDUWlpR3piQWRLbUF2MUVBZE5NQlJhSWFUY0E0dXdsVzREajF3RC9waENKN0JLTHlCQ1FSQnlBZ1RZU0hhaUFGaWlsZ2pqZ2dYbVlYNEljRklCQktMSkNESmlCUlJJa3VSTlVneFVvcFVJRlZJSGZJOWNnSTVoMXhHdXBFN3lBQXlndnlHdkVjeGxJR3lVVDNVRExWRHVhZzNHb1JHb2d2UVpIUXhtbzhXb0p2UWNyUWFQWXcyb2VmUXEyZ1AybzgrUThjd3dPZ1lCelBFYkRBdXhzTkNzVGdzQ1pOank3RWlyQXlyeGhxd1Zxd0R1NG4xWTgreGR3UVNnVVhBQ1RZRWQwSWdZUjVCU0ZoTVdFN1lTS2dnSENRMEVkb0pOd2tEaEZIQ0p5S1RxRXUwSnJvUitjUVlZakl4aDFoSUxDUFdFbzhUTHhCN2lFUEVOeVFTaVVNeUo3bVFBa214cEZUU0V0SkcwbTVTSStrc3FaczBTQm9qazhuYVpHdXlCem1VTENBcnlJWGtuZVRENURQa0crUWg4bHNLbldKQWNhVDRVK0lvVXNwcVNobmxFT1UwNVFabG1ESkJWYU9hVXQyb29WUVJOWTlhUXEyaHRsS3ZVWWVvRXpSMW1qbk5neFpKUzZXdG9wWFRHbWdYYVBkcHIraDB1aEhkbFI1T2w5Qlgwc3ZwUitpWDZBUDBkd3dOaGhXRHg0aG5LQm1iR0FjWVp4bDNHSytZVEtZWjA0c1p4MVF3TnpIcm1PZVpENWx2VlZncXRpcDhGWkhLQ3BWS2xTYVZHeW92VkttcXBxcmVxZ3RWODFYTFZJK3BYbE45cmtaVk0xUGpxUW5VbHF0VnFwMVE2MU1iVTJlcE82aUhxbWVvYjFRL3BINVovWWtHV2NOTXcwOURwRkdnc1YvanZNWWdDMk1aczNnc0lXc05xNFoxZ1RYRUpySE4yWHgyS3J1WS9SMjdpejJxcWFFNVF6TktNMWV6VXZPVVpqOEg0NWh4K0p4MFRnbm5LS2VYODM2SzNoVHZLZUlwRzZZMFRMa3haVnhycXBhWGxsaXJTS3RScTBmcnZUYXU3YWVkcHIxRnUxbjdnUTVCeDBvblhDZEhaNC9PQlozblU5bFQzYWNLcHhaTlBUcjFyaTZxYTZVYm9idEVkNzl1cCs2WW5yNWVnSjVNYjZmZWViM24raHg5TC8xVS9XMzZwL1ZIREZnR3N3d2tCdHNNemhnOHhUVnhiendkTDhmYjhWRkRYY05BUTZWaGxXR1g0WVNSdWRFOG85VkdqVVlQakduR1hPTWs0MjNHYmNhakpnWW1JU1pMVGVwTjdwcFNUYm1tS2FZN1REdE14ODNNemFMTjFwazFtejB4MXpMbm0rZWIxNXZmdDJCYWVGb3N0cWkydUdWSnN1UmFwbG51dHJ4dWhWbzVXYVZZVlZwZHMwYXRuYTBsMXJ1dHU2Y1JwN2xPazA2cm50Wm53N0R4dHNtMnFiY1pzT1hZQnR1dXRtMjJmV0ZuWWhkbnQ4V3V3KzZUdlpOOXVuMk4vVDBIRFlmWkRxc2RXaDErYzdSeUZEcFdPdDZhenB6dVAzM0Y5SmJwTDJkWXp4RFAyRFBqdGhQTEtjUnBuVk9iMDBkbkYyZTVjNFB6aUl1SlM0TExMcGMrTHBzYnh0M0l2ZVJLZFBWeFhlRjYwdldkbTdPYnd1Mm8yNi91TnU1cDdvZmNuOHcwbnltZVdUTnowTVBJUStCUjVkRS9DNStWTUd2ZnJINVBRMCtCWjdYbkl5OWpMNUZYcmRld3Q2VjNxdmRoN3hjKzlqNXluK00rNHp3MzNqTGVXVi9NTjhDM3lMZkxUOE52bmwrRjMwTi9JLzlrLzNyLzBRQ25nQ1VCWndPSmdVR0JXd0w3K0hwOEliK09QenJiWmZheTJlMUJqS0M1UVJWQmo0S3RndVhCclNGb3lPeVFyU0gzNTVqT2tjNXBEb1ZRZnVqVzBBZGg1bUdMdzM0TUo0V0hoVmVHUDQ1d2lGZ2EwVEdYTlhmUjNFTnozMFQ2UkpaRTNwdG5NVTg1cnkxS05TbytxaTVxUE5vM3VqUzZQOFl1WmxuTTFWaWRXRWxzU3h3NUxpcXVObTVzdnQvODdmT0g0cDNpQytON0Y1Z3Z5RjF3ZWFIT3d2U0ZweGFwTGhJc09wWkFUSWhPT0pUd1FSQXFxQmFNSmZJVGR5V09Dbm5DSGNKbklpL1JOdEdJMkVOY0toNU84a2dxVFhxUzdKRzhOWGtreFRPbExPVzVoQ2Vwa0x4TURVemRtenFlRnBwMklHMHlQVHE5TVlPU2taQnhRcW9oVFpPMlorcG41bVoyeTZ4bGhiTCt4VzZMdHk4ZWxRZkphN09RckFWWkxRcTJRcWJvVkZvbzF5b0hzbWRsVjJhL3pZbktPWmFybml2TjdjeXp5dHVRTjV6dm4vL3RFc0lTNFpLMnBZWkxWeTBkV09hOXJHbzVzanh4ZWRzSzR4VUZLNFpXQnF3OHVJcTJLbTNWVDZ2dFY1ZXVmcjBtZWsxcmdWN0J5b0xCdFFGcjZ3dFZDdVdGZmV2YzErMWRUMWd2V2QrMVlmcUduUnMrRlltS3JoVGJGNWNWZjlnbzNIamxHNGR2eXIrWjNKUzBxYXZFdVdUUFp0Sm02ZWJlTFo1YkRwYXFsK2FYRG00TjJkcTBEZDlXdE8zMTlrWGJMNWZOS051N2c3WkR1YU8vUExpOFphZkp6czA3UDFTa1ZQUlUrbFEyN3RMZHRXSFgrRzdSN2h0N3ZQWTA3TlhiVzd6My9UN0p2dHRWQVZWTjFXYlZaZnRKKzdQM1A2NkpxdW40bHZ0dFhhMU9iWEh0eHdQU0EvMEhJdzYyMTduVTFSM1NQVlJTajlZcjYwY094eCsrL3AzdmR5ME5OZzFWalp6RzRpTndSSG5rNmZjSjMvY2VEVHJhZG94N3JPRUgweDkySFdjZEwycENtdkthUnB0VG12dGJZbHU2VDh3KzBkYnEzbnI4UjlzZkQ1dzBQRmw1U3ZOVXlXbmE2WUxUazJmeXo0eWRsWjE5Zmk3NTNHRGJvclo3NTJQTzMyb1BiKys2RUhUaDBrWC9pK2M3dkR2T1hQSzRkUEt5MitVVFY3aFhtcTg2WDIzcWRPbzgvcFBUVDhlN25MdWFycmxjYTdudWVyMjFlMmIzNlJ1ZU44N2Q5TDE1OFJiLzF0V2VPVDNkdmZONmIvZkY5L1hmRnQxK2NpZjl6c3U3MlhjbjdxMjhUN3hmOUVEdFFkbEQzWWZWUDF2KzNOanYzSDlxd0hlZzg5SGNSL2NHaFlQUC9wSDFqdzlEQlkrWmo4dUdEWWJybmpnK09UbmlQM0w5NmZ5blE4OWt6eWFlRi82aS9zdXVGeFl2ZnZqVjY5Zk8wWmpSb1pmeWw1Ty9iWHlsL2VyQTZ4bXYyOGJDeGg2K3lYZ3pNVjcwVnZ2dHdYZmNkeDN2bzk4UFQrUjhJSDhvLzJqNXNmVlQwS2Y3a3htVGsvOEVBNWp6L0dNekxkc0FBVGZzYVZSWWRGaE5URHBqYjIwdVlXUnZZbVV1ZUcxd0FBQUFBQUE4UDNod1lXTnJaWFFnWW1WbmFXNDlJdSs3dnlJZ2FXUTlJbGMxVFRCTmNFTmxhR2xJZW5KbFUzcE9WR042YTJNNVpDSS9QZ284ZURwNGJYQnRaWFJoSUhodGJHNXpPbmc5SW1Ga2IySmxPbTV6T20xbGRHRXZJaUI0T25odGNIUnJQU0pCWkc5aVpTQllUVkFnUTI5eVpTQTFMalV0WXpBeE5DQTNPUzR4TlRFME9ERXNJREl3TVRNdk1ETXZNVE10TVRJNk1EazZNVFVnSUNBZ0lDQWdJQ0krQ2lBZ0lEeHlaR1k2VWtSR0lIaHRiRzV6T25Ka1pqMGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNVGs1T1M4d01pOHlNaTF5WkdZdGMzbHVkR0Y0TFc1ekl5SStDaUFnSUNBZ0lEeHlaR1k2UkdWelkzSnBjSFJwYjI0Z2NtUm1PbUZpYjNWMFBTSWlDaUFnSUNBZ0lDQWdJQ0FnSUhodGJHNXpPbmh0Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0x5SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZjR2h2ZEc5emFHOXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNCb2IzUnZjMmh2Y0M4eExqQXZJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T25odGNFMU5QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2Ylcwdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cHpkRVYyZEQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wzTlVlWEJsTDFKbGMyOTFjbU5sUlhabGJuUWpJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenB6ZEZKbFpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMM05VZVhCbEwxSmxjMjkxY21ObFVtVm1JeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZEdsbVpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzkwYVdabUx6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21WNGFXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2WlhocFppOHhMakF2SWo0S0lDQWdJQ0FnSUNBZ1BIaHRjRHBEY21WaGRHOXlWRzl2YkQ1QlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ0tGZHBibVJ2ZDNNcFBDOTRiWEE2UTNKbFlYUnZjbFJ2YjJ3K0NpQWdJQ0FnSUNBZ0lEeDRiWEE2UTNKbFlYUmxSR0YwWlQ0eU1ERTFMVEF6TFRJMlZERXpPalEzT2pJM0t6QXlPakF3UEM5NGJYQTZRM0psWVhSbFJHRjBaVDRLSUNBZ0lDQWdJQ0FnUEhodGNEcE5aWFJoWkdGMFlVUmhkR1UrTWpBeE5TMHdOUzB4TTFRd01EbzFNam96Tnlzd016b3dNRHd2ZUcxd09rMWxkR0ZrWVhSaFJHRjBaVDRLSUNBZ0lDQWdJQ0FnUEhodGNEcE5iMlJwWm5sRVlYUmxQakl3TVRVdE1EVXRNVE5VTURBNk5USTZNemNyTURNNk1EQThMM2h0Y0RwTmIyUnBabmxFWVhSbFBnb2dJQ0FnSUNBZ0lDQThjR2h2ZEc5emFHOXdPa052Ykc5eVRXOWtaVDR6UEM5d2FHOTBiM05vYjNBNlEyOXNiM0pOYjJSbFBnb2dJQ0FnSUNBZ0lDQThjR2h2ZEc5emFHOXdPa2xEUTFCeWIyWnBiR1UrYzFKSFFpQkpSVU0yTVRrMk5pMHlMakU4TDNCb2IzUnZjMmh2Y0RwSlEwTlFjbTltYVd4bFBnb2dJQ0FnSUNBZ0lDQThjR2h2ZEc5emFHOXdPa1J2WTNWdFpXNTBRVzVqWlhOMGIzSnpQZ29nSUNBZ0lDQWdJQ0FnSUNBOGNtUm1Pa0poWno0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDR3TlRBMU9UQkNRMFJDTUVWQ016QkJSVFpHUXpZMU9UbERSVUZEUVVWRk1Ed3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUGpCRk1qVTVPRFpDTURkR1EwVTNRelV5UmtFNFJrUTJNRVE0T0RGRFJERTRQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK01UTTRNVU13UVVZMVJUZzFNakF3T1RkRE9UTTBOelF6UVVFMVFrSkVPVEE4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNHhOak16TlVZd056QXpOVUZGT1RJMVEwVXlOa0U1TVVJeE5ETkVOVVpHUXp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQakUyUWpJek9EQkZNVVkxUWpZME5rRkZOekl3TmtFNU1EaERPRGc0UVRoRlBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srTVVOR1FUZ3dOMEpFTkRsRE5qYzNPREZGUlRRMFF6SkdRak16UXpjMVEwRThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ0eU1qYzNPRU5CT1RWRVJqRTVPRGxHTURoQlEwTTNSakk1TjBWRE4wUTNSand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBqSkNNRGs0UVRkRk1FSTVRekV6UlRsRk9EVTNRVVF3TlRJMk5rTTJPRGN6UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytNekZHUkVSR016TTBSRE0wTkVRNFFqYzNRa05HUVRNNU16UTVNakpDUXpFOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDR6TkRCQ09VVTBOVUZFTjBFNU5UUTBOemhHUmpaQk1EWkRRVEEzTTBJeVFUd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUGpNME5UZENPVEkzTmpVMk1FRkZPRU14TlVOQ09UQTRPRUZDUTBaRE5rSTJQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK016WkZSVVpCTnprM1JqaERNemMzTTBWQlJqQkVPRE0xTmtJMU56WTJSRVU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNHpRekV4UkRsQ05EUTFRamM1TjBJNFF6azRRelExTWpoRE9VTTRSRVUxUlR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQak5EUlRWRE5UUTBRa1E1TVVZMU1FWkNOVGRETmpBMU1UWTJSa0kwTkVWR1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srTTBRNE1VUTNPVEl5UmpVNE1URXpSRE5CTkRWQlFqSkZOVUl3TTBZek9UUThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ0elJUZzFSVEZFTjBVelJFUTBRVVE0UXpJNE9EUTBNakV5TVRKRk56RkZSRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBqUTFNakUzT0RCRk9UQTFRak5HTkRWQ01EWXlRVGN6TURFM01rSkRSVGc1UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytORVpDUmpsRlFUbEZSRUZDTnpSRE5qaEJNalkxUWpjM05FVkVOakpGTXpZOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDQxTVVWRk16UkJOakpHTVROQk5qY3dPVEJGT0VNNU56Y3pRek5HTWpBek1qd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUGpVeVJrWXpNa1pHT0RZMlFrSkZRVVJCTkRORU1qVTBPREl5TkRjNU0wTXpQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK05UTkROakJFTURZNVJFWXhOVFpCUWpOR1JFVkZRVE0zTlRFNE1VSkRRVFU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNDJNVE15T1RZM05qWXlSVVF5T0VVME9EQXdRemd3TURFelEwVTJPRFF4TkR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQalpET0VVeU1UUTNOa1V4TWpJME5UZ3dPVEl5TXpVek5qVkVOVU0zTWpKQ1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srTmtRd01UZENNakJETXpGQ00wSkJRall3UkRORlJqQXlOVFpGUWtNMk9UTThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ0M01UUkdPRU16T0VReU1qUTVNak5FTVVNeFJVTkZNVVJEUVRNek9VSTRSVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBqY3pSRFpFTkRKRU5FWTFPRVl3UTBVMFJVRTFNRFJDTVVKQk5FVXhNVEk1UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytOelpEUlVVM05rSkNOa1kyUkVRM1JUSkRSakkzTkRnNE5VRkdSREpEUXpnOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDQzUlVJeU9FWXdSRFEwUVRJNU9ERkRRekE0UmpBd05FSTRSVGhFT0VVNFFUd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUGpneVJqWTNSRE13TnpBNU16TXhSRGRGTURrNU5UZzNPVGxHUmpVNFJEVkdQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK09EWkdNREEwTTBFNVF6YzVNREJHTnpjeU5qTTBRVVE0TWpBMFJqUkROMFU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNDRPRFEzUlVSR09FUXpRemN4T1VZeVEwWkVORVJHTmpJeE5UZEVSRGN6UWp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQamc0UmpZek9UYzFNVEExUlRnMU5qZ3pPRGc1TTBSRE9EQkNNRU5CUVRWRVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srT0RsQ1JURkVRamt4TURSRlFVWXdOVFl6TlRNeU9FSkdSVGd4TVVGRFEwTThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ0NFJFVTVOekUwUmpVNU5qSTRNVGRETUVJME1VSkNOMEZGTURNd09FWTJSRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBqaEdNemswUlVZMU16YzFNVEJETWpWRk5EbEROVEpHTmtJM05USTJOVGM0UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytPVGhHTlVORk9EUTRNVFl4TjBVNU5FUTVNRGd4TXprMlEwTTFRVGMyTkRROEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDQ1T1RVek5UQTRNRFkzTnpNMlFrUTRRMEpHUWpWRVFUazJNemxCTXpVMk1qd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUGpsRlJURXdPVEJGTWtNMVJEQTJRakpGTlRjeE9UTXdORFkxUXpreVJrTXlQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK1FUSXhRakF3UkVZME5ESkJPVEZGTURRek5UaENORVV5TVRJeU9UVXlPRU04TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNUJORFpEUkVFd1JqQkRORE5HT0ROQk5rSkROVUpFTXpjd1JVRTJOalE1TXp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQa0U1UlVRek9VUTFNMEV5T0VSRE5qYzBOakl5UXpreE5UbEdRelUxT0VaQlBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srUVVaRVFqUkNNMFEzUlVJd01URkVRamxFTXpsRk56a3lNa0k1UVRJNVFVRThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1Q01VWTBRalJGTmpZNE5rSTVPRGd6T1VJM05VWXdRakUzT1RjeFFUZERRVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBrSTVOVFpCUmpWRVF6SXdNRUZDTVRKRk1UWTVNa1UwTVRoRVFqaEVNVEl5UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytRa05HTVVZME16RTVPVEU1T0VZNE9VSkRSakJEUWpNM05EQTBPRFU1TlVROEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDVDUmpjMVJUaEVSa000TVVNM05FSTBSRGRCT1RNM1JURXhOakV6T0RGRFJUd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUGtKR04wWTBSVVExT0RGRFFqWkJRa00wTlVWQ056WTVOa0ZDTkRFeU1VUXdQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK1F6QkJNRVJFTlRGRk1rWXpRVUl3TlVaQk5rTTBSVEF4T1VaRE1qQTFSamM4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNURNakl6UkRBNFEwWTNPVFEzTmtFNVFqaERRemcxTjBGRk9UUkRRamMxTUR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQa016TnprME5VTTJOVEE0TkRRM05qZ3lSamRFTmtNM1FUUXdRelkwUmtFeFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srUXpnek9UWTBSRE5FUmtOR1FqWkdSa1UxTURRME1rWXpSREl3TmtKQk16YzhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1RE9UTXlNRGRDUkRrek9UVkJRelk1TTBaR04wRkZNVVV6UkVVMVJqY3dNend2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBrUTROamhDT1RJeVFqQkdRa1F6TTBSRk9VSkVSREV6TURJM016TkdNa1pEUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytSVEl4T1VRMlFVWTFOall5TkRZelFrWXpNams1UWpReU1UVXlRekE1TUVNOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDVGTkVJM1JFTkRRamt5UWtZeE5ERXpSVVJHTXpBM01VSTVRemt5UlRrM1F6d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUGtWQlJFUkdNRE5DUXpCQ1JqaERNVEUxTjBRd1F6YzRSVU0wT0RJeU16aEVQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK1JqRkdNak0yUWtaRU1FWkVOMEZFUlRZd05FWXdRVVpFUmprME56RXlRakE4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNUdOMEpGTlVRMU1rTkdSVGxGUkVNM01UUTFRamRDTWtVM1JEWTROVGRET1R3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbUZrYjJKbE9tUnZZMmxrT21sdFlXZGxjbVZoWkhrNllUWmxZbUkzTmpNdE1EbGhPQzB4TVdVd0xXSmxaREl0WVRSak9XWTROek5rWTJJM1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srWVdSdlltVTZaRzlqYVdRNmNHaHZkRzl6YUc5d09qQTFNV0kwWmpFeUxUZGpZVFl0TVRGbE1DMDRZemd5TFdObU1EbGlaREE0TjJFMlpEd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG1Ga2IySmxPbVJ2WTJsa09uQm9iM1J2YzJodmNEb3dZMkZpTjJNeFpTMDRNREU1TFRFeFpHTXRZV1l3TnkxalpXUmtNV05pWW1aa056VThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1aFpHOWlaVHBrYjJOcFpEcHdhRzkwYjNOb2IzQTZNR1pqTnpsbU1qQXRaREl6TWkweE1XUmlMV0l4WW1JdFlXVmlZVFpoWXpWbFpqWTFQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK1lXUnZZbVU2Wkc5amFXUTZjR2h2ZEc5emFHOXdPakV6TVdObU5tRmxMVFk1WTJVdE1URmtZaTA1TkRZMUxUa3lNMlUxWm1aaU1HUTVZVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBtRmtiMkpsT21SdlkybGtPbkJvYjNSdmMyaHZjRG94TTJSbE5qTTRZaTFqTkdVNExURXhaR1F0T0dGaU9TMW1abVEwTUdFeE5EazNOVEU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNWhaRzlpWlRwa2IyTnBaRHB3YUc5MGIzTm9iM0E2TVRVNU1qTXlOek10Wm1FME15MHhNV1JoTFRreE1qRXRPRGN5WlRNMllURXpZVEV3UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytZV1J2WW1VNlpHOWphV1E2Y0dodmRHOXphRzl3T2pFNE1HSm1aVGxrTFdaaE5ETXRNVEZrWVMwNU1USXhMVGczTW1Vek5tRXhNMkV4TUR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbUZrYjJKbE9tUnZZMmxrT25Cb2IzUnZjMmh2Y0RveFlqRmxOekEzTkMwMk9XTmxMVEV4WkdJdE9UUTJOUzA1TWpObE5XWm1ZakJrT1dFOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDVoWkc5aVpUcGtiMk5wWkRwd2FHOTBiM05vYjNBNk1XUmxZemMwWldRdE5qbGpaUzB4TVdSaUxUazBOalV0T1RJelpUVm1abUl3WkRsaFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srWVdSdlltVTZaRzlqYVdRNmNHaHZkRzl6YUc5d09qSTFaR1l3TkdNeUxUWTVZMlV0TVRGa1lpMDVORFkxTFRreU0yVTFabVppTUdRNVlUd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG1Ga2IySmxPbVJ2WTJsa09uQm9iM1J2YzJodmNEb3lZVEZrT0RSa055MW1ZVFF6TFRFeFpHRXRPVEV5TVMwNE56SmxNelpoTVROaE1UQThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1aFpHOWlaVHBrYjJOcFpEcHdhRzkwYjNOb2IzQTZNbUpoWlRjeE1tTXRabUUwTXkweE1XUmhMVGt4TWpFdE9EY3laVE0yWVRFellURXdQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK1lXUnZZbVU2Wkc5amFXUTZjR2h2ZEc5emFHOXdPakptWkRSa1pUWm1MV1poTkRNdE1URmtZUzA1TVRJeExUZzNNbVV6Tm1FeE0yRXhNRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBtRmtiMkpsT21SdlkybGtPbkJvYjNSdmMyaHZjRG96TUdVellUWTFNeTFtWVRRekxURXhaR0V0T1RFeU1TMDROekpsTXpaaE1UTmhNVEE4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNWhaRzlpWlRwa2IyTnBaRHB3YUc5MGIzTm9iM0E2TXpFNFkyUXpaV0V0TmpsalpTMHhNV1JpTFRrME5qVXRPVEl6WlRWbVptSXdaRGxoUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytZV1J2WW1VNlpHOWphV1E2Y0dodmRHOXphRzl3T2pNeVlXWTVNelV4TFRjNU9XUXRNVEZrWWkxaFlUSmxMV1U0TVRkaU5qVTRabVF6Tnp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbUZrYjJKbE9tUnZZMmxrT25Cb2IzUnZjMmh2Y0Rvell6YzRZVEV3WXkxbVlUUXpMVEV4WkdFdE9URXlNUzA0TnpKbE16WmhNVE5oTVRBOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDVoWkc5aVpUcGtiMk5wWkRwd2FHOTBiM05vYjNBNk5HUm1aR0UyTmpNdFlqWXlPQzB4TVdSaUxXSmpNekl0WVdJeFl6YzFPVGc0TlRrM1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srWVdSdlltVTZaRzlqYVdRNmNHaHZkRzl6YUc5d09qVTBaV0U0T1RaaUxUUmlZMkV0TVRGa1lpMWlPRGcxTFdNMllqaGtOMk00TWpBME16d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG1Ga2IySmxPbVJ2WTJsa09uQm9iM1J2YzJodmNEbzFZamN6TURobE5pMDJPV05sTFRFeFpHSXRPVFEyTlMwNU1qTmxOV1ptWWpCa09XRThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1aFpHOWlaVHBrYjJOcFpEcHdhRzkwYjNOb2IzQTZOV1pqWVRCa09HVXRPRFpsTVMweE1XUmxMV0l4WkdRdE9XUXlOak0wT0RobE5EQmlQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK1lXUnZZbVU2Wkc5amFXUTZjR2h2ZEc5emFHOXdPalpqWXpjeVpHUTBMV014TWpJdE1URmtZUzA1WldFd0xXSTBNVEF5TVRkaVl6WXdORHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBtRmtiMkpsT21SdlkybGtPbkJvYjNSdmMyaHZjRG8yWkRreU1tRmtOeTFrWXpaaUxURXhaR0l0T1daaU1pMWpNVE5sWlRZeVlXRTNPV1E4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNWhaRzlpWlRwa2IyTnBaRHB3YUc5MGIzTm9iM0E2T0RCaVpqUXpPR010TWpVMFlpMHhNV1V4TFRnd1pXSXRZVFV3TURVNFpqWm1PR1EyUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytZV1J2WW1VNlpHOWphV1E2Y0dodmRHOXphRzl3T2prd01HVTNPVEppTFdZM016a3RNVEZsTUMwNE1XRTBMV00yWkdOa05EVTVNVEZtWWp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbUZrYjJKbE9tUnZZMmxrT25Cb2IzUnZjMmh2Y0RwaE5qVmlaalExWWkwd1lUVTRMVEV4WkdNdE9ESmhOQzFtWkdFNU9UQmhaRGN4TkRNOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDVoWkc5aVpUcGtiMk5wWkRwd2FHOTBiM05vYjNBNllqaGtNbUUyTVRFdFlqY3pNaTB4TVdRMkxXSmxNRFV0T0dKaE1UZGlNREE1WlRJeFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srWVdSdlltVTZaRzlqYVdRNmNHaHZkRzl6YUc5d09tUTBaVGN5TVRrNExXUTFNMlV0TVRGa1pDMWlaRFJtTFRnMFl6TXpZamt5Wm1OaFl6d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG1Ga2IySmxPbVJ2WTJsa09uQm9iM1J2YzJodmNEcGtZV1JpT1dRell5MWlNVEJqTFRFeFpHSXRPV1kxTnkwNE1XVTROMkl4TldWak9ERThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1aFpHOWlaVHBrYjJOcFpEcHdhRzkwYjNOb2IzQTZaR0kwWXpNM016a3RaREk1TVMweE1XUmxMVGs1TURJdE9EZzNNalV3TWpKbE9HWTVQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK1lXUnZZbVU2Wkc5amFXUTZjR2h2ZEc5emFHOXdPbVZoTVdZNU5UYzBMVEU0WkdZdE1URmxNQzFpWmprNUxUazBaREEyWXpVMVl6VXpOand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2TURCR056SkZOek5EUWpReVJFWXhNVGt5TjBWRE1ETkVSakpHTkRBMk1FSThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPakF4TTBJMFF6azVOamsxUmtVd01URTRNMFl3UkRKQ09EZEJNREZGUXpORVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEb3dNakk1T1RkRk9FTkVNalZFUlRFeE9URTFNamhFUXpFd1FUSTBNRVkxUXp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNk1ESTBOa0ZHUmpRMU56WXpSRVl4TVRrM016TkJORGRGTlRReE4wRTNOMFE4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2pBeU5qRkdNekkwTnpoQ09VUkVNVEU0TmtRd09VRkJOemd6TVRCQlJqTkNQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRG93TkRRMlF6ZzRRVFJCTlRaRVF6RXhPRVZDTXpnMk1URkNNalpHUXpNMVFqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZNRFkzUmpBeE1UUkROVVkwUkVZeE1UZ3hSa0pHUVRGR1FVWTFPRVl5UkVFOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09qQTNNVE5FTkRNM1JUSTNSRVJGTVRGQk56RTNRMFpGUkRJek5VVkNSakU0UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRvd1FUYzRSRGs0T0VSRU5UZ3hNVVJET1RaRU5VVTNNVFpCTmtZeVFrTkdNRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2TUVKRVJFTkNNRUV5UmpJM1JURXhNVUV6UWtKQ1JERkNORGcxTmtWRk9EZzhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPakJETTBRNU1rTTBSRFF5TlVSRk1URTVNVFV5T0VSRE1UQkJNalF3UmpWRFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEb3dRemRETnpGQ09ETTVORFpFUlRFeE9FVXdOVVV3TUVFNU1qUkVPRU5ETlR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNk1FTkZRamMxUWpRd09VWTVSVEF4TVVJMk5VSkdOell4UkVWRE1UQkZRMEU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2pCRk1ERXhOa00zTURKQ1EwUkdNVEU1T1VaRFFqUkdORE00UlRRd1JrUTBQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRG93UmpNME5qQTBOMEZHTWpCRVF6RXhRamN5TjBRNVJFSkZSRFkxUkVNMU1Ed3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZNVEF6TlVJNU0wTXdNVVZEUkVZeE1Ua3lNVGxDTWtNMk5UQTJRME5GTURBOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09qRXdSRGxFUXpNd016TTBOa1JGTVRFNFJUQTFSVEF3UVRreU5FUTRRME0xUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRveE5qRkRRelJFTVRNMU5qaEVSakV4T0Rjd01FRXhPVE00TUVJMFJFRXhPVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2TVRZeFJrTTFSREpFTmpnM1JUQXhNVGhFTXpSQk9FVTFPRUkyUkVKRE1VRThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPakUzTWpaRlJqa3pNa0k0TjBSRU1URkNRa0ZCUkRORE5Ua3dNek5ETUVNeVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEb3hOek16UXpaR05VWkdPRVJFUmpFeE9FTTBPRUl4UWtSRk5rRkJRa1l3UlR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNk1UaERNRVEwUTBKRU9EVXpSRU14TVVKR01UVTRRVFUyUlVKRFFUa3dNek04TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2pFNU5UQXhOVEE0UlRKRlJqRXhSRVE0UWtWRFEwSTJRalExTlRKQ1JVRTNQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRG94UVVNM09FUXdOVEpHTkRaRVJURXhPRVV3TlVVd01FRTVNalJFT0VORE5Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZNVUkyUVVZNU5FUXpNRUkxUkVZeE1UaEVSa1pCUVVFM1JUSkNSRFkzUVVNOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09qRkNRVUU0T1VJM1JqazFNVVJHTVRFNVJrSTBRVEZCUVRjNU9UUTFNa1UyUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRveFF6WTRNVGd5UVRRNE56VkVSVEV4UVRrNU1rWkVNa1JETmtVNU9ETXdSRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2TVVOQ09EQXpORGREUkRoRFJFVXhNVUk0T1VGRk9UYzRNalpGT0VSR01qazhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPakZGTVRGRE5ESkJORGhHUVVSRk1URkJRekV5UkRSQlFVWkZNamcyUmpWR1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEb3hSalZCUmpOQ05qY3lNamxFUmpFeE9VWkdRVUl5TmtVeU5EQkROekZDUWp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNk1qQTRRelEwTlRBM1JURXpSRVl4TVRnNE1rWkVNelUxTURRd09EVXpPRE04TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2pJeFJEWTFNRU5DTWtVME5rUkZNVEU0UlRBMVJUQXdRVGt5TkVRNFEwTTFQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRG95TWpaQ09VRXpRelJHTlVGRVF6RXhPVGMwUkVOQ05VTkNNVGMwTVVReU9Ed3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZNak14T0RFek5qQXpNalEyUkVVeE1UaEZNRFZGTURCQk9USTBSRGhEUXpVOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09qSTBNRVkzTmprMlJUQTVRa1JHTVRFNE9UUXpSVU0zUkRKRk9EbERNRUpCUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRveU5VRTJSa1JGUWtaRU1UTkVSakV4T0VKR09FWTRRME0yUWpFd1FqRkdPRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2TWpaQ04wRkdNRGM1TjBNeVJFVXhNVGd6TVRGQ1F6STJORE15UlVZME0wRThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPakkzTWpNM05qSkVSamMzUVVSRE1URkJRamcyUkRGRFJqUkdPRUZEUWtRd1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEb3lPRFF3TTBZMFFrTTBSREpFUlRFeFFURXhSVVExTlRCRU16aEdORFExUWp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNk1qZzBSRE0wTVVNek56UTJSRVV4TVRoRk1EVkZNREJCT1RJMFJEaERRelU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2pKQlJEVTJORGMxTmpVNU5FUkZNVEZDTkVSRVJFWXhNekl3UlRSR01EZEVQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRG95UkRGR01EVkNNREk1TkRaRVJURXhPRVV3TlVVd01FRTVNalJFT0VORE5Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZNa1JDUkVReFFrWkRSVEZFUkVZeE1UbEJRa1ZETVRRNU16TXhSRE14TkVROEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09qSkVRa1kzTkRVd00wTXdNVVJGTVRFNVJVUkNRVEUwTnpjNU1EUXdSVEZCUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRveVJFVTRSREl4T1RWRU5FUkVRekV4UVVSQ1FVUkZSa1E1TmtJM1JqRTBNRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2TWtZMU9UVXdPVEV5UmpKRlJFVXhNVUV6UmtSQk9VUTJSRVkwTVRRNVFUWThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPakpHT0VJeE1EUTRSREl4TkVSRk1URTVSamREUkRjME5FRkdSVFV6T1VaRlBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEb3lSa013T0RBNFFrRkZNVVJFUkRFeE9EVkRNVUl6UWpKQk1EY3pRME5DTmp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNk16QTNORVJETkRCQk4wVTBSRVF4TVRnMU5rWkRNelZGUlVVM01ERkdOVGM4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2pNeVFVUTVNREZETVRVME1FUkdNVEZDUVRJeVJVSTRNemt3UlRReU4wWkJQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRG96TmpsRk56STNSa0l3TkVaRVJURXhPVGMzTjBFeU5ERkZNVEV6TWtJME16d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZNelpCUWpCQk9VTXlNVUk0UkVVeE1VRXlOemhCTTBSR056RTVRalkzT0RBOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09qTTNSRVF3TmtFNE56WTFNMFV4TVRFNE5ESXlSRGt3TnpWR1JUSTVRVEV4UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRvek9ESXlNamMwTVRrMk5UQkVSVEV4T0RJNFJVSTNPVUkzUmtZNE4wSTBOand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2TXpneU9VSTBOVVF5UmpRMlJFVXhNVGhGTURWRk1EQkJPVEkwUkRoRFF6VThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPak00UlVaRlFrUXpNa00wTmtSRk1URTRSVEExUlRBd1FUa3lORVE0UTBNMVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEb3pRVFEyTnpjNE1UVkZNamxFUmpFeFFUQkNNRGczUkVZNE9UZEdOVU0xTmp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNk0wWkJRVUl6TVVSRE4wWXpSRVV4TVVKR1FqTkNRall4UVVVeFFURTVPRUk4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2pOR1FrVTJOVFpHTkRnMU0wUkdNVEU1TlVFNFF6bENOMEl5UlRrek16QTJQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRG8wTURBMFFrRkVNRVZFTkRaRVJURXhPVEV4UXpsRU5rSXlOVVF5TVRNek5Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZOREl3TVVNMU5ERXhNRGt3UkVVeE1VSXhNak5GTVVRME5VTkVRa1kzT1RJOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09qUTFOMFF3TWprMU5UQTFOVVJHTVRFNFFqVTVSRGsxT1VRNVJrTkVOVEJDUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRvME5VUTJOak00TUVNNE5VUkVSVEV4UVRVNE5VUTVOalEwTlVGRFFVVTNSRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2TkRaRk5UQTBOa0kzUkRjNVJFUXhNVUkyUkVGRU1UUTNNamsxTlRsRU9ETThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPalEzUkVVMU1qYzRSalV5UTBSRk1URTVSa0l6UTBGQlJVUTNORFpHUlRrMFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEbzBPRGhGTjBReU1UWTBNVGRFUmpFeFFVSXpNRGsyUkVJMU9VSkZPREkzT0R3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNk5EbERPRVExUlRreU16YzRSRU14TVVGQ1FqZEZOMEl3UTBZek5FUTNPRVU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2pSQ1JEWTBSVE5FTlRreFFVUkdNVEU1UVRRME9ERTJSVFF5TmtReE5FTkRQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRG8wUkRRM05UTXdSRUpHUWpGRVJURXhPRE00UTBJM09VSkNNREk1UXpVek16d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZORVE1UXprNE1VSkdSak0yUlRBeE1VSTRNalJHTkVKQk9FVkRNVGt5TnpZOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09qUkVRMEZFTXpjME1rWXlOMFV4TVRGQk0wSkNRa1F4UWpRNE5UWkZSVGc0UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRvMFJUWTJSRUV3TWpaQ01UVkVSVEV4UVVKR09VSkRRVEkyTTBFd1JqRTBPVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2TlRBd01VWTNORVF5UVRRMlJFVXhNVGhGTURWRk1EQkJPVEkwUkRoRFF6VThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPalV3T0RWR1JURkROVU5HTVVSRE1URTRORGs1T1VJeVJEUTNNMEkwTUVNMVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEbzFNRU0wTkRaRU9URkVORFpFUlRFeE9FVXdOVVV3TUVFNU1qUkVPRU5ETlR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNk5URXhNREpFTWpNME9FVTJSRU14TVVKQk16ZEJNVVkwTlRrek1qQTVPRFE4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2pVeE56YzNSVE13UVVORU4wUkZNVEZCTVVGRk9FRXpPRGhDUmpFeFJrUkNQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRG8xTTBaR04wTkNRVEpFUkVZeE1VUkJRVVU1TkVKRk56TTRSamM0UkROQ01Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZOVFkxUXpNd1JEUXpRVEE0UkVZeE1VRTJNVVJDTWpJM1JVUkVSalU1UmpnOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09qVTROREkwUlVOQ01rVXlOMFV4TVRGQk0wSkNRa1F4UWpRNE5UWkZSVGc0UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRvMk16WTNSa1EwTmpNMk5EWkVSVEV4T0VVd05VVXdNRUU1TWpSRU9FTkROVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2TmpVeE5qbERRMEl6TkRWRlJFWXhNVGswUXpoRU9VWTNPRFkxTkRReU1rVThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPalkxUlRnMU1rWXlNa1V5TjBVeE1URkJNMEpDUWtReFFqUTROVFpGUlRnNFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEbzJOa1UxUWpoRk5qRTJNVFZFUmpFeE9EYzVRVUkyTjBSRFFqTTVSRGxHUVR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNk5qa3lNa1V5T1VJMU9UZzFSRVl4TVVJME56YzVRekZCTmpCRk1qVTBOalk4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2paQk0wSXdPVE00TVRFNFJVVXdNVEU1T1VNMlFqaEZPRGMwUWpOQlFUTTFQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRG8yUVRaRU5FSTVSRVF6UWtKRVJURXhPRE5HT1VZMU1UZ3dSakkzT0VWR05Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZOa0pFTmtOQlJrUkRNMFUzUkVNeE1UaEVNVGREUTBNNE56UXlSVEpGTnpnOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09qWkRNVU5GUlRrNVJrWXdRMFJGTVRFNFFqWXdPREE0TmpnMlJERkRSRUUyUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRvMlF6Y3dOMFZDTlRSRE5FVkVSakV4T1VKR05qbEdOVVUzUTBNek9EVkVORHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2TmtVME0wSkVSVGhHUVVFd1JFUXhNVUU0UXpjNE1EQXhORFpFT1VZeVJrUThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPalpGTnpoRk1UUTFRa0kxTkVSRE1URkNNRGhCUXprMU9UQkVNMEV6TkRCRVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEbzNNemM0TWpZNFJVVkdORFpFUlRFeE9URXhRemxFTmtJeU5VUXlNVE16TlR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNk56UXdSVEF4T1VVMU1VVXlSRVF4TVVFeVJFWTROVGszUlVVMFFVTTVSalU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2pjME9FWkNRa00xTkRjMk1VUkZNVEU1T1VSRE9UazRNak0wTkVVek9URkJQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRG8zTldGa016ZGlOaTA0WVRNM0xUUm1ZMlF0WVRSbVpTMHlObVl4WVdFeFpqRXhZV0k4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2pjNFJUQTJNak13UkVVek1VUkVNVEU1UkRreU9UTkZPREZHTUVZME5rSXlQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRG8zUXpFMFFUVkJRall5UXpkRVF6RXhPVEZHTTBaQ01rUkJSakl3UlRkRFJqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZOME16UmtZMU1qUkNNVEV3UkVZeE1UbEdORE5EUmpaQlEwRkNPREk1T0RVOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09qZERPRGt4TkRsR01rUTNRVVJETVRFNFFVVkdSakkxUWpnME5USTFOemcyUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRvM1JEZ3lRVFJFT1VZMU16aEVSakV4T0RsQlJrTkVNamN5T1RRMk5qazROVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2TjJNd05HVmpNR010T1dNME9TMHhNV1V3TFdFNE9EWXRNREF4WWpZek9URTBOMlV6UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRvNE1qTXdNREl3TXpSRE5qbEVSREV4T1VNeFJqaEZPVEV5T1RZMVFqUTNNVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2T0RNek9UVTROMEV4UkRORFJFVXhNVGcxTXpkQk1ERkRRVUUzT0VKRE5qUThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPamd6UXpNeU5VRXpRVE15TVVSR01URTVOVVkzUkRjM05VUkZOVFZDT0RaQ1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEbzROREU0UWpsR056RkNNVGxFUlRFeFFVTkVNVVpFTUVRM09VUXhRelE0UXp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNk9EYzFNVFEyUXpjNU0wVkVSRVV4TVRnelEwTkRNRGMwTnpoR09UUXpNVGs4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2pnNE5qZ3lSVU5HTlVaRVJrUkZNVEZDTXpZMlJEbEZSamMwUkVVMFFqTkZQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRG80T1RaRE1FWkRRa1JCTXpKRVJqRXhRVFEzTTBJeU1VTTBPVVF4TnpVM1JUd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZPRUU0UWtGRE5UZzVNMFF6UkVZeE1VSkNORFpCUlVVNVJrSkZRVFF6T1RJOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09qaENNekEyTmtGRE1VSXhOa1JGTVRGQk16ZEVRVVkwTTBORU5UbENRVUkyUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRvNFFqVTRSak5ETlRVNU1EQkVSakV4UVRjNE4wWkZNRUU0UmtaQ00wUkdOand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2T0VNNFFqUkdNekUzUlRGQlJFWXhNVUpCUWtORU56UTBOekpEUlVVd1FVVThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPamhFTmpKRk5VTTFSamswTmtSR01URkJNVUZEUWtNeVEwUTJOakJETWpFeVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEbzRSa1V4UmprMVFUazFOREZFUlRFeE9EZEJNMEkyTTBGRlF6WTNNRUkzUmp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNk9UQkJSRVkzUkRVek9UaEJNVEZFUmpnMk1URTVORE0yUVRFM1EwSXlNamM4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2preFF6WkNPVVJFTjBReFFVUkdNVEZDUVVKRFJEYzBORGN5UTBWRk1FRkZQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRG81TWtFM09UbEdNak15TjBReE1VUkZRVUV3T0VFNU1rUkZSVGcyTkRGQ1Jqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZPVE0yT1RBME1rTXlSalEyUkVVeE1VSkVPVVZGTlVFMk5qTTVRVFl5TlVZOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09qazBNMFZDUTBKR09VWXdOVVV3TVRGQ09ESXlRVGRCUlRWRE5EUkNPREV4UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRvNU5EZEJRak0yTlRjMlJFSkZNREV4T0VJMU9UazFOakV3TWtFMVJUY3dOVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2T1RaQ1FrTkNRalExUmpnMFJFWXhNVUUzUmpORlFrVTBOa1ZFTWprM09UVThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPamszT1VVNE1FWXhNa00wTmtSRk1URTRSVEExUlRBd1FUa3lORVE0UTBNMVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEbzVRVVV5TVVJMlFqUkdPRFZFUlRFeE9VWkZOVVF6T1RoR01qRkJORFF4TXp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNk9VTkVOekE0UmpFMk5ERTFSRVV4TVVGQ1JqbENRMEV5TmpOQk1FWXhORGs4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2psaE5qUmlPVFptTFRBeU1XUXRORGd6TWkwNVpHUXdMVFk0TVRZMFpHRmxOV1ZoT1R3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNlFUSXpOVVpHUVRRek5qTXpSRVF4TVVJNE5FUkNNVFV6UmtaRFFqSkNNalU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2tFeVJFRkZSRFEwTkRSR01rUkNNVEZDUmtNNU9UTTFOems0TmtFd01qSXhQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRHBCTXpJek0wUTNOak01UVRCRVJERXhPRU0wUlVJeFJEYzJSakl3UkRZeFJqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZRVFV5UWpKQ1JUSkVOVEEwUkVVeE1UZzFNekpCTnpVek5qSTRSVGsxT0RjOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09rRTVNekl4UmpReE16SkdOVVJFTVRFNVJUSXhPRFEyTjBJME1rWTFNakkwUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRwQk9UVkVPVGd4TWtFMVFqQkVRekV4T1RRd05UaEdRa05GUWprMk5EaEZORHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2UVVJeVFqWkdRVFV4T1RWQlJUQXhNVUUxUVRVNE16STFOVFkxUmpBd01VTThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPa0ZETmpsRk1UQXhNVVF4TlVSR01URTROemxCUWpZM1JFTkNNemxFT1VaQlBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEcEJRME0xUmpVMU16SkRRMFJGTURFeE9UazNSa1UwTURVM1JFSXlNVE5CTWp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNlFVWkdSVUl5TlROQlJrWkZSRVV4TVVFMU9USTROakpETUVKRE0wUTVOVGs4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2tJeE1UaEdSRGxETXpRME5rUkZNVEU0UlRBMVJUQXdRVGt5TkVRNFEwTTFQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRHBDTkRoRFF6TTNORVkyUlRKRVF6RXhPVE5FTmtVMU9UTkdOekEwUlVZNU5Ed3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZRalkxUVRnMVJUQXhSVVV5UkVReE1VRXlSRVk0TlRrM1JVVTBRVU01UmpVOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09rSTNOa05HTXpFek1qTTBSVVJGTVRFNU1FRTNPRGsyUkRNMU56azBNRVZDUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRwQ09EazRRamt3UWpsR016UkVSakV4UWpBMVFVUTJORVpDUlRBNU1VTkNPRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2UWtJNU56YzNPVFpEUVRnMlJFVXhNVUkzUmpWRk1rWXpRemRDTWpZNFFVTThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPa0pDT1VaRVFUTkNRVUU0TlVSRE1URTROVEl5T0RoR01qZEZOemMyTmtZd1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEcENSREl6TnpWQlJEWTVRVU5FUXpFeFFqSkJRVUU1TVRRMU1ETXdNemRGTVR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNlFrUTVPRFEzTXpVek5UUTJSRVV4TVRoRk1EVkZNREJCT1RJMFJEaERRelU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2tKRVJUZEVNMEZFUVRRMFFVUkVNVEZDT1RReU9ESTJRamt4UWpRMlJETXhQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRHBDUlRVMU5qWTFNekpEUkRVeE1VUkJRVGRETnpnME5VTkZNVGc0TWtFME5Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZRemsxUmpoRk9UTkZNVVZEUkVReE1VRkVPREZCTVVGQ09EUkVOREExUWpROEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09rTTVRalpHTWtVM1JUUTBSVVJHTVRGQ1FVWkVRVU0zUTBSRE16Y3pOREl4UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRwRFFUUkZNRE0wUlRkRk1VRkVSakV4UWtGQ1EwUTNORFEzTWtORlJUQkJSVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2UTBGRE0wUkNOVE5FTTBVeFJFWXhNVUkyTWtWRFFqaENNRGN4UmpFMlJURThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPa05CUTBVd1JEUTFRVFF4UVVSRk1URTROak01UWpnMU5UY3lOelk0UWtSQlBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEcERRVVJDTnpoR1FqQTRPVUpFUmpFeE9ETkZOa1JETkVGRE1ERXlSVVU1TVR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNlEwSXdRMFE0UmpVNE1UUXlSVEF4TVRoRU5UaENNakUyUWpNNU0wTkZSRUU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2tOR05VWTBRekF5UWpSQ00wUkdNVEZDUlVVNVJESXpRVGN6T0RJNE1qTXlQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRHBEUmpoRk1EWTBOREkzTkRaRVJURXhPRVV3TlVVd01FRTVNalJFT0VORE5Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZRMFpHUWtNNU1EVXlNMEkxUkVZeE1UaEVSa1pCUVVFM1JUSkNSRFkzUVVNOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09rUTJNak5GTWtaRFEwSTBORVJHTVRGQk5qVTVPVGt3TkRRMk56YzVOalF5UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRwRU5qVkNRMFl3TkVWQ1FUTkVSakV4UVVWRE9FVkRRelJDTkVSRU5FWXlOand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2UkRnNVJUbERNVFV5UmpJM1JURXhNVUV6UWtKQ1JERkNORGcxTmtWRk9EZzhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPa1JCT1RFMU5rRkROalJEUkVVd01URTVPVGhEUlRORE1EWTJRVGxFUTBWRlBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEcEVRVU5DTkRKQlF6QkVOVGRFUmpFeE9VVTJNVGd6UVRreU1VSTJNRVkyUkR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNlJFTTBSalU0T0RKQ01FVTVSVEF4TVVJek1qWTVRVUl4UXpBek5UWkZRalE4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2tSRVFqQTJOekV6TURaRVJVUkZNVEU0TmpFM1JUazRSVFU0TUVFeE5FVTFQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRHBFUkVWRU1VVkdPRFUzTmpORVJqRXhPVGN6TTBFME4wVTFOREUzUVRjM1JEd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZSVEEyUkVSRlJUUXpRVUkyUkVJeE1VSkNOamxGTmpNMU5qQkNRak15TWtFOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09rVXdOemMxT0RFMk16VTBOa1JGTVRFNFJUQTFSVEF3UVRreU5FUTRRME0xUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRwRk1UZ3dOa1pHTWpFNFF6TkVSVEV4UWpoRlJFVTFSRUkyTWpNd01ERTVPRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2UlRGRlJrRTRPRGxDT1VJeVJFVXhNVGxCUkVGR1JrSkZSRFkwTVVRd01EYzhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPa1V6TjBaRk5EYzNOalkxTVVSRk1URkNNRVpHT1RBMFFVSkVOMFU1UXpjNFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEcEZORGczUlVZMlF6RkJNVFZFUmpFeE9EYzVRVUkyTjBSRFFqTTVSRGxHUVR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNlJUWTROemcxUXpVeU5UUTJSRVV4TVRoRk1EVkZNREJCT1RJMFJEaERRelU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2tVM01qWkJRalkzUVRGRU4wUkZNVEZCTVVGRk9FRXpPRGhDUmpFeFJrUkNQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRHBGUWpZNVFqRTRPRGcyTURaRVJURXhRak00TUVNNVJFWkdSalZGUkVJMlFqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZSVVU0UlRSQlF6VTNORU5FUlRBeE1UazVPRU5GTTBNd05qWkJPVVJEUlVVOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09rVkZSamRHTVRaR1JVWTRPVVJGTVRGQ01VTTBSRFkxUlVZME16WTRPRUV6UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRwRlJrVTROVVl4T0RCRk1FUkZNREV4UVVZM1JUaEJRa1F6T1VJNU9UZzFPVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2UmpJMVFqaEdPVEl4UXpRMlJFVXhNVGhGTURWRk1EQkJPVEkwUkRoRFF6VThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPa1l5T1VJNU9EbERSalpDT0VSRk1URTRPRGxEUXpJek1ERXdPVEExTVRnM1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEcEdNMFV6UlRRd09FTXpORFZFUmpFeFFUQXlNRU16TWpsRFFrRTNPVFkzUmp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNlJqUTBNVFJCTURNNE9EUXlSRVl4TVRsRVJUSkNRVVk0UkVaQ056TTVRemc4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT2tZMlJETkJOMFF3T1RrMU5VUkVNVEU1UVRFek9EUkNOVGt6T0RRMk5UYzJQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2RYVnBaRHBHTnpBNU1rWkVSVFUyTkVGRVJURXhPVEpCTVVaQk1EbEdPVVV4TkVWRlFqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5WMWFXUTZSamcyT1RVeU1VUTFNVVV5UkVReE1VRXlSRVk0TlRrM1JVVTBRVU01UmpVOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDUxZFdsa09rWTVOelE0TmtNeFJUSTBSa1JHTVRFNE0wTTNPVGsyTnpFd1JEQTVPVVJEUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytkWFZwWkRwR1FUUTVNakUxTURNeE5VWkZNREV4UVVFM1F6aENRekU1UmpFd1FURXdRand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuVjFhV1E2UmtNMk1qZzBNemsxUTBSR1JFVXhNVUl6TmpaRU9VVkdOelJFUlRSQ00wVThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1MWRXbGtPa1pEUWpFM09UQXpOVFF3UVVSRk1URTRSVEl4T0VGQ056aEJRVVU0UXprMlBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZFhWcFpEcEdRMEkwUlRnek16UTVNRGhFUmpFeFFUWXhSRUl5TWpkRlJFUkdOVGxHT0R3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQblYxYVdRNlJrVkVOemMyT0VFeVFUUTJSRVV4TVRoRk1EVkZNREJCT1RJMFJEaERRelU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTFkV2xrT21aaFpqVmlaR1ExTFdKaE0yUXRNVEZrWVMxaFpETXhMV1F6TTJRM05URTRNbVl4WWp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNREExTkVVNVF6WkVSamN4UlRFeE1VRkRORVU0UmpRd09FWTJORVE0UWpNOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakF3T0RBeE1UYzBNRGN5TURZNE1URTROMFUyUkROR01VWkZSVVUzUlRZeFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG93TURnd01URTNOREEzTWpBMk9ERXhPRUUyUkVVM05UQXlNREk1T1RReU16d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TURBNE1ERXhOelF3TnpJd05qZ3hNVUZETnpVNU56bEJNekl6TWpWQk5qazhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pBd1F6QTFOVGc1TWtVeU16WTRNVEU1T1RSRFJqSTJOa0ZGT0RRd1JEY3hQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvd01UZ3dNVEUzTkRBM01qQTJPREV4T0RZeE9FUTFRalF3UkRNM016ZzVRand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1ERTRNREV4TnpRd056SXdOamd4TVRnM01VWTRPVFJGUWpWQ016SXlNMEk4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qQXhPREF4TVRjME1EY3lNRFk0TVRFNE56RkdPRVZCTTBZeVFUSkJSVEZFUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3dNVGd3TVRFM05EQTNNakEyT0RFeE9EY3hSa0ZDTWtNMFJUQTJNMFkxTmp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNREU0TURFeE56UXdOekl3TmpneE1UZzNNVVpDTTBNMk1rSXdRekkxTlRROEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakF4T0RBeE1UYzBNRGN5TURZNE1URTROekZHUlRneU9FVXhNakpHTkRjeVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG93TVRnd01URTNOREEzTWpBMk9ERXhPRGN4UmtVNFJFUXlNelF3UXpCQ01Ed3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TURFNE1ERXhOelF3TnpJd05qZ3hNVGczTVVaRlJVSTFOa1F4UlRjME0wSThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pBeE9EQXhNVGMwTURjeU1EWTRNVEU0T0VNMk9EUkZRVVkyUlVJelJVVkVQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvd01UZ3dNVEUzTkRBM01qQTJPREV4T0RoRE5qZzJNek0wT0RVME1USTNOVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1ERTRNREV4TnpRd056SXdOamd4TVRnNFF6WkJSRU01UlVWRE1USTROamM4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qQXhPREF4TVRjME1EY3lNRFk0TVRFNE9FTTJRell4TWpnek4wSXdNalEzUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3dNVGd3TVRFM05EQTNNakEyT0RFeE9EaEROa000UmtJMk5FVXpNRGMzUmp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNREU0TURFeE56UXdOekl3TmpneE1UZzRRelpFTXpaQ09FWkZSakE0TmpjOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakF4T0RBeE1UYzBNRGN5TURZNE1URTRPRU0yUkVWQ05rRTNNemd3UlRBeVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG93TVRnd01URTNOREEzTWpBMk9ERXhPRGhETmtVMFJEWkRPRVE1TVRnd09Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TURFNE1ERXhOelF3TnpJd05qZ3hNVGc0UXpaR1JEZzRSVE0zT1Rjek56ZzhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pBeE9EQXhNVGMwTURjeU1EWTRNVEU0UVRaRVJFSkJOa0kwT0RNNVF6TXpQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvd01UZ3dNVEUzTkRBM01qQTJPREV4T0VRME4wWTROekF3TlVFeFJrSXdOVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1ERTRNREV4TnpRd056SXdOamd4TVRoRVFrSkRNVFJHTUVSRU1qRTJPRVE4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qQXhPREF4TVRjME1EY3lNRFk0TVRFNFJqUkVSRGRDTkRrNE5qQXlNVVl6UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3dNVGd3TVRFM05EQTNNakEyT0RFeE9FWTJNa0pDUmpnNU9UZ3hPRGRFTmp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNREU0TURFeE56UXdOekl3TmpneE1UaEdOakpDUlVRek16RkJORUk1TkRZOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakF4T0RBeE1UYzBNRGN5TURZNE1URTRSall5UlVJeVFVUkZORFpFTWpjelBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG93TVRnd01URTNOREEzTWpBMk9ERXhPRVk0TVRrMU1EUTRSa0kyTXpGRk9Ed3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TURFNE1ERXhOelF3TnpJd05qZ3hNVGt3TWtGRU0wWkNOemhGUmtSRVJqazhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pBeE9EQXhNVGMwTURjeU1EWTRNVEU1TVRBNVJEaEJRVVJEUXpNelFVVXlQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvd01UZ3dNVEUzTkRBM01qQTJPREV4T1RFd09VVkVNakE0UWtNeE1EZEdSand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1ERTRNREV4TnpRd056SXdOamd4TVRreE1EbEdNekExTmpRMlJVSTFOMFE4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qQXhPREF4TVRjME1EY3lNRFk0TVRFNU1UQTVSalUwTVRVNE5rRXdNakJFUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3dNVGd3TVRFM05EQTNNakEyT0RFeE9URXdPVVpCTWprM1FUZEJOVGt3TkR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNREU0TURFeE56UXdOekl3TmpneE1Ua3lRakE0UVVVeU5rSkVPREkzUmpjOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakF4T0RBeE1UYzBNRGN5TURZNE1URTVNa0l3T1VNME1ETkRSa1l6UVROQ1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG93TVRnd01URTNOREEzTWpBMk9ERXhPVEpDTUVKQlFUa3dORVJGTUVZNFJEd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TURFNE1ERXhOelF3TnpJd05qZ3hNVGt5UWpCRE5rUkVOa1ZGT1RNd00wSThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pBeE9EQXhNVGMwTURjeU1EWTRNVEU1TWtJd1JEa3pRVGRGTVVFd01USkVQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvd01UZ3dNVEUzTkRBM01qQTJPREV4T1RKQ01FVTRRVFl3UVVGQk56STVOand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1ERTRNREV4TnpRd056SXdOamd4TVRreVJEaEZOMEUyTkRFd09UTXhOMFk4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qQXhPREF4TVRjME1EY3lNRFk0TVRFNU4wRTFSRFkzTlVZM01rSXhSRGt6UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3dNVGd3TVRFM05EQTNNakEyT0RFeE9UZEJOVVJCUmpJMU9ETkJNRUUwUWp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNREU0TURFeE56UXdOekl3TmpneE1UazNRVFZGUTBOQk1EZzROVUUxTVVROEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakF4T0RBeE1UYzBNRGN5TURZNE1URTVPVFJET1VFMk16QTJOa0V5T0RBeVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG93TVRnd01URTNOREEzTWpBMk9ERXhPVGswUTBKR1JVSXpSVEU0UmtZeFJEd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TURFNE1ERXhOelF3TnpJd05qZ3hNVGxDUlVZNFFUWXdRVFUyUkVGRVFqWThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pBeE9EQXhNVGMwTURjeU1EWTRNVEU1UkVORFJEY3hOME0wUkVNNU4wTXhQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvd01UZ3dNVEUzTkRBM01qQTJPREV4UVRSRk1UaEVRVVV6UkRnMU16UXhNand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1ERTRNREV4TnpRd056SXdOamd4TVVGQ01EZzRPRVZET1VRNFFqZzFRVFk4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qQXhPREF4TVRjME1EY3lNRFk0TVRGQlFqQTRPVEZDTnpreE1qSkNNakpFUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3dNVGd3TVRFM05EQTNNakEyT0RFeFFVSXdPRVU0UlRoRlJUTkdNREk0T1R3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNREU0TURFeE56UXdOekl3TmpneE1VRkdSa1E0TkVJMFFUWkZNMFUxUXpjOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakF4T0RBeE1UYzBNRGN5TURZNE1URkNNVGhFUTBZM05VWkROemN4T0RRMFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG93TVRnd01URTNOREEzTWpBMk9ERXhRakZCTkRneE1UY3pSak5DTWpBNU1Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TURFNE1ERXhOelF3TnpJd05qZ3hNVUpCTURaRVJUSkVNak01TURCQk1VWThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pBeE9EQXhNVGMwTURjeU1EWTRNVEZDUXpFMk9URTNRME5DTWpkR09UYzJQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvd01UZ3dNVEUzTkRBM01qQTJPREV4UWtVNE4wSTRORVl5TlVFMVJEVXhOend2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1ERkROalk0UTBJeVF6TkJNVEZGTUVJeU5FSkdOekpHTVRZM01UbEJNVFE4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qQXhSRE5DUXpCQk1ETTVPRVJHTVRFNFJUQkVSa0pEUXpNNVJqRkVOekJEUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3dNVVZFUVRNME1ETTJSVVZFUlRFeFFUaEVSVGhGT1VJeU5FSXhNa1JCUmp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNREkwUmpjek0wTTBRMFE1UkVZeE1UZ3hPRFU1TVRVMlJFUkNOVEkzUWpjOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakF5TmpRNU1qUTJNVFV5TVRZNE1URTRRVFpFUXpnME1qazVPVFJFUWpnd1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG93TWpnd01URTNOREEzTWpBMk9ERXhPREE0TTBSR1JFWXpOalkwTkRRNE16d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TURJNE1ERXhOelF3TnpJd05qZ3hNVGc0UXpZNE16azNSa1JGUVRNek5qUThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pBeU9EQXhNVGMwTURjeU1EWTRNVEU0T0VNMlF6azFPRFJCTUVORk5FUTJQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvd01qZ3dNVEUzTkRBM01qQTJPREV4T0VFMlJEbEJNVVU0TWpFNU1EYzROand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1ESTRNREV4TnpRd056SXdOamd4TVRoR00wSkJOa0l3TVVWR1F6TkdNelk4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qQXlPREF4TVRjME1EY3lNRFk0TVRFNFJqUkVSRGRDTkRrNE5qQXlNVVl6UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3dNamd3TVRFM05EQTNNakEyT0RFeE9FWTJNa0V5UmpaRE5URXhNakZHTnp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNREk0TURFeE56UXdOekl3TmpneE1Ua3hNRGxETmpWQk56QTBNREV6TkRBOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakF5T0RBeE1UYzBNRGN5TURZNE1URTVNVEE1UXprMFFrVXpSa0kyTXprMVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG93TWpnd01URTNOREEzTWpBMk9ERXhPVGRCTlRrM09EQkZSVFZEUmtNME5Ed3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TURJNE1ERXhOelF3TnpJd05qZ3hNVGs1UkRORlEwWkRRVVl4TXpZeFFVUThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pBeU9EQXhNVGMwTURjeU1EWTRNVEU1UlRGRU9EVTBOalkyTmpKRE9VRkRQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvd01qZ3dNVEUzTkRBM01qQTJPREV4UVRkQ1FUZ3pOekV6TURSRk56STJSand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1ESTRNREV4TnpRd056SXdOamd4TVVGRE9UZzRSVEV3UTBNd1EwTTNSVGM4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qQXlPREF4TVRjME1EY3lNRFk0TVRGQ09EUXdRekUwTXpjNE9EZzFNREpGUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3dNekpHTkRZNE16a3dNakUyT0RFeE9EY3hSa1UwTURVMU16ZEJNamd5T0R3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNRE00TURFeE56UXdOekl3TmpneE1UZzNNVVpHUVVNMk0wTTRNVGcyTkRBOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakF6T0RBeE1UYzBNRGN5TURZNE1URTRPRU0yT0RJek16STVRemd5UWpreFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG93TXpnd01URTNOREEzTWpBMk9ERXhPRGhETmtKR05rWTFRamM1UXpZM1FUd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TURNNE1ERXhOelF3TnpJd05qZ3hNVGhETVRSQk5EbEVNREpCUXprM05UVThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pBek9EQXhNVGMwTURjeU1EWTRNVEU0UmtWRVJqZzNORGN6UmtZek5rRXdQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvd016Z3dNVEUzTkRBM01qQTJPREV4T1RNME5rWXlOelJETURVNFJEVTFRend2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1ETTRNREV4TnpRd056SXdOamd4TVVJeFFUUkVSVVUyTkRReE16QTRNMFE4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qQXpPREF4TVRjME1EY3lNRFk0TVRGQ1F6RTJPVEUzUTBOQ01qZEdPVGMyUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3dNemd3TVRFM05EQTNNakEyT0RFeFFrUXlNRGxETTBZME5ETTNRakV4Tmp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNRE5HUkRWR01FRkROa1l3UkVVeE1UbENOa0k1UkVFNE4wWXpNVE5GT1RZOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakEwT0RBeE1UYzBNRGN5TURZNE1URTROekZHUmpCRlJUWkJSRFUzT1RCQ1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG93TkRnd01URTNOREEzTWpBMk9ERXhPRVkyTWtReU5VVkdPVUZFTmtNeVJqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TURRNE1ERXhOelF3TnpJd05qZ3hNVGhHTmpKRVFqTkdNalk0TmpKQk5qZzhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pBME9EQXhNVGMwTURjeU1EWTRNVEU0UmpZeVJVVTBRVFUzTlRkQ1F6WkVQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvd05EZ3dNVEUzTkRBM01qQTJPREV4T0VZMk1rVkZSamhDUWtGQ01qbEVNVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1EUTRNREV4TnpRd056SXdOamd4TVRoR1JrSkdPRFV6UTBZeU56UkZPVE04TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qQTBPREF4TVRjME1EY3lNRFk0TVRFNU1UQTVPVGxGTVRjeVFVTkZSalF4UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3dORGd3TVRFM05EQTNNakEyT0RFeE9UVkdSVVExUlRsRU16RTNNamt4UlR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNRFE0TURFeE56UXdOekl3TmpneE1UazNRekZCTlVORFJUY3hSVEk0TURnOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakEwT0RBeE1UYzBNRGN5TURZNE1URkNOakU0T0RNNE1EazJPRVEwUkVNelBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG93TkVSRk56RXlSa0k0T0VGRk1ERXhPVVkwUkVJd1FVSkVOakZEUlRNeU56d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TURVNE1ERXhOelF3TnpJd05qZ3hNVGczTVVZNU5qRTNRVGMxT1VRMFJUWThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pBMU9EQXhNVGMwTURjeU1EWTRNVEU0UXpFMFFUVTJRemd4TlVWRlFrVXlQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvd05UZ3dNVEUzTkRBM01qQTJPREV4T0VZMk1qazRORU14TWpFM1JEUTJOand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1EVTRNREV4TnpRd056SXdOamd4TVRreVFqQTVORGN3UmpjMVFrRkZPRVk4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qQTFPREF4TVRjME1EY3lNRFk0TVRFNU1rSXdRakF6UkRKQ056aERSa1JFUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3dOVGd3TVRFM05EQTNNakEyT0RFeE9USkNNRVV6TlVFMU4wSkVSRGt3T1R3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNRFU0TURFeE56UXdOekl3TmpneE1VRTNRa0ZCUkVJME1qVXhSRU5CUmpVOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakEyT0RBeE1UYzBNRGN5TURZNE1URTRPRU0yUlRCRk5qQkROakZCUVVKRFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG93Tmpnd01URTNOREEzTWpBMk9ERXhPVEpDTURrME56QkdOelZDUVVVNFJqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TURZNE1ERXhOelF3TnpJd05qZ3hNVGt6TVVSQ00wWkNSVGxDUXpVMlJqSThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pBMk9EQXhNVGMwTURjeU1EWTRNVEU1TjBFMVJEWTNOVVkzTWtJeFJEa3pQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvd05qZ3dNVEUzTkRBM01qQTJPREV4UWpGQk5EaEJRME5ETmpaQ1FURkZNRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1EWTVSVFl4UWpKRFEwSXlNVEZFUmtGRE1rUTVOVVZDTXpnMk1FWXdOakU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qQTJZell5TXpSaExUWmxaakV0TmpBME9TMWlPRFF6TFRsbE5UbGpOemswT1RJMFlqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TURjNE1ERXhOelF3TnpJd05qZ3hNVGhCTmtSRU4wVTVNRUk0TlRneVFUazhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pBM09EQXhNVGMwTURjeU1EWTRNVEU0UmpZeVJFUXlRVGt5T0Rrek1Ea3hQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvd056Z3dNVEUzTkRBM01qQTJPREV4UVRjeVEwWXpNemxGUlVFd1EwTkJSRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1EZ3pOREZEUXpJd056QTRSVEl4TVRreE4wTkdOa0V3UmtVM1JERTJSa1k4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qQTRPREF4TVRjME1EY3lNRFk0TVRFNE9FTTJPVGMyUVRWRk5FRkdORFF6UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3dPRGd3TVRFM05EQTNNakEyT0RFeE9USkNNRGd3UWtSR01EbEVOek5FTkR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNRGc0TURFeE56UXdOekl3TmpneE1UazVORU01TUVJeU1URkdNa0ZFT0RjOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakE0T0RBeE1UYzBNRGN5TURZNE1URTVSRFl4T0RGQ1JEVTFNMFZFTjBaRVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG93T0RoR05rWkJOVGN4TWpBMk9ERXhPREE0TXpnek56VTRSVFpCUWpreVFqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TURrNE1ERXhOelF3TnpJd05qZ3hNVGcxT1VWRk16RkdSamhFUkVKRk9FUThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pBNU9EQXhNVGMwTURjeU1EWTRNVEU1TVRBNVFrTkROakk0TXpJeE1qSkZQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvd09VUkVSRGRFTkVRMk1qQTJPREV4UWtJek4wUTRNVVZCT1VVNVJqUXdNand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1FRXhOME0zUmtOQk1qSXdOamd4TVRnd00wUkZOemRHT1RWR016azRSVEk4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qQkJPREF4TVRjME1EY3lNRFk0TVRFNE56RkdPVFJETlVNMFJrTkRNRFJFUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3dRVGd3TVRFM05EQTNNakEyT0RFeE9EY3hSa1kwTjBSRE9URkVSVEV4Ump3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNRU14UlVRelJqZEVNREV3UlRNeE1Ua3lRMFpGUkRoR1JEWXhSRVF5TXpjOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakJETlRoQ1FUbEdSRE5GUkVSR01URkNSRE5EUVVZME56WkNOa1l4TkRGRFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG93UkRnME4wSkRPVUV5TVRGRk16RXhPVUpCUTBaRU56bEdNVEkyTVVORVJEd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TUVVeU16Z3pRME15TnpJd05qZ3hNVGt4TURrNE1qZENNVEV4T0RjMk1rWThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pCRk5qTTRORVJHUlVRNE5VVXdNVEZCTUVNeU9EUkNOalkzTnpoRU5rRTJQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvd1JqY3pSRGMxT0RFMk1qQTJPREV4UWtNeE5qa3hOME5EUWpJM1JqazNOand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1HTXlObVl4TWpjdE1HUXlPQzFoTnpRekxXSmpNV010WVRRNU5URmlZbVZtWVdJNVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG94TURVME5FVXhOelUwTWpBMk9ERXhPVEV3T1RnM01UQXpNVEV3UWpVMFJUd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TVRGQk56Y3lNVEpFTXpRNFJUQXhNVUkyUWtGQ05UVkVOalJHTlRrMk1rUThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pFeVJVRTVSa1F3TkRReU1EWTRNVEU0UmpZeU9FTXhOVFl6UVVVeE5qZEZQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRveE1rVkRSRVpEUXpZNU1UaEZNREV4T0RNeE4wRTFNVEkyUWpFNE5FTTVRend2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1UTkdNell6UXpoQ01ESXdOamd4TVRreVFqQTVSRFEyTkRSQ05qSTBPVFE4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qRTBNemREUWpKRk16UkZPVVJGTVRFNFJVTTBRamMyUkVaQ1JqTXhSalJDUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3hOVGc0UVVKQk5qUkNOMFZFUmpFeE9FSkNNMFpFTTBaR1JrVTFNRVpDUXp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNVFZHUVVaR1JqVXlRakl3TmpneE1UazBOVGRFTlVNNE1qUTBOMEV3UTBROEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakUyTTBSR05ERkNOekk1UmpFeFJFWTROVGhEUWpjMk1Ua3hNVUpGUkRWR1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG94TmtWRU5qZ3lPVEJFTnpneE1VVXhRa1EyUkVVNE9UWkZNekZHT0RBd1F6d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TVRjd1FUYzBRelJDTXpaR1JURXhNVUU1UmtWRk5UWkZSa0pDT1RoRVFqSThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pFNE1rUkJNamMzTVRReU1EWTRNVEU1TVRBNVJUZzJRakl6T0RVeU1rWTFQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRveE9EUXdOMFZCTkRsR056UkVSakV4UWpsQlJFWTFNREZDTVVaRlJVTTFRand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1UZzROR0V4TXpFdE1qYzFZUzFpTWpRM0xXRXhZakl0TUdOalpHSTNOREE1TkRZeVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG94T0VFMlFUVkdRVUk1TVRORk1ERXhPREJFUVVORlFqRkZORUl3T0RCR1F6d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TVRoR01URXdNMFUxTkVNelJFWXhNVUZCUlRRNVEwUTRPRUZCTmpRMFFVSThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pGQk9UUTFNelpCTXpJelFURXhSVEJCTjBJNFJEYzJRa1ZDUkVSR1FrVTBQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRveFFVSTNOemN5TWpjMk1qbEZNREV4T1VGRU1VSTVORFZETVRrMk5FSkJSVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1VSXhSVVpHUlVNMk16RXpSRVl4TVVFM01UbEdNVUZHTlRJMk5qRXdPREk4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qRkVOVEZFUVVFM01qSXlNalk0TVRFNU1UQTVSamd5T0VRNFJFRkdORE0yUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3hSRFpGTkRNM00wRkROVVpFUmpFeFFUWTRSVVF5TlRGR1JqSXpSVU16TkR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNVVE1UmpCRk0wSTVOakl4TmpneE1Ua3lRakJETURGQ1JUWkNNRVExTlRBOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakZGTWpFelFqRTRORVk1TlRFeFJURTRSREZCUmtRNU16STJNakZEUkVZeFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG94UlRsQ05FVkZOVVJCTVRCRk16RXhPVEpEUmtWRU9FWkVOakZFUkRJek56d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TWpCak1tTXdaakF0TjJNNE1DMDJOalJoTFRnM1lqWXROakptWVRreE1UQTJZakV3UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3lNVE5FTURFMU5EWkVPRGt4TVVSR1FrUkVOVGcwUkVSRE9FTTVOVUpHT0R3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNakUyUlVFeVF6azNNVVF4UkVZeE1VRTVRVGxCUVVZNU1rRTBNVE00UTBVOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakl4T0RRM1Jqa3hSa000UmtSR01URkNSa0l6T1RoRU16VTVRa1pHUTBVeVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG95TWtSRlFUVkdSa1V4TWpBMk9ERXhPRVkyTWtNNE9FWXdNRVpGTlRGQ05Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TWpNelEwUkNSa00yTWtKR1JFVXhNVGhFTmtaQ05qZEZORGd5T0RFM05UZzhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pJME0wTkJNRU5GTjBWRU1VVXdNVEZCUkVJd09FTXhRVGRETkROR05UWTRQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRveU5FSTJSa1JHTWpVd01qQTJPREV4T0RjeFJrRkdRME5HTkRoQk0wRkdSVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1qVXdSak0zUmtSQ1JUWTFSRVl4TVRrMlFUSkZOVE00TmtWQ04wVkdRa1k4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qSTFORUpFTWtFd1FUTXlNRFk0TVRFNE9FTTJRemRFTlVFMVJEY3lSalZHUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3lOVVE0UmpWRFJrRkdNakEyT0RFeE9FRTJSRVV6UVVNNVFUUkZNRGd5UlR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNamMwT1VSQlF6RTJPVVV3UkVZeE1VSkJSVEpCT1VZMFJrRXhRemN6TUVVOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakk0TnpkRVJrWXhNalV5TURZNE1URTROekZHT1RKRE9URkVNRGMxTWtJd1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG95T0VWRlFUbENOemxCUkRWRVJqRXhPVFkwT0VZNE5URXhRamMwTVRkRU16d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TWprNVJUTkZSRVl3T0RJd05qZ3hNVGt5UWpBNFJVRkNSVUpGTmpJM09ESThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pKQlFrSTNOVEF6TjBReFFURXhSRVpDUmpZMlJERTVRVVV3UVVJMVFqRkNQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRveVFqUTVSRUZETVRZNVJUQkVSakV4UWtGRk1rRTVSalJHUVRGRE56TXdSVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk1rTTFSVVF3UmpFMVFqSTRNVEZGTVRnMlF6TkVRekUyTkRjeE1rRTBSalU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qSkRRemszTVVRMlJFTkZNVVJHTVRFNU0wSTRRVEV4UVRnd1JqUTJNak0yUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3lSREpHT0RORU1rRkJNakEyT0RFeE9FWTJNa013TnpGRVFqazJSak13T0R3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNa1V3TWpKQ1FrRTBNREl3TmpneE1VRkdSVVJDTkVSRE5VRTFSVVJDUXprOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakpGUTBZeU5UaEZNekkxUkVVd01URkJNVUUxUTBKRU1UVkdNVU0xUkRoQlBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG95UmtaRlJrWkROelEwTWpBMk9ERXhPRGN4UmtNMFFVWkJOME5GTWpsRFFUd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TXpFMU9UTXpOVFV4UVRJd05qZ3hNVGs0TlRBNE1VSTNPVUl4UmtKR016WThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pNeE5VVkROMEl5TkRJM04wUkdNVEZCTWpoRFJFSXlSVFpGT0VSRlJEaEdQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvek1qUTROelpGUWtZeE5rSkZNREV4T1VVMk9VVTROVFJDUWtFeFJqVXhORHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk16SkVOVEpGTUVRd1JUSXdOamd4TVRoR05qSkVRVEF6TVRJMVJEUXlPRFU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qTXlSRUZCUXpVeE1qVXlNRFk0TVRFNU1rSXdRa1U0UkVRMk1qaEVNak00UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3pNa1l3TVRoQ016RXpNakEyT0RFeE9USkNNRU13T1VFNVJqaEdOa1EzTkR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNek16UWpVNU56TXlSREl5TmpneE1UaEJOa1E1UmpORFFrWkZSa00wTVRNOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPak0wTUVWR01VVXhOMEV5TURZNE1URTRPRU5EUXpBek1ERTRPVFpETmpFNVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG96TkRJMFJqRTVOREl4TWpBMk9ERXhPVFExTjBFM05EaEZNamcyUlVKQk1Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TXpVMFJrSTBOREV6TVRJd05qZ3hNVGhFUWtKRk16aEVSRGcxTnpFd016ZzhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pNMk5VWkZNRVEzUWpreU1EWTRNVEU0UmpZeVF6QTNNVVJDT1RaR016QTRQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvek56UkdRalEwTVRNeE1qQTJPREV4T0VSQ1FrVXpPRVJFT0RVM01UQXpPRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk16YzNOMEZFTWpORE1UUXpSRVl4TVVGR01FTkZOekkzUXpsRlJrWTROakk4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qTTRRVEF4TWpsQk9FWXlNVFk0TVRFNU1rSXdPRFE1T1VJM00wWkZRVE14UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3pPVEUzT1VZMlJqVTRNakUyT0RFeE9FRTJSRGxHTTBOQ1JrVkdRelF4TXp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNMEV4TnpsR05rWTFPREl4TmpneE1UaEJOa1E1UmpORFFrWkZSa00wTVRNOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPak5CTmtOQlJqSTNNa0l4T1VVd01URTRORVJFT0VaQ1JERXhNRE0wTURBNFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG96UVRjMk56Z3pRMFF3UVRoRVJqRXhRakpCTVRsRU5UQkdSakl4UWpoRU9Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TTBJME5FTXhNRE13UXpJd05qZ3hNVGt4TURsRU9FRkJSRU5ETXpOQlJUSThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pOQ05FUTRRVEE0TVVFeU1EWTRNVEZDTmprNVJVTTBRVGxCT0RjNU5qTkVQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvelFqaERSRU5HTVRBM01qQTJPREV4UWtRM1FrSTFSVGczTmpZM05EazNNand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk0wSkROa05GTVRKRE16Y3dSRVl4TVRnMU1FTkNOekpFUWpsRU1rTkNPVEk4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qTkVNREpGTmpKQlJFWTRRMFJHTVRFNE1VUkRRMEk0UlRoQ056ZEdNekZHUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEb3pSVGN5UVRoRU5qRTFNakEyT0RFeE9USkNNRGxCTWpNeE9ETkZSalEzTmp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZNMFZDUVRZM01qaEVOekl4TmpneE1UZ3pNVGRCUWtJMk1UUkVRVFF6TTBVOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPak5HTWpnME1FSkNSRUZHTkVSR01URTVRamxHUlVRMk5rSTJPRGMxUVRjM1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG96UmpVMVJrVTVSVVZHTmtWRk1qRXhPRVk0TVRnMlFrUkVPVU0wUTBOQlJqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TTBZMlJUQTBOVEUzT0RJd05qZ3hNVGd5TWtVNU9EQkVRak0xTXpnMU9VWThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pRd1FrSXlNVGREUWtRNE5FUkdNVEZCTkRkRFJVSkZOakk0T1RFeVFqQXlQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvME1qRTNPVVkyUmpVNE1qRTJPREV4T0VFMlJEbEdNME5DUmtWR1F6UXhNend2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk5ESTJNVEU1TXpORE5rVTVSRVl4TVRrek5qWkVNakl5UmpVNVFqUTVNa004TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qUXlOamsxTmtFMk0wTTNSVVJHTVRGQk5VRTBSVGt3TmpWR1FVTTNNRFJEUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEbzBNa0kzT1VNMFJERTNNakEyT0RFeE9EaEROamxGT1VNd1JFVTRPVEEyUlR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZORFJDUVRZeE1FWkdOekUxUlRBeE1UZzFNRVpCT1RBeFFqUkRNVUkyTnpVOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPalEwUkVRMU9VRkVNalV5TURZNE1URTRPRU0yUVVVek1rVkJNems0TWprM1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG8wTlRWRVJqWXhNalZFTlRsRVJURXhPREkwTWtReFJUaEJRemMyT0RneFJUd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TkRZMlJFUkVSalZFTURJd05qZ3hNVGc0UXpaRFJEUXpRVVUwTlVOR056ZzhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pRM05rUkJRa0pGUWtVeU1EWTRNVEU0UmpZeVFqTXhOelpGUlRJMU1UZzNQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvME4wSTFOVVJGUWpNM01qQTJPREV4UVVaR1JFTkZPRVV6UWpkRE9ETXlRand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk5EZ3dRamRGTkRaQlJqYzRSRVl4TVVFNE1qVkRSamhFUlRWRU9URkVSamM4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qUTRNamRDTVVaQ01rWXlNRFk0TVRFNFJqWXlRa1ZDTURaRFFqZzBNREF6UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEbzBPRGs0TVdZeFppMDJNbVZsTFRCak5EZ3RPVGxtT1MwMVlXWTBNbVk1WVRJd05EazhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pRNFFqZENSREJDUkRGR01VUkdNVEU1TVRGRVFVVXpSamMzUVRjeVF6RXlQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvME9UWTRNak00TXpGRk1qQTJPREV4T0VZeFEwWkZRMEUzT0RJNU1UVkROand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk5EazNPRVJFTWpnd01USXpOamd4TVRreVFqQkRRVUpDTWpnM05FRkdNRU04TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qUkJNRU5DUlRoR09UUTFRMFV3TVRFNVFqazBSVE01T0RneE0wVXhNMEZDUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEbzBRakZDTkVNd1FURXdNRGxFUmpFeFFrUTFNVVl6TVRoRk9VVkVRVGxGT0R3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZORU00UkRaR01rTTROekl4TmpneE1UZzRRelpETjBRMVFUVkVOekpHTlVZOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPalJFTXpaRU56UkRSalV3UWpFeFJUQkJORUkwUVRneE16VTBRamhGUXpSR1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG8wUlRrNVFUZzJSVVkxTkRGRVJqRXhRamswT0Rrek5rSkdSVUk1T1VJeU5qd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TkVWRVJFWkRPVEF5TURJd05qZ3hNVGhHTmpKQ05USXdRVFZGUlRRMFEwUThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pSRlJqZ3dSakpFTXpreU1EWTRNVEU0UmpZeVJVVkdPRUpDUVVJeU9VUXhQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvMU1EZENSRFl3UVRCQ01qQTJPREV4T0VSQ1FrRTJNakkxTVRKRFFqaERRVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk5URTBSalkzUXpWRk0wRXdSRVl4TVRrNFJqaEJOMEk1TXpFMk9UY3pOVGs4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qVXhOVFEyUmtSRU1UTXlNRFk0TVRFNU1rSXdRa0ZCT1RBMFJFVXdSamhFUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEbzFNVU14T1RRNFFUaEZSalZFUmpFeE9FTTRRamxGUkVJd01qRkJRekV4TWp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZOVEpDUVRSQ1JUaEZNakkzTVRGRk1FRkZRa0k1TURjMFJqQTNOak5CTTBJOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPalV6T0RBNFFqUTNNMFJCT1VVeE1URkJOMFV4UkVaQ01EVkJORUl6UVRneVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG8xTTBReE5rRkZPREpGTWpBMk9ERXhPRVkyTWtReU5VVkdPVUZFTmtNeVJqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TlRRelFUYzVPRVl4TXpBM1JUQXhNVGcwTmtaRk9FTXdORVF6UXpoRVJVTThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pVME5UUTJSa1JFTVRNeU1EWTRNVEU1TWtJd1FrRkJPVEEwUkVVd1JqaEVQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvMU5Ea3lRVE5DUXpJeE56SXhNVVV3T0VGRVFVSXhOa1JDTmpkRk4wRkdORHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk5UUkRNMFk1UmpoQ1JFRkZSRVl4TVVFMVJFTTVOVGxET0RKQlFrTTVSVEU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qVTBSVFpDUkVReU5rSTROa1JHTVRGQk5EZ3pSRFpDTURNd056azNSa1JFUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEbzFOVGRETkRKQlJUazVNakEyT0RFeE9FWTBNa05HUlRKQk9VVkNSVUU0TWp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZOVFU1UmtORU0wSTFNamRCUkVZeE1UZzVNVFJFUlVJeE16VXhOell4UmpFOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPalU1TWpZME5qaEVOakl4TlVVeE1URkJRa05HUlVSR1JUSTRPVFUyTmtJNFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG8xUVRoQ09UQTFPREkxTWpBMk9ERXhPRGhETmtKRU0wTXdSVFF6TWpsR1JUd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TlVJMlJFUXlRamMwTlRnMFJFWXhNVUkzTWpRNFFqZEVSRVkzT1RSQk1VRThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pWQ09FSTVNRFU0TWpVeU1EWTRNVEU0T0VNMlFrUXpRekJGTkRNeU9VWkZQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvMVF6STJRMFl6UlRBeE1qRTJPREV4T0RoRE5rTkVORE5CUlRRMVEwWTNPRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk5VUkVSRFZGTURVMU5ESTBOamd4TVRrNE1qQkJORVkxTnpWQk9EVTBSa0U4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qVkZNMFpGTlRBME0wUXpSREV4UlRBNU9VVXlSVEl6UVVKQk0wRkJRMFE0UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEbzFSVE5HUlRVd09ETkVNMFF4TVVVd09UbEZNa1V5TTBGQ1FUTkJRVU5FT0R3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZOVVl5UTBZM05UazFSREl3TmpneE1UazVORU5GTmpoQk4wRTRRVGt4TXpjOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPalZHUWpJMFFqWkJOamRGT0RFeFJFWTVPRVF4UWtWQk4wTTFNVGRCUmpZMVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG8yTURZME1FRTFRelU0TWpaRk1ERXhPREpEUVVRek9FVkRSVVJEUlRJMk9Ed3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TmpJMk1FUkRNamd3UmpJeU5qZ3hNVGczTVVaR1JVVkZOVVV5TWtZd01FRThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pZeU9FSTVNRFU0TWpVeU1EWTRNVEU0T0VNMlFrUXpRekJGTkRNeU9VWkZQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvMk1rUkdNalExUkRnNE1qQTJPREV4T1RKQ01FVkJRakUyTkRkRU1EbERPVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk5qTTBSa1V4TURaR1JFRkJSRVl4TVRrMlFrWkJRakpCUlVOR1JUSkdRVEU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qWXpPRGc0TUVVNE1Ea3lNRFk0TVRFNU1rSXdRa0ZCT1RBMFJFVXdSamhFUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEbzJNemxDTVVSRU1qazNSRFZFUmpFeE9UWTBPRVk0TlRFeFFqYzBNVGRFTXp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZOak5CUlVZNU1UQTFNekExUlRBeE1UZzJOMFk0T1VJd01qRXhSVFJHTjBFOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPalkwTnpSRE9ETkROamczUTBSR01URTRSVEZHT1RsRU5qbENNelV5TlVORFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG8yTkRnNE9EQkZPREE1TWpBMk9ERXhPVEpDTUVKQlFUa3dORVJGTUVZNFJEd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TmpRNE9VSkJRekV5TmpJd05qZ3hNVGc0UXpaR05qY3dNelEyUlRNMVF6ZzhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pZME9FSTVNRFU0TWpVeU1EWTRNVEU0T0VNMlFrUXpRekJGTkRNeU9VWkZQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvMk5FTTJRelZET0RNNVEwTkVSVEV4T0RBME1FTXlORFJDUTBGRk1FRkRNRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk5qWTRPRGd3UlRnd09USXdOamd4TVRreVFqQkNRVUU1TURSRVJUQkdPRVE4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qWTJSVEUwTkRKR05VWXlNRFk0TVRFNU1UQTVPRGN4TURNeE1UQkNOVFJGUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEbzJOell6T1RjNU9EUTROVEV4TVVVeFFrTkZOMEk0UWtFek16TXlNREV3UWp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZOamM0T0Rnd1JUZ3dPVEl3TmpneE1Ua3lRakJDUVVFNU1EUkVSVEJHT0VROEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPalkzUlVZM1JEQkdNVE5GTlVSR01URTVORE14UVVReVJqRXpRVEEzUXpZMlBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG8yT0RoRk1EWTJRelJDTWpBMk9ERXhPVFl6UTBZeVJqVXlNMFk1UVRVeE1Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TmpnNVFqRkVSREk1TjBRMVJFWXhNVGsyTkRoR09EVXhNVUkzTkRFM1JETThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pZNVEwTkZPRFZDT1VZMlFrVXdNVEZCUkRNNFFUVTJNMFk1TkRNMU5qUXlQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvMk9VUXpNekEwUWpFNU1qQTJPREV4T1RFd09VSTFRMEkyT0RnMk1qZzROand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk5qbEVRekJFUlVWQk4wVTJSVEF4TVRrNU5VVkROVGRFTVVKRU5qQTNRVGs4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qWTVSVUkwTXpSR016QXlNRFk0TVRFNU1UQTVRak5EUVVWRk5URkZNRUkyUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEbzJRVEk0TkVVd09URkJNamsyT0RFeE9USkNNRVExTTBaR056a3dSamcxUWp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZOa0ZFTWtSRU1UUXlOa05DUkVZeE1Ua3lNRGRHUmpZek1VVXpNVE5ETVVVOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPalpCUlVZM1JEQkdNVE5GTlVSR01URTVORE14UVVReVJqRXpRVEEzUXpZMlBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG8yUWpsQlJrWTJOVEl3UkVGRVJqRXhRVVF5UWtOQ1JqRTVRekF5UmprNFF6d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TmtNeFJEUkRSa0pFT0VNNFJFWXhNVGc0TkRsRk1qRTNOalEzT1RaQlJUZzhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2paRFFVRXlNalUxUTBZMU4wVXdNVEU0UmpZeFFVSkJRVEV5T0RGRk5FVXdQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvMlJUSTRNa1JEUVRkR01UZEZNREV4UWpBM016azROalpGT1VGRU1FTTRNVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk56QkdORVkxTWtGRU9EY3hSVEV4TVVGRE5FVTRSalF3T0VZMk5FUTRRak04TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qY3hNRUUzTkRBd1FUaEZRa1V3TVRGQ09UYzJSRFU1TTBVMk5EWTVNREUxUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEbzNNVEkxUXprNVJURXpNakEyT0RFeE9ESkdSVGs0UlVZM1JqRTRRa1l4UkR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZOekUyTWtFeE1ERXhNekl3TmpneE1UZzNNVVpEUkRJeE9UbEJSREUyTjBVOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPamN5TVRkQ05qZ3pORE15TURZNE1URTRRVFpFUlRjMU1ESXdNams1TkRJelBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG8zTWpZek56azRRekJCTWpBMk9ERXhPVEpDTUVGR1FUQkNSRFk0UVVZMlFqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TnpNeE5qazROVGszUmpJd05qZ3hNVGt4TURrNFFUTTNNREE1UTBKQ1FVWThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pjek9VUTNSVGxHUlVKQlJFUkdNVEZCUVVSRlFVUkJNelUyTWpJeU1EZ3pQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvM05FWXpNMFZEUlVSQ1FrRkVSVEV4T1RFMk1EbEdSRGMxT0RrMk5rUTJORHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk56VTBRMFpGUXpoRVJVTXlNVEZGTVVGRVJFRkVOelJDTVVNeVF6WXhPRVE4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qYzFPRUUxTkVWQ1JrRkdORVJHTVRGQlJEZENSREUyTkRJNFJFUTBPRUV4UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEbzNOVVJGUkVNeU5UTXhNalEyT0RFeE9FSTNNa1JGTWtNMlFqRXdOREkzTkR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZOell4TjBJMk9ETTBNekl3TmpneE1UaEJOa1JGTnpVd01qQXlPVGswTWpNOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPamMyUmpSR05USkJSRGczTVVVeE1URkJRelJGT0VZME1EaEdOalJFT0VJelBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG8zTnpBMU9FVTRNVEF5TnpWRVJqRXhPVEJCUVVRNE5UWXpRelV4TWtNd1F6d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TnpjM01UUTBNMFUyTmpJd05qZ3hNVGhCTmtSRk56VXdNakF5T1RrME1qTThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pjM09FWkNSRFkwUXpReU1EWTRNVEU0T0VNMlFrVkNOekExTmpJd01rUkVQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvM09EZ3lNREJDTXpNeU5qRkVSakV4UWpNNFJqazVPRGczTlVORE9EWTFORHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk56ZzRRVVkxT0VORVF6bEdSRVl4TVRoRE1EQkRNME01TmpoQlFrUkRNRFk4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qYzVNalV6TXpaR056a3lNRFk0TVRFNFJqWXlSa0l5UmpnMk5qRTRRekk1UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEbzNPVGM0TTBSQk9USTRNakEyT0RFeE9URXdPVVJHUTBZd04wVTRRa1JFTVR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZOMEUxUkRCRk1VRTFRakk0TVRGRk1UZzJRek5FUXpFMk5EY3hNa0UwUmpVOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPamRCTlVRd1JURkZOVUl5T0RFeFJURTROa016UkVNeE5qUTNNVEpCTkVZMVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG8zUVRWRU1FVXlNalZDTWpneE1VVXhPRFpETTBSRE1UWTBOekV5UVRSR05Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2TjBKRU1rRTNNVGMyUXpNMFJUQXhNVGd6UXpFNE9FTXdRakJFUVRSRFFVRThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pkRU5VVXhRamhCUlVGRlJrUkdNVEU0UVRsRVFVWTNOVUZCUkRNMFJUZzVQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvM1JFRkJOVFF3UmpFeE1qQTJPREV4T1RFd09UZ3lPRFl5UWpReVJqZERORHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk4wVTVOMEk0TnpNMk9EWXhSVEV4TVVFd01qZEJRelkwTlVZelFrSkRRVUU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qZEZSVUV6UlVaRVFqY3lNRFk0TVRFNU9UUkRRMFExUmpBeU1rVXhSRUkyUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEbzNSakUxUXpCRFFURTFNakEyT0RFeE9FRTJSRVUzTlRBeU1ESTVPVFF5TXp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZOMFk1TjBJNE56TTJPRFl4UlRFeE1VRXdNamRCUXpZME5VWXpRa0pEUVVFOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPamRHT1VNMU0wRXlNVEV5TURZNE1URkJRMEkyT0ROQlJUUkVSVEkyTUVReFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG80TUVVMlEwVXdOa1ZFTmtGRk1qRXhRVEEwUkRoRE1ERkVSVEUwTkRVME16d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2T0RFMk5rWTVORVk0UlRWQlJFWXhNVUl5UVRoRU5VTTFOREl5TmtJNFJEQThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pneE9UZENPRGN6TmpnMk1VVXhNVEZCTURJM1FVTTJORFZHTTBKQ1EwRkJQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvNE16RTFRekJEUVRFMU1qQTJPREV4T0VFMlJFVTNOVEF5TURJNU9UUXlNend2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk9ETTJOVGt4TVRZMk0wTkZNVEZGTUVKRk9VVTROVVkyUWtJMk4wTkZSVU04TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qZzBRalF4TWtVMk16Z3lNRFk0TVRFNE1Ua3dPRVJFUkVNMVF6ZzNRMEV4UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEbzRORU0zTmtVMVEwRTJNVVZGTURFeE9VSTJNa014UVRjeVEwUkVRa0l5UkR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZPRFV5TmpBd1FqWTRRamhDUkVZeE1UazRPVFk0UkRoQ1JrRTVRVEJETVRFOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPamcyTVVOQ01USTVNVEUyUTBSR01URkJNRGd4UkVGRE5qVTFORGxHUmtZNFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG80TnpBeU1qVkVNakJGT1RSRVJqRXhPVFZCTlVaRE5VTXpNVFpEUXpReE9Ed3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2T0RkRE1ESXpNalU0UXpjelJURXhNVGcyTlRjNFF6TXpNa1UwUmpWRE1qSThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2pnNFFURXlNekV4TmpSRU56RXhSRVpCTmprM09EVXlNVVEyTUVSR05EWXdQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvNE9VVXpOa1pHUVRkRU1UUkVSakV4T1RkRE9EbERPRVpHTVRkQ01rUTBORHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk9FSXdNVVV6TkRFM1FUSXdOamd4TVRnNFF6WkVRekF5TVRkQk4wSTFSRE04TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qaENNRGRHUTBaRE5UWXlNRFk0TVRGQ01VRTBSRVZGTmpRME1UTXdPRE5FUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEbzRRamt3T0RVNFJrSTFOek5FUmpFeFFrWkNRa1l3TURjMU9VRXpSRFExTWp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZPRU14TjBOQk1qQkVSakpFUlRJeE1VRTVOVFJETmtVelFrWXdNVEEzTlVROEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPamhFUXpNd04wSTRNamt5TURZNE1URTRSall5UXpBM01VUkNPVFpHTXpBNFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG80UlRVNE5qZzNPVFZCTVRWRk1URXhRVUpEUmtWRVJrVXlPRGsxTmpaQ09Ed3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2T0VWRFJrUXpORVF3TURJNU5qZ3hNVGt4TURsQ01rSXpRVFl4UmpRNFJqYzhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2poR09URkZPVEEzTWpReU1EWTRNVEU0UmpZeVJqVXdRemN5UmpSRk1rWkdQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvNU1FTTFSRFV5TmpZME56bEVSakV4T0RZMVEwVkZSakE1T0RVeFJrUTNPVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk9UQkZORGRGTmprMk1qY3hSRVl4TVRnek1URkNNRU00TUVZMU9VTkJNVE04TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qa3hNVU0zUmpKQk9FRXlNVFk0TVRFNE9ERXdPVVk1T1RjelJEUTJSakpCUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEbzVNVVUxUlVJeFFUSkRNakEyT0RFeE9FWTJNa0V3TVRBNE1FRkVNRVE0TVR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZPVEZHUmpBMU1VVXdSa1F6UkVZeE1VSXlSREZETlRGR05UbENOVVpDTWprOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPamt5UlRnMk9FUXhNMFV5TURZNE1URTRSall5T1RVNU56ZzFNVFkwUXpVd1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG81TkRoR05UVTRRVVJEUkRORVJqRXhPRUl5TTBWRE1qVkdSakZCTkRVM1F6d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2T1RSQ05URXlNekEyT0RJd05qZ3hNVGhCTmtSRk56VXdNakF5T1RrME1qTThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2prMk56STBNakpFUkVKRFJFUkZNVEZCUWtaQlFUQkVPRFl3TTBFNVFVRXhQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvNU56UXdaR0V3WXkxak1EZ3pMV0ZqTkRVdFlUWmlOQzAyTTJWbU1EVXdNREZoWW1VOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPamszTlRjd05UVTRNVU15TURZNE1URTROekZHUmpkQ01UZzRNRVk1UmpVeVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG81T0VVek9UQXpPRE0xTWpFMk9ERXhPVEV3T1RrelJFWkdRelkyTjBZeU56d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2T1Rrek5ETkJORGN6TWpJd05qZ3hNVGczTVVaRk9FUkVNak0wTUVNd1FqQThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2psQ01FSkRPVEJGTnpaQ05FUkdNVEZCTXpZMVJVWTFNalUzTnpZeU16Z3hQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvNVFqUXpSa1pCTUVGRk1qQTJPREV4T1RFd09VUTFNRVF4UmpRMU9EZzNSRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNk9VSkJOVGxHT1ROQlF6SXdOamd4TVVJMFEwTkZPVGc0TUVFeFFqUkVPRE04TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09qbEVPVVpET1RFMlJqQXlNRFk0TVRFNU1rSXdSVE0xUVRVM1FrUkVPVEE1UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEbzVSRUUyTVRRek56UkZNakEyT0RFeE9URXdPVUU1T1VGQk1rSTJOekJHTWp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZPVVV3UVRJMFJrTkVOREl3TmpneE1UZzRRelk1TnpaQk5VVTBRVVkwTkRNOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPamxGUkRaRU56SkRNekl5TURZNE1URTRSall5T1VVMk1FSXdOVGxGTURrelBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRG81UlVZM1JEa3lSa016T1RKRVJqRXhRVVZFTmtFMU9VSXdSVVkzTVRFME9Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2T1VZNE1qSkJSRU5HTUVRM01URkVSa0pGT1RaQlFUQkdSa1UxTkRZeVFUSThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2psR09ESXlRVVUwUmpCRU56RXhSRVpDUlRrMlFVRXdSa1pGTlRRMk1rRXlQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRvNVpUSTRZVGd6TlMweU56RTVMV1kxTkRJdFlqVTJOaTB6TnpjNE1qQXlZekF6TXpBOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa0V3UVRaQlJUSTFNakF5TURZNE1URTRRVFpFUVVOQlFVRTBSRVEyTURJd1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBCTUVaQ1JFRkdOelZDTWpneE1VVXhPRFpETTBSRE1UWTBOekV5UVRSR05Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UVRCR1FrUkJSa0kxUWpJNE1URkZNVGcyUXpORVF6RTJORGN4TWtFMFJqVThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tFeE5FWTVRVEkxTWpFeU1EWTRNVEZDTVVFMFJFVkZOalEwTVRNd09ETkVQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwQk5rSTVSREl5TkVNeE1VTkZNREV4UWpBd1EwSTBOemhHUmtJMk5UY3dSand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlFUYzBOMFkwUVVZeFJESXdOamd4TVRoR05qSkVSREpCT1RJNE9UTXdPVEU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rRTNRamN4TWpnNU1VVXlNRFk0TVRFNU1rSXdPRVZCUWtWQ1JUWXlOemd5UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcEJOMFU0TjBFeVJqazFPRU14TVVSR1FqYzNRMFl6UVVRMFJqQXdRakJGUmp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZRVGd6TnpoQk1UTXpOa0V6UkVZeE1UbEZSVGM0UkRNNFJUTXdRVUZHTmpNOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa0U0TjBNd04wSkZRVFl5TURZNE1URTRSRUpDUkVRek5URTNNalUxTXpWR1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBCT1RFNU16SXhNekV3TWpBMk9ERXhPRVkyTWtWRE5qVkJRVUV4UTBWQlJqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UVVGRk56WTRSa1k0UkRaQlJFWXhNVGd5T1RCRFFrSTVORU0xUTBZMFJqQThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tGRE5VWTNRekpETlVReU1EWTRNVEZDTkVZeVFrUTBSRFpCUkRWRU1ETTVQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwQlJETTNOek5FUkRsRU5UTkVSakV4UWpoQ05FSTBPRU5GUWpjM01FWTJPRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlFVUTJRVGhHTTBReU9USXdOamd4TVRoR05qSkVNalZGUmpsQlJEWkRNa1k4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rRkZNVGt6TWpFek1UQXlNRFk0TVRFNFJqWXlSVU0yTlVGQlFURkRSVUZHUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcEJSak5HT1RSR1F6aEJPREV4TVVSR1FqVTRSVUUxT1RreVFqVXhOVGczUXp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZRakF4UlVGRVJVRXhSRUpDUlRFeE1UaEROakZETTBaQk4wVXlPVFkyTWtROEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa0l3TlVZM1F6SkROVVF5TURZNE1URkNORVl5UWtRMFJEWkJSRFZFTURNNVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBDTURneU5EY3lRamhCTWpBMk9ERXhRVVpHUkVORk9FVXpRamRET0RNeVFqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UWpBNVF6ZzNORUV6TjBSQ01URkZNRGxCTVVGRlEwSTJSamhHTXpNM01EYzhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tJeE1VUXpOakJETWpWR01VUkdNVEU1TkRRMVFUVkdSRGc1TlVRM09ERkZQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwQ01UZzFORVJDTmtGQ016ZEZNREV4T0VJelJEbEVOelU1TmpVMlJqazBPRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlFqSXhPRU5DTkVVMVFqSTRNVEZGTVRnMlF6TkVRekUyTkRjeE1rRTBSalU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rSXlNVGhEUWpVeU5VSXlPREV4UlRFNE5rTXpSRU14TmpRM01USkJORVkxUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcENNakU0UTBJMU5qVkNNamd4TVVVeE9EWkRNMFJETVRZME56RXlRVFJHTlR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZRakpGTWpZNE5FTTBPVEl5TmpneE1VRkNNRGhCTjBZek1FVkZOVE15UkRjOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa0kxTXpRek5rUkJSVGd5TURZNE1URTRPRFk1T0RORVF6aEROVUV6TUVJelBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBDTlVJd1F6STBOalV4T1RoRVJURXhPRFl5TmpnMk1UbEJSamRFTmpFNE1Ed3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UWpZd09VWTROamN6UkRJd05qZ3hNVGhFUWtJNVFUSkNSRGczUkRjNU1qRThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tJMk5EUTJPRVJFTWpBeU1EWTRNVEU1TWtJd1JrSXpOamd3T0RJMVJUSTRQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwQ05rUkNNRUl3TURkRE1qQTJPREV4T1RkQk5VWkZRemszUlRJNU0wSTFORHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlFqWkdNamN4TVVKQ1JVSkNSRVl4TVRrMlJqVkNORFJFTTBFNVFrUTJSalk4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rSTNORUZEUlVVelFqZ3lNRFk0TVRGQ1JqTXdPVFF4T0RkQlJqZzBNakZEUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcENOMFF3TmpVME9VUkdNakEyT0RFeE9EY3hSa1ZETjBNNU5qSTVNalpGTkR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZRamhDT1RreE1rSTVRVFpHUlRFeE1UZzJNRFZCUXpSRk0wWXdSVGd4T1RFOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa0k1UXprNU1qTTROalV5TURZNE1URTRSRUpDUkVRek5URTNNalUxTXpWR1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBDUVRrd00wVTFNekZETWpJMk9ERXhRamcwTUVVd01FVTJRVFJHTmtaRVF6d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UWtJek5UWTFSVGd4TlRJd05qZ3hNVGt5UWpCQ1FVRTVNRFJFUlRCR09FUThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tKQ1JFUkNNekV5UVVJeU1EWTRNVEZCUVVSQlJUVTBPVVEyTXpNMU5Ea3pQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwQ1EwTTRPVEkwTmpNeU1qQTJPREV4UVRFM09FSTBPRFl5UVROQlF6SkROend2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlFrTkRSa1EyTURWRk5UWkRSVEF4TVRsRk16STVOREkyUXpSRE5URkdSa004TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rSkVRek00UVRSQk16RXlNRFk0TVRFNU1UQTVPVGM0T1VJMk0wWXdORFZCUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcENSRVJFUWpNeE1rRkNNakEyT0RFeFFVRkVRVVUxTkRsRU5qTXpOVFE1TXp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZRa1U0TURWQk9ERTJOREl3TmpneE1Ua3lRakJGTXpWQk5UZENSRVE1TURrOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa0pHTUVaR01FVTFOakl4TlRFeFJUQTROVU14UkRGR09EQkdNVGN6UXpJelBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBETURNd05EQkNSa1JHT1RCRVJqRXhRVVU0TWtOQ1FUZzRNRVl4TXpoR09Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UXpGQk9VUkdNVFJFUlRsRFJFWXhNVGc0TVRkRlFrVTJSVGcyTVRSRU5EazhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tNeU16VTJOVVU0TVRVeU1EWTRNVEU1TWtJd1FrRkJPVEEwUkVVd1JqaEVQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwRE1qWkRNRVEwT1RVeU5qZEVSakV4UWpKRk5VTTRRMEV5UVRJd1FqVXdNVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlF6TTNNME5GUXpBek5qSXdOamd4TVRoR05qSkVNRVkzTURFd1FVTXdNa1k4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rTXpPRVl3UlVGRU5qY3lNRFk0TVRGQk1qWkZSVVl3UVRnMFFqa3dORFJEUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcERORGM1UmpJd05ETXdRVFpFUmpFeE9VTXpRVUk1TmtVMlFrTTRNRE5CUkR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZRelV5TXpVNE5FRTROVFF4UlRBeE1Ua3hSVGhGTnpnd05EWTVPREZDT0RrOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa00xTjBZeE1UYzBNRGN5TURZNE1URkJSVFUyUmpsRVJqRTBOVVJHUWprd1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBETlRkR05UZzNORU5GTWpBMk9ERXhPRGhETmtaRFJUZERRell3T1VNek1Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UXpWRk5USTNORVF3UlRJd05qZ3hNVGczTVVaRk1EUkZOMFpFTTBJMFJFTThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tNMk5rTXdSRFE1TlRJMk4wUkdNVEZDTWtVMVF6aERRVEpCTWpCQ05UQXhQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwRE56RXhNRVUxUmpVd056WkVSakV4T0VVMk1VRkRSREUzT1VRd05qSTBORHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlF6YzNSalU0TnpSRFJUSXdOamd4TVRnNFF6WkdRMFUzUTBNMk1EbERNekU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rTTRRek5CUkRCR09UZ3hNRVV3TVRFNVJUTkZSVVEyUkVFMU1rSkNNREl3UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcERPRVUxT0RaRVJqTTBNakEyT0RFeFFUZENRVVl6TVRGRFFUQkdRek5EUkR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZRemt3UXpsQ05qRTFRakl3TmpneE1UZzNNVVpHUTBWQ016TXlOalZDUTBROEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa001TlRJNE1UWkVPRE15TURZNE1URkNRME5FUlRFNE4wSTBPVU5CTVRsRFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBEUVRNeE9VRTVOa05DTWpBMk9ERXhPRGhETmtaRFJUZERRell3T1VNek1Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UTBFNFFqQXpORE01TWpJeE5qZ3hNVUZDTmpWQk1qQkVOekF6TlRWQ05rSThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tOQlFqSTJRak16TkRkQ1JrUkdNVEZDTWpJM1JqSXlRVU5FUkROR05qbEZQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwRFFqZEdOVGczTkVORk1qQTJPREV4T0RoRE5rWkRSVGREUXpZd09VTXpNVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlEwTTBPVUU0UmtNMk1UazFSRVV4TVVFNU4wWkdRVUU0TVRFME5UUTFNalk4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rTkRORUZDTlRreFFUZEVRMFJHTVRGQ1JqYzVSa0UyTWtJMU1VUkdOa00zUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcERSRGRHTlRnM05FTkZNakEyT0RFeE9EaEROa1pEUlRkRFF6WXdPVU16TVR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZRMFJGT0RoQ1EwVTBRalpHUkVZeE1VSXlNVGhDTURCRU9EUTNSRU15T1RjOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa05HT0RneE5EVTJNRVF5TURZNE1URTROekZHT0RrMFJVSTFRak15TWpOQ1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBFTURnek5qWTRSalZDTWpneE1VVXhPRFpETTBSRE1UWTBOekV5UVRSR05Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UkRBNE16WTJPVE0xUWpJNE1URkZNVGcyUXpORVF6RTJORGN4TWtFMFJqVThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tRd09ETTJOamszTlVJeU9ERXhSVEU0TmtNelJFTXhOalEzTVRKQk5FWTFQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwRU1qTkZOell4UlVNME1qQTJPREV4T1RFd09VRkRRMEZHT0RBNE5UbEdORHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlJESTVOamc0TURVd09ESXdOamd4TVRrNU5FTkZSREpGUkRBMk9FWkJOVFE4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rUXpORFV4UWpnd01VVXlOVVJHTVRGQ1FVSTVRekU0UTBGRVFrSTNNVUk0UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcEVOREExTkVWRE1URTVNakEyT0RFeE9USkNNRUpCUVRrd05FUkZNRVk0UkR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZSRFE1TTBRMU1ERTBNREl3TmpneE1UazFSa1ZDUWpnM09FUTVOREl5TlVROEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa1EyUmpZNE56RkZORGt5TURZNE1URTRRVFpFUmtKRk1EUTFSRFE1TXpsQlBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBFTnpsRU1qUTBOekUxTWpBMk9ERXhPRGhETmtGRVF6bEZSVU14TWpnMk56d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UkVFMlJUWTRPVU15TURJd05qZ3hNVGczTVVaR1FqWkNRa1UzUmpaRlJFWThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tSQlFURkVNVGs0UVVSQ05rUkdNVEZDUTBaRU9UTkZOelpCTUVSRE1rWTBQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwRVFVSXlRVEpHT1VaQ056WkVSVEV4UWtGR05VVXhORE5DTUVJNE5rWkdNVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlJFRkRPRFV3TnpnMU5FUTFSRVl4TVVFd09UUkVSakF4UlRaRlJFVXpNakE4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rUkNNVVUwUXpGRFJUZzNRVVJHTVRFNFEwSTNSa1ZCTjBORU56UkVNelZDUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcEVRalpDUXpnMk1ETTVNakUyT0RFeE9FWTJNa1kyTXpoRlFUSTJSRVJFUkR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZSRVV6T0RKQ00wSTVSRFk0UkVZeE1VRkZRekZET0RKQ01EVXdSamc1TlRVOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa1V3TVVVNVJqUkdORVZCTVRFeFJUQTVNakl3UkRsRlJEazNOamc1UVRJd1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBGTURKRE1Ua3dSVFF5TmtWRVJqRXhRakkwUkVVNU1EaEJRME5CUXpBNU5Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UlRBMlJqYzROa1JHUTBJeFJFWXhNVGs0UkVaQ01qQkdPVEJFTTBGQk5rVThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tVd056bEVOamcyUlRGRFJURXhSRVpDUlVORVJESkVSRVV3UWpjeE9EVXhQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwRk1FVXpNa0U0TXpORE1qQTJPREV4T0RoRE5rSkZRamN3TlRZeU1ESkVSRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlJUSkdNalpHUmpRMVJFSkdSVEV4TVVJNU9VUkdPRVUzTmtZNVFVSkdOelE4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rVXpNRVUwT1RBeVFrRkRSa1JHTVRGQ01UUkZSVVE0T0VRME9FRXhNa015UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcEZNekl3TjBWRlFqQTJOemt4TVVVek9UUTVRemxDTWpGRFFUZEdNMFl6UlR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZSVFF5T0RneVJUaEdOa1l5TVRGRVJrRTBNVGhCUlRCQ00wRTROekkwT1VZOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa1UwUmpaRFJrRXdNa1l5TURZNE1URTRSall5UWpVeU1FRTFSVVUwTkVORVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBGTlRFeU1FTTVRekJGTmtKRVJqRXhRalJHTVRnM05UaEZRMEl6TURJMlFqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UlRWQk1VVkRNemN5TWpJd05qZ3hNVGs0UVRkRk9FRTVSa00zTlRjM00wUThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tVMlFVRTVNVFZDTWpVeU1EWTRNVEU0T0VNMlFrUXpRekJGTkRNeU9VWkZQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwRk5rVkZRVU0yTmpNNE1qQTJPREV4T1RFd09VVTBRVFF6UTBVMU16QkVNRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlJUYzBOME13Umpnd1JqWTFSRVl4TVRsQk9UUkROVVE0UkRFNE9EazFOVUk4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rVTNPVFF3TnpoRVJFVTJORVJHTVRFNFFUVXpSRFJGUmtVeU1FTXpOVEU0UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcEZOMFJFTlRJMk5ERkJNVGxGTURFeE9UVkdNVUpCTkRjMFJqSkRNRUpCUlR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZSVGRGUlVGRE5qWXpPREl3TmpneE1Ua3hNRGxGTkVFME0wTkZOVE13UkRBOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa1UzUmpsR1EwWXhNakJGUWtSRk1URkJNVUpGUWpsR05EazJNamcwUVVRNFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBGT0RBeE4wSkVOVFZCTXpreE1VVXdRVGxFTkRsQk9VVkNSa1UzT0RReU5Ed3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UlRoQlFUa3hOVUl5TlRJd05qZ3hNVGc0UXpaQ1JETkRNRVUwTXpJNVJrVThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tVNFF6RTFOakJGT1RJeE4wVXdNVEZCUmtaQ1FUWTFOREU1UVVZeE1FTkNQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwRk9UWkRNMEZFUmpJeU5EUkZNREV4UVRKRE1rUXdRakJDT1RKRE56Y3lOend2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlJVRkJRVGt4TlVJeU5USXdOamd4TVRnNFF6WkNSRE5ETUVVME16STVSa1U4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rVkJSVEF5UmtFNE9FSXlNRFk0TVRFNFJqWXlRVEF4TURnd1FVUXdSRGd4UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcEZRa0V3UXpWRFJERkNNakEyT0RFeE9EY3hSa1pDTmtKQ1JUZEdOa1ZFUmp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZSVU5CUVRreE5VSXlOVEl3TmpneE1UZzRRelpDUkRORE1FVTBNekk1UmtVOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa1ZFTjBZeE1UYzBNRGN5TURZNE1URkJNakk1UVRsQ01rWTNOVGt6UkRKRlBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBGUlRsR1JESTVNVE5FTXpneE1VVXdPVGxGTWtVeU0wRkNRVE5CUVVORU9Ed3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UlVWRE1UVTJNRVU1TWpFM1JUQXhNVUZHUmtKQk5qVTBNVGxCUmpFd1EwSThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tWR01UVTNPRFZETlRneU1EWTRNVEU0TnpGR1F6bEdOREExTVVORlFVVXhQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwRlJqZzBOREZETURZMVJUZEVSakV4UWpoQlFrSkNSamRHUmtFMlFqQkRORHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlJVWkRPVVF4UkRRM04wSXdSRVl4TVRoQ05ETkRSalkzUWtVelF6bEdOMFE4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rVkdSa0V6UXpaR05UVXlNRFk0TVRFNFFUWkVSVE5CUXpsQk5FVXdPREpGUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcEdNREl3TWpVeVJEUXdNakEyT0RFeE9EY3hSa1U0UkVReU16UXdRekJDTUR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZSakEwUkRNMVF6WTBNa0k0UkVZeE1UaERSVUU1UlRVeVJURkVNRVpCUWpnOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa1l3TlVVMU1VUkROVUl5T0RFeFJURTROa016UkVNeE5qUTNNVEpCTkVZMVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBHTURWRk5URkZNRFZDTWpneE1VVXhPRFpETTBSRE1UWTBOekV5UVRSR05Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UmpCRFFVRTRSRU5FUlRRMVJFWXhNVGc0UkRoQ05USkdNelpHUWpJMlJrRThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tZMU5ESXdOVVJHTjBWR04wUkVNVEZDTnpKQ1F6VTJSRFU0UVRZek9EYzJQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwR05UVTFNMEU0TURCRE1qQTJPREV4T0VZMk1rRTFPRFkzUXpJMk1qUkNSRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlJqVTNNek0zUmtFeFJESXdOamd4TVRnd09ETTRORVF3UmpGRU5qWTVSVEU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rWTFRemhDUXpCRE1UUTBSa1V3TVRFNU16WkZRamt3TkVFMk16a3dRekUxUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcEdOVU01TkRsRU5FWkNOamhFUmpFeFFrSXlOemxHT1RoR01EWTNNell3UVR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZSalkxTXprNFJVVXdRalpCUlRBeE1VRXhOakZCTjBaRk1EYzRNREEyTTBFOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa1kzTlRORk9VTTJSRVkzTVVVeE1URkJRelJGT0VZME1EaEdOalJFT0VJelBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBHTnpWRU9URTRRVEV4TWpBMk9ERXhPVEpDTURoQ1JVVXlPVU0zTlVSRU1qd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UmpjM01rUXlRMFUyTlVFNVJFWXhNVUZFUlVJNE1qUkVNME0yTWpWR05UZzhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tZM056UkdPVVpFUkVFeU1EWTRNVEU0TlRkRlJqVXhSRGM0T0RnMk9UazJQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwR056ZEdNVEUzTkRBM01qQTJPREV4T0RBNE16aEdRa0ZFTVRJNVJqSXpPVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlJqYzNSakV4TnpRd056SXdOamd4TVRnd09ETkdOVU14UmpSQlJUazJNakU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rWTNOMFl4TVRjME1EY3lNRFk0TVRFNE56RkdSRFpETmtJelFUVXhSRVF3UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcEdOemRHTVRFM05EQTNNakEyT0RFeE9EaEROa0l3TjBORE9UVkRNRFV6T0R3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZSamMzUmpFeE56UXdOekl3TmpneE1UZzRRelpDTXpCQk1qVTVPRUl5TkRnOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa1kzTjBZeE1UYzBNRGN5TURZNE1URTRRVFpFT1RCRk1VWkRSVUZCUXpVMVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBHTnpkR01URTNOREEzTWpBMk9ERXhPRUUyUkVZME16TTROelV3TUVNeU1Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UmpjM1JqRXhOelF3TnpJd05qZ3hNVGhFUWtJNE0wVkRPRVpGTnpaQk5qazhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tZM04wWXhNVGMwTURjeU1EWTRNVEU0UkVKQ1JFRTNRamcyT0VJeE1qUXdQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwR056ZEdNVEUzTkRBM01qQTJPREV4T0VSQ1FrWXdPRFl3UmpkRlJFVkdNRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlJqYzNSakV4TnpRd056SXdOamd4TVRoR05ESkdNVVE0TVRBNE1ESTBSakU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rWTNOMFl4TVRjME1EY3lNRFk0TVRFNU1UQTVRemN4UTBZMlJEbEZNa0UwUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcEdOemRHTVRFM05EQTNNakEyT0RFeE9URXdPVVUyTWpaQ05FVkVNVU16UlR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZSamMzUmpFeE56UXdOekl3TmpneE1Ua3hNRGxHTkRJeU1EQXdOakExTlRFOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa1kzTjBZeE1UYzBNRGN5TURZNE1URTVNVEE1UmpoR1JUSTNOekU0UkRWQlBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBHTnpkR01URTNOREEzTWpBMk9ERXhPVEpDTUVNd05FVkNPVEUyT1RVeVJUd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UmpjM1JqRXhOelF3TnpJd05qZ3hNVGswTlRkQ1F6UTBRekZFT0RVMVEwWThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tZM04wWXhNVGMwTURjeU1EWTRNVEU1TlVaRlFUUkVORGMwUTBWRE0wRXlQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwR056ZEdNVEUzTkRBM01qQTJPREV4T1VaQ1FqZzJNMFpFTlVRd05qWXlRand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlJqYzNSakV4TnpRd056SXdOamd4TVVFeE56aENORGcyTWtFelFVTXlRemM4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rWTNOMFl4TVRjME1EY3lNRFk0TVRGQk1VRkdRalF4UlRsRU1FVkdOa0k1UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcEdOemRHTVRFM05EQTNNakEyT0RFeFFUWXhNMFpETURkRE0wUTBSVVZDUVR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZSamMzUmpFeE56UXdOekl3TmpneE1VSkNPRVE1TVRKRFF6RTBSVFZET0RBOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa1kzTjBZeE1UYzBNRGN5TURZNE1URkNSRVZCUkVVMk5VRXpNRE01UlVNNVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBHTnpkR01URTNOREEzTWpBMk9ERXhRa1k0UlVGQk5rVXlRMFkyTWpVMFFUd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UmpkQk1qY3dRekpCTjBFelJFWXhNVGxHTVRNNVFqazFNakkxTVVJNU9URThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tZNE1EWkdSREV6TTBZNFJrUkdNVEZCTTBKRlFqSXpNalk1TlRjME9USTBQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwR09EVTFNMEU0TURCRE1qQTJPREV4T0VZMk1rRTFPRFkzUXpJMk1qUkNSRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlJqZzNSakV4TnpRd056SXdOamd4TVRnd09ETTRORVF3UmpGRU5qWTVSVEU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rWTROMFl4TVRjME1EY3lNRFk0TVRFNE1EZ3pPRFpHTnpjMFJVUkJOelUzUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcEdPRGRHTVRFM05EQTNNakEyT0RFeE9EQTRNems1TXpNeE9ERXdRemM1TUR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZSamczUmpFeE56UXdOekl3TmpneE1UaEdOakpCTkRSRFJUUkVSalk1UVRnOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa1k0TjBZeE1UYzBNRGN5TURZNE1URkJNVE00UkRnek56UTVNRVUyTkRNM1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBHT0RkR01URTNOREEzTWpBMk9ERXhRVU0xT0VNMk9VUTBOamN4TWpNNE16d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UmpnM1JqRXhOelF3TnpJd05qZ3hNVUk1UWpGRVJUTkVSalk1TXpjd09FWThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2tZNFFqRXlNREJGUXpneU1EWTRNVEU0UmpZeVFqVTFRemswUWpWR01VTkJQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwR09UYzBSRGhCUkRVd1JUTkVSVEV4T1VJNU9FRXdSREZHUTBKQk1UUTBORHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlJqazNSakV4TnpRd056SXdOamd4TVRnd09ETkZRamd6UXpZeVFrUTNRekU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rWTVOMFl4TVRjME1EY3lNRFk0TVRFNE56RkdRekUwUWpVd05ESTFOalEwUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcEdPVGRHTVRFM05EQTNNakEyT0RFeE9EY3hSa1ZDT0VSQ09ESTBRVEl6UXp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZSamszUmpFeE56UXdOekl3TmpneE1UaEJOa1JHTVVWQ01qVTVRelpETWprOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa1k1UkRKQ1F6QkJNRE01T0VSR01URTRSVEJFUmtKRFF6TTVSakZFTnpCRFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBHUVRFek1FUkdPRE15TWpFMk9ERXhRalpFTURrek5EbERRMFkwUWtRME9Ed3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UmtFeU4wRXlSVUUxTWpJeE5qZ3hNVGhHTmpKQ1JVSXdOa05DT0RRd01ETThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2taQk5UTkZPVU0yUkVZM01VVXhNVEZCUXpSRk9FWTBNRGhHTmpSRU9FSXpQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwR1FUZEdNVEUzTkRBM01qQTJPREV4T0VJMU5VUTRNVEl5UWtRMFFrSkVRVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlJrRTNSakV4TnpRd056SXdOamd4TVRreE1EazRNelpDTjBFek5EZEJOems4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rWkJOMFl4TVRjME1EY3lNRFk0TVRGQk9UWTBRVE14UkVNMU5rUkVSakpHUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcEdRakJDTkRFNFJFWTROemhGTVRFeFFrTXlNRVk1UVRReU56UTVNa1JCUXp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZSa0kzUmpFeE56UXdOekl3TmpneE1UazNRVFU0UXpnM1FqVTRSalJFTmpnOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa1pDTjBZeE1UYzBNRGN5TURZNE1URkJRakE0UkRrMVJVTkVNamczTURRMFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBHUWtNMFJESXdOREJCTWpBMk9ERXhPVEV3T1VORE5qUXlRelEwUlVNd1F6d3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UmtKR01EQXpNRUpFTURrMFJFWXhNVUk1TWpSR1JrTTVOalJHTWtZd1FVVThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2taQ1JqazVSVUkzTlRZM1JFUkdNVEZCTnpSRlJUWkRSVEF6T1RrME5ESXlQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwR1F6ZEdNVEUzTkRBM01qQTJPREV4T0VSQ1FrRkJOalV3UmpORU9URTVPRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlJrTTNSakV4TnpRd056SXdOamd4TVRsR016WTVORU14TXpFeE1rUTFPRUU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rWkVOVE5GT1VNMlJFWTNNVVV4TVRGQlF6UkZPRVkwTURoR05qUkVPRUl6UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcEdSRGRHTVRFM05EQTNNakEyT0RFeE9ESkdSVGs0UlVZM1JqRTRRa1l4UkR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZSa1EzUmpFeE56UXdOekl3TmpneE1UaEVRa0pGTkRoR05qWTNRekEyT1VFOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPa1pGTmpsRlJEVTFNMFF5TURZNE1URkNOa1k1UkRkQk1qaEZOVE5FTlRjM1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBHUlRaQlFUQTVPREU0TWpBMk9ERXhPRGN4UmtNNVJqUXdOVEZEUlVGRk1Ud3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUG5odGNDNWthV1E2UmtVM1JqRXhOelF3TnpJd05qZ3hNVGt5UWpCRU56SXpOelk0UkRCRFJUWThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT2taRlF6VXlSRE01TnpZMk0wUkdNVEZDTWpZeE9UUkVSREV6TkRJM1JqaENQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwR1JqTTRNVGxHTmpFM01qQTJPREV4T0VZMk1rUTJNMEpET1VGRlF6ZEVNVHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlJrWTFOelk1TTBFd01UaEZSRVl4TVVKRlFrSTRNelZCTTBFeFJETkRRVVU4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09rWkdRVEEzUWpBd1FVRTNPVVV4TVRGQ05FUkVPVFJDUXpNd01URkROREF5UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytlRzF3TG1ScFpEcGlZVGhqTXpkak55MWlNVGN6TFRrME5EQXRZV1JqWXkxaU5qUXhORGRtT1RWaE5UZzhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1NGJYQXVaR2xrT21KbE5EVmhNakEyTFRjM01UVXRNMlUwTlMwNVlXVmxMVE0wWWpKaE5XVXlaalkzTWp3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQbmh0Y0M1a2FXUTZZelJrT1RnMU9EQXRPV0V4WlMwNU9UUXhMV0V4WkdNdFpqUXdNV1JsWldNelpUVXhQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK2VHMXdMbVJwWkRwa09UTXlNalEwWXkwNVl6ZzFMVEpoTkRjdE9UWTJNQzAyTmpFeU1tWTNNalJqWWpnOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDU0YlhBdVpHbGtPbVJsTW1Wa1pXRTJMV1kwWVdZdE0yUTBNaTA0T1RrNExXRTFZbU5tWldFeU1qQXdOand2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cFBuaHRjQzVrYVdRNlpHWmlNMkUwT1RFdE9UZ3pZaTAxWXpSa0xXRm1PV0V0WmpKaFpUVXdOamcwWWpabFBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2srZUcxd0xtUnBaRHBsTkRNeFpUWm1OaTFqWkdNM0xUTTVORFl0WVRNeVlpMDNaV0UwTjJKbE5UbGpNamM4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNTRiWEF1Wkdsa09tWTFPR0l5Tm1aakxUY3hNV1F0TnpRMFpDMWlPR05oTFdJeU9ESTNOMkl5T1dVelpqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0E4TDNKa1pqcENZV2MrQ2lBZ0lDQWdJQ0FnSUR3dmNHaHZkRzl6YUc5d09rUnZZM1Z0Wlc1MFFXNWpaWE4wYjNKelBnb2dJQ0FnSUNBZ0lDQThaR002Wm05eWJXRjBQbWx0WVdkbEwzQnVaend2WkdNNlptOXliV0YwUGdvZ0lDQWdJQ0FnSUNBOGVHMXdUVTA2U1c1emRHRnVZMlZKUkQ1NGJYQXVhV2xrT21abVlXTTVNek5sTFdZek56UXRNelkwWlMxaE5HVTFMVE0zWWpGaU5qZGlOams1WkR3dmVHMXdUVTA2U1c1emRHRnVZMlZKUkQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRTFOT2tSdlkzVnRaVzUwU1VRK2VHMXdMbVJwWkRvd1l6STJaakV5Tnkwd1pESTRMV0UzTkRNdFltTXhZeTFoTkRrMU1XSmlaV1poWWprOEwzaHRjRTFOT2tSdlkzVnRaVzUwU1VRK0NpQWdJQ0FnSUNBZ0lEeDRiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VRK2VHMXdMbVJwWkRveE5EY3haR1JsWVMwNE5Ea3pMVEpsTkRrdFlqZGtOeTA1Tm1KalpqQmtObVV6TldNOEwzaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRTFOT2tocGMzUnZjbmsrQ2lBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2VTJWeFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwSUhKa1pqcHdZWEp6WlZSNWNHVTlJbEpsYzI5MWNtTmxJajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbUZqZEdsdmJqNWpjbVZoZEdWa1BDOXpkRVYyZERwaFkzUnBiMjQrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHBwYm5OMFlXNWpaVWxFUG5odGNDNXBhV1E2TVRRM01XUmtaV0V0T0RRNU15MHlaVFE1TFdJM1pEY3RPVFppWTJZd1pEWmxNelZqUEM5emRFVjJkRHBwYm5OMFlXNWpaVWxFUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2ZDJobGJqNHlNREUxTFRBekxUSTJWREV6T2pRM09qSTNLekF5T2pBd1BDOXpkRVYyZERwM2FHVnVQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4YzNSRmRuUTZjMjltZEhkaGNtVkJaMlZ1ZEQ1QlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ0tGZHBibVJ2ZDNNcFBDOXpkRVYyZERwemIyWjBkMkZ5WlVGblpXNTBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVNCeVpHWTZjR0Z5YzJWVWVYQmxQU0pTWlhOdmRYSmpaU0krQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHBoWTNScGIyNCtjMkYyWldROEwzTjBSWFowT21GamRHbHZiajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbWx1YzNSaGJtTmxTVVErZUcxd0xtbHBaRHBsT0RZMk9EaG1OQzFoTnprMUxURTFORGd0T1RoaU55MWpOemxrWm1JeE5qTmtaak04TDNOMFJYWjBPbWx1YzNSaGJtTmxTVVErQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHAzYUdWdVBqSXdNVFV0TURNdE1qWlVNVFU2TURZNk5UY3JNREk2TURBOEwzTjBSWFowT25kb1pXNCtDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUGtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBb1YybHVaRzkzY3lrOEwzTjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcGphR0Z1WjJWa1BpODhMM04wUlhaME9tTm9ZVzVuWldRK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBJSEprWmpwd1lYSnpaVlI1Y0dVOUlsSmxjMjkxY21ObElqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9tRmpkR2x2Ymo1ellYWmxaRHd2YzNSRmRuUTZZV04wYVc5dVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNmFXNXpkR0Z1WTJWSlJENTRiWEF1YVdsa09tUTBNelptWXpnMkxUUmpOMkl0Wm1VME1pMWhNMlZqTFdFMk1UUmhNRFJoWmpsaU5Ud3ZjM1JGZG5RNmFXNXpkR0Z1WTJWSlJENEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9uZG9aVzQrTWpBeE5TMHdOQzB3TTFReE16b3lOVG94Tnlzd016b3dNRHd2YzNSRmRuUTZkMmhsYmo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUStRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJQ2hYYVc1a2IzZHpLVHd2YzNSRmRuUTZjMjltZEhkaGNtVkJaMlZ1ZEQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT21Ob1lXNW5aV1ErTHp3dmMzUkZkblE2WTJoaGJtZGxaRDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrZ2NtUm1PbkJoY25ObFZIbHdaVDBpVW1WemIzVnlZMlVpUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2WVdOMGFXOXVQbU52Ym5abGNuUmxaRHd2YzNSRmRuUTZZV04wYVc5dVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNmNHRnlZVzFsZEdWeWN6NW1jbTl0SUdGd2NHeHBZMkYwYVc5dUwzWnVaQzVoWkc5aVpTNXdhRzkwYjNOb2IzQWdkRzhnYVcxaFoyVXZjRzVuUEM5emRFVjJkRHB3WVhKaGJXVjBaWEp6UGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FTQnlaR1k2Y0dGeWMyVlVlWEJsUFNKU1pYTnZkWEpqWlNJK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwaFkzUnBiMjQrWkdWeWFYWmxaRHd2YzNSRmRuUTZZV04wYVc5dVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNmNHRnlZVzFsZEdWeWN6NWpiMjUyWlhKMFpXUWdabkp2YlNCaGNIQnNhV05oZEdsdmJpOTJibVF1WVdSdlltVXVjR2h2ZEc5emFHOXdJSFJ2SUdsdFlXZGxMM0J1Wnp3dmMzUkZkblE2Y0dGeVlXMWxkR1Z5Y3o0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHa2djbVJtT25CaGNuTmxWSGx3WlQwaVVtVnpiM1Z5WTJVaVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNllXTjBhVzl1UG5OaGRtVmtQQzl6ZEVWMmREcGhZM1JwYjI0K0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwcGJuTjBZVzVqWlVsRVBuaHRjQzVwYVdRNk1UWTRORGt6WWpVdFpURTNaQzFtWlRRMkxXRm1ORFV0Tm1abE16azJNR1EyWlRFMFBDOXpkRVYyZERwcGJuTjBZVzVqWlVsRVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNmQyaGxiajR5TURFMUxUQTBMVEF6VkRFek9qSTFPakUzS3pBek9qQXdQQzl6ZEVWMmREcDNhR1Z1UGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2YzI5bWRIZGhjbVZCWjJWdWRENUJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdLRmRwYm1SdmQzTXBQQzl6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2WTJoaGJtZGxaRDR2UEM5emRFVjJkRHBqYUdGdVoyVmtQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVNCeVpHWTZjR0Z5YzJWVWVYQmxQU0pTWlhOdmRYSmpaU0krQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHBoWTNScGIyNCtjMkYyWldROEwzTjBSWFowT21GamRHbHZiajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbWx1YzNSaGJtTmxTVVErZUcxd0xtbHBaRHBtWm1Gak9UTXpaUzFtTXpjMExUTTJOR1V0WVRSbE5TMHpOMkl4WWpZM1lqWTVPV1E4TDNOMFJYWjBPbWx1YzNSaGJtTmxTVVErQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHAzYUdWdVBqSXdNVFV0TURVdE1UTlVNREE2TlRJNk16Y3JNRE02TURBOEwzTjBSWFowT25kb1pXNCtDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUGtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBb1YybHVaRzkzY3lrOEwzTjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcGphR0Z1WjJWa1BpODhMM04wUlhaME9tTm9ZVzVuWldRK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQThMM0prWmpwVFpYRStDaUFnSUNBZ0lDQWdJRHd2ZUcxd1RVMDZTR2x6ZEc5eWVUNEtJQ0FnSUNBZ0lDQWdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSEprWmpwd1lYSnpaVlI1Y0dVOUlsSmxjMjkxY21ObElqNEtJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFVtVm1PbWx1YzNSaGJtTmxTVVErZUcxd0xtbHBaRHBrTkRNMlptTTROaTAwWXpkaUxXWmxOREl0WVRObFl5MWhOakUwWVRBMFlXWTVZalU4TDNOMFVtVm1PbWx1YzNSaGJtTmxTVVErQ2lBZ0lDQWdJQ0FnSUNBZ0lEeHpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBuaHRjQzVrYVdRNk1HTXlObVl4TWpjdE1HUXlPQzFoTnpRekxXSmpNV010WVRRNU5URmlZbVZtWVdJNVBDOXpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBnb2dJQ0FnSUNBZ0lDQWdJQ0E4YzNSU1pXWTZiM0pwWjJsdVlXeEViMk4xYldWdWRFbEVQbmh0Y0M1a2FXUTZNVFEzTVdSa1pXRXRPRFE1TXkweVpUUTVMV0kzWkRjdE9UWmlZMll3WkRabE16VmpQQzl6ZEZKbFpqcHZjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUStDaUFnSUNBZ0lDQWdJRHd2ZUcxd1RVMDZSR1Z5YVhabFpFWnliMjArQ2lBZ0lDQWdJQ0FnSUR4MGFXWm1Pazl5YVdWdWRHRjBhVzl1UGpFOEwzUnBabVk2VDNKcFpXNTBZWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2xoU1pYTnZiSFYwYVc5dVBqY3lNREF3TUM4eE1EQXdNRHd2ZEdsbVpqcFlVbVZ6YjJ4MWRHbHZiajRLSUNBZ0lDQWdJQ0FnUEhScFptWTZXVkpsYzI5c2RYUnBiMjQrTnpJd01EQXdMekV3TURBd1BDOTBhV1ptT2xsU1pYTnZiSFYwYVc5dVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwU1pYTnZiSFYwYVc5dVZXNXBkRDR5UEM5MGFXWm1PbEpsYzI5c2RYUnBiMjVWYm1sMFBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwRGIyeHZjbE53WVdObFBqRThMMlY0YVdZNlEyOXNiM0pUY0dGalpUNEtJQ0FnSUNBZ0lDQWdQR1Y0YVdZNlVHbDRaV3hZUkdsdFpXNXphVzl1UGpVM1BDOWxlR2xtT2xCcGVHVnNXRVJwYldWdWMybHZiajRLSUNBZ0lDQWdJQ0FnUEdWNGFXWTZVR2w0Wld4WlJHbHRaVzV6YVc5dVBqUTRQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDancvZUhCaFkydGxkQ0JsYm1ROUluY2lQejZET09RS0FBQUFJR05JVWswQUFIb2xBQUNBZ3dBQStmOEFBSURwQUFCMU1BQUE2bUFBQURxWUFBQVhiNUpmeFVZQUFBQk1TVVJCVkhqYTdNOEJBUUFBQkFNdzlPOThQZGdhckpQVWRWTVBTRXBLU2twS1NrcEtTa3BLU2twS1NrcEtTa3BLU2twS1NrcEtTa3BLU2twS1NrcEtTa3BLU3Q2MEFBQUEvLzhEQUlrZUExM2Q3cXhOQUFBQUFFbEZUa1N1UW1DQw" }, { name: "__ASSET__:bitmap_LoadBarFill", data: "aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU5vQUFBQU5DQVlBQUFEUEpuQk1BQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBN2hXbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0S1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MUxXTXdNVFFnTnprdU1UVXhORGd4TENBeU1ERXpMekF6THpFekxURXlPakE1T2pFMUlDQWdJQ0FnSUNBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9tVjRhV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdlpYaHBaaTh4TGpBdklqNEtJQ0FnSUNBZ0lDQWdQSGh0Y0RwRGNtVmhkRzl5Vkc5dmJENUJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdLRmRwYm1SdmQzTXBQQzk0YlhBNlEzSmxZWFJ2Y2xSdmIydytDaUFnSUNBZ0lDQWdJRHg0YlhBNlEzSmxZWFJsUkdGMFpUNHlNREUwTFRBekxUSTNWREUyT2pNd09qVTRLekF5T2pBd1BDOTRiWEE2UTNKbFlYUmxSR0YwWlQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRHBOYjJScFpubEVZWFJsUGpJd01UVXRNRFV0TVROVU1EQTZOVGc2TWpBck1ETTZNREE4TDNodGNEcE5iMlJwWm5sRVlYUmxQZ29nSUNBZ0lDQWdJQ0E4ZUcxd09rMWxkR0ZrWVhSaFJHRjBaVDR5TURFMUxUQTFMVEV6VkRBd09qVTRPakl3S3pBek9qQXdQQzk0YlhBNlRXVjBZV1JoZEdGRVlYUmxQZ29nSUNBZ0lDQWdJQ0E4WkdNNlptOXliV0YwUG1sdFlXZGxMM0J1Wnp3dlpHTTZabTl5YldGMFBnb2dJQ0FnSUNBZ0lDQThjR2h2ZEc5emFHOXdPa052Ykc5eVRXOWtaVDR6UEM5d2FHOTBiM05vYjNBNlEyOXNiM0pOYjJSbFBnb2dJQ0FnSUNBZ0lDQThlRzF3VFUwNlNXNXpkR0Z1WTJWSlJENTRiWEF1YVdsa09tWXpZVEV3WXpobExUTTROVGN0WmpjME9TMDRPVGN3TFRNMU4yVXhOVGt3TURneVpqd3ZlRzF3VFUwNlNXNXpkR0Z1WTJWSlJENEtJQ0FnSUNBZ0lDQWdQSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUStlRzF3TG1ScFpEb3haVGd5TURZNFlpMHlPR001TFRjM05ETXRPRE5sWXkxaVl6VmlOV016WXpjM01qZzhMM2h0Y0UxTk9rUnZZM1Z0Wlc1MFNVUStDaUFnSUNBZ0lDQWdJRHg0YlhCTlRUcFBjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUStlRzF3TG1ScFpEb3haVGd5TURZNFlpMHlPR001TFRjM05ETXRPRE5sWXkxaVl6VmlOV016WXpjM01qZzhMM2h0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJENEtJQ0FnSUNBZ0lDQWdQSGh0Y0UxTk9raHBjM1J2Y25rK0NpQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNlUyVnhQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cElISmtaanB3WVhKelpWUjVjR1U5SWxKbGMyOTFjbU5sSWo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT21GamRHbHZiajVqY21WaGRHVmtQQzl6ZEVWMmREcGhZM1JwYjI0K0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwcGJuTjBZVzVqWlVsRVBuaHRjQzVwYVdRNk1XVTRNakEyT0dJdE1qaGpPUzAzTnpRekxUZ3paV010WW1NMVlqVmpNMk0zTnpJNFBDOXpkRVYyZERwcGJuTjBZVzVqWlVsRVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNmQyaGxiajR5TURFMExUQXpMVEkzVkRFMk9qTXdPalU0S3pBeU9qQXdQQzl6ZEVWMmREcDNhR1Z1UGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2YzI5bWRIZGhjbVZCWjJWdWRENUJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdLRmRwYm1SdmQzTXBQQzl6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FTQnlaR1k2Y0dGeWMyVlVlWEJsUFNKU1pYTnZkWEpqWlNJK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwaFkzUnBiMjQrYzJGMlpXUThMM04wUlhaME9tRmpkR2x2Ymo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT21sdWMzUmhibU5sU1VRK2VHMXdMbWxwWkRveU1XRTBNVEZoTmkxaFpUZzBMV1V4TkRZdE9HSm1ZeTAxTmpnek5UVXdaak0xWW1VOEwzTjBSWFowT21sdWMzUmhibU5sU1VRK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwM2FHVnVQakl3TVRVdE1EUXRNVFJVTVRnNk5EWTZNREVyTURNNk1EQThMM04wUlhaME9uZG9aVzQrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHB6YjJaMGQyRnlaVUZuWlc1MFBrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QW9WMmx1Wkc5M2N5azhMM04wUlhaME9uTnZablIzWVhKbFFXZGxiblErQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHBqYUdGdVoyVmtQaTg4TDNOMFJYWjBPbU5vWVc1blpXUStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwSUhKa1pqcHdZWEp6WlZSNWNHVTlJbEpsYzI5MWNtTmxJajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbUZqZEdsdmJqNXpZWFpsWkR3dmMzUkZkblE2WVdOMGFXOXVQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4YzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDU0YlhBdWFXbGtPbVl6WVRFd1l6aGxMVE00TlRjdFpqYzBPUzA0T1Rjd0xUTTFOMlV4TlRrd01EZ3laand2YzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbmRvWlc0K01qQXhOUzB3TlMweE0xUXdNRG8xT0RveU1Dc3dNem93TUR3dmMzUkZkblE2ZDJobGJqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblErUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESUNoWGFXNWtiM2R6S1R3dmMzUkZkblE2YzI5bWRIZGhjbVZCWjJWdWRENEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9tTm9ZVzVuWldRK0x6d3ZjM1JGZG5RNlkyaGhibWRsWkQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT2xObGNUNEtJQ0FnSUNBZ0lDQWdQQzk0YlhCTlRUcElhWE4wYjNKNVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwUGNtbGxiblJoZEdsdmJqNHhQQzkwYVdabU9rOXlhV1Z1ZEdGMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFlVbVZ6YjJ4MWRHbHZiajQzTWpBd01EQXZNVEF3TURBOEwzUnBabVk2V0ZKbGMyOXNkWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2xsU1pYTnZiSFYwYVc5dVBqY3lNREF3TUM4eE1EQXdNRHd2ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajRLSUNBZ0lDQWdJQ0FnUEhScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK01qd3ZkR2xtWmpwU1pYTnZiSFYwYVc5dVZXNXBkRDRLSUNBZ0lDQWdJQ0FnUEdWNGFXWTZRMjlzYjNKVGNHRmpaVDQyTlRVek5Ud3ZaWGhwWmpwRGIyeHZjbE53WVdObFBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmhFYVcxbGJuTnBiMjQrTWpFNFBDOWxlR2xtT2xCcGVHVnNXRVJwYldWdWMybHZiajRLSUNBZ0lDQWdJQ0FnUEdWNGFXWTZVR2w0Wld4WlJHbHRaVzV6YVc5dVBqRXpQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDancvZUhCaFkydGxkQ0JsYm1ROUluY2lQejRVNnBpWEFBQUFJR05JVWswQUFIb2xBQUNBZ3dBQStmOEFBSURvQUFCU0NBQUJGVmdBQURxWEFBQVhiOWRhSDVBQUFBQ0xTVVJCVkhqYTdOVTlDc0l3QUliaEw0MEZIYnlCWStsVmVtVHhLcjJLK0RPSWkwTVZLaWpoZVpZMGtKQlM4dEp5SElaYmFNNDQxY3lueTBmejUvTTQxU1JaM01kN1haOWN6NCt4Ymt2Mmh5NUZhTzNFdEhiZE45N25OVlNTemE0SWpmK0l0UG0vbkUvQUVwRUpEWVFHQ0EyRUJrSURoQVpDQTZFQlFvTTFGNzMvN2ZsM0FBQUEvLzhEQUJwRktQVUo5c0d5QUFBQUFFbEZUa1N1UW1DQw" }, { name: "img/levels.zip", data: "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" }, { name: "__ASSET__:bitmap_OurLogo", data: "aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVFJQUFBQ2JDQVlBQUFIK1ZxWDVBQUFnQUVsRVFWUjRuT3lkZVZ4VTFmdkgzN01CQTdLcklPS0NBdTVibWhzdXVLUWlTbG5pMHVJdmFUR3p6TDZXbFczYWJxYWxaVjhydzc2VnVkQkt1ZVZhaVpxNXI3bXY0QWJJSmhlR1pYNS9uSHVaeXpEQUlDaW84M205NWpVejk1NTc3cm5uUHVjNXozbk9zMEFOZ09ZYXJ2R1Y0a2kyZGNJWVRXMGc1Ym8yUW9yRGJFODVZM1RGNnRYYVdVNWpid1BBL3NZcTBOdFRhT1hyWEZML04wYlRCRGdORkFJNndILzNSMnh0VnA5QWRVT00wVGdCZVJWcFVHbW9MY1ZobHAvT1JUN1dPU29oeHF4OG1zVzBqd1ZxQVl6cXlkdEtlWHQ3cE54M3AxUWt2MmREVkVLTXFhenk4V0d4R3FDK0ZNYzUrYnAyd041S04wSnVnRFlxSWFZQUlHSGlxcGRTZGlSOUNaZ0FyMEVyN3QvcjVPbmlZZFdRMWxJYys0elJORWE4dW11R0orQU5FSlVRWXdaNnk4ZjkvY2F2elFpWXZOM3NNL1Q5ZFlBWFFQdXBZYjhwcjBoNUFHQm9lVGNwcnlkY2dXekFEUWdFRHRlYnVDbFhZM0J4c2xVNGFWWW5EZEExS2lGbWk5d2JBRzJBZmVVMXBGd01YdnZRWVFCRGsrNTNCa3plYmdhYzVWTUdBSzlCMDM0Sm1MemRMSitqL3NDbWIxVDZwcVZCNTljc1N2VjMyTXd4cTgweng2dzJBd0ZBUDhCZDFjQnJncS84SFlDRmlkVUNnaEc4QU5YdklQbWMrclZvZ0NhSVYxZExyc01BMUpmUEJTRm9yRDZDUDNtaVpwWURCdkEwRUFuNFNoSm1JUFQrKy9rQkdDNy8xKy9keTJuQVM1SXd5OGVhQU8wbVR1UlhZQzRRRFhSV3pwOCt6VldnNlRmZnNGRjFUWFBsdC95L2pyb1hQQ1VKYzJvcU9VQ0x4eDdqT2JrUThuYzlvSTc4dTQxeUR1REJCM2s5TlJVSk1NakhvK1J2ZjhCSC91MHFTWmhYcmlUT3FoRk9TaGVDZUpmS2YxdVU3d3g0cVA1cktEbXlDcTMrWndOWGJkUmxSdkNYWFBtYWZCdGxTdUxpQjgvdkExZzdhY3dTZ0JuMzN2VWV3TXpoQTk5NHZHTkgxMWNqZS9jRVNKMzlRdExqSFRzYVhvdnNFMmxYeFpXRXh1cmIrcmdETnlldTVmME5sK0tJc3o1b2pHWVVzUFI2TnFDN0ZFZENlWVdNMGR3QjdMSzNVcnZreWo1dG1HTFB6UUdrT0hZQ3JleHRnRDN3VUl0bjAwY3pIekNxemh1Qmdlb3lVaHptZFcrdzI1N0s3UmJsMmp6Tms4Y3U4Ri9BcWYzVXNCOGJSallyWWo3eFliSGRnSzFBTFNtT3pLS1dSUk1PL0ZHWkJyaEtjVncxUmhNS0hHMzJhSWNGemNaMmVLUzB3dkZoc1dIQVpxWFJtUklGZGNmWUo3bmJ4SGVUV1FlRVF3bnhyRGtXOGU0dXRYVHQyeWxnQ29pZXErZ2Fvd1JVRlhqTE4xYUlkclJLVXVvdkgvTlVOVkFMR094cFFIbXZRQS9rUnlYRW1HVjUwRFZnOG5aYnN4NUpzem8xQk03S1pXc0JWNC8rbDRzaDQvRXJyeEgyUUE4Z1AzRlgrWmdPSVJGNXEzcERHUjA5N2EyNElveklFOGhBelBIYW1XTldGeWdubnY5Nm9BYW9YKytaelVmUHorbnVXb0U2aThFVmkyeFlHeUc0ZUFKTjVXUHVRQ1BFVXdmTHg3emxidytFY0tPVUJTRjcraUhXR0RvZ1JDNm55S2FOaTBxcXhhazllemlqaUZLTEZyRmVMYkk5OWhpZkEzYzk5QkJMbEdOV29sY25JTnJxMktOQUQ2VytiZHU0K082N3pEbDNqb3lpQm16ZHlpRzU4RU5LWTRENmltd0hrSnBLanZ3N1NQNEFERUFzZGoyV0xXT1ZTZ2dOUG4rZVZFbkNIQnJLNDBCZFNjSzhhaFhMRUVPNC83UFA4ajRJR3RCaklSNG5TdEtGanBJaXV2VWNZcFkvYXFSUVVuWUVJUi9teWVkTTVSSmhkS3RXVHExQzZnUWdPV2RrYTdMcXVMb1ljazBtYzhnN0svNVlaL3IwMWF0T1Q3NXBmRFd5ZDgrc1ZOUDJ4d1oxWE4zeTlVOTZ2UllaL245dkxOLzR2L0xxcmdvNDVNTks0MFoybVFZeHVud1FJOFVEd1ZPY2dDemdFbkFSU01NMjhWN1hobDB2ZUM2WXdOY1BoQk5WZmxIYmVPOTdGa3hmeWlSc3IveXFERlhkQ2RxUWVqeStkeTcvcmNwS1AvNk54R01YR1BmNWFwWlhaYjBLcXJJVEJrbHhyS3pDK215aTdVVEdIejNQRjBCQnVZWHRSRlYxd2tncFRrelhhaGlqNlFOc1FVeEdDclNJeVZDTEdQdTJsQmhlaUhWSGlUb1ZmTEtDWmM4dlpCUWxKOFFLbzlLZDhPb0l2cHdhVFl6eTN4aE5KMkNIcXY2T1VRa3gvMVNrem9SblZyMlFzajFwUGhUSk1LMmtPUGJiS211TXhnamtWTHpsRmxTMkU3cEtjV3lSRzlNTU9DSWZOL1JkZk4reFdnMDlHMWF5ZnRhTytuNUM5dG1NK1FpS3FTZkZrYVErUHlXVzRJOVhjcnd5OTZoTUoraWtPUEpYNytMdmU5NmhHeGF5SEJ5VkVMTWN3SlNXazdrcThydHV3R0dLazd4eVgydFM5Z1FHUkNYRUxMTytXWHhZYkFjUXkvQm1BVHl5ZXc0TEFJelI5QUQ3OUFtbG9US2QwQkJvQWF4V0RqUVoyZktqMWhPN1BoTWZGdHNVT0NFZmR0SjZCWTd6ZitUbnVlVlZtTDVoOXB5ck83OTdCU0UzYUlBaFVRa3g4VkRVb2Q1WUdHSXJLWTc5eG1pR1FPVm1qYXFjSFhvZ0ZrUy95UC8xOVNadXl0SVlYSXEwLzZaenUvY2tMMzMwVFNCVlBsUzN6dGp2UHpENE5BNjBxb3VrV1owYVk5azU2aDJWRUxNeFBpdzJHSXFSdmhkQ2cxem0xdGlOUkxFT3JmMS9TdzY0TkIvMExwWk5SQUJEZExkbkZ5aGJKVFBIckRZLzJ1K2R6VmdVL2owQ0ptODNldzJhdmkxZzhuYXoxcnZCRTZwcm5ZRVNuVlhsRGIvTzBMNTAzOWNmcG1Ra0JVcW1URy9ya3o3dTlVN04rZTJwR0t2RFRnaGVjc1BFYVAyU0pheVJKTXdSRVl5WGp3MlNWOFVlbHk1eFdmNWRPekdSZEVuQy9OMTNyRk10MVpVSEMxSXY0Uk1UU1FNNktQL2ZlWWZuQUM1Y0lFVyt6dXY0Y1E0QXRTVUo4eDEzTU1TR2FpQlEvcjRQYUNUL2JxRXVJKzhVTlZmZlorbFNmcmVxcDZQcWQrMFNQYkJ4STl2bGsvY0RMZGV1Wlk5VkJSRk5tL0swSkdHV2RSQTZsWjVqQXZMT1gySWlhZkt4dG1mT2tDWC9EcE8vWDhaQzBqcWw3cWxUeGQ1WWVEZ3ZBbjFVRC95RS9MdTcvRDFSMVo2R2tvUjUzanoycVk0MWxiL25BYzJWOXFuT053Q215TDhIS2MrdURBZHJkWVlad1lVTlNvT3hjR1VERnVzRGpYeE9wL3F2d2JMN21LKzZ6azFWVG9HaUVpbVVmK2NoRmtzYStYcXpmRXk1VDRGY05rLytyY2NpZFNyUXErcFVWQ3k1Y3YwbXVTNWxpTm0zM1dZdlh1amYzMU8rQWN1aW8zV3ZETzBWTkRjaVFwa1pOTk1HRHZSNXZHTkhwVk41Zm5DNC95dERleW1LS2FhRmgrdW5oWWZyMWVlZkh4enVyL3gvdGxzMzQ3U0lDUFhlWTVYQlhzT1pjdXZ4OU5TRXZkU3Zudy9BaUxpNHdseVQyVHRWa2pRQTB5SWkzTkdiN3ZFTDhBaVZ5MnM4OUpydUJyTzJzOUtHZlBmQ0J2bnVoUTFBZElpYlZqUEFUVWRYNUk0MWVHb2I1bW12dHE2aTlqcmdnQU1sY1NNRkpRTmljZVNMbUorZEVQcEdFMEtuZUI2aEdKZHVZSnV1ZXdjWWdPYnhyL0RaWGUzb1pzOEY4bXAwSEhDQXFwNjZiT0I2ZFlBR3VGT0s0Ky9LVkdLTXBtakpmTDFRVlZPaUdoNC9UMlZMWlI4ZVFJcGoxOHZSTEVRSVZ0Y0ZWVTBCQVZJY2lWVmNKd0RHYUp5NURzdGphM0cxTXZDM1ZuRlZKZEt1NHZuUFVUWlN4WHlocWlqQVZZcTd2cHNnQ296Uk5BTE9WRlY5MTI0UW9zSVBMekN2dEhQWnVaaDhINlEvZ3F0blVGS1hxRWZzSlFmMmJzMlFWYS96VGxuM2t1STRiWXltRGRqV0xsY1VWVUVCN2xLY2F1dGVocXp6ZnhaS0RBc0RGdVpycHFSQ1JBODBPL0lwR3hyVUtXNCtxa1pWVVVLVjd5Y0FHS01KQVk2cER2a0Q0VkVKTVl0dDFaRjVLdTNjaGdkK25JellnRWxDTEg4MVFCc3BqajJsM2JzcUdHTmxPNkNZbzBuQ1FmYjJmNTJ1V0tRNWoyYVBkUGl3V1V3SGExVlltWWdQaTIySE1EUTNBeTZmanlmdW9iNE1zUzVuakdZWThQTzFONy95SGZDZ0ZNYzNVRVR5RDJBWjQ2RlJDVEdIcjdYaWxMMFg5eVNNWDk0THdUZTB3ZjZNMy9jeG42akxuRS9sZkpOeE5LUVNNME5sT2tBcnhRa04wT1pEN09uM0doMnhhSVRhUlNYRVZJa0VGeDhXR3dna0FwcjdlL0hHbDAvemluTE9HTTFqd0VJcXNkRmFtUTZvSzhWeFVXNklDNWJOMHlaUkNUSEZ0cmVraTFtWDE5eTdiQ1JpdXkwYkM5TnpCdXI1M2xFdk11emppTGRMdTFGOFdLdy93aEJEZCtSVHppdk04ZXhsTG9jK1NkMUtQRU9sT3FDWEZNY2ZzbmZUU2ZtWU1Tb2hKbHNwRUI4Vyt3QmloeWZkeG4ydHQ5SDBRRWlmUmZmKzd0N1lxOFFlUVh4WXJBN1JjWjVTSEduS2NXTTB5dkZyd2pYTEFSTWp1U2ZpRFY3RTh2RDRkZ3A0R2lEdGNQTFJQMlBpdXdCWDVGTk9RQWVmb2UrLzdSTGF0NTlTUGkvMTFMbVVuNTk5ci9ESzJUV0luYUZER3g3NHNTRndaMVJDVE5GYUlqL0xWSWp3eWpnR3BCdWo2U0hGc1VrK1hha091R1lLa0oycjNCQWtEY0krTmZYd2x6c1hIbzdkL1JpV2NSa2NNSG43VVh2cVRKclZTYjM2ODQxS2lDbWFZZUxEWWxzamhDa0E3Ymt2U2ZQMXdMMnlmblBYdkJvMFJ1T041ZUZ4YmVSNVg4cmVpM3VzSHI2bnZROFBFREI1K3k2bmhwMm5JTjVxU254WXJKdDBNZXN5Z0dzRHoxNnFvb1dCajlCSi9sMnB0VUZWclFYMFVRa3hlZkZoc2U2SVhXQ0FEZ0dUdCs5VUYwcGQ4ZHBiT1lkV2JFSUlMMDV1SGU0ZjdObjNQeE90Szh2YXRXUkp4dm9QN2tmd0NXTlVRa3gyZ1pSbld0Ny9HMnQzTEQ4RWM2eDJlQVBOVlA4MVRrRmgzd1JNM201MjcvcDRMRUlGcHU1c1BZSXZLS1kyblJVRFpwVWhjNFNxZkYzWnJMc3FWNi9YRlkzbGgyaHVkVHprN2Z0L3lWWHZJQ1BzMXpWQUxiL0hmcjBjTUhtNzJTbWc3ZnZ5OWVxTmthWmNodzY0SGhvaDZvNWIrVTNTckU1MWdIK3RUbDNKeWNzdUpyVE1ITE42elIxQmZkOEVybDc4WW1pVC9QU2tiYWFrdlM4a3plb1VEblJRRlQxT0ZWcVdLYmllT3NGaTgvenpkeThjYkNxNE9qenQ2dVg2aFlYNUJ2VTVuZGFRKzlXR2FjTXBhVmpwWnVOWWxUZFVEV2VFZFliQ1dQd1JxdW84aEVwYlFqQXdmeUFaNFg1cFFBZzZsK1ZydFBKeFovbmFLd2dqQ1UrNUhzVTZ4QnZJeE1MRm5lWDI1QUIxRWVRdklWYUh6bks1ZkN6bS9Oa0kzcEtMV0Mva0lGVHUzZ2k1NERTQ1NSWWdPakZMYmxzRHViMUZ3cFNDbHFydFpTUGdvdHBHOTVRa3pFOC96WWRBc0NSaGZ1SUpubFhLSHozS0lhVkR0MjNqZ05WV2RVdXIvODdJZGdLSThkOGJDSjQ0a2RueXNZSHE4di8zZjd3Q2pFeEpJUmVvdjI4ZnArUnlnNjNxRGJQZUlyZjYzMC94TWpoOG1CS0xORGRKd256d0lLbklqaEdqUi9PVzZ1SldlL2R5V2ltajNxTlg5dlhsZXVyTC84Y0MvcEtFV1czQThNSUx2Q20vQlkwa1lWYnNDcFJQcjE2OG9xclRSZms5Zmp5ZktMOFRFa2pidlp1endOMXl1ZWFLOGNUdTNaeFZYZTh2Zjc4aGYwZXF6ZzIzN29BNmtvUjV3d2JPQUgyUS9YR3RlckMrNm5jN1pKOEtJQmJvSXRmVFFKSXdEeHZHUjBBL1NjTGNvZ1ZqVk5jTnhqTHNla2dTNXVSa1RHcUxEdFh2MXNxRExWN01Xa25DdkhrelJ5UUo4emZmc0ZIcGdQcjErVUF1MzFQcEFPQmhJRUQrL2I3OGZUZlFlZmR1cnNyL1N5d0QraW8zRHdsaG5Gem9EcUMvL05zSGlGeTVrbzF5ZVErckRsSndqM0lzTnBZZkFTY2JaVkNPSThaeDk1WXRlVUErWHRUNWlZbWtBN1dQSE9GZnVhd09HRHA5T2k4QnZTVkplT3dnK3g1YXRVY3hzK20yYlJzSG1qVWpScEl3eTBPcGFIcFczb1liZ2pRVkM1QThCSE5UemlzV0c0cEZTSUhxdUdMaG9WaCtvTHJXcENwWGk1SXJRTVVDUmJsUGxseTNEdkdHVFBJMXl2eGZnSVVaS3ZXcVJXR3RxZzM1V0N4RkZOMmpZZzJqV0tPWXJUdEFEYVVSOWtDUjZtcFIrdFJxajh4UjNxcXVBREZ6VkdUeG8zZ2JLZVkyNnVPVk50SUdZRzVFaFBPTXFDakYzWjVwQXdmNlRJc0lMMXJUejRpS2NwZE5hZ0JoVXZQUzRCNmh6M2JyVnVUVk9pODZ1cGE2dmxlRzlBcFJtOUM4MUsrZkw5ZEJicWtTU1RCVkw5MTV0U0JqQkhJRDgzVzUzZEZ4ajFMLzFZS01FUVBiQk01UmJINzI1U1EzYitqdC9aRlBIWmU3UU5nRFJYZHV2RUhwa0ZSOWJ1ODZicldtNWJrVmRnYVlGaEhoTWFoOXcza3ZEK2hWNWNhVVZiSXhnbzV6NWtKemtmUlhxTmY5azIzS09ZcE0wbG90aHpjY1BpSHBKRzAyUUU2Qk9TVWxNM3R0cnJsZ0g0Q25zM1BlbkQrMlR2QjBkczRES01DY21KVmoyazRlWndGOElIZjF3UlAvY3plNFo5bTYvYzBDYS9JdGovcXV5enJGQVFjY2NFQ04yOGx4VjVGaTFjK3N0bDlXYkkxdnFBZHNUY0N0UWdRYTVNQUFDUDFMUUxBL1RkOTZrSHViQjlKY0hZYlBIaHhKNU95YXZTUThKOVp6cHhEYmsya0l2Y3N0UnlRM0t4SG9FUys3MmZoQkRKLzlDQk51MUkyZmkrWGplU3RaaXRqdVRlVTZxR3R2Tkc0bUluQUM2b2NHMEcvUEhMNm83c1pBa1NYWUNHQWJRanQ4M1cxOHJ3ZHFPaEZvRU9xekhsSWNQMVozWThxQ1pDTFg1d0dpZ08xWW5FbHZDdFRVRmFnR0NMeS9GMjlJY1Z5cTZRUUFZSFRDK2UrWkxBS0dJUGFKYnBwOTNacklDWHlhQlRCTWNiQy9XWEU0a1hQdEovRXdJb0xoRmFwS0pYc2RVSk9JUUF1MFNGM0VEcVBUdFVmclRjMGs0ODFsZkR0L0Zac1E4M1E2WWhQQ1dyOXVRR3lNdWlGV0ZWNVBSdEIxV0ZkNjkyaEptMnU5dnkzTVc4SFM1eFl5RGJIdlh5WEJ3YXNTTllrSW1rNittM2ZmZXBCb2V5LzRZVE1iSC95UVdRaEovUkxpWlZlRmNLWU9KZWNOTk9yVm1wNnJYK2V0eWxRcVc5cU9SclMzeHF3cWFnSVI2SUQyS2QreTJkWFpabXpuSWh4SjVHeTdTVHlLQ0M2djJIVFlxczhKc1lQbmpkanY5VUEyaDhDeW5hazRya3NJNHNtUXY3TVFkaG1LUTdzYVN0aTFBS0RqdVMvNTNOZWpLRGExM1dnN2tTZU9ubWNwTnV3M3FnUFZUUVE2UkhTalRhVVZTTWtnTS9BUmhnRTdFWjFteXdMWkYyalRkZmJBNlhXNzFPOXVYY2UxSXZOMDJ0bDlILzM5VWZLMnhJMkkrRG9aRkZjV2FSRkUxdmJJcHl3cHkvL0ZHbnRPY3JqckZBWWhsRkhWaXVva0FnM1FYbzYrWEFKemYrUDdGLzdINndnTGFtdS9HUjNDa2lzc0tpR213akdzcnhVRlVwNXB3eVB4VDJhZlR0OEFuTE5xbHg1b09Lb25qeTZjeUV2MjFIZjhBaWRiUDAxdkVKdWsxWVhxSklMQXpUTlkzNkVKSWVxRHNudk95d2hUZld0MjdBUTBENXNmK1QvZk5uN3RiMVJEUzBOOFdPeHc0QytFQUtwd0tBM2dGK3pQc0gwZjgybFoxeHVqZVd6VGU5VHU4U0lmVWp5aTN3MUZkUkdCRVJnbXhiRklPU0I3eVF4QXVBNVl6L1Y2SURUczA4R0xmZHY1dDdYM0pzbTdMK3pQUzh1NW1MenIvTDlvTmNVSnF0Q3M5MjFmcjRWM3k5cXRqWDYxN0dianRyQmoraDl2Si81K2ZENWlqMEVoQmkzUThQMkhlZi9wU052Qzd0ZnJXVDd1dnp3TXRqTkIzU2hVRnhHRVNuRVd1ODUyRXhsMzVEekxzQzBvMWFrL3NPblRIVi9yL2FxdGlncWtQTlBXRjlaT1M5bHhmaFBDNS9RS1FyQ3J5Q3BCV1EyNEl1U0xCcjUzMUF2cituNy8xM1ZHUTVuQ3Fob3laL2dkTE9IMUVUYTBYYVE0MnlIMnE5SmgrRnBSSFVUZ0RFUkpjU3dETUViVEUvaWJrcU5mQ3pRZnRPTCtMZW9NVUFCclJuNC9VVHFYc1E3eDBxOVNVbGhVcnhCcUlYUUJpcUdqWWxDWWc1alRjeEJFazBOSnd0RWd1RmFnYTBQUFBuMWlvK2FXUnhTYko2MTZQdm1mcEM4bzdsYW5BUnArK3l4ZjNkZGRaQ3RRWUl4bUVMRE94cjF2R0txRENQei9mSWY0NEhxRUJJd2xET0dFWWIwOXEwTUVmUzF5dGZ0M3djNnZqeXpjL1I1Q1NyZWVQeFVwdlkzUDBQZGZWcnZ5VlFUbXZCelRsVFh2dko5emFNVnZDTVhPRllyTEpYb2d3TFdoWjBUL3hmZk50MVhINm1GTFo3VjVwdlBlN1M5dldFeEp3dmJ1MDRiSFZyekdET1dBTVpxN2dWVlVZN0RKNmlDQ2dLU0YvQm93bHFHVURFY0FvazN0b2hKaWRnR2NXTHAvMmY2NTIxNUMrRXhZQzRwR29HM3RoeFo5N1ZTM1dTaFZESE5lanVuODNCNGpnYzBVRi81QXBIeTRNM0x0UXl1dHVVTjhXR3hmaE1Cb2EzUzdBVU9VRU0xeU5wWk5WS1B5cUxyMUJMWVFGTEhxZ1oxYWc4NjR2Ti9YUFJIK3A5WWp5Z2gwckRkeDA3clMwdVpWTlRJM2YvRmw1cGJQM2tXczY5VXZ6QmxvRjdsdXpKODZGNzB6UU5LR1V4dTJ2N0orRkJUUFBhbUNLOUQ5NENlODNmSXA3Z1l1WE1lbWw0dWFSZ1MxbW94c05jYS9lOE8rbTU5Wk9RbXhGcmRHWFo5aEg4VzZOT2xSSXVGYVpzSm5YMlZ1L2VJSEJOZElSbWovVEZqTXh4UW80UzVkRU41YkRWeWFENHJ3aVh5cjNQVjljdHlUTDVyT2JQdVNraEs5TzlBM0tpSG1aNEQ0c05pT2lNMmpzamFPYkxuZjMzRFVOQ0pRTm5TeXNCMmszUm5vSHpCNSsyOEFlYW1uejE1ZWVOOGpXTlRJMXV4WGoxQVoxMFpJL2E2SUY2OUZ5QldYRVJId3Jzai85UWgzdjg3MUptNWFXaHFYS1pEU01pNSsycjhyUXA1UnYwUXRFSExYVHlOL1dqTnM2VmlFbHJQR2JSaFpvNllSUVZsd0FjSUNKbTlmZS9HcjRXTUxVazZ0UnZpSGxtYno1enkyei9RblF3THVlTWVnYzNJcHBVd1JsbTZhT1gzN2liVUxFSEpLSVlJZzd3eVl2UDBQZ0tSWm5ZWWdpTzJPZ01uYmZ6Ym41ZWFjbnh0MkJ5VUpBU3hCZG04S1M2T2JpUWljbmUrSWJwQzdNKzRTWWgxZUZodDFRckRuK3IxYURuOW9hS2ZIbnJQM0pyUGp4OTkzUHUzRVNpelJsTnprK3RTT3dtNUFrTis0Vlc5ZC9HelFhRzV3SE0ycVJtV0pvTFRzRE5VTkovbGpRTEI0ZTUvVGpKaUdybklMV2hWWEZIcEVrUFZCQ3hid3MreksycEhpM21yKzgrZnorZWJOYk1hUzBVNFBOT3ZidHlqZmNHdkVQT2tLREpEekNrY0R6Ull0RWw3bjZzK2FOU3loZVBRSnBjN2cwRkFldHk0L2NTS3o1SHU0QUlHS3E2NlZLMjUzTFBIWFhZRXVjK2Z5djdRMHJpSXljeWpidzU3eXZmUkEyOTkrNDBkRU9CQi9oUERZODdmZjJLU3UrOWd4TGdEM0l2SXBPd0Z0ZnZ5UldMbXZGSDlLejgyYmlkKy9uNVBIam5GUTd0YzJodzV4ZE04ZXp1emR5K2xGaTFnL1lRSnpnR0VJOTJBalVQdllNUTdhZUo1ZWdNL1NwY3pjdjUrVGUvZHkrcnZ2V0xkc0dhdkhqT0ZWaEQrNEowSitDdTdYai84bzEzN3pEUjlCK1Z2ZkdpQkluWjVBZWRpeFk3a2JpN2R0aXlOSHVHVFZ1SjRJaGMxd3ErTjlnUkhLZjlrUHV2KzMzN0pCVldZZThIOUFlNHJuQUhkdDNwei9VOG9sSjJNQ0hnUWVWRHV3aDRieUtORFQ2cjcvUVNRcWJJVEZsdEl0TkpUSGxESTllL0lhRUs0a09SdzFpbmVBM2lrcDVLcmFlby82V1dOaVdBaEVOV3pJTkt2NzlYNzZhVDVVSC92aUMrS0JxSjA3U1pRa3pMdDJjUTZSRXZKdXBjeThlZXdGbnRtK25mUEtzZjM3T1FGMDNiV0xjNnI2UHdCR0lNS3kxRk5uSndCbVQ1bkNGdFhnbVAzVlYzeXYvQjh6aHQzQUMvS0FLRGRYcHQvKy9aeFVWVDRGUWVWS1RFa25JRnc1LzlGSEhCazdsbTNLZjVtYUd5R25ZckQrdlB3eUN4RkdtSFd0VXl5b0NFWWRyU1RFNnZ4UXVRMjFIMytjejVUakN4YndNM0xRQUJ0MWRxTzQwYWZQN05rc3NsWFd4clZkMVVTOVl3ZEo4a3ZVQW5kWWxiM25pU2VZVjFaOWN1Q0FJRFVSeUpFVk9nMGJ4aHlyNSttZ0RpK2h1azhiYXlLSWorZVk2dnk3UUNnUU1uMDY4MHZoSkdVYXdUcVg5Z0lsQ1hPVEpwWkFKS1Y5VHA0a1VYN1JMWlhFSi9MTm8xUlVXRWNKTTJHamtlbzh0bTR0Vy9LQSt2ejI3WnhYYzRIOSt6bUpTTkpxL1ZLNnlNOWp5NkxhYi81OGxsdTFyWnQ2eENQQ2J1aUFSdnYzYzBKZDk0NGRKRm5kNjI0ZytKZGZMS05SSnFBV0V5WllYdTZ5WmF4R1dDWGRiZXZaNVJ3cEF4QlRZa05iUlBENzd5d0ZndFg5Qi94Zmt5Wk1zbXBUaWNRd3g0OXpYdTZyWWpKU2FRS1RDMkpkWFEreHh0WWgxdFNKV0V5MVRpUHM2ODN5eTIwaWx6dUxKYXVsNzJPUDBlMkxMemlJMk94UlI1UHdROHlQcm5JN0NoQWF0bE1VMXhFb2MzWjkrVk1Mb1FDNmhGQW1YWkhyZFpIYjY0V3dBTHFBS29DY0ZUUkEzYzgrSTJyY09GWWlkQVVGQ0ttL0xrSlBrWUpGTTZoWUx3VWlQSjhNOGozT3lmZTVpdUJRRGVUblNwZWZRNG1ycEdRQ05jbnQ5VWJJVVVvMlVDV0VrVHFBcFpQOHZJcThvVUhvTWhMbFovZVUyNUl2dDErU3k3dkpaVFNJZCtLQ0pkdW90V1ZVVVdjb2NEdjFETlB6Q3N1M2w5ZG84UFp3b21WaEZTNHh6V1kwWGk1MHJLcjZhaHJTY3RpaDBWVDlLa29MNWxTSkxUcXRIQUpDZzFrRDV1U3JiSFRSbDl5UE1Cb29DUG1FdGFoVTN6VmRUMkRkUHNXejJLejZsRmErdEE1WGV5WmJxNVBWOVpSM2ZXa2V6Tlp0cUduTDV4S29TVVNnZlRHeVIyT3RXZGRVcHlYTGxHTTRPR1B0MnFJOStSbFJVZTVwZVZmYUdyUzY1Z1htZ3JSOGsvbWZHV3MzblVYdTVIY2pJNzB6ek9taE92UjE5QnB5MHZOelQzbm1PcCthdG5Hak1nVnBuaDhjN2xkTHB3bHpjZEkxTHpTYnIrVG1zNG1NZ29OS21Xbmg0ZnA4OThJR1pyTzVqa2FqdWF6UDFKNVZ6aTJManRZZHpMMGNSQUdkNm5sNmhKelB5RGlFbnUzVGZ0NTRXbW5ENHgwN0d2d0NQRUlMOHd1Ym9EV25HQXJkOWs5YnViSkVVUGVhaGhyamhoYmRxcFhlVldlbzU2elZ0dThkM0dpazBUVy9EaW9pdlhENWNyNnpYbGR3Vjh1Z08zVWFyVmF2MVJZYllRWE9rb2RSYjJnWDZPVit6NGpPclY5ejE3czBQWjZhcWw1dWFseDBHbDlYWjZkMjdrNHVuUWUxQ0I2TjJlei85N2x6UmROZmVtNnVRVk9vQ1h5bWQ5ZFBOSVdhd1BUYzNLS1Z5dG9USjV3MVptM0k1THU2ejhzcHlHOCtwRzNvd3dYNTVucVBkK3hZcERzSnFGdlg2S1RSTm5BMjZOcHB6ZHBRS1MvVDYvcjBWdFdpSm5FQ3BvV0g2OU9nbHBmUldOaXlWcTJySStMaWlzMXA1bW5UdE5NM2JuUnFXYWRPNFlpNHVCSkdHTk1pSWp6MHhsenZmS213SUQwdE4rWERMVnVLcVhPWFJVZnJkdWVtMWk0c3lIVXJNT3V6M2JKSlZuR0tvamJVcVZQSDVmTGx5emsyenJua09SWFdNYmhvblUzb01wMHlDbEpzbGNIWjJkWG83SnozUW54OEZqZkJkT0NBQXc0NDRJQUREampnZ0FNT09DQlFvNWFJMXhFYXE0LzZtRnI3V0pvRzhaYkdyVWdFU2pSeUY4VEdqV0s4Nm9yWVZWUkNzU3VXUjNtSWpSa1RZak1uRTdIeG8vWkt1cVVKNDFZaEFqM2lSZnNnTElFQ25ocE16Mzd0NmRhckplM0xDMzZoUm5ZdXBwVTcyTHh5SjM4dStnUEZ2MUdKZ2xMakxZZXZCVGN6RVdnUm83MDIwR1JpSkZFeGR4RmQwZWlsNWVITVpaSS9XYzYzSHkvblY0UnIybVhFdHUwdHd4MXVSaUxRSUVaOVE2RHQzam5NQ0FtZzRZMjRzUnd1NXo4STAvTnpsRzZ2Y0ZQaFppTUNKd1M3NzV6eUxZc3F3dWFyRW5Jc2hVZUJmeEJUUlkwSlFuVXRxREc3aU9WQWc3QVl1dk9YbDFrcXhSRlhYUVFBMEtBT2RhUTRmbmxsQkc4amJQN2NxcXN0VllHYmdSUG9nZnFoOVJpd1p5NmZWM2RqckNISE54NkppRzk4a1p1UUs5UjBUdUFNdEZnOG1TOXJJZ0VBdURyakpNWHgwNXpIZUE5aERtNG83NXFhaHByTUNZeEEyNlAvSlQ2d2R1VXlmbDl2YkQxTVRsTi9DclFha2dNZm9UT2x1NlRYU0ZSTi9xdXFoeEhvbVBJdDY2cHo3cmNYWFp2aEF0RGpKYjVHK0JVb0FURnZDdFJFVHVBTXRFOWR4QitWaVhGY1haQ0RiNDVFaEx4UDRTYndhYXhwTW9FZWFIN2tVMzY5R1FrQXdOY0RkeW1PRmIxYjh5akMwYVBHYzdLYXhBazBRS1B2SnZQbHNLNzByZTdHVkFXT0puR203VE9NUmlpWGFtd3F4NXBFQko0RE9qRG1sNm5NclV3bHEzZng5MGUvOHRQR2ZSeENzT01zaEpyWE9pYXhNMkpUeVIzd0RHOUQ4T01ER05DckpYZGVTOURxc21DTVpnZ2krTldWcXF5M3FsQlRpRUFMaEM2Y3lKZWplbExoQU5WeUNQazNFQ0hrMWJHS2xFam1wYXlXVWdvQUFDQUFTVVJCVkRtWUtNNHNPaXo1RHp3UXJtZ05QeC9QZ3cvMVpjZzFQRThKR0tNWkRteWdCcWJHcVNsRTREcTBNNk9YUFc5L3RwUHNYRXpEWi9EcWhuMXN4T0tUbUVQVmJPeW9nMkg2QTZFL1QrWDVnUjJLY3NGZkU0elJERU1RUW5wNVpXOGthZ0lSYUlIUUk1L3lwejJoNG1YcCt3bEVhTHRFTEtuVmJVR0pVcWE0anFtTlNNQmlTRktXTVltU2M5RUhDSDVsQlAvM2NqUmo3WGt3V3pCRzB4OHhOZFNZRURjMWdRaDh3dHZ3Mk1yWGVLKzhnb09tTS9XUC9meUt4ZVBYbGkraUVxUFlBL0hpdkJHNmZSZUVISkNQSmF4ZEhtSTluNEV3SnNtUzZ5M05tTVNBMk1ObzlzV1RUSG13RDBNcityQnkxclRPaUVEZU5VTEZYTjFFb0VNRWYwNG9xMURDUWZiMmY1Mm5FUjEzaFpKcmJ5MFcxaDFVZjBEVG5xRVB0eHZqM3NpcmdiME5LWkR5VEduSFVnLyt1MkRYNHBUdFNYc1FMdmFYRUFSaTdlMWtRTmd4ZERqeUtWOVZKTmtGd0Z2TCtPcnRPS1lpWE1xckhkVk5CSFUraUdIdWhBaEdsVlpnN0Z6ZVdmSVhYeUhpSVZpL0RDVjJRV1BYQnA0OWU4MlBmTi9KeTZYS0pQdC92OXo1MVpIWTNVdUJRNGc0Qk5ZeGxZMUF3eVorRERyd0NSOVZwRzVqTkVPQnRkaU8xM2hEVVoxRW9BVTZTM0ZzS2EyQU1acjdFWUxVSlVxT2ZnTmk1SGNhdFB6Ky8xWGx5N2ZHeFMzbnR2MzkzTyt2SVVMU1g2SzRtWmtTWEx1N0ZNY3Y5dFlwRzZqMFJpVDNxRlpVcDhiUWZYU3YwcGRmY3ZUdjBnSld1Z0h0N255Nzc4S29oSmdmcnljQkFQaDFDK3djbFJDejZzNjMrbjROZEViSUJlb1lCOG5BQm1NMC9iSno3WXRXSGxxZkJnaU5ZclZyUnF1VEV6UkwrWmE5dGphSWpORU1Sa2pRdHBaU1hrQ1h5TFVQeFZja0lVVlZZdTNvSHg3UFBwUCtPeUw2cVpvcnVDS1NZc1dYSnljMGZwUWxxMTdIcjhOL2lFWW90YW9OMWNVSm5JRGdVZ2dnQWtqQU5nSFVCdnBISmNTc3FpNENBT2kvK0w3UHU4NGUrQjNRaXVJak9SdllIZm9ra1djdmM3bXNPdDU1aUtBOXAxaEhEZGkvcVM1TzRQTkJEUE9zQlVKak5QY2daQUJiMFQxOGdidWlFbUlXMzRnRzJnUHBZdGJsTmZjdXV4dWhzMUN2KzUwUlcrRWJ5dG9LTjBiVEVUaElOUXVIMVVVRUlTbmZzbC9kUVhJZXBCK3d6UnE5Z0g1UkNUSGYyM3NEVTFwT1p2S084enR6VXJJdlhEMmZlZEhxdE1ZcnhLZXh3Y3ZvNzkrOXdaM1g5Z2dDQlZLZWFYbi9iL29qdG83VmhPQ0t5UGErdXJScmpkSDBRa3g3MWFvdnFBNmpFaDFRWDAwQWI4ZXg4TWg1ZnNPMlh0ME42R29QQVp4WmZuajU3bmNTRmlLVVNTbUlFYVprT3JXVjc4QVpvVi93QlFLN3pCNzRyRitYK3QwcTlEQkdnMVBrMm9mV0x1Ly9qWktnUXhFTXM0RnR4bWhHUzNHVXhyM3FJTjVCdFJKQmRYQUNJekJjaXVOcktGSUQ5OEMyQmswUDNCRzU5cUcvU3BNQkxtNDU5L2Zmei8wK0F6aEtjZVZPUll3NWxGMUZEOFN5TTdqTHJBSFArWFVON0dwdkJkS2xyRXRyaGkzckpiZERmZTk2VDBZd2RWWU1UMWxmODhnbnZQbmRIN3hQTlc4emx4dXo4RHJBZS9GazNtd2VTQk1BM3dlNUY1RWN3cFlpcUdHWFdRTVd1QWQ1TjdLdTVNVFMvY3YrR3ZmYlU0bS9ILzh2WXIvK1BFTGxhMHZkYThzaFZRMGxOOEZWQkNHZFNQejkrSytIWTNmOVlzckl5ZmJyMXFCemVROWxjSE55Uzk1NzhheVVsTG1QNGtvbDZaOWpuSG95Z2dlTnpsYkxRVE41MzIvbUo2cDVINkU2T0VGUVlpeTdmZHp4ZUNlTzJEZVhNUldoQzdDR3Uyc2pyK2orMzkzN3BmcGcxcG4wTSt0SC8vQUlRbkZqSzJtMmV2OUFTWWxueENLRkZ5QmVrdUtFbW8xNENiYTRoeDZ4OTlDeTB4dDlwZ2YwQytwZDNzUEZoOFcyazl1bXJzc0ZDSmZpV0trdXUvc0VSN3E5UUc5dXN4eElHcUNERk1jTzJWNi9LMklVVzA4RFdxQmQ1TnFIdHFxbmdZUm5WcjJRc2ozcEI4VFdzYTIwZUc2SU1MQk5YSnBIOVBUbzl1aURlcDlHcGJxbzVhZWVQaU1kWHZONzV1YjVxeEJxNlVRc3FYRFUzTVJKcnJkTFdibVpULzMwNytITVUybnpUbjUvTUJaTFNGc0ZkWitNNEZYMXRDQnJEYnRqTzlmVERjT05KZ0k5MEV1S1k1MHhtbEhBQ29wbkUxWGcwMlJreTlkYVQrejZEQlJKNFBjQlc3REVVMWJER1JGZHZVdTlpWnUrMEJoY3Jra0xaenEzZTNmeTBrZW5JVVp5RXNYWnRBYkJWVnIzaW8zNm4xZXoyaUVsYTRDVFB4NTZiOStzTGU5VDBvcElCN1JOK1phdGlsQjhPSkZ6N1NmUmpXb21naHV0cU5BQjJyUEpIRVlzcVd3SlJGcWdxVUlBQU12N2Z6TUUrQVBCL3EybGZHK2dXNTJ4UDZ3Tm1Mejk2MnNsQUFDbndQYnRBeVp2LzduTzJCODJBUDBRQWFPVkZaUVpRYkE3L295SnYrZkUwdjNMYk5XeGI5YVdBOWdXU2d1QVk5MmV0M0FDVGVtaGNXOG9ialFSYUJjK1RjUFE4WXlpZUhKcE5keDlPd1lVWlRpTkQ0c2RpT0FBMWh4REN3VG9mQm9PRDVpOGZZUEJwNUhkMjhibHdlRFRxRUhBNU8yL2VnMmE5aWxDSzZoT3BHVUNEdStmdSszRkhkTTJ2bXQ5YlpmWkE1K2s5UDJBckNQbitUTTFVeWpERHB6bEtEVWc1c0dOSm9JOE4xZitRU3lqU3RPU0JYUjl2LzgwZ1BpdzJHSEFWa3B5REMxUTM2VkZ4SGkvc1Q5ZU4vYzAxMVpEb3VwTjNQUTMwSW5pVHFjRndPbkVOU2ZtclIzMWZiR2xuNnhuOEMybFNqTndybjRNandLczJNR2YxQUFMb3h0TkJQa2packNma2tLVEFtY2dST2VpZDE0ejh2dW5FZWxqclZYSUdpREFwVVhFT0ovQmI3NThIZHNxYm1ad2NhNDNjZE02Uk9vWTlXNWxJWkNVZlRiakI3bXRhdmhSdWlMdUtyQXpKWVBUMzI1a05TVUYzQnVPNnRBWWxtVUk2dFY5WHVURW5KVHNKT2xjeHUvWVZpRjdhNzBiRENtTEFBb3l6aWRuL3ZOdFhQYnVwWnNSQ1RqVUp1ZGF3RTNyM1NEUS9jNkhoN2kxdVR1aXZBWnJEQzVPQVpPMy81NDBxMU4veE5Ta3VKaVpnWXZTdVl5ZjkzMjB0Vm1iU1YwVnJ1Q1A2TnZTOGlLZUMzeUVybks3cW4wNnFHN0xJalUwUUVoVVFzemgrTERZbm9nQUVOYWp4QW5vRURCNSsxYnJpMDBYRHgxTFhUNTFWdUdWcy9zUWtuMDZvcE1WczNNMXRBaWpsRm9JOC9JUW4yRWZ2ZWpTcEVlWit3aHlBdTBlaVBTMzZoZXNCWUxEUGgwYzU5dk92KzMrai8vKzhNU1NBOU1wMjZxNFJxVEloUnF3amFtQ0R1RDByNGZISTNiV2JMRkpaNTk3Wm84dk5HVVh2WUNDN0xUTXBGbWRoaWQvKzlEQXdpdG52MFhJRUNjUlMwbHJKWkRpWndCQ0pybUlXQTZ1VFAxcDBvaWtXWjJHbS9OeVNqVUswUmhjbkh6dW5Uc1hrUVpIUFlBS2daTUpUNjRZVjVDVG4xdW5RMEJ6eW5jL3F4RUVBRFdMQ013OVBodGFkODk3Q1VzUUxOd1dmTFRPSHUyMVRxNTZnT1M0OFZNdi9yZC9WMkFWNHNXcnpjL1Z1WlBhQVdHSWJHc0RnYnNRYzN3SVlwN1BSU2lMVnArZjI2TnIxczdGTnBkL0FDNUIzYnZxZkJyMXhaTDNVRUVlY0dCNXY2K2pQSnY3S3ZrV2J3clV0SWFXeFNKZGdMNEJrN2N2bHhOV1J5UDJIRkt4dmRiMkF1NTRjdERzRDRMcXR1cGdxOEtzblBUTTcvNmM4Y2JSQ3p0V0FDY1EzRUVQQkdpOUFvZjVQL0p6a2ZGbzBxeE9MOWQ1T081SmcyOVFmZmwvV3dRWHNXNXY3WUhMNy85c2RlUjNEMk5iRVZialVOT0lvQ3cwOG45cTQ0Nzh6QXNYa3Y4MzZtSEVybU9weTZ2dXdmYzA3ZG9pNHN0NjNvM0wxZmRmelUzUG1MWjB4R0RFWEorTjZKZjZ6czBHUHUwNzVPMHBzaVp4Sk9EaU5lajF0MXhiRFIwcUorMytIdHZMVjBVb3JIWkZrRDI0V1loQUM0VFVmZXpYcnk1OU1mUlJoSjZoUElOT0Y2Q3BwN0gyMkZlaUYwMHU3d2FtL0J6VHk5L2QzUmZZZ2VBSVdxQnBuVWQvV1hSNXdkM1BJalNjQlVBRGoxNlRKcnEyRy9iZ2hZOTdkNkNhVmI1VmdadUZDRFJZOHY5ZW9Xd0NVSEl6K3dETnB0NzN6U0p2dDdwMk9ZZElwc3dycnkwWjNoRmhsR0pHakdoMytYNktia01MK1B0RWZUQTZOZjY1SllpVlNJMFI4cTRGTndzUmdQMFoycDJuRHY5bVNsNWVUc0RWM0F6UG5MeXJIdmtGZVM1bWMyR1pRckJHb3kxMGNYSkwyM0p3eGZSOTUvNjBOZGVyb1VWc1R4ZFFBNXhIS292S0VrR05XZXVxb0ZnSktRR3NLN0lDVWd4THFsMkxkeU5SRmhIb0VHelZEZEVwR1JUZjk2K0ZZTG5wRkZlS3VHQkpaWnVKSUJMRmtkTXMxNlBzL3JsaHNmYkpSV2dJYmFtVW5lVHJhMkZKanBtTlJSdW90TWNiUzBwWlpkY3ZGWXRpUnhuQlJ2azZXL2RTcGhPd09LWXF0Z3BlV0RhSDh1WDYwK1hmT2l6Y1FTMnd1aUNtTXExY1BrZHVxNXQ4VEhHUXpWWGREeXhUbXJPcWo2NGlIRjNBTWowV3lOZmtZZEdMS0FQVFdlNFRWN251RkNwQTRPNUFoMzc5bVB6MzN4emNzWU9ORk44VU1RRGQ1TVRNZDhrUGozekQvanQyc0hmb1VCN0Y0cWtUZFBFaXlYSENzcVlMMFBiUUlZN2FTSmJkaXBJajF3dm8vZHR2YkZLWGxSTmxEMFlZYXhxblR1WGhZOGU0VUVZQ2JpMUN5VE44eHc3MkF1Rnl1L1Z5aHlvYlJMN3IxN1BvcnJ0NEJxRmZjQWVhaElieW1IWGQ4dk4wbE92eFBYcVVCQ0FDeXhhMERtaDE2QkJIRHh6ZytHdXY4UkRndDNzMzYvYnQ0OVNlUFp4WnU1WTlDeGJ3eTBNUDhSclFBNkhCZEFZNkhUL09lUnZQRXdnRUh6N000YjE3T2YzTk4yeGN2SmkxVHozRlI0akUzMEZZQmszNGlST1c1TjVBYyt6ay90NUFsSTJiQjZ2S05GSXloQjg1d2lYNTVSbjY5cVc3MVRXZEVjYWJ3NjJPMzFkS3h2UTdySWpBQ0F3cUswdDdpeGFNQWVwUG1zVE1VdXBVTEl0MHlJUXJTWmpYcjJlWC9MS0NEaHhnRzhKK3dBdm9xSlM1Y29Wc29PT3laYXdxN2Y2cHFlUUFIWUFXeXJFdnZpQWVzZlBvQTBTcTJqSUNDTjYzajFPbDFmZjIyM3dpdjhqaHBUeFBVNkJuYWRmLzlSZC9BNjFhdEdDTWpXdTdZb2RkcVNzUVlYM3hraVY4aTlnVUFURXlScW5QUC9ra0g4c2RHcHFZU0xweWZNSUU1Z0pkMVNuZysvUmhDbkNQOG4velpsS0I1eEdqMnMrcVBTSHEraG8wNEUzZ25nWU5lTnVhMk5RcDZrZU81RmRnbFB3aTFKcTlGaWtwNUtxdTZ4Y2N6QVJKd3B5U1FpN1FQemlZSjVYelRacndiSEF3NDYzdTlTQXdLamtaazNKcytuVG1BNzNWNWVUNlJnRlBxSzY5RndoVzl3Y3d6Y2J6UkFBamxmOXo1dkF2TUJIb0tSTldIK1hjMzM5ekdYamY2bnJyUWZlWjNKWnlOWmthb0hscUtqbkt4WTBhTVJWb2o1Z0s5UExuVHVYOEgzK1FwYnBSTk1JTzd4NnJCaFNOMEtOSHVZamdHdjFLb1hKMTVGSURNRmc1ZC9Zc21ZaGcwa2JyRGdjaUpreGdydkwvcmJmWTg4UVR6SHZ4UldLc2lNQWpQSndYVk5mTlV0ZnoyMjhjK2ZaYkRxbk9EOXE2bFgrVi96MTZNQTNoQ3VjTFRGU083OTNMYVZRalh2MjUrMjdMTklaZzE5WkVNQURvK004L2xxa013VEZHV05lMWRpMkxyWWxnKzNiT0EyK3FudUV2OVhubE0zTW1TeEVjcTh3OURSM1ExNnB6ZXlJRUd5WGtTOERNbVN4Vm5WOXNWYjRIME9TREQxaWlITHQ0a1FMVitYREUzRnVpa2ZMNUFGVjdqRk9tOEpaeWJ1RkNFb0FHY2p2Q3JLNGJvQ1lDNVhQNE1JZmxsNloreGk3SytaMDdMUVJ2L1FrUDUwV2d2UTB1WUFROGUvYmtOZVg0b2tXc1Z4UHNiNytSVnNyelJRSk5yWWdnRWhoZ1ZhNFBjSy8xOVN0VzhMMzhQRVg5dDNVcnlTcGl6SlFKelIvb3IrYWlrb1Q1NEVHT1FkbU9zanFzNXBxR0RabUdZRTFkRUhQUnNOSTZUWkl3Ly9JTFcrUnlIZFZzVjVJd2g0UXdEakhuNnRVUGtaQkFHakFkdU0rS0NKeUFvVXE1NUdSTWNsdGFBODhveDVVNVdUMGREQi9PYXVCaHhIUmdwRGpxcW9sVWtqQzNhOGZYTmw1WUJ5Qmd3d1oycWpoTVBFSVE3SFhvRUNuSzhXYk5lQVFZcVB4LzZDR1dORzdNaXpicTdBODBzU0tDR2VxNlltUDVFV0UwZTdkeTdNTVBPUXE4SkY5ZlI5MS8vL3pEaGRkZnQ4Z3NzcXpUU240UDl3TC9VL1dWaE9EV1phTCtnZ1g4WEFvVmoxTlBGYVY5Z040SWRqbGFPYlptRFh1QkpsamN2M3FYY20xUExJWXVHaURFV3VMZnNjTWk3Y3JYREFIcVRaekliT1hZaEFuTVFVd3R0b3htaWhHaFBJbzdxcVYvV1c3eFJIREJZakxTd1lPa25qbGptUWIzN2VNVTBCTFZhSmJ2SHdRTVZQY1pZdWN5U0UwRTZzL3JyL001WW1mVEZhdHBWVlZIVzNYN2QrL21MQkNsSG5RYk43THkyREVPV2wvYnFoV2pzQ3gvUzRVT0NIN3dRVjYzcm1EaVJHYkh4YkZTUlcxOUVLT3lYZS9lVEpXa29tVmJXOFFvYnJKdEd3ZmtodmZGc3I3V0FxMUxlY0ErRkE4Vjd3UzBXN2FNMWRabEV4TkpSN0ErWDhEdHJiZVlvaHF4VXlqSkFkUUkvT2NmOXN2M3ZGTytUNzB4WTNqMXdnVlNnQlpZVmltMWdidHREUUI1MUxhUk83Wm9tcGsyamFsWU1yQzFtejZkK2ZLOVFvRUE2M29XTE9CbnhDajN3NUxOclVjcGZkUWVhS3Y4UDN1VzAwQmpZSWdrWWY3N2J3NEM0Zkh4bHNHOGRTdUhFRXQ1SDF1ZFlVdFMxQ0tXZFg2SXVVVzkzNTRqZDBvR0lyQlRybHplSDhIS1V4RHVZRG55eXd6cTFRdi9QLzlrTDhWdEJHb2hKRlZGNEFTaENEbU5jQU5UYXlIMWNybUc4cjExOHYzUElZeENyc3JQNFl0Z2RScjVlREtsNytLNUlEaVRIckdGbkNYWFcxcytkd21MQ1psaWx4QWdmendRaXBsTGNoOWNRU2hyZkJDajM0RElvSFpCdnI4T3NldzJJaFJYQlFoMlgwZXVKMDN1TitzQVdUN3lNeXVLcGtLNTdHbjVmdjV5dTFMbHR0UkNyTkF5NVdmM2svOWZsZHVpT09pV2dEcFJwRFBGUjZFNkJpQll6TFIwbEZ4cktuRUNyZU1CS2prSXJiMkNsV3VVdXBWN0laZXo5aGxVUng1VjdtUHRjNmprT2xRMGJHV3BzOVgzVTdkTnVXOEI0b1dvdFcvSy9SV05aUUhGTmFqcU90V3hFUXRWOTFBK3luT1VsWkJUZVdaMVA2akxLMjNOcDdoR1ZHbVhVa1pwaTNKOUNYTTc1UWE2eFAvd1RrNCtoa0p6MmV0SXN4bU50NUZ1QmVhcXRVcnlkS1pUVmRaWGs1Q1Z5NUVDMjRFM0tnVXRtUFBOcEdmbGNrQ2pFWVNrMVdBMkZYSXl4OFFKbmFZNGNlbTBtRTJGSE92d0dVZlZ4OHZpQkdYY3V4aUhxQW9vVHFSS25Yb3MyVXdyaXFwcWx6cnk2YlZlbjRkbFArQjZwZUJWajN6bHZvWFk1cjVsY29LYUNPdTJxVjNMeTJLaENzcGlzY3I1aWxyK3FLOHZydzJWSmFJYmhwcVUva1l6SXlxcVZtcDJ0cmErd1pBemNlWEtZcnRkMDhMRG5URlNPMTlmYU5DYmpPblRWcSsrZ3FxVEgrL1kwZUR0N2UxcTFPbDBSbWZudkJmaTQ3T3dlZ25USWlMY2M3U1p0VFZtOUJxOWMzcDdaNS9rRVhGeHhlYjFhZUhoemdEVE5tNjA5a3pXVEFvUDk2amxYdWdOa0NjNXBjNVl1N2FZU2ZteTZHamRqaXRYYW1uTlpuMDlKNmNzNjJlb3FhZ3gxc2J2UmtaNlpSV210OVk1NVhWT05VZ05sa1ZIcTZjQ0RWNzRGMnJOM2JTRjJyNEZocHhtejNiclZ1UWZPQzA4WE8vamIyeWdNWmk2WURCMXpTaTgwdUtsZnYyS0xZZWlXN1Z5d2lDRnVobWNJcjJNTHRGR0Nyc2N6RTh2NWk3MmJtU2tWNDZ4c0VXT3NiREZ1NUdSWHVwekwvVHY3K0htV3RqV0NWMkUzcXdkcUhjMnRab1JGYVgyU05JY3pFLzNOUm9MT3dZRnVOMlZwTTJzVHczcTM3SlFZeHFabFpkWlMyUFdoT28xbWpzd2F4dHVPWGRPcmVQV0ZCUm8zSFE2VFVDWHB2WERkV2k5UGIyODFQS0xYbE9vYWZDZnZwM251RGpwdzhLRGc2Snh6dldsK1BUZ3BFY2JOTFpiaDhrZUxzYXVUZ1pkbTl6Y2JIVlFTazJ1NGFxbjFteHVwaldibStVYXJucXF6Mm1jYzN5ZERicjJucTdHcm8xcWUvWFVvUTA1bjN0RnZTK2gwVkhvMjc5NTBPano2WmxCTGxwOVFFUnc4RTJSSHEvR0VJRkJwelhydE5yQ1BpMkNXZ1A2cXlaVHNmbTlNTGNnbzZEQW5PUm1NR1NnTWFjaVNVVnI2Z09YTHhkcU5ScnpGU2szUmF2QjgyRGlwZk02cmJiWVZOQ2tYajFkb2Rtc29kQk1Dei9mMmdVRlhOWHB0TVZjd1BTcWEvUlcxK3MxV3AzR3JEV1l6V2g4M1Z6ZHRCcU4yYURURlN1VG0yZktYLy92aVYzamV0enhnRWFqdXlrSUFHcVFUR0EwZUtSbkZGNDV2TzdneWN0NmcrNWNnTHU3V25GaU5waTBsN08xZVh1WDd6OSszT0RzbFBqT3huVkY4MjNjZ1FQNXJ6VHBkWGJKUC9zL0JIUHRqTUs4NHdVNWhtTEJMRTZjUHkrMWFscm54TUl0dTJkb3RPaWt2UHlkWjg2bXFSVlRabDJ1TWFOUWszOFlRSmRyekZDZks1QU1xUVd1NW4yWnBoelQ3clBuYzlHYUQrYW41S3BsQW5PQlpFak5jOG5mOThuR0hjL3A5WnhkZWV4WWFiNklOUXJWRWJqS0p0WWVQbXdhMHJ4OVJtRWVGM3dLOVJkZldMdTIyQ2pkZU9wVS9qTWR1bWFtWjBqSmI2N2VvSDVCQU9ibTdyV3ZhbDJka2cwR1R1ZGw2MDYvdTI1ZHNYQjRCeTlmTGdodjBpTExiTWhMVE0vSVBXelV1WitabTVCUXpHZGczZEdqdWYwRGc2N284elhKcjY1WlU4ejBiTlBKa3puZEdqUkpNMmxOWjNSNjdURk14blB2YmRoUXJNekVUcDFNS2JubVZHMmg3cnlQMlNsNTViRmoxZTVzZWp1aXRPaGtGUzFURnF5MWVBNDQ0SUFERGpqZ2dBTU9PT0NBQXc0NDRJQUREampnZ0FNT09IQUx3YUVDdnptaGJGK292OVdtbitxUHRkRzJ1cndDYStObzVWT2craFJhbGJzcExPY2NzQThPUmxBem9ReFVQY0wrMndtTFI0VVNaOFZWL3JqSUgrT2tvYlRPSzhDcG9CQjluemFFRkJhaUxWUTVCcGpOYU14bXRNSDE4SGQxdHZoblplY2lIVHZQQmEyV0FvMEdzMDVMd2NaOUhESG9NSzNZd2JGakYwakdFdGNsVy9XZGpiQ2xOaUhzcW0rYW9IME9GSWVERVZRdmxObFpqeGpvU3VZdUQ0VDd0bmVmTmdSSDNrbUg5bzFvMmFBT0FRM3JGUE96cnpha1pKQzUvVGdIVDE3aTJQd1ZyRCtjeERtRW4xczZ3cWRQUXZnbzVuSDlIQzRjcUNJNEdNR05oVExvblJFZXl4NElwOVBhVGYxcC9OWUQzTk94S1czTHk3WmVrNUdTUWViT2sreWYvUXZ4Ry9keEVPRVlyRENJYkFSenNPVVo1VUExd3NFSXJqKzBpTmxlU2Nmc0gxcVAwT24zTTNMZ0hmUXdPcFdhTCt1V1FXb21HWXMzc2VJNUVjcEJpU1p3QmNFWTFFN2ZEbFFUSEl6ZytrREp4ZTZPQ0VNUk9Lb25QVis4anpITjZoTll2VTJyZmh4TjRzeTk3ekxqMkFYMkk1SWlwaUwwRG5rNG1FSzF3TUVJcWc0NnhNenZnWWlXMVhEQ1lBYThkQjlqZlQySzVkQnpRSVhkSnpqeTBJZk1rWmxDRXNXWmdrUHhlSVBnWUFTVmd3YWgxWGRERFA3R1R3MG00c1g3aUhFTS9vcGo5d21PdlBJZG42L2J3ejhJU1NFRnNYeHdTQXJYR1E1R2NHMVFRanQ1QW9ITkFtZzdieHlUd2xyU3RwcmJkY3ZnMzNQczZmQXMvOEVTelRDYjRrSGlIS2hDT0JoQnhhQkY3Tm43QUkzNnRDSHNzL0U4ZHpOcitXc2FFbFBJZTNNWis1TlNPWFovVDNUMWZUZy9ZRHF6RU14QW5lbmFnU3FFZ3hIWUIwVUM4QUdDN3UvRm9JOGZaNHFyYzdsSmtCMm9KSlp0WXROYnkxaDA5SHd4eFdJMkpjUFlPbEFKT0JoQitYQkNMQUVhQmZ0ejU0clhtTzZRQUtvSHYrOW02NVNGZkg0NGlmMkk0T2xwRk04YTU4QTF3c0VJU29jT29RUU1BRnJ1bmNPSElRRkZ5ZFFjcUVaazUyTDZjVE9ySC91VWhjQkpSUFQrZElTeGttUHBjQTF3TUFMYmNFSXNBNXBPR015SUQ4WXlzYm9icE1iTzR4dzdjWkhFbkZ3eWRwM2t0RjVMM3R6bEhLQjhXMzh0b0pzNGhGWUZoZWdMQ3RIM2JrV3ovRUwwYlJ2UnBOQ010bmtnOVcvTVUxUU5KQk81VDg1bjlwSy9XSWRRTEY1R2JEODZwSVFLd01FSVNzSVprZmNtNU9UbkxOSnE4S3JyVlg2MnFLckVqdU1jMy93dk82ZDh4V3FFK0p1T3lHTnpGU0VLS3piOFNwb1R0WGRnZVNsZTFKNkpPcXVQUWY0b3prMUtjdXhhNFcwSUNtdE84eUdkNk42Z052VnE0dmJvbWoxc2lYcUw5NEdqaUtWREpxS2ZIQ2dIRGtaUUhBYkFlOXBvQm1pZ1IzQUFQZS90U3N2cmVjTk5COW4zMDFiKytIUWxXeEFKcTFJUWd6OFRvU1ZYZS9YZEtQZGZkVUlSaFdFb1hwRE9XQmlFSitEZDFKOEdMd3hqWUhnYnV0UUUvY25tUSt6cDl4cHZBdjhpakpReWNVZ0laY0xCQ0N6UUl6TFZCWS9xeWRCNTQ1aGMxYnNDS1Jsa3J0ak9Iek4vNXJlajV6bU9FR092SUx6MWNoQ0RYcDBvclNaRFNmYW1XRlFhRWY0VVhrQ2RrSG9FUFRxQWZnLzBZbUIxU1EreWhQQTJnaUZjUk93Mk9IUUlOdUJnQkFMT0NKK0E1b3NuOCtJOVhlbFhWUlgvdUlVTjB4ZXo1TWg1RGlPSU1RMGg0dWRTY2Y5OTlReXR0L29vZzFJZGtFVEoyS2pPbm1pZEk4MDZBRW0rNnRpMUJDSlJlMWk2SXFTR09rREFLeU9JZUdJZ3cyODBZeGc3bDNlVy9NVnk0RGhpKzlHeFhMQ0NneEdJbVN3QWFMTjNEbk1xdXpPUWtrSG0vTlY4LzlZeWZrWGt6TDJJV09Nck03NDlBMG90aml1QlI5U3hDandCanlhalc5M2hXcmRXZ0VzZE56OW5IeGRmSnk4WGI4eG9NS054RC9JcVV2cVowbkl5YzYva1pLRE9qS25Cck5Gb3pCbEhVazlwZEpwODZmTFZTOWtYc2k1a0hMK1NsTHc5NlJ4aTlzeENNQzNsazRQdFFDVDJwSjVWWEs5OWdIb2g5V2cyY3l3UEQreEFGenY2bzlMWWZZSWozVjdnZWVBQVlwY2htNW92ZGQwdzNPNk13QldSUUxwOVlpd0xmTnp4dUpaS3NuTXh4YTdqNStjWDhoMUNjMzBSa1FKWG1mWExnNUlOMW9qd1dQUkd6S0orelI3dDBNOHZyR0V2OXdZZWpYVkdRN1VaTUpuU2NqS3pMMTA5bjdyN3dzNzljLzVlaGRCbHBDSWtuQXhLTG05S2crS2ZZVVFzSS95QVJ1OC9UUFRUa1VSZnoyZkl6c1UwWWlaVDErMWhMZUk5WmVCWUtnQzNOeU13QW9GVWdnbWNTK1pTeEhTbUhidkFIc1RzZndYN0RWeVVPQVZ1aUlIdkR6VHE4ZG1RLzNnMjlXNWRuWU8rb2tqWmMySHZoVTFuZmovKzNmNE5DT1ZjQ21LUVNaUzkvRkdrQlJjRVU2Z0hOUDNtV1o0WTNwM2UxNnU5VTc3aW80K1hzeGc0aHBEV2Juc2ZodHVWRVRnamlLN2Ruby80T0xRK0RTcHk4WlovMmQzM1ZkN0NzazJWZ1gwQk50UkJTdW9BZ2ZVSE5PMFYrbkM3LzNOdjVGV2hOdFJrSkswL3VmRlUvT0hseWY4azdVTDBUd3BDYzY5RUo3SUZSU3BTUERtRFhoM0JpRWxSUEhnOVRMbGYrSW9QNXk3bk80VGVJSjNiWERLNEhSbUJIakVJVzY5N2c1bmRXOURPM2dzL1djR3k1eGZ5UHdUeFhFU0l3L2JNL25yRU1zUVhhQkE0S0xodnlKaTJNYmZTNEM4TnByU2N6Sk0vSFZwMmVNR3VuNEV6RkY4MmxUYjRkQWlKelFkb2RIOXY3bnA5Sk9PcklsN2p0cU5jOVhVbnY2ay9uczkreVgvbXIySUZRb3JKNGpiV0dkeHVqRUNIVUxTRmZoRERNeE1pR0dYUFJUSURXSWdRSlM4aEZHZjJpSk1HeEpxL0hoRGNmbXJZWXcwam0wVmVXOU52ZnBqU2NqTDNmcmgxWHRMYUV4dXhXQUVxUmorMkJxSGk3T1VOTkFqMnArTWY3L0RldGVweUZFUzl6VExKeE1GZnBqSisrTHZjdCtFQVJ4RzZEbE41MTk2cXVOMFlnUnZRTUtRZXZmZk81Yi9sRlo3ekd6KzgrRDlpRVV1QWkxU01BWGdpRkpITmV5MjgrdzJ2VU4vUVNyVDdsa1BXbWZRelcxOWMrMmIyNmZUZENLL0NLd2dwb1RTRzRJVFFJelJxNmsvblA5N21uV3ZkaHZ6M0hJa2RudVVWNE9EdWp3aHJQNGxZTEFGUWJrdmNUb3pBZ0ZnU3RGMDduUmxsQlJFNWtzalpkcE40RHJIVmxJajlTd0JGQXFnUHRPaTcrTDZadFJwNk9oeVZ5b0FwTFNkejM5eS9QMHBjZmZ4MzRCUmlKeUlIMjhzR0RVS3g2QXMwZlRLQzRiTmllT3BhN3Z2Y1F1Yk9XOEczaUdWZUJyZTU1ZUh0d2dnMGlQMzNwazlIOHREN0R6UEpWcUhzWEV4M1RtYktpWXRzUVJDbHZlS2k0cWxZRDJnV05qOXl1bThidi9aVjAzUXdwZWRrWFBqemRNS2w3ZWYzSkswOThTK1dyYnBjN04vVDRpenE4QUFBSUFCSlJFRlVWOTYxWW9Da1Rwamk1bnRIdllZTkJ3ZDMwUm4wWHU1TnZadXE3UkJ1QkFxa1BOUHU5emUvbi9qNzhWVUlqOElVU2xmQWFoSDk3USswV1BjR2IxUkUxd05GZGdVVGdiMEkwKzdiVmhxQTI0Y1JPQ0gycXp2cytZaFBiTzBTSkJ4a2IvL1hoYmlJMEhSTDJLYzhja0U0S1FXM21kVGw4YURvVnFPdnRaR1pwOUxPWGRwNmJzdUpuLzc5VXpxWGNRNHhPNm9kanBTQnIxajlXVnNLcXI5dFFhUDZ0dllsVUJpRVloR28yRFA0K25hc0Y5SmdZSk93T3AzcWR6YjYxYnF1dmdUU3hhekxDWk5XdjVKOUp2MGZMSHY5cGMzV3loS3NVVk4vdW0zN2dGa1YyV0V3UnZNUThEY2l4THBVeWFiZjFMZ2RHRUdSTlBEVVlNYk1ITXN6MWdXZWkrWGplU3RaaWxBRzJtdUNxa2dCRGR3YWUzWHVQbnZBaklvTUVsTmFUdWFGaE5OL0h2bDIvNi9aWjlKUEloUm5hVmhtZTJYQVYxY3lFSFhhTlNjRXc2dUZHSGkxQWIvV0V6c1BEUndVUE1qSjA2VlN5anRidUxRdEtXSHJzNnRlUi9nSlhLWjB5VXlEa0dyOGdCYS92TXlyQTlyVDFaNTd5Ty85YTRRT0tBUEhyc0V0RFFOaVg3cmQ1aGw4MUtFSkljcUpsQXd5Kzc3QzVDUG4yWXJZMnNyQ1BtV2dIckcxRlJ3MG91WElOczkwTFRkZVFZR1VaN3EwTlhIVFA2K3NqMFVZSDEzaTJ2ME95a3ArYXV1ZFdpYzNOVnQ5S3VKUFlKMmlUV0VNZ2EwbmRoN2VLS3JaUFZWbERKV3k5K0tlaFBITFgwVG9haTVTOWpMTmdKQmdtb3pzd2QxZlBjT0w1ZFgvdzJZMlB2Z2hid0w3RVV1UjI5YXc2SFpnQks2SU1HUGgrejdtVStYZ3JoTWM3UzVzejVXd1YvWXVCWlI0QlMzdWZLdnZTL1g2Tk81YldzRUNLYzkwY1A3MkJTZS9QL1E3Z3RGY1FzdzhpdlZoZWZkVGpHelU2M25GNThCZC9uWUZYTjA2am1tRHVWQUhoVnJNcXZlcXdRemF3Z0xwU2xiT29lVW5FZEpPSG1KUTVXQkpibnBWL2kxUjNKOUFXWWFVMVVicmhDNzFtNHhxTmFEUjBHYlI3bzI5cmltaGkzVHBhcDZ4cnB2aHlzSEwvL3oxMksvUEkyYnRaTXBtQmxwRW56UUlEYURiK2plWlhkYk9ncXdVSGcvc1FrZ2R0NjJlNEZabkJGckV6TjBzYmdxdkRMbVRRUUR4MjFnemNpYnZBNGNReEpWclozMHVDQVZWNjE0TDc1NVYycFpnMG9aVEc3YS9zdjYvQ0kyMEVrWXJoL0puSEdYZ0s0UEtHeUh5K252MGZYNklVLzMyblF6ZWpScHJEQzdYeGZ5NFFFckxLRWc1ZFVJNnN2N1BxN3UrMjRyb20yUXMvZ1FTbGlWTGFVeE1jWmFxaFdDWURldmYxU1M4eGZoT2o3bjYxYXFRUWRDRnpXZlBacDI0c2lzd0lyako3MUZMUmlBTWY4cUxQcVRzTE5RRFdtK1p3Y3oyVGJENW5nNG5jcTc5SkNZQU94Rk0ybUZIY0l2Q0NiRXNhUEh2cDh4clZJZVEySFhFVHBqUGw0aEJtb0w5MjBZS2NiWHQ4OTI5SDl1eUNqeXg3TUNTL1hQKy9rcXVXd21aWmM4YVh4bjhYb0Mvemplb3BXZllrMk5jUXZyMHQ3TnQxeFY1cWFmUDVoeGVzenB6ODN6RkNrOVoxaWg3NzZWSkRGckVjM2tnRzFWMW1UVmdzbC9YUUx2VzhBQ25manEwZnU4SFcvN2I2WjIreHRSVDZYK2MrSHhIRXZhOU04VzF2TVYzazNseFdGZEtTRzZ5UkRBQklSRmN4Q0VSM0xJd0FuVTZCOVBpajNkWk5ldG5YbmhsRWFzUXRnRnAyTDhtZEViTXpHMXRTUUo3WjIvNTc2a2ZEdjJFWUFCSy9IMTdabjhsU1lvZkVPVFI5N2xSYnEzdnVmZDZ6ZmhWQmRPbHcwY3kvNXl6SVBmMHR1MElqWHN5NWVjdU5DQ1dNWFdCb0dhUGRCZ1pQTHIxZy9ib0UzWk0yL2h1NHBvVFB3QW5xSmhmZ0FGaGN4QTZjeXdUbmhyTUNQVkplUXZ4YVN4YmlMZXRMY0d0emdpY2dWbzdQK1QvNHJleGJkcGlUaUJFM0lwRXFsRU1rVnFGelI4eXc3ZE4zUTdLaVRPL0hWNngrOTJFZWNBUkxCRnd5bU1BNmlRcGpWMWFSdDdsR2Y3c0pKM1JxOG8xN3pjQ3BrdUhqMXhaL3RJSEJhbG45aUNZZ21JaGFKY2ZRZjJCVGU5cU1hN2orTEtXRGRMRnJNdHI3bDAyRGlIQ1g4RCtwUnhZRkx1aEg4UXdRVzFXL3VsS0ZrK081U09FL3VHMmRqeTYxUm1Cb3NoU25sT0p2R012ZE1oRTFPYlpyazhHRFc5NVA0QjBLZXZTbW1ITEppRVVqZWV3THlhZXdnQjhnY1l1elNNR2VROTQrYm1hUHZ2Ymk0THN0TXowRGJNK3p2bDM1Vm9zQmtGbE1VWkZJdklDR3JvMjhPd1lObWZnOU5LMllBOHYzUFhsNFFXNzVpTzJlQ3NhUjBBSlF4Znl5VGdlZTZRL0QrZmtJWG5mejJoZ0gySzVrMU9CK200NTNPcU1vRExRSUJSMlFRMGlRNFowbU5yekxZQnp2eC83Y2VmMFB6OUJ6Q0tYc1c5MlVzS2pCN20wR0R6WSs2NnBVNnFLQWVTbG5FeEVveTBzU0R0N3dad25aWVBXeGdBcDFHSTJhL1YxUTRPMExsNmVPbGV2NnhvcUxHdlhraVVaNno5UU8ybVZKWUVwZmdRK1FGRDlBVTBIdDUvUy9YbnJKVVBtNmJTekcrNy9VVm5QWDR0aVQ0KzhxN0Y2T3FNMUdzd0RYdU1iTE11YTIxWWFBQWNqS0F2T2lCMkNaaEcvUC9pZHdjM0pkL2Q3bTE0NjgrdVJOUWp6NDNUc2t3SmM1WHBhK2oyKy9IT2R1NTlmUlJxUmUzYkgvb0tNOHljeXRpNVlXNWgyN2p3V1M4TnNMTnQ4U2toenRXMkFHb3JOZ1I1TCtEUEZldEJUNngwWTZOSGxrUUdHZW0wNkdId2FYOU4ybnkya3I1ODk5K3F1NzM1QU1JUVV5bWFhaXNSVUZ3aHQ5WFRuUjV1T2FsMHNZdEhtWjFaTlNkNmV0QnhoY1hqMUdwcWs3TXBvNWYrRk9GS25BUTVHVUJwMHlPN0R2YjZJZXRHdG9YdVBsUU1YeFNDVWpJb1hZbmt6aUxLTjVlYzE0TFdIbllPNmpzczl1ME55YlJFUlZOb0ZCVkpheHBYNEtiTk41M2J1UmN4NlY3Q0VOVmR5R2FpdERTdER3R3BqSk1WeTBCMHhNL3U3Tkkvb1ZxdlQvU09jL0ZvRVYrSWVGRWhwR2NsTEhwMVVrSHBxRzhLUXFqd1BUaDFpbHlIUXRaRm5sN0NQQnI1dHJGdXJMaFJKWXpNUk9wazBidk5adkNyaFlBUzJvUWRjV3p6ZHBXWDlYbzN1WHh1OTdFUEVnRlNpN05nREhXTDlHNnoxcWg5V1ovUlgwM1d1M3JYVUJjeDVPYWJjazVzM3BmNDY1VXNzUVR1dUlBYUxDZnNUbGlpK0FnWXNFWTJ0b3hrajE2VkVLbFlNaHF5TmhoVEdvQVJTQ2RCNk4yamxmZGVyNDV3YjNOSEd6bWN2QVZrNlVKdHhsMmNMNEl5UURrSzZmakJnVXQxdWdVT3l6cVR2V2ovNmgyY1FqS0FpVzc4T2xBTUhJN0FOOVFEVFVEeTh0ejNRSXJZRmc1d2FkdTVmTy9yVEdjb0plZkQvbGZycmxNOFFTNHdMRkUvbWFZKzFvVEpRdlJDRDFiZU9lMkJneCtEK2QvcDVOUW9xTEN6UW04MkZPbmVqajNjdEZ5OXY5Y1Y1K2JsUzZ0VUxaeTZubnoyMmN0ZFhHeEY2anN1SXdhbElIMG83dEFqbTRpYmZwNkZMODBIOVBQczg5MVJwZW9hQ3JPU2M3SU8vSFhWclA3SzUxc2xvVUovTE9iSitYZXF2VTk3RllzaFYzanBmaitqSHVpRVB0KzhTOGtEcnFTdnUrbllZRmlNdEJ5T29JamdZUWRWRGlZSVU1SGJuMlBzOGUwMTRDYUFnOCtMRnkzRlBUQys4Y25ZZlFrUlcvTzRydWtaMUJyeWVHRER6Q1QvdnhtTnJPWHMwcW9wR0gwbmN1Zm5uYlo4dXVKeDU5Z0MydHdFVjR5QWZvSkZMaThFUnRwU2V5VXZIdlc0NnQrTWZoS1RoVjN2a2d1ZWRBdHNYdVFpYmt2YnRTRjQ4OWdVRU03REhyRmVKOCtnUzlFZ0h6NU5mN2xJQ3hOb2JHdDRCTytCZ0JGVUxEY0swTnNEcnJsZnZkMjE3OTJ0NUYvL2RuTHJxOVk4TGtvOHI2YmZTc1MvUWFXbFFESE44Z1lZK2J2VTYzTmR0NGhPaEFYZFVTUVFrVTM2TzZZY3RjMmJ1UExsK05XSWIwRHBRaUZxcEYrSVY4Y1o0MTVhRGh3R2svUEQwczdtbnRteEVMSE95a1EyNkVOdWx2YjBIdlBJZmpjSFpKZmZVMWw5U2ZuanFYWVFCMWhYczM5TFY0Qmo4MXdXNjZtN0FMUVpGbERaNFJiNzU4dVVmbng2VjlkZThiODNaVjVSSVI1WEp3ZmYvN1oxN2RGVFY5Y2MvOXpHdlRKSWhMd2lFUUNBUmdyekVpQkJBU3lnb29NVldBUkVyaWlKYVVDcFdhYVcyUnV0Q3JmNms4Qk8xUGhjKytDRStDaFFFcVR5cUFvSU5Ba2JRRUZDQkVDQmt5SHN5cjN0L2Y5eDduWnZoVGhKOFZMczYzN1h1bW1UbTNIUDIyZWVjZmZZK1o1OTlqQlZ2cy8wditvSU4wc0hLUGI3emVoWU5jdGhhcXVMZkJKSW9TLzI3ajdpNHFPL2txWFZOcCtxUG5UNWtCR2N4cjFrRTlicFVOWmR2Zmw4Sk5MNGQ4QjVaNmR2OTJrWWlkdzBHMFFSSURYQThkS3A4WDhPT0Y5NEtOZGZ2ZFErNGNxWXRMZmR3ODRHTlpVUVdRZVA0QVJIWENMNTdHTnQweG5WajN6YW1nUGtnVWtLL3JoZGw5c3NaZmtFblQ5ZUxVaEl6UjdvZFNUbmZBYzB4Y2JMMnlNWkhWODJZUmVUQVQzUTlES0VFa1dQT1ZqQk1DemZnVEozOC9CRHZpcHMyb3gzOS9xODk3UE5qUVZ3US9QaGhGZ1JPMDZmZDlHbWo1WUQ4TnUxcWJFdUcwQllPYTRuY3p2eGQyT1htNkVoR0xJUTRmbUI4VzBGZ3JLNGJEV3Vvam0wMXJySGRaY3lhWm9lWVdMQXFKMVk4TzlHVXpyd0ZadzdtWVJYRXcvamZQSk9mYlVjVm81NW9XQVVKYVMyUGFCNmJhV3dySHdQbVBLS0RrclFHcTNTQ3hYZXQwUitMQndhUFk5RnVGaGJFU0dOT0cxMVdkTUFWY3hvaEtwMlpwdmJ3SnJwOXpQbVovemJxWi9SdHE3YU1MaithbHJaZ0RreGpicHZXZUhzR3psWVFHRGF3Y1VlZkI4MzV3NmtYV2tOa0s2clpnZ2dqckZRNmtGbGV6dVBGeFN4ODVSVU1CNXA2SWdQUGZCK2dCODFYM0QxOU9oMWZmSkhQMGJhZmpCdUdRR05HSXBCeHd3MzAyN3VYMEs1ZFZLTXRSaGtyNE1hcWQwYzlQeGN0enlLb1FIRE9ITktibS9ueW1XZjRXSzlMckREYkJtUmFPdVNrNnpRbjZMK1paNzltdlo1ZXRMMXc4M0ZlSXlobnVrNWptdjYvalpZZExxUy9VNFVXVktXS005MTREUzNDQ0MrV2pLWTkrSFIrZUducDNCUHRiMkJ1QitNb2NiTE9zNUQrYm9OZXJySHVZYVJyaXdkQi9mM1RhTzNvcGFXSjROVHpTZFRmTlhobW5IQ01wczI0Y1RuVlJGK3RucmV4R0duRVIwalRhYktaNkRIOEt2ejY0OVByWlFSck1TSkltYU1vZDlTZlJKMnY1c0d0OU9tRE1ITW1IZWJPWlQwUlYzUmprVGRkZjg5bUt0K1llSUltR295QU1VMjB2Q1hLdUNiT2lBNlZvZlBMb2I5ZmcrYVRZbHpBKzUyWlhrWVlxRjdBVDMvNVM0by8vSkRQZkQ1VTgzUHNHS2VCOFVBM25TZ3pSSjNZZnIxNk1hT2lnaHJqdmR0dlp5RlFxRmZJMEJUY1FNK0JBL25GZSsreDAxek96cDE4cXBlVG96UEVwak9rY05FaVhqS25yYWlnNXBsbmVCb29Bc2E4OVJacm91bTJldjd4RDk0RkxrVHJYRmF6R2tTMkNuc0Q0MWVzWUgxMU5mNzI1Ty96b1g3NElmc3Z2WlRad0hsNjNWT0EvUG56S1c1dkhnTUdNQkhvSHNWdkNVaVpOWXV4SlNWczhYcnhtZDlac0lERndDQzlQTHZlTHQxR2oyYm82TkVNMWZucUliSkQwUk80M0p6SG9VTWNXN3FVeGFOR01Rekkxbmx3eVJ0djhMYlhTM043NlQ5d2dCUFRwdkVIWUFoYXpJSmt2ZitNUG4yYUpwOFB0YlNVTDBhTzVMZkFLTDBQcHVuMU5ZNkhYN3gvUHdlaTg1NHdnUnVCYy9UNi9NUXFUYXpINjZYNXVlZFlsWi9QRFRwdFhYVitkUWZHdFRlZmZ2MllET1NoM2JoZHNHb1ZxOXI3YmtVRk5VdVg4anB3aVY2UGRMMisvWUNmM1hzdkw4VHFiM3IvSGFMenFzMU5BYm1OMzQxWnRqT1FYMXJLd3R4Y2NtSWxUa21odzhzdmM4bDExN0dmbG9OSFJuTit5WjB5aFN0ZWZKRjd6Ty85K2MvY01YbzBRNis0Z2o4UmNUYVJnYVI1ODVnOGVEQ0R6ZW43OStmY1BYdDRldUJBZm8wV3o2NFo2RHByRnRmTW5NbDE1clNwcVhoNjllSUNZQU1nTnpiU3dyc1BvTElTLzlxMUhFeElvTjdwcE1udHBzSHY1M08wMlNTV1hmejFpYmI3N21QNjczN0hEQ3VlN056Smx3Y1BVaGtPSXhjVzBpczNGNC94MjhDQjVLOWN5Uk03ZGxBeWNpUy9ROXUvOTlUVjBjRXFyN2ZmNW1oMU5TZGNMaHFkVHBvOEh1cUdES0Y1NzE1OHROUUdWSUFubjhRN2VERFY1NTZMMDV6UHRHbmNNSDgrVzRtRUsrdHkvLzFjTzI4ZXR3QXNYODViMDZmekpKcFB2d0Rrcmx6SnZlWThPbmVtczh0RnIwMmJTQVU2VEpuQ2lDVkwrRTFDUXNzb3dnY1BVcnQ5TzJXeVRORGdRYytla2ZwMTdVckh2LzZWQng1NmlOOWtaWEU5V3N3QlIxRVI1enVkdUFCeWM4bFp0NDZIQWNyS09QTHJYN05reXhZK1FwdHBSYUNUMzkreWprMU5CRmF2cG9ISUlQQUVBbWRNVGxSVzRqOTFpcnJFUk9RZVBmamErY3Jsd25IdHRVeTQ5bG9tQVB6eGp5eDQ5RkZXb2ZXSDVPcHE2dFBTV29aQjI3V0wydDI3T2V4eTBlQjIwNUNjVE8yUUlmaEtTL0hwZENhMTB2OE9DUUxLMVZmVE96RlJHNWVwcVhnbVQyYmk1TWxNMU12ZjNLY1BYZGFzNFpFdVhjaU16dWZFQ1h4ZUw2Y2REcHJ6OHNna29xMTlxM1VkRzVyMEdiRndJYTlZU1ozRGgybFlzb1IzOUU3OE0rQUN0Tmtoa1lnZ2NPamZYYkpzR1J0Yms0RFYxZmp6OHBnRkZLQUpueXhnK0IvK3dQTlc2WGZ2NWdnd0U3anU1cHQ1eGlyTjh1WDhBMDJpRGdMR3Z2b3FtNkxUYk4xS0RmQWlVQXpjQWx3T0RFQ1RwbGJDVXRSL0cvcjg4L3pOcXR3YmIrUUZQWisrYURQU1FHRHlHMjlRWXBYK0wzL2haVFN0WmRUczJTeXlTak5sQ2l1QjI0Q2ZBeGZwZVdlaWFVWFJacDROYlJZYS9jb3JiSTdPYStsUzNnZG1BRE8zYmFNcyt2ZWpSNm5MeVdFZWNQUGRkN004K3ZlLy9ZMGR3QlRneXVlZVk2VVZ2UysreUZaZ29zN0xISjNlQ1E4K3lHcXI5SnMzc3d1WUFGdzZlemFMMjVveGQrL21TSFkyZndJZTJybVRreFo5NHdxMDJUZ1B1R0wzYm81RTUvSENDMndEcmdGR0FqL3IxbzM3VDUwaVlGVWVNQWtZQVV5MnltdmhRZzRBUzREZkF0ZnFiWlNESG5rS0tMTHFmLy82RjVYQXZjQTk4K2V6eGFyc3ZEeG1BMWUrL2pycnJIN2Z1cFhUbzBmekpqQlBwM09JUHU0U2lLM1J0Z2tqMXQvUVdBVlBuODVTNERLZHlSMzB6bWpZZ3VpZmJqU1ZadUtCQTV3d3YxOVZSVEE5blhlLytLS2wydXJ6b1M1YnhrWmdySjUzVitDQ29pTG1XYWxCMjdiaExTNW12NVZRMGRYSkFqU0IxaVZXUThSbzlFdlFCSkhWM3J3RFRWMisydXJkOWV2NUZHMndkaU5pUDZZQVEyNjlsU1d0Q0t6eHdDV3padkcvN2FHeHZKeDl3UGw2VzFtcGZ3NDBWZlpuVm9NOVA1OU5YMzZwcWQreG5qbHoySGZ5SkNIemQrKyt5eDYwUVRZY21GeFcxbklRK255b1I0NVFEMXlQWmpLNFRQMmhIM0NMVlZsNzkvSVZXaWUrN0ZlLzRvbjI4TUI0VHB3Z2JQNS96eDRPbzAxT3VmcGpLUWhlZlpWTmFDWkhIdHBrTVdQZlByd3hhTHNDR0FwTXRNb3IrbG16aHJlSW1IMmRZL1cvblRzNUNUeXhkaTJmVy9TbGZjQlV2WjM3QUQ5ZHYvNU13Ujc5ZUwzNHhvL25GdjJkSk5wWUQ0eGxHaGorN0luNStmU3hTbEJhU2cyUjZMVnUvVE5FWkRISENXVG41Vkc0WXdjTHpTcGpSUVhCTys3Z2srSERjYzZaUStuQ2hRek15b29NdUYvOGdsRmVMOE9IRHVYMnNqSjJBc2MzYjJaMVdob0h0bTNqa1VHRElpSEpCdzBpWmRBZ1d2alQ3OTVOV1dFaGR4TzVyQ1FBTGRPWWNld1lnYlZyT2VSeVVlOTJVKy94VUVQcnZ1d0NJUFR1amR2cVIwVkJJaEp0MkkyMnlKTUtkQ3dzdEw1cWJmdDI5cUF0aUVtQzBMNmRDa2xxc1NKdHBmNzUwUlpoUHhzMmpIc3JLbmcyTlRWeWdlakhIMU5rVHZ6NTV6UWxKeU4xN2h4Um9SOTVwR1g3YjkzSzN0R2orUjFhUEFZQlNCV0VNOHRXdFVqS1poN1kwQ2FNTGdzV2FFRmtvN0Z4SSsrajhWM1VlZGdDVTZmeXo4eE1nbi82RXo5eHUxc0s2T1RrbHJOZVV4TStJZ2VxWXM2SXVrbVJBNlQxNkVIT3VuWDh0bnYzTS92S1hYZnhQMmlta25Icyt3eVVsRkMzWncrSEV4S29TMDZtWnY5K1BpUVNuQ1dtbmE2cUNKbVpKQThad2hrblU3ZHVwVUtuWDBFelZhdkhqdVVXdEltdDU1MTNNbjdjT0lhTkdFRm44M3N1Rjg0MzMrUnBsNHZMMEhocW5DR3hSQ3dHS1hvRlRxeFp3eXFyQk8rOXh4eWZqMVc3ZHJGaDZWS1dMMXZHc2pmZjVLVU5HM2dXR0FZVVB2WVk4ejc1aENYUmRtTldGcmJYWCtmODVjc1p2bUlGRjVpRmdLa2lqajE3ZUdicVZLNUNtOUZyZ0YzRGhqRnI1VW8yeHFyUW5YZXlwTENRbTRDZFJNNnR0Mm9qMWRjVDJyeVo0NXMzYy9qZGR6bThmajJISDNpQUlqVDEzMlhCcHlCUSsvbm5mTFo1TSs5RjUxZFVSTzk5KzNnaU81dHJnQ3VCaWQyNmNXMUpDWCtkUEprUjBlbWZmcHBYRnkxaUpaclFhb3BGNTZ4WkxIVzV1TUxsNGp5WGkyNDllakNTdGlQMitOQ2NnZlprWlhGcmRUWDFWb2x1djUzbnpqdVAyVDE3TXVmamp6bGdsY1lrQkVyMVBLdUFvNis5eGh2UmFUTXljSjg2eGFMTEwrY1dOUE5nSWpCeDNUb1d6WjNMejZQVC8vM3Z2RE4zTGkrZ0hTaFNMcjZZM2haNWZ2N1VVL3dsUFoxTFhTNG12L1FTYTJQVW1TKys0Q2lSc3h3eDBhc1hmVGRzWUlIUHg0cDkrL2h6OSs2a21YL2Z1SkVQWEM3R2JkakFHalRYNlpqOTZkZ3htalp2NXRpbVRSemVzSUhEOWZVa1hYY2QvWWlzNkZ2T3lySk04UGh4OXFTbmM5ZXVYWlNiZjVzL245RStIeTgvOXh6RmFOcEZkN1RkaXRRUkk4aXVxaUpVVVdIZFo5YXVaUjJ0WHk3YkxoZ3g0dk9Bc1d2WDhsNTcxYlRDUWhiRU1pbHV1NDIzWjh6ZzJkbXpXVFIxS2c4QU53RzNBcjlmcytaTTlkWG5RMzNwSmU1QlU2MFMwWVRDc1B2dTQ5bm9kRVZGekNPeUdtNld3Qkxhb0M2TVJWY004MkFzc2MwREl4YmV3TjY5bVY1ZXp2R3pVV1Y5UHRTREI2bnMwNGRwYU9weXFrNTMzN3Z1WW9GVitydnVZZ0dhblgzR2dsTTdrQVQwSHpXS3V5eFU2S3YxZkRQUVpwckJlWG5NTnEvKzY2YkxhSjBmaG1BM1RsbjI3ZE9IYVFjUFV2bE5lSkNmei9WQWY3MXRzNEZScGFVY2lrNTc1NTA4akxiZWtLcVhtd01NUCtjY2J0Mit2YVZhL2VDRExFRlRwenVoRFo3TDJ0dEdXN1pRMHFzWE05Qk1ueHkwZ1d6Y0w1RUZYQmE5RXhQcldiMmFsY0JnTkJONStCdHY4SFowbXRKU3ZrQmJHN2tBR1BQWVkveGZkSnJLU3J6MzNNUDl3RlZXZVVTWkpCK2dtYVpHdjJwclU2QmRmZ1RtdmZ4MG9HT3ZYblFiTTRiK1k4ZHlRZmZ1ZEZWVkJFRkFGVVhDZGp1QkpVdFl2R2dSZXdCWDc5NWtQL3d3VnhZVk1XcmFORzVmdmZyckdQTG1VTi9HY2RQc2RldTQ0L3p6S1hya0VaNS8vSEhlUnp1cFp4dzdEUkFKSVpiVnJ4LzlQdmlBRnc0ZjVyTUJBN2dIN1pETWNjNE1IR0xzTjZmZGNBT0R1M1JoWUVFQkZ3YUQyTVBobGlxYkpCRzIyL0Y3UE5UOTlLYzhySmRmaC9YQkdJRklEUDgwb0hOK1BqMnZ2cHBoNDhjend1WENyYXZJaUNMS1YxOXhkTU1HZGl4ZXpGYWR6cE5vdmdURy9yZ01lRWFOb3Rlb1VZeW9xYUZETUlqZFppUFFvUU0xbXpieHdhWk5sT204T0Z2L2ZHUDd0dXNERDNENTNYZnowS3V2OHRTTUdieUNOdE9acnhVejlzb3oxNi9ueHNSRUVrYU00SEUwamFVbXF1eG9IbVRtNTlOenpCak91K29xTGs1TkpkM2dnU0NnZXIyY2V1c3QvcW56b0RLS0IySDBpRTRyVm5DejAwa3Z2eCtIS0tJa0pkSHcybXU4OHZ6emZJVG1keEF3bGUxR0U2THBnT2VERDdoMjJ6Yld6cHZIZTNxK2RxRHpwazNNcjYwbE9SREFvYW9JRlJWVWZmVVZ4OWV2WjM5WkdaVkVmRTdNVjgrWmQ0Mk15Ykh6UXc5eHVhclNQUytQM3FFUXNtcTZWRVlRVUdXWm9OdE5ZMWtaVytiT1pRMmEyZWU4NlNZR1pXVXhvS0dCSkZWRmREcnhkZXpJcWJsemVWdm5nd1IwR2pDQVB1Kyt5OU9iTnZIT2xDa3NROVBBNmdEbm5YZHkwYTIzTWpjWXhQYkpKeHo2N0RNT0xWdkdSMlZsWDkrZ2RZcVc1a0NiMm9DVklCQ2lIdlAzaGhlVGpZaHJhM1RvSjhNeHcrZ3NSaHFCbGdFeG9va3pBbUxZOWIrTnZLd3UxREE2Z09GaXF4SnhCb2xWY1lHSVI2T1ZXNjRaaHRPTFFXdDdQUGNNQnlpNzZURXZucHJ6Tk44aVpMYnZEUjZiYnl3MkJKWGhjR0k0bjN3VEdHMW5MT3dhRGs1V2RxL0JLM1A1VmhHU3pMUWJQREQ2aDhHRDZOQmc1ajRTelFPUmx2MUxJdUo5R3FzL0dPVkxKbnJOTVNTTS9tSnVkNk5PQms5RHB2U3RyZEdZUTc2WiszKzB0Nkp4T01zYy9NWGNCODJ4THN4cGpJblI0SjA1SDRYSW1RMmpiMFNYWS9UL003YVRXME8wSURDSHJUSUsrcTdja00xdXhkOTRPOE1pYnpPK3JSKzhtVTdEYmROY1ZpdzMxZThERWlBOVdNVDVpb3FvcWdqcUQzdzJSQUJWRkZCMm42VGl6WDBjbysxQjgzM0M3R0lkTFNUYjdWcjdBOE9vZzBGN0xINHFGdW5hVXovalBUTmZMUEdmTGdpK2E3UW1DRVJBdW5zNCtXbE9rbzNCK1gwUllneDZjemsvQmtFQUlBb29nb0FxL0VDRFRSQTBnVlRkVE4yalc5bFBaRWFQQ3dMcjk4NWFFQmpmV1prRzN4WkMxT2VQRmJIcS9lL1dDTDVybU05VC9GRGxmNWRsUngrNk1yNHpmLzZub0swRFJxckYzMmRUeDIrMFJoQ0hEclc0V0h6OTAwOEZnRWw5KzZwQ2NYRjcxV0NoZU9SSUNaQmR5Y2syQUY5ZFhSQUlGVy9aMHE3WUJFYlorNnFxQklCek16TFVzNlNCRlpNbVNmdXFxbXl1NUdTYkx4Z1VBRncybTNxd29xTDVtWktTc3psWkthakZ4WUpRWE56ZUUzRUFGSThjS2FQendCY01DaTZiVFRYeG9iMEJXb1FWa3lhSlpqNU1mdjMxLzlycnk3OHZ4QVhCbVJBV2p4dG45eXFLVzNZSGt4cWJBdzRBdDlQdUR6WGE2bytkT2xYL1RFbEpyQlY3WWZHNGNmYktRQ0JSY2dWVDdaS1VxaWlDR3lCTXVGNFNoTlA0SFY3OC9yb1lBK0hyc24zaHhrUlZWbDBPbTEwR2FBZzArKzFoS1NDcWprWkhPTnhZdkdWTGEzdkQ0aU1USnJpOVRkNFVWNExjVVVCS0VWRmNnaUNvSVlYR3NLcFcxd2RESjRXNlVNM0M3ZHV0VG9sK1RVdWpLQ2FjQ05VNTNhb2dOd3BxcUpPYzNPeFdsS1k1NjliRkRMYzJzNkRBMWlVOVBTbGs4NlVKZ3RCQlVNVmtSVkZ0c2lRR0VKUzZrS3BVdTVXa0duOWpZMzByQWtHWVcxam9sRk1jSG9lb0pBbUNaQWRRQ1RmSkFWZHRHKzBReDFraUhxb3NDak1MQ214S0IxdUtKQWR6UWlFbC81cUMvck12UHFmSDFIOTlXZkVWY2xnU0V4eWhmc2xwL3BMS1NxdlpWQnlTbTVzY2tKb3lzanQ0Qmw0enVOOGYrMmRsakRtdmErYm9vVDJ5eHBRY3FpejFpMzYvTEx2OVc4ckx6emdhT3JPZ3dPWlBGRk9EYWlCYkVJWGVkNDhadHVUam81VTFzaWprakQvM25QRTlPNmJtSHF3NVdSTlVGZlhDVGxtQkQ0OGV0ZHpTbkZsUTRCTGNvVTRPMmRiYkljc0ZOdzQ3cjNoQWR1YllpM0s3WGEyb1N1ckp1Z2JGSVVtQ00wa0t1a0t5cjl6clBhTXVpOGVOY3h3UmZDa0IxWjh0cUdydWI4Y09lMnJid2NQN0F3UnROVUk0TkNXdlQzQmRlWGwwK2NLa3ZuM3RhWm5KNlU2N2tvdEMzMjRwSFM2ZVZqamc5NTA3SlBTYjBEOS85dDRqSnlzRDRiQTlLSVNVeGdEQlMzTnlBbHUrL0RLNmZHRnVZYUhUMDhuUlNRZ3JQVVdWUHJlTkhQeFlyL1RVZ24yVlZjZEZ1eUxhazF6QlBvbXBnUmp0RU1kWm9rMUhnLzh5Q0VkcWE4VnUzVDFPVlpFVEpaVDBPbi9BMXNtVDJGVkU2Q0lnTmp2RVlDM2FmcTcxTnFVb2h1eVNwRlExTk5jODk4R3VseTgrcDhlSVFDZ1UyUEhsMFIxSVlzQWh5TXF4aXBPVzJvRGJicGNka3VJU1JUbEZGc2dLS21HblE1SjZDNkNHRktWTHZkOGZzQW0yOUdZNVVHTjN1KzFZZTR3SkNVbEpkbFZWM0E2YmxPYVFwVXdWMWZuT3ArV2ZxYUJjWGRCM3pONWpKMHFWWURpcE9SQ3laM3M4VnBPQklDVW0yaHpOalM0Wk9jVWZDR1Q0dzJGSmhneUhMQWRDaEdva1o2SVJQNkRGdG02SzB5bTdKRFY0MHpzN0FBQUN6RWxFUVZSSlVZUTBtMDNzTnE1LzdwUVZIMzM2a1NRSnd2dGxSOVpNSGRwdit0UC9MSGtNbEZOK1c2anE4TEVhcTRWandlNTIyMUhWQktjc2RGQlFNeHI5UVFXUk5BRTZTY2oxZGpGWWZhUzIxaHlNSTQ1dmdiZ2dhQWsxMitOUlFxcnNRd2w3UXlHbE1zdVRtTlFjREZjRXcrRlRpaEN1Qy9rVnY5dHVqOVh4Rkh5K0p0bmhxbTZXR2dWVUlaRGt0UGRBdGFuK1VQZ3pCZVc0SSt6MmRrbXlqR0tzTmdZQ0laZVEwQlFLQmIyU0xKMVlWM3B3K1l6aDUxOS9zcjdwcUN4SzRWZDM3bDBaSm56YXBraE5UWTJOc1ZSenRhbStQbUJ6T1pyOElhbGFFRGd1QzJKZ2NrSGY4MHNyVHBROC9mNUhqL3NEb1hKVnBDS0VYSWUxVDRjYWJtZ0lLalpiVTNNd2VEb01kcnNzQjBKUXBZWkNwMFdiclNuYzBHRDUzdW5tNWxCS3dOVXN1dFJhSlN5Y0xEdFp2ZjBYZy9JdnJHdHVydkc0bk83bnQzMzhwS0p5UXBCRWI3cVkyUHpFcDF1dHRCbzEwTmdZa0VWYmZkZ3VWUFhwbU5FOTBla1F5MDk2OXdjVnBVb1ZnclVCSkYrMngvT2ZzanZ3bzBkOGpjQUN4U05IeWc2M08rbVU3M1N5WkJlY0NRNm5GRktDUGxsMk5uSTZVTmVHZlE2NmF1dE1TRWdJT2NJMkFOa3ZCWnVibXBwYXNjbS9MaHVISXpsazkzbGtRVXdMaDFXWG9xcUNUUklEaUZKZFFLWGFYaGV1YmU4YWdUdlJscUdFQlErYTBBOFpObnJRWi9lNlFxSEcxbXowYjdoR0lCU1BIT2tJSkVzZVNWWFNGU1hzc1lseW9xS29RbGdOKzFURXVuQWc1SFhaa21yT1RVeHNqTFh3dDJMU0pHbjcwYU4yMGVGd3U1S1VKQUVwQVVDUzFFWjhqcnBVVVd4c2JaMGlqck5EWEJDMGdoV1RKclZRbS8rZHE5VXJKazJTampjMHlGL1VhS3F6eCtGUU9ZdGRoK2c4TWpNeTVPTlZWYUdqZFhYaFNlZWVHejdMdW55VFhRTmhaa0dCN0xiYjVjeU1EQm5nZUZWVnFERVFDSTN1MlZNNWkvTGp1d1p4eEJGSEhISEVFVWNjY2NRUlJ4eHh4QkZISEhIRUVVY2NjY1FSUnh4eHhCRkhISEhFRVVjY2NjUVJSeHovVHZ3L2oyYkQrczFLcHNZQUFBQUFTVVZPUks1Q1lJST0" }, { name: "__ASSET_MANIFEST__", data: "eyJuYW1lIjpudWxsLCJhc3NldHMiOiJhb3k0OnBhdGh5MzI6aW1nJTJGYmFja2dyb3VuZHMlMkZCZ0FkZEJvdC5qcGd5NDpzaXplaTE2Mjl5NDp0eXBleTU6SU1BR0V5MjppZFIxZ29SMHkyOTppbWclMkZiYWNrZ3JvdW5kcyUyRkJnTmV3LmpwZ1IyaTQ3NjU1UjNSNFI1UjZnb1IweTMzOmltZyUyRmJhY2tncm91bmRzJTJGQmdUb3BBZGQxLmpwZ1IyaTE0MjlSM1I0UjVSN2dvUjB5MTk6aW1nJTJGTWFpbkF0bGFzLnBuZ1IyaTM0MDM1MVIzUjRSNVI4Z29SMHkxOTppbWclMkZNYWluQXRsYXMueG1sUjJpNzU5MVIzeTQ6VEVYVFI1Ujlnb1IweTI1OmltZyUyRk1haW5Gb250TnVtZXJpYy5wbmdSMmkzNTY5UjNSNFI1UjExZ29SMHkyNjppbWclMkZNYWluRm9udE51bWVyaWMxLnBuZ1IyaTM5NzdSM1I0UjVSMTJnb1IweTIzOmltZyUyRnN0cmluZ3NfZW5HQi5qc29uUjJpMTExNjZSM1IxMFI1UjEzZ29SMHkyMTppbWclMkZUcmFuc3BQaXhlbC5wbmdSMmk5NVIzUjRSNVIxNGdvUjB5MTY6c25kJTJGc3ByaXRlLmFjM1IyaTMzNjAzOFIzeTY6QklOQVJZUjVSMTVnb1IweTE3OnNuZCUyRnNwcml0ZS5qc29uUjJpOTIwUjNSMTBSNVIxN2dvUjB5MTY6c25kJTJGc3ByaXRlLm00YVIyaTM0ODI2NlIzeTU6U09VTkRSNVIxOGdvUjB5MTY6c25kJTJGc3ByaXRlLm1wM1IyaTMzNjM3MVIzeTU6TVVTSUNSNVIyMGdvUjB5MTY6c25kJTJGc3ByaXRlLm9nZ1IyaTMyNjM4NFIzUjE5UjVSMjJnb1IwUjE3UjJpOTIwUjNSMTBSNVIxN2doIiwidmVyc2lvbiI6MiwibGlicmFyeUFyZ3MiOltdLCJsaWJyYXJ5VHlwZSI6bnVsbH0" }]; var __map_reserved = {} , ArrayBuffer = $global.ArrayBuffer || js_html_compat_ArrayBuffer; null == ArrayBuffer.prototype.slice && (ArrayBuffer.prototype.slice = js_html_compat_ArrayBuffer.sliceImpl); var DataView = $global.DataView || js_html_compat_DataView, Uint8Array = $global.Uint8Array || js_html_compat_Uint8Array._new, this1; this1 = new Uint32Array(256), lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16 = this1; for (var _g = 0, this2; _g < 256; ) { var i = _g++ , val = Math.ceil(257.00392156862745 * i); lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[i] = val } this2 = new Uint8Array(510), lime_math_color__$RGBA_RGBA_$Impl_$.__clamp = this2; for (var _g1 = 0; _g1 < 255; ) { var i1 = _g1++; lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[i1] = i1 } for (var _g11 = 255, _g2 = 511, h; _g11 < _g2; ) { var i2 = _g11++; lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[i2] = 255 } lime_utils_Log.level = 3, void 0 === console && (console = {}), null == console.log && (console.log = function() {} ), openfl_ui_Multitouch.maxTouchPoints = 2, openfl_ui_Multitouch.supportedGestures = null, openfl_ui_Multitouch.supportsGestureEvents = !1, openfl_ui_Multitouch.inputMode = 2, openfl_display_DisplayObject.__broadcastEvents = new haxe_ds_StringMap, openfl_display_DisplayObject.__instanceCount = 0, openfl_display_DisplayObject.__worldRenderDirty = 0, openfl_display_DisplayObject.__worldTransformDirty = 0, Main.created = !1, Main._addsBlocked = !1, Main.tmpConstrArr = [], Archers.showTutorial = !0, Archers.helemtsDatas = [], Archers.winsLabelsDatas = [], Archers.timerTxtsDatas = [], Archers.singlePlayersLabelsDatas = [], Archers.player1BtnsDatas = [], Archers.player2BtnsDatas = [], Archers.isTwoPlayers = !1, Archers.arrowsInterGroup = new nape_dynamics_InteractionGroup(!0), Assembler.lastAssemblerSeqIndex = -1, Assembler.lastAssemblerLevel = -1, Assembler.isTwoPlayersFightMode = !1, Assembler._bestTime = -1, Assembler.curTime = 0, Batching.instances = new haxe_ds_IntMap, Batching.count = 0, Config.baseSWidth = 1300, Config.baseSHeight = 600, Config.scale = 1, // Game_uptapAnalytics.EVENT_LEVELFAIL = window.game_uptap_analytics.EVENT_LEVELFAIL, // Game_uptapAnalytics.EVENT_LEVELRESTART = window.game_uptap_analytics.EVENT_LEVELRESTART, // Game_uptapAnalytics.EVENT_LEVELSTART = window.game_uptap_analytics.EVENT_LEVELSTART, // Game_uptapAnalytics.EVENT_LEVELSCORE = window.game_uptap_analytics.EVENT_LEVELSCORE, // Game_uptapAnalytics.SCREEN_HOME = window.game_uptap_analytics.SCREEN_HOME, // Game_uptapAnalytics.SCREEN_LEVELRESULT = window.game_uptap_analytics.SCREEN_LEVELRESULT, // Game_uptapAnalytics.SCREEN_PAUSE = window.game_uptap_analytics.SCREEN_PAUSE, FightTable.curFight = 0, FightingMode._numWins = -1, zpp_$nape_callbacks_ZPP_$CbType.ANY_SHAPE = new nape_callbacks_CbType, zpp_$nape_callbacks_ZPP_$CbType.ANY_BODY = new nape_callbacks_CbType, zpp_$nape_callbacks_ZPP_$CbType.ANY_COMPOUND = new nape_callbacks_CbType, zpp_$nape_callbacks_ZPP_$CbType.ANY_CONSTRAINT = new nape_callbacks_CbType, zpp_$nape_ZPP_$ID._Constraint = 0, zpp_$nape_ZPP_$ID._Interactor = 0, zpp_$nape_ZPP_$ID._CbType = 0, zpp_$nape_ZPP_$ID._CbSet = 0, zpp_$nape_ZPP_$ID._Listener = 0, Hero.cloneData = new haxe_ds_StringMap, Hero.allHeroesCbType = new nape_callbacks_CbType, Hero.allHeroesHeadCbType = new nape_callbacks_CbType, Hero.allHeroesPlatformCbType = new nape_callbacks_CbType, openfl_geom_Point.__temp = new openfl_geom_Point, LocalSaves.storeName = "pir2", Menu.wasRemake = !1, SponsorLogo.resourceType = "image/png", SponsorLogo.resourceName = "__ASSET__:bitmap_SponsorLogo", GameLogo.resourceType = "image/png", GameLogo.resourceName = "__ASSET__:bitmap_GameLogo", LoadMeter.resourceType = "image/png", LoadMeter.resourceName = "__ASSET__:bitmap_LoadMeter", LoadBarContur.resourceType = "image/png", LoadBarContur.resourceName = "__ASSET__:bitmap_LoadBarContur", LoadBarFill.resourceType = "image/png", LoadBarFill.resourceName = "__ASSET__:bitmap_LoadBarFill", OurLogo.resourceType = "image/png", OurLogo.resourceName = "__ASSET__:bitmap_OurLogo", SpriteJson.resourceName = "__ASSET__:file_SpriteJson", TJSON.OBJECT_REFERENCE_PREFIX = "@~obRef#", ToolActions.objectsScale = new haxe_ds_ObjectMap, ToolActions.onceIDS = [], ToolActions.playingSounds = [], Xml.Element = 0, Xml.PCData = 1, Xml.CData = 2, Xml.Comment = 3, Xml.DocType = 4, Xml.ProcessingInstruction = 5, Xml.Document = 6, firework_Firework.X_VELOCITY = 20, firework_Firework.Y_VELOCITY = 20, haxe_Serializer.USE_CACHE = !1, haxe_Serializer.USE_ENUM_INDEX = !1, haxe_Serializer.BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:", haxe_Unserializer.DEFAULT_RESOLVER = Type, haxe_Unserializer.BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:", haxe_crypto_Base64.CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", haxe_crypto_Base64.BYTES = haxe_io_Bytes.ofString(haxe_crypto_Base64.CHARS), haxe_ds_ObjectMap.count = 0, haxe_io_FPHelper.i64tmp = new haxe__$Int64__$_$_$Int64(0,0), haxe_xml_Parser.escapes = (h = new haxe_ds_StringMap, null != __map_reserved.lt ? h.setReserved("lt", "<") : h.h.lt = "<", null != __map_reserved.gt ? h.setReserved("gt", ">") : h.h.gt = ">", null != __map_reserved.amp ? h.setReserved("amp", "&") : h.h.amp = "&", null != __map_reserved.quot ? h.setReserved("quot", '"') : h.h.quot = '"', null != __map_reserved.apos ? h.setReserved("apos", "'") : h.h.apos = "'", h), haxe_zip_InflateImpl.LEN_EXTRA_BITS_TBL = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, -1, -1], haxe_zip_InflateImpl.LEN_BASE_VAL_TBL = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258], haxe_zip_InflateImpl.DIST_EXTRA_BITS_TBL = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, -1, -1], haxe_zip_InflateImpl.DIST_BASE_VAL_TBL = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577], haxe_zip_InflateImpl.CODE_LENGTHS_POS = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], js_Boot.__toStr = {}.toString, js_html_compat_Uint8Array.BYTES_PER_ELEMENT = 1, lime__$backend_html5_HTML5Window.dummyCharacter = "", lime__$backend_html5_HTML5Window.windowID = 0, lime_graphics_opengl_ExtensionAnisotropicFiltering.MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047, lime_math__$Matrix4_Matrix4_$Impl_$.__identity = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], lime_ui_Gamepad.devices = new haxe_ds_IntMap, lime_ui_Gamepad.onConnect = new lime_app__$Event_$lime_$ui_$Gamepad_$Void, lime_ui_Joystick.devices = new haxe_ds_IntMap, lime_ui_Joystick.onConnect = new lime_app__$Event_$lime_$ui_$Joystick_$Void, lime_ui_Touch.onEnd = new lime_app__$Event_$lime_$ui_$Touch_$Void, lime_ui_Touch.onMove = new lime_app__$Event_$lime_$ui_$Touch_$Void, lime_ui_Touch.onStart = new lime_app__$Event_$lime_$ui_$Touch_$Void, lime_utils_Assets.cache = new lime_utils_AssetCache, lime_utils_Assets.libraries = new haxe_ds_StringMap, lime_utils_Assets.onChange = new lime_app__$Event_$Void_$Void, motion_actuators_SimpleActuator.actuators = [], motion_actuators_SimpleActuator.actuatorsLength = 0, motion_actuators_SimpleActuator.addedEvent = !1, motion_Actuate.defaultActuator = motion_actuators_SimpleActuator, motion_Actuate.defaultEase = motion_easing_Expo.get_easeOut(), motion_Actuate.targetLibraries = new haxe_ds_ObjectMap, nape_Config.epsilon = 1e-8, nape_Config.fluidAngularDragFriction = 2.5, nape_Config.fluidAngularDrag = 100, nape_Config.fluidVacuumDrag = .5, nape_Config.fluidLinearDrag = .5, nape_Config.collisionSlop = .2, nape_Config.collisionSlopCCD = .5, nape_Config.distanceThresholdCCD = .05, nape_Config.staticCCDLinearThreshold = .05, nape_Config.staticCCDAngularThreshold = .005, nape_Config.bulletCCDLinearThreshold = .125, nape_Config.bulletCCDAngularThreshold = .0125, nape_Config.dynamicSweepLinearThreshold = 17, nape_Config.dynamicSweepAngularThreshold = .6, nape_Config.angularCCDSlipScale = .75, nape_Config.arbiterExpirationDelay = 6, nape_Config.staticFrictionThreshold = 2, nape_Config.elasticThreshold = 20, nape_Config.sleepDelay = 60, nape_Config.linearSleepThreshold = .2, nape_Config.angularSleepThreshold = .4, nape_Config.contactBiasCoef = .3, nape_Config.contactStaticBiasCoef = .6, nape_Config.contactContinuousBiasCoef = .4, nape_Config.contactContinuousStaticBiasCoef = .5, nape_Config.constraintLinearSlop = .1, nape_Config.constraintAngularSlop = .001, nape_Config.illConditionedThreshold = 2e8, openfl_Assets.cache = new openfl_AssetCache, openfl_geom_Matrix.__identity = new openfl_geom_Matrix, openfl_geom_Matrix.__temp = new openfl_geom_Matrix, openfl_Lib.current = new openfl_display_MovieClip, openfl__$internal_renderer_DrawCommandBuffer.empty = new openfl__$internal_renderer_DrawCommandBuffer, openfl__$internal_renderer_canvas_CanvasGraphics.SIN45 = .7071067811865476, openfl__$internal_renderer_canvas_CanvasGraphics.TAN22 = .41421356237309503, openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands = new openfl__$internal_renderer_DrawCommandBuffer, openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands = new openfl__$internal_renderer_DrawCommandBuffer, openfl__$internal_renderer_canvas_CanvasGraphics.hitTestCanvas = window.document.createElement("canvas"), openfl__$internal_renderer_canvas_CanvasGraphics.hitTestContext = openfl__$internal_renderer_canvas_CanvasGraphics.hitTestCanvas.getContext("2d"), openfl_geom_Rectangle.__temp = new openfl_geom_Rectangle, openfl__$internal_renderer_opengl_GLTilemap.__skippedTiles = new haxe_ds_IntMap, openfl__$internal_stage3D_GLUtils.debug = !1, openfl__$internal_swf_SWFLite.instances = new haxe_ds_StringMap, openfl_text_TextField.__regexAlign = new EReg("align=(\"([^\"]+)\"|'([^']+)')","i"), openfl_text_TextField.__regexColor = new EReg("color=(\"#([^\"]+)\"|'#([^']+)')","i"), openfl_text_TextField.__regexBlockIndent = new EReg("blockindent=(\"([^\"]+)\"|'([^']+)')","i"), openfl_text_TextField.__regexBreakTag = new EReg("","gi"), openfl_text_TextField.__regexEntities = [new EReg(""","g"), new EReg("'","g"), new EReg("&","g"), new EReg("<","g"), new EReg(">","g")], openfl_text_TextField.__regexFace = new EReg("face=(\"([^\"]+)\"|'([^']+)')","i"), openfl_text_TextField.__regexHref = new EReg("href=(\"([^\"]+)\"|'([^']+)')","i"), openfl_text_TextField.__regexHTMLTag = new EReg("<.*?>","g"), openfl_text_TextField.__regexIndent = new EReg(" indent=(\"([^\"]+)\"|'([^']+)')","i"), openfl_text_TextField.__regexLeading = new EReg("leading=(\"([^\"]+)\"|'([^']+)')","i"), openfl_text_TextField.__regexLeftMargin = new EReg("leftmargin=(\"([^\"]+)\"|'([^']+)')","i"), openfl_text_TextField.__regexRightMargin = new EReg("rightmargin=(\"([^\"]+)\"|'([^']+)')","i"), openfl_text_TextField.__regexTabStops = new EReg("tabstops=(\"([^\"]+)\"|'([^']+)')","i"), openfl_text_TextField.__regexSize = new EReg("size=(\"([^\"]+)\"|'([^']+)')","i"), openfl_display_LoaderInfo.__rootURL = window.document.URL, openfl_display3D_Context3D.__stateCache = new openfl__$internal_stage3D_Context3DStateCache, openfl_filters_BlurFilter.__blurShader = new openfl_filters__$BlurFilter_BlurShader, openfl_filters_ColorMatrixFilter.__colorMatrixShader = new openfl_filters__$ColorMatrixFilter_ColorMatrixShader, openfl_filters_GlowFilter.__glowShader = new openfl_filters__$GlowFilter_GlowShader, openfl_media_SoundMixer.__soundChannels = [], openfl_media_SoundMixer.__soundTransform = new openfl_media_SoundTransform, openfl_system_ApplicationDomain.currentDomain = new openfl_system_ApplicationDomain(null), openfl_text_Font.__registeredFonts = [], openfl_ui_GameInput.numDevices = 0, openfl_ui_GameInput.__deviceList = [], openfl_ui_GameInput.__devices = new haxe_ds_ObjectMap, openfl_ui_GameInput.__instances = [], openfl_ui_Mouse.__cursor = "auto", zpp_$nape_util_ZPP_$Flags.internal = !1, zpp_$nape_callbacks_ZPP_$InteractionListener.UCbSet = new zpp_$nape_util_ZNPList_$ZPP_$CbSet, zpp_$nape_callbacks_ZPP_$InteractionListener.VCbSet = new zpp_$nape_util_ZNPList_$ZPP_$CbSet, zpp_$nape_callbacks_ZPP_$InteractionListener.WCbSet = new zpp_$nape_util_ZNPList_$ZPP_$CbSet, zpp_$nape_callbacks_ZPP_$InteractionListener.UCbType = new zpp_$nape_util_ZNPList_$ZPP_$CbType, zpp_$nape_callbacks_ZPP_$InteractionListener.VCbType = new zpp_$nape_util_ZNPList_$ZPP_$CbType, zpp_$nape_callbacks_ZPP_$InteractionListener.WCbType = new zpp_$nape_util_ZNPList_$ZPP_$CbType, zpp_$nape_dynamics_ZPP_$Arbiter.internal = !1, zpp_$nape_dynamics_ZPP_$Arbiter.COL = 1, zpp_$nape_dynamics_ZPP_$Arbiter.FLUID = 4, zpp_$nape_dynamics_ZPP_$Arbiter.SENSOR = 2, zpp_$nape_dynamics_ZPP_$Contact.internal = !1, zpp_$nape_geom_ZPP_$Collide.flowpoly = new zpp_$nape_util_ZNPList_$ZPP_$Vec2, zpp_$nape_geom_ZPP_$Collide.flowsegs = new zpp_$nape_util_ZNPList_$ZPP_$Vec2, zpp_$nape_geom_ZPP_$PartitionVertex.nextId = 0, zpp_$nape_phys_ZPP_$Body.types = [null, (null == zpp_$nape_util_ZPP_$Flags.BodyType_STATIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_STATIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.BodyType_STATIC), (null == zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.BodyType_DYNAMIC), (null == zpp_$nape_util_ZPP_$Flags.BodyType_KINEMATIC && (zpp_$nape_util_ZPP_$Flags.internal = !0, zpp_$nape_util_ZPP_$Flags.BodyType_KINEMATIC = new nape_phys_BodyType, zpp_$nape_util_ZPP_$Flags.internal = !1), zpp_$nape_util_ZPP_$Flags.BodyType_KINEMATIC)], zpp_$nape_phys_ZPP_$Material.WAKE = 1, zpp_$nape_phys_ZPP_$Material.PROPS = 2, zpp_$nape_phys_ZPP_$Material.ANGDRAG = 4, zpp_$nape_phys_ZPP_$Material.ARBITERS = 8, zpp_$nape_shape_ZPP_$Edge.internal = !1, zpp_$nape_space_ZPP_$AABBTree.tmpaabb = new zpp_$nape_geom_ZPP_$AABB, zpp_$nape_util_ZPP_$ConstraintList.internal = !1, zpp_$nape_util_ZPP_$BodyList.internal = !1, zpp_$nape_util_ZPP_$InteractorList.internal = !1, zpp_$nape_util_ZPP_$CompoundList.internal = !1, zpp_$nape_util_ZPP_$ListenerList.internal = !1, zpp_$nape_util_ZPP_$CbTypeList.internal = !1, zpp_$nape_util_ZPP_$Vec2List.internal = !1, zpp_$nape_util_ZPP_$GeomPolyList.internal = !1, zpp_$nape_util_ZPP_$RayResultList.internal = !1, zpp_$nape_util_ZPP_$ConvexResultList.internal = !1, zpp_$nape_util_ZPP_$EdgeList.internal = !1, zpp_$nape_util_ZPP_$ShapeList.internal = !1, zpp_$nape_util_ZPP_$InteractionGroupList.internal = !1, zpp_$nape_util_ZPP_$ArbiterList.internal = !1, zpp_$nape_util_ZPP_$ContactList.internal = !1, iOSjs.isiOSDevice() || (BitmapBatch.prototype.__renderCanvas = function(e) { if (this.__renderable && !(this.__worldAlpha <= 0)) { var t = e.context; if (null != this.bitmapData && this.bitmapData.__isValid) { e.maskManager.pushObject(this, !1), t.globalAlpha = this.__worldAlpha; var n = this.__renderTransform , i = this.__scrollRect; e.roundPixels ? t.setTransform(n.a, n.b, n.c, n.d, 0 | n.tx, 0 | n.ty) : t.setTransform(n.a, n.b, n.c, n.d, n.tx, n.ty), e.allowSmoothing && this.smoothing || (t.mozImageSmoothingEnabled = !1, t.msImageSmoothingEnabled = !1, t.imageSmoothingEnabled = !1), null == i ? t.drawImage(this.bitmapData.image.buffer.get_src(), 0, 0) : t.drawImage(this.bitmapData.image.buffer.get_src(), i.x, i.y, i.width, i.height, i.x, i.y, i.width, i.height), e.allowSmoothing && this.smoothing || (t.mozImageSmoothingEnabled = !0, t.msImageSmoothingEnabled = !0, t.imageSmoothingEnabled = !0), e.maskManager.popObject(this, !1) } } } , Batching.prototype.getBitmapData = function(e, t) { if (null == t && (t = !0), -1 == this.getImgId(e)) return null; var n, i, l, a, s, r = this.getImgRect(e); return n = this.frames.exists(e) ? this.frames.get(e) : null, !t && this.getBitmapDataCache.exists(e) ? this.getBitmapDataCache.get(e) : (i = null != n ? new openfl_display_BitmapData(Math.ceil(n.width),Math.ceil(n.height),!0,0) : new openfl_display_BitmapData(Math.ceil(r.width),Math.ceil(r.height),!0,0), l = null != n ? -n.x : 0, a = null != n ? -n.y : 0, s = this.tileSet.getRect(this.getImgId(e)), this.p.x = l, this.p.y = a, null != this.bmd.image && null != this.bmd.image.buffer && null != this.bmd.image.buffer.get_src() ? (lime_graphics_utils_ImageCanvasUtil.convertToCanvas(i.image, !0), i.image.buffer.__srcContext.drawImage(this.bmd.image.buffer.get_src(), 0 | s.x, 0 | s.y, 0 | s.width, 0 | s.height, 0 | this.p.x, 0 | this.p.y, 0 | s.width, 0 | s.height)) : i.copyPixels(this.bmd, s, this.p, null, null, !0), t || this.getBitmapDataCache.exists(e) || this.getBitmapDataCache.set(e, i), i) } ), ApplicationMain.main() }("undefined" != typeof console ? console : { log: function() {} }, "undefined" != typeof window ? window : exports, "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this);