/*!
 * pixi.js - v4.7.3
 * Compiled Wed, 04 Apr 2018 15:24:31 UTC
 *
 * pixi.js is licensed under the MIT License.
 * http://www.opensource.org/licenses/mit-license
 */

/**
 * isMobile.js v0.4.1
 *
 * A simple library to detect Apple phones and tablets,
 * Android phones and tablets, other mobile devices (like blackberry, mini-opera and windows phone),
 * and any kind of seven inch device, via user agent sniffing.
 *
 * @author: Kai Mallea (kmallea@gmail.com)
 *
 * @license: http://creativecommons.org/publicdomain/zero/1.0/
 */

/*
object-assign
(c) Sindre Sorhus
@license MIT
*/

// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

/*! https://mths.be/punycode v1.4.1 by @mathias */

/**
 * The height of the top row (c)
 *
 * @member {number}
 * @memberof PIXI.NineSlicePlane#
 * @override
 */

/**
 * @license
 * lodash 3.10.1 (Custom Build) <https://lodash.com/>
 * Build: `lodash compat exports="amd" -d -o /rdisks/sf-netapp01-jenkinbuild/workspace/SkateboardPlatform-MessageBus-mainline/target/checkout/target/messagebus/lodash.js include="main,after,arraySome,debounce,createForEach,arrayEach,baseEach,baseAssign,arrayFilter,isEqual,keys,arrayMap,throttle,root,isObject,now,bindCallback,isArray,baseForOwn,createBaseEach,baseCopy,baseIsEqual,getNative,isArrayLike,shimKeys,each,extend,bind,reduce,defaults,map,any,filter,find,contains,clone,without,cloneDeep,isPlainObject"`
 * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
 * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
 * Available under MIT license <https://lodash.com/license>
 */

/*!
 *
 * Copyright 2009-2012 Kris Kowal under the terms of the MIT
 * license found at http://github.com/kriskowal/q/raw/master/LICENSE
 *
 * With parts by Tyler Close
 * Copyright 2007-2009 Tyler Close under the terms of the MIT X license found
 * at http://www.opensource.org/licenses/mit-license.html
 * Forked at ref_send.js version: 2009-05-11
 *
 * With parts by Mark Miller
 * Copyright (C) 2011 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

//     Underscore.js 1.8.3
//     http://underscorejs.org
//     (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
//     Underscore may be freely distributed under the MIT license.

/**
 * riveter - Mix-in, inheritance and constructor extend behavior for your JavaScript enjoyment.
 * © 2012 - Copyright appendTo, LLC 
 * Author(s): Jim Cowart, Nicholas Cloud, Doug Neiner
 * Version: v0.1.2
 * Url: https://github.com/a2labs/riveter
 * License(s): MIT
 */

/**
 * Fast UUID generator, RFC4122 version 4 compliant.
 * @author Jeff Ward (jcward.com).
 * @license MIT license
 * @link http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136
 **/

/*! howler.js v2.0.7 | (c) 2013-2017, James Simpson of GoldFire Studios | MIT License | howlerjs.com */

/*! Spatial Plugin */

/*!
 * VERSION: 1.20.4
 * DATE: 2018-02-15
 * UPDATES AND DOCS AT: http://greensock.com
 *
 * @license Copyright (c) 2008-2018, GreenSock. All rights reserved.
 * This work is subject to the terms at http://greensock.com/standard-license or for
 * Club GreenSock members, the software agreement that was issued with your membership.
 * 
 * @author: Jack Doyle, jack@greensock.com
 */

/*!
 * VERSION: 0.2.1
 * DATE: 2018-02-15
 * UPDATES AND DOCS AT: http://greensock.com
 *
 * @license Copyright (c) 2008-2018, GreenSock. All rights reserved.
 * PixiPlugin is subject to the terms at http://greensock.com/standard-license or for
 * Club GreenSock members, the software agreement that was issued with your membership.
 *
 * @author: Jack Doyle, jack@greensock.com
 */

/*!
 * VERSION: 1.16.0
 * DATE: 2018-02-15
 * UPDATES AND DOCS AT: http://greensock.com
 *
 * @license Copyright (c) 2008-2018, GreenSock. All rights reserved.
 * This work is subject to the terms at http://greensock.com/standard-license or for
 * Club GreenSock members, the software agreement that was issued with your membership.
 * 
 * @author: Jack Doyle, jack@greensock.com
 **/

/*!
 * pixi-particles - v2.1.5
 * Compiled Tue, 14 Mar 2017 22:08:59 UTC
 *
 * pixi-particles is licensed under the MIT License.
 * http://www.opensource.org/licenses/mit-license
 */

/*!
 * VERSION: 1.20.4
 * DATE: 2018-02-15
 * UPDATES AND DOCS AT: http://greensock.com
 * 
 * Includes all of the following: TweenLite, TweenMax, TimelineLite, TimelineMax, EasePack, CSSPlugin, RoundPropsPlugin, BezierPlugin, AttrPlugin, DirectionalRotationPlugin
 *
 * @license Copyright (c) 2008-2018, GreenSock. All rights reserved.
 * This work is subject to the terms at http://greensock.com/standard-license or for
 * Club GreenSock members, the software agreement that was issued with your membership.
 * 
 * @author: Jack Doyle, jack@greensock.com
 **/

! function() {
    define("skbJet/component/gameMsgBus/GameMsgBus", [], function() {
            function t(t) {
                setTimeout(function() {
                    i.publish("error", {
                        errorCode: "GM-003",
                        message: "" + t
                    })
                }, 3)
            }

            function e(t, e) {
                setTimeout(function() {
                    e(t)
                }, 0)
            }
            var n = {},
                i = {};
            return i.subscribe = function(t, e) {
                if (!t) return i;
                if (!e) return i;
                var r = n[t];
                return r || (r = [], n[t] = r), r.indexOf(e) < 0 && r.push(e), i
            }, i.unsubscribe = function(t, e) {
                var r = n[t];
                if (r) {
                    var o = r.indexOf(e);
                    o >= 0 && r.splice(o, 1)
                }
                return i
            }, i.publish = function(r, o, a) {
                var s = n[r];
                if (!s) return i;
                for (var l = 0; l < s.length; l++) try {
                    a ? e(o, s[l]) : s[l](o)
                } catch (e) {
                    t(e)
                }
                return i
            }, i
        }),
        function(t) {
            if ("object" == typeof exports && "undefined" != typeof module) module.exports = t();
            else if ("function" == typeof define && define.amd) define("com/pixijs/pixi", [], t);
            else {
                var e;
                e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this, e.PIXI = t()
            }
        }(function() {
            var t;
            return function() {
                function t(e, n, i) {
                    function r(a, s) {
                        if (!n[a]) {
                            if (!e[a]) {
                                var l = "function" == typeof require && require;
                                if (!s && l) return l(a, !0);
                                if (o) return o(a, !0);
                                var u = new Error("Cannot find module '" + a + "'");
                                throw u.code = "MODULE_NOT_FOUND", u
                            }
                            var c = n[a] = {
                                exports: {}
                            };
                            e[a][0].call(c.exports, function(t) {
                                var n = e[a][1][t];
                                return r(n || t)
                            }, c, c.exports, t, e, n, i)
                        }
                        return n[a].exports
                    }
                    for (var o = "function" == typeof require && require, a = 0; a < i.length; a++) r(i[a]);
                    return r
                }
                return t
            }()({
                1: [function(t, e, n) {
                    "use restrict";

                    function i(t) {
                        var e = 32;
                        return t &= -t, t && e--, 65535 & t && (e -= 16), 16711935 & t && (e -= 8), 252645135 & t && (e -= 4), 858993459 & t && (e -= 2), 1431655765 & t && (e -= 1), e
                    }
                    n.INT_BITS = 32, n.INT_MAX = 2147483647, n.INT_MIN = -1 << 31, n.sign = function(t) {
                        return (t > 0) - (t < 0)
                    }, n.abs = function(t) {
                        var e = t >> 31;
                        return (t ^ e) - e
                    }, n.min = function(t, e) {
                        return e ^ (t ^ e) & -(t < e)
                    }, n.max = function(t, e) {
                        return t ^ (t ^ e) & -(t < e)
                    }, n.isPow2 = function(t) {
                        return !(t & t - 1 || !t)
                    }, n.log2 = function(t) {
                        var e, n;
                        return e = (t > 65535) << 4, t >>>= e, n = (t > 255) << 3, t >>>= n, e |= n, n = (t > 15) << 2, t >>>= n, e |= n, n = (t > 3) << 1, t >>>= n, (e |= n) | t >> 1
                    }, n.log10 = function(t) {
                        return t >= 1e9 ? 9 : t >= 1e8 ? 8 : t >= 1e7 ? 7 : t >= 1e6 ? 6 : t >= 1e5 ? 5 : t >= 1e4 ? 4 : t >= 1e3 ? 3 : t >= 100 ? 2 : t >= 10 ? 1 : 0
                    }, n.popCount = function(t) {
                        return t -= t >>> 1 & 1431655765, 16843009 * ((t = (858993459 & t) + (t >>> 2 & 858993459)) + (t >>> 4) & 252645135) >>> 24
                    }, n.countTrailingZeros = i, n.nextPow2 = function(t) {
                        return t += 0 === t, --t, t |= t >>> 1, t |= t >>> 2, t |= t >>> 4, t |= t >>> 8, (t |= t >>> 16) + 1
                    }, n.prevPow2 = function(t) {
                        return t |= t >>> 1, t |= t >>> 2, t |= t >>> 4, t |= t >>> 8, (t |= t >>> 16) - (t >>> 1)
                    }, n.parity = function(t) {
                        return t ^= t >>> 16, t ^= t >>> 8, t ^= t >>> 4, 27030 >>> (t &= 15) & 1
                    };
                    var r = new Array(256);
                    ! function(t) {
                        for (var e = 0; e < 256; ++e) {
                            var n = e,
                                i = e,
                                r = 7;
                            for (n >>>= 1; n; n >>>= 1) i <<= 1, i |= 1 & n, --r;
                            t[e] = i << r & 255
                        }
                    }(r), n.reverse = function(t) {
                        return r[255 & t] << 24 | r[t >>> 8 & 255] << 16 | r[t >>> 16 & 255] << 8 | r[t >>> 24 & 255]
                    }, n.interleave2 = function(t, e) {
                        return t &= 65535, t = 16711935 & (t | t << 8), t = 252645135 & (t | t << 4), t = 858993459 & (t | t << 2), t = 1431655765 & (t | t << 1), e &= 65535, e = 16711935 & (e | e << 8), e = 252645135 & (e | e << 4), e = 858993459 & (e | e << 2), e = 1431655765 & (e | e << 1), t | e << 1
                    }, n.deinterleave2 = function(t, e) {
                        return t = t >>> e & 1431655765, t = 858993459 & (t | t >>> 1), t = 252645135 & (t | t >>> 2), t = 16711935 & (t | t >>> 4), (t = 65535 & (t | t >>> 16)) << 16 >> 16
                    }, n.interleave3 = function(t, e, n) {
                        return t &= 1023, t = 4278190335 & (t | t << 16), t = 251719695 & (t | t << 8), t = 3272356035 & (t | t << 4), t = 1227133513 & (t | t << 2), e &= 1023, e = 4278190335 & (e | e << 16), e = 251719695 & (e | e << 8), e = 3272356035 & (e | e << 4), e = 1227133513 & (e | e << 2), t |= e << 1, n &= 1023, n = 4278190335 & (n | n << 16), n = 251719695 & (n | n << 8), n = 3272356035 & (n | n << 4), n = 1227133513 & (n | n << 2), t | n << 2
                    }, n.deinterleave3 = function(t, e) {
                        return t = t >>> e & 1227133513, t = 3272356035 & (t | t >>> 2), t = 251719695 & (t | t >>> 4), t = 4278190335 & (t | t >>> 8), (t = 1023 & (t | t >>> 16)) << 22 >> 22
                    }, n.nextCombination = function(t) {
                        var e = t | t - 1;
                        return e + 1 | (~e & -~e) - 1 >>> i(t) + 1
                    }
                }, {}],
                2: [function(t, e, n) {
                    "use strict";

                    function i(t, e, n) {
                        n = n || 2;
                        var i = e && e.length,
                            o = i ? e[0] * n : t.length,
                            s = r(t, 0, o, n, !0),
                            l = [];
                        if (!s) return l;
                        var u, c, p, f, d, m, g;
                        if (i && (s = h(t, e, s, n)), t.length > 80 * n) {
                            u = p = t[0], c = f = t[1];
                            for (var _ = n; _ < o; _ += n) d = t[_], m = t[_ + 1], d < u && (u = d), m < c && (c = m), d > p && (p = d), m > f && (f = m);
                            g = Math.max(p - u, f - c), g = 0 !== g ? 1 / g : 0
                        }
                        return a(s, l, n, u, c, g), l
                    }

                    function r(t, e, n, i, r) {
                        var o, a;
                        if (r === R(t, e, n, i) > 0)
                            for (o = e; o < n; o += i) a = E(o, t[o], t[o + 1], a);
                        else
                            for (o = n - i; o >= e; o -= i) a = E(o, t[o], t[o + 1], a);
                        return a && T(a, a.next) && (O(a), a = a.next), a
                    }

                    function o(t, e) {
                        if (!t) return t;
                        e || (e = t);
                        var n, i = t;
                        do {
                            if (n = !1, i.steiner || !T(i, i.next) && 0 !== x(i.prev, i, i.next)) i = i.next;
                            else {
                                if (O(i), (i = e = i.prev) === i.next) break;
                                n = !0
                            }
                        } while (n || i !== e);
                        return e
                    }

                    function a(t, e, n, i, r, h, p) {
                        if (t) {
                            !p && h && m(t, i, r, h);
                            for (var f, d, g = t; t.prev !== t.next;)
                                if (f = t.prev, d = t.next, h ? l(t, i, r, h) : s(t)) e.push(f.i / n), e.push(t.i / n), e.push(d.i / n), O(t), t = d.next, g = d.next;
                                else if ((t = d) === g) {
                                p ? 1 === p ? (t = u(t, e, n), a(t, e, n, i, r, h, 2)) : 2 === p && c(t, e, n, i, r, h) : a(o(t), e, n, i, r, h, 1);
                                break
                            }
                        }
                    }

                    function s(t) {
                        var e = t.prev,
                            n = t,
                            i = t.next;
                        if (x(e, n, i) >= 0) return !1;
                        for (var r = t.next.next; r !== t.prev;) {
                            if (v(e.x, e.y, n.x, n.y, i.x, i.y, r.x, r.y) && x(r.prev, r, r.next) >= 0) return !1;
                            r = r.next
                        }
                        return !0
                    }

                    function l(t, e, n, i) {
                        var r = t.prev,
                            o = t,
                            a = t.next;
                        if (x(r, o, a) >= 0) return !1;
                        for (var s = r.x < o.x ? r.x < a.x ? r.x : a.x : o.x < a.x ? o.x : a.x, l = r.y < o.y ? r.y < a.y ? r.y : a.y : o.y < a.y ? o.y : a.y, u = r.x > o.x ? r.x > a.x ? r.x : a.x : o.x > a.x ? o.x : a.x, c = r.y > o.y ? r.y > a.y ? r.y : a.y : o.y > a.y ? o.y : a.y, h = _(s, l, e, n, i), p = _(u, c, e, n, i), f = t.prevZ, d = t.nextZ; f && f.z >= h && d && d.z <= p;) {
                            if (f !== t.prev && f !== t.next && v(r.x, r.y, o.x, o.y, a.x, a.y, f.x, f.y) && x(f.prev, f, f.next) >= 0) return !1;
                            if (f = f.prevZ, d !== t.prev && d !== t.next && v(r.x, r.y, o.x, o.y, a.x, a.y, d.x, d.y) && x(d.prev, d, d.next) >= 0) return !1;
                            d = d.nextZ
                        }
                        for (; f && f.z >= h;) {
                            if (f !== t.prev && f !== t.next && v(r.x, r.y, o.x, o.y, a.x, a.y, f.x, f.y) && x(f.prev, f, f.next) >= 0) return !1;
                            f = f.prevZ
                        }
                        for (; d && d.z <= p;) {
                            if (d !== t.prev && d !== t.next && v(r.x, r.y, o.x, o.y, a.x, a.y, d.x, d.y) && x(d.prev, d, d.next) >= 0) return !1;
                            d = d.nextZ
                        }
                        return !0
                    }

                    function u(t, e, n) {
                        var i = t;
                        do {
                            var r = i.prev,
                                o = i.next.next;
                            !T(r, o) && w(r, i, i.next, o) && P(r, o) && P(o, r) && (e.push(r.i / n), e.push(i.i / n), e.push(o.i / n), O(i), O(i.next), i = t = o), i = i.next
                        } while (i !== t);
                        return i
                    }

                    function c(t, e, n, i, r, s) {
                        var l = t;
                        do {
                            for (var u = l.next.next; u !== l.prev;) {
                                if (l.i !== u.i && b(l, u)) {
                                    var c = C(l, u);
                                    return l = o(l, l.next), c = o(c, c.next), a(l, e, n, i, r, s), void a(c, e, n, i, r, s)
                                }
                                u = u.next
                            }
                            l = l.next
                        } while (l !== t)
                    }

                    function h(t, e, n, i) {
                        var a, s, l, u, c, h = [];
                        for (a = 0, s = e.length; a < s; a++) l = e[a] * i, u = a < s - 1 ? e[a + 1] * i : t.length, c = r(t, l, u, i, !1), c === c.next && (c.steiner = !0), h.push(y(c));
                        for (h.sort(p), a = 0; a < h.length; a++) f(h[a], n), n = o(n, n.next);
                        return n
                    }

                    function p(t, e) {
                        return t.x - e.x
                    }

                    function f(t, e) {
                        if (e = d(t, e)) {
                            var n = C(e, t);
                            o(n, n.next)
                        }
                    }

                    function d(t, e) {
                        var n, i = e,
                            r = t.x,
                            o = t.y,
                            a = -1 / 0;
                        do {
                            if (o <= i.y && o >= i.next.y && i.next.y !== i.y) {
                                var s = i.x + (o - i.y) * (i.next.x - i.x) / (i.next.y - i.y);
                                if (s <= r && s > a) {
                                    if (a = s, s === r) {
                                        if (o === i.y) return i;
                                        if (o === i.next.y) return i.next
                                    }
                                    n = i.x < i.next.x ? i : i.next
                                }
                            }
                            i = i.next
                        } while (i !== e);
                        if (!n) return null;
                        if (r === a) return n.prev;
                        var l, u = n,
                            c = n.x,
                            h = n.y,
                            p = 1 / 0;
                        for (i = n.next; i !== u;) r >= i.x && i.x >= c && r !== i.x && v(o < h ? r : a, o, c, h, o < h ? a : r, o, i.x, i.y) && ((l = Math.abs(o - i.y) / (r - i.x)) < p || l === p && i.x > n.x) && P(i, t) && (n = i, p = l), i = i.next;
                        return n
                    }

                    function m(t, e, n, i) {
                        var r = t;
                        do {
                            null === r.z && (r.z = _(r.x, r.y, e, n, i)), r.prevZ = r.prev, r.nextZ = r.next, r = r.next
                        } while (r !== t);
                        r.prevZ.nextZ = null, r.prevZ = null, g(r)
                    }

                    function g(t) {
                        var e, n, i, r, o, a, s, l, u = 1;
                        do {
                            for (n = t, t = null, o = null, a = 0; n;) {
                                for (a++, i = n, s = 0, e = 0; e < u && (s++, i = i.nextZ); e++);
                                for (l = u; s > 0 || l > 0 && i;) 0 !== s && (0 === l || !i || n.z <= i.z) ? (r = n, n = n.nextZ, s--) : (r = i, i = i.nextZ, l--), o ? o.nextZ = r : t = r, r.prevZ = o, o = r;
                                n = i
                            }
                            o.nextZ = null, u *= 2
                        } while (a > 1);
                        return t
                    }

                    function _(t, e, n, i, r) {
                        return t = 32767 * (t - n) * r, e = 32767 * (e - i) * r, t = 16711935 & (t | t << 8), t = 252645135 & (t | t << 4), t = 858993459 & (t | t << 2), t = 1431655765 & (t | t << 1), e = 16711935 & (e | e << 8), e = 252645135 & (e | e << 4), e = 858993459 & (e | e << 2), e = 1431655765 & (e | e << 1), t | e << 1
                    }

                    function y(t) {
                        var e = t,
                            n = t;
                        do {
                            e.x < n.x && (n = e), e = e.next
                        } while (e !== t);
                        return n
                    }

                    function v(t, e, n, i, r, o, a, s) {
                        return (r - a) * (e - s) - (t - a) * (o - s) >= 0 && (t - a) * (i - s) - (n - a) * (e - s) >= 0 && (n - a) * (o - s) - (r - a) * (i - s) >= 0
                    }

                    function b(t, e) {
                        return t.next.i !== e.i && t.prev.i !== e.i && !S(t, e) && P(t, e) && P(e, t) && M(t, e)
                    }

                    function x(t, e, n) {
                        return (e.y - t.y) * (n.x - e.x) - (e.x - t.x) * (n.y - e.y)
                    }

                    function T(t, e) {
                        return t.x === e.x && t.y === e.y
                    }

                    function w(t, e, n, i) {
                        return !!(T(t, e) && T(n, i) || T(t, i) && T(n, e)) || x(t, e, n) > 0 != x(t, e, i) > 0 && x(n, i, t) > 0 != x(n, i, e) > 0
                    }

                    function S(t, e) {
                        var n = t;
                        do {
                            if (n.i !== t.i && n.next.i !== t.i && n.i !== e.i && n.next.i !== e.i && w(n, n.next, t, e)) return !0;
                            n = n.next
                        } while (n !== t);
                        return !1
                    }

                    function P(t, e) {
                        return x(t.prev, t, t.next) < 0 ? x(t, e, t.next) >= 0 && x(t, t.prev, e) >= 0 : x(t, e, t.prev) < 0 || x(t, t.next, e) < 0
                    }

                    function M(t, e) {
                        var n = t,
                            i = !1,
                            r = (t.x + e.x) / 2,
                            o = (t.y + e.y) / 2;
                        do {
                            n.y > o != n.next.y > o && n.next.y !== n.y && r < (n.next.x - n.x) * (o - n.y) / (n.next.y - n.y) + n.x && (i = !i), n = n.next
                        } while (n !== t);
                        return i
                    }

                    function C(t, e) {
                        var n = new I(t.i, t.x, t.y),
                            i = new I(e.i, e.x, e.y),
                            r = t.next,
                            o = e.prev;
                        return t.next = e, e.prev = t, n.next = r, r.prev = n, i.next = n, n.prev = i, o.next = i, i.prev = o, i
                    }

                    function E(t, e, n, i) {
                        var r = new I(t, e, n);
                        return i ? (r.next = i.next, r.prev = i, i.next.prev = r, i.next = r) : (r.prev = r, r.next = r), r
                    }

                    function O(t) {
                        t.next.prev = t.prev, t.prev.next = t.next, t.prevZ && (t.prevZ.nextZ = t.nextZ), t.nextZ && (t.nextZ.prevZ = t.prevZ)
                    }

                    function I(t, e, n) {
                        this.i = t, this.x = e, this.y = n, this.prev = null, this.next = null, this.z = null, this.prevZ = null, this.nextZ = null, this.steiner = !1
                    }

                    function R(t, e, n, i) {
                        for (var r = 0, o = e, a = n - i; o < n; o += i) r += (t[a] - t[o]) * (t[o + 1] + t[a + 1]), a = o;
                        return r
                    }
                    e.exports = i, e.exports.default = i, i.deviation = function(t, e, n, i) {
                        var r = e && e.length,
                            o = r ? e[0] * n : t.length,
                            a = Math.abs(R(t, 0, o, n));
                        if (r)
                            for (var s = 0, l = e.length; s < l; s++) {
                                var u = e[s] * n,
                                    c = s < l - 1 ? e[s + 1] * n : t.length;
                                a -= Math.abs(R(t, u, c, n))
                            }
                        var h = 0;
                        for (s = 0; s < i.length; s += 3) {
                            var p = i[s] * n,
                                f = i[s + 1] * n,
                                d = i[s + 2] * n;
                            h += Math.abs((t[p] - t[d]) * (t[f + 1] - t[p + 1]) - (t[p] - t[f]) * (t[d + 1] - t[p + 1]))
                        }
                        return 0 === a && 0 === h ? 0 : Math.abs((h - a) / a)
                    }, i.flatten = function(t) {
                        for (var e = t[0][0].length, n = {
                                vertices: [],
                                holes: [],
                                dimensions: e
                            }, i = 0, r = 0; r < t.length; r++) {
                            for (var o = 0; o < t[r].length; o++)
                                for (var a = 0; a < e; a++) n.vertices.push(t[r][o][a]);
                            r > 0 && (i += t[r - 1].length, n.holes.push(i))
                        }
                        return n
                    }
                }, {}],
                3: [function(t, e, n) {
                    "use strict";

                    function i() {}

                    function r(t, e, n) {
                        this.fn = t, this.context = e, this.once = n || !1
                    }

                    function o() {
                        this._events = new i, this._eventsCount = 0
                    }
                    var a = Object.prototype.hasOwnProperty,
                        s = "~";
                    Object.create && (i.prototype = Object.create(null), (new i).__proto__ || (s = !1)), o.prototype.eventNames = function() {
                        var t, e, n = [];
                        if (0 === this._eventsCount) return n;
                        for (e in t = this._events) a.call(t, e) && n.push(s ? e.slice(1) : e);
                        return Object.getOwnPropertySymbols ? n.concat(Object.getOwnPropertySymbols(t)) : n
                    }, o.prototype.listeners = function(t, e) {
                        var n = s ? s + t : t,
                            i = this._events[n];
                        if (e) return !!i;
                        if (!i) return [];
                        if (i.fn) return [i.fn];
                        for (var r = 0, o = i.length, a = new Array(o); r < o; r++) a[r] = i[r].fn;
                        return a
                    }, o.prototype.emit = function(t, e, n, i, r, o) {
                        var a = s ? s + t : t;
                        if (!this._events[a]) return !1;
                        var l, u, c = this._events[a],
                            h = arguments.length;
                        if (c.fn) {
                            switch (c.once && this.removeListener(t, c.fn, void 0, !0), h) {
                                case 1:
                                    return c.fn.call(c.context), !0;
                                case 2:
                                    return c.fn.call(c.context, e), !0;
                                case 3:
                                    return c.fn.call(c.context, e, n), !0;
                                case 4:
                                    return c.fn.call(c.context, e, n, i), !0;
                                case 5:
                                    return c.fn.call(c.context, e, n, i, r), !0;
                                case 6:
                                    return c.fn.call(c.context, e, n, i, r, o), !0
                            }
                            for (u = 1, l = new Array(h - 1); u < h; u++) l[u - 1] = arguments[u];
                            c.fn.apply(c.context, l)
                        } else {
                            var p, f = c.length;
                            for (u = 0; u < f; u++) switch (c[u].once && this.removeListener(t, c[u].fn, void 0, !0), h) {
                                case 1:
                                    c[u].fn.call(c[u].context);
                                    break;
                                case 2:
                                    c[u].fn.call(c[u].context, e);
                                    break;
                                case 3:
                                    c[u].fn.call(c[u].context, e, n);
                                    break;
                                case 4:
                                    c[u].fn.call(c[u].context, e, n, i);
                                    break;
                                default:
                                    if (!l)
                                        for (p = 1, l = new Array(h - 1); p < h; p++) l[p - 1] = arguments[p];
                                    c[u].fn.apply(c[u].context, l)
                            }
                        }
                        return !0
                    }, o.prototype.on = function(t, e, n) {
                        var i = new r(e, n || this),
                            o = s ? s + t : t;
                        return this._events[o] ? this._events[o].fn ? this._events[o] = [this._events[o], i] : this._events[o].push(i) : (this._events[o] = i, this._eventsCount++), this
                    }, o.prototype.once = function(t, e, n) {
                        var i = new r(e, n || this, !0),
                            o = s ? s + t : t;
                        return this._events[o] ? this._events[o].fn ? this._events[o] = [this._events[o], i] : this._events[o].push(i) : (this._events[o] = i, this._eventsCount++), this
                    }, o.prototype.removeListener = function(t, e, n, r) {
                        var o = s ? s + t : t;
                        if (!this._events[o]) return this;
                        if (!e) return 0 == --this._eventsCount ? this._events = new i : delete this._events[o], this;
                        var a = this._events[o];
                        if (a.fn) a.fn !== e || r && !a.once || n && a.context !== n || (0 == --this._eventsCount ? this._events = new i : delete this._events[o]);
                        else {
                            for (var l = 0, u = [], c = a.length; l < c; l++)(a[l].fn !== e || r && !a[l].once || n && a[l].context !== n) && u.push(a[l]);
                            u.length ? this._events[o] = 1 === u.length ? u[0] : u : 0 == --this._eventsCount ? this._events = new i : delete this._events[o]
                        }
                        return this
                    }, o.prototype.removeAllListeners = function(t) {
                        var e;
                        return t ? (e = s ? s + t : t, this._events[e] && (0 == --this._eventsCount ? this._events = new i : delete this._events[e])) : (this._events = new i, this._eventsCount = 0), this
                    }, o.prototype.off = o.prototype.removeListener, o.prototype.addListener = o.prototype.on, o.prototype.setMaxListeners = function() {
                        return this
                    }, o.prefixed = s, o.EventEmitter = o, void 0 !== e && (e.exports = o)
                }, {}],
                4: [function(e, n, i) {
                    ! function(e) {
                        var i = /iPhone/i,
                            r = /iPod/i,
                            o = /iPad/i,
                            a = /(?=.*\bAndroid\b)(?=.*\bMobile\b)/i,
                            s = /Android/i,
                            l = /(?=.*\bAndroid\b)(?=.*\bSD4930UR\b)/i,
                            u = /(?=.*\bAndroid\b)(?=.*\b(?:KFOT|KFTT|KFJWI|KFJWA|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|KFARWI|KFASWI|KFSAWI|KFSAWA)\b)/i,
                            c = /Windows Phone/i,
                            h = /(?=.*\bWindows\b)(?=.*\bARM\b)/i,
                            p = /BlackBerry/i,
                            f = /BB10/i,
                            d = /Opera Mini/i,
                            m = /(CriOS|Chrome)(?=.*\bMobile\b)/i,
                            g = /(?=.*\bFirefox\b)(?=.*\bMobile\b)/i,
                            _ = new RegExp("(?:Nexus 7|BNTV250|Kindle Fire|Silk|GT-P1000)", "i"),
                            y = function(t, e) {
                                return t.test(e)
                            },
                            v = function(t) {
                                var e = t || navigator.userAgent,
                                    n = e.split("[FBAN");
                                if (void 0 !== n[1] && (e = n[0]), n = e.split("Twitter"), void 0 !== n[1] && (e = n[0]), this.apple = {
                                        phone: y(i, e),
                                        ipod: y(r, e),
                                        tablet: !y(i, e) && y(o, e),
                                        device: y(i, e) || y(r, e) || y(o, e)
                                    }, this.amazon = {
                                        phone: y(l, e),
                                        tablet: !y(l, e) && y(u, e),
                                        device: y(l, e) || y(u, e)
                                    }, this.android = {
                                        phone: y(l, e) || y(a, e),
                                        tablet: !y(l, e) && !y(a, e) && (y(u, e) || y(s, e)),
                                        device: y(l, e) || y(u, e) || y(a, e) || y(s, e)
                                    }, this.windows = {
                                        phone: y(c, e),
                                        tablet: y(h, e),
                                        device: y(c, e) || y(h, e)
                                    }, this.other = {
                                        blackberry: y(p, e),
                                        blackberry10: y(f, e),
                                        opera: y(d, e),
                                        firefox: y(g, e),
                                        chrome: y(m, e),
                                        device: y(p, e) || y(f, e) || y(d, e) || y(g, e) || y(m, e)
                                    }, this.seven_inch = y(_, e), this.any = this.apple.device || this.android.device || this.windows.device || this.other.device || this.seven_inch, this.phone = this.apple.phone || this.android.phone || this.windows.phone, this.tablet = this.apple.tablet || this.android.tablet || this.windows.tablet, "undefined" == typeof window) return this
                            },
                            b = function() {
                                var t = new v;
                                return t.Class = v, t
                            };
                        void 0 !== n && n.exports && "undefined" == typeof window ? n.exports = v : void 0 !== n && n.exports && "undefined" != typeof window ? n.exports = b() : "function" == typeof t && t.amd ? t("isMobile", [], e.isMobile = b()) : e.isMobile = b()
                    }(this)
                }, {}],
                5: [function(t, e, n) {
                    function i(t) {
                        if (null === t || void 0 === t) throw new TypeError("Object.assign cannot be called with null or undefined");
                        return Object(t)
                    }
                    var r = Object.getOwnPropertySymbols,
                        o = Object.prototype.hasOwnProperty,
                        a = Object.prototype.propertyIsEnumerable;
                    e.exports = function() {
                        try {
                            if (!Object.assign) return !1;
                            var t = new String("abc");
                            if (t[5] = "de", "5" === Object.getOwnPropertyNames(t)[0]) return !1;
                            for (var e = {}, n = 0; n < 10; n++) e["_" + String.fromCharCode(n)] = n;
                            if ("0123456789" !== Object.getOwnPropertyNames(e).map(function(t) {
                                    return e[t]
                                }).join("")) return !1;
                            var i = {};
                            return "abcdefghijklmnopqrst".split("").forEach(function(t) {
                                i[t] = t
                            }), "abcdefghijklmnopqrst" === Object.keys(Object.assign({}, i)).join("")
                        } catch (t) {
                            return !1
                        }
                    }() ? Object.assign : function(t, e) {
                        for (var n, s, l = i(t), u = 1; u < arguments.length; u++) {
                            n = Object(arguments[u]);
                            for (var c in n) o.call(n, c) && (l[c] = n[c]);
                            if (r) {
                                s = r(n);
                                for (var h = 0; h < s.length; h++) a.call(n, s[h]) && (l[s[h]] = n[s[h]])
                            }
                        }
                        return l
                    }
                }, {}],
                6: [function(t, e, n) {
                    var i = new ArrayBuffer(0),
                        r = function(t, e, n, r) {
                            this.gl = t, this.buffer = t.createBuffer(), this.type = e || t.ARRAY_BUFFER, this.drawType = r || t.STATIC_DRAW, this.data = i, n && this.upload(n), this._updateID = 0
                        };
                    r.prototype.upload = function(t, e, n) {
                        n || this.bind();
                        var i = this.gl;
                        t = t || this.data, e = e || 0, this.data.byteLength >= t.byteLength ? i.bufferSubData(this.type, e, t) : i.bufferData(this.type, t, this.drawType), this.data = t
                    }, r.prototype.bind = function() {
                        this.gl.bindBuffer(this.type, this.buffer)
                    }, r.createVertexBuffer = function(t, e, n) {
                        return new r(t, t.ARRAY_BUFFER, e, n)
                    }, r.createIndexBuffer = function(t, e, n) {
                        return new r(t, t.ELEMENT_ARRAY_BUFFER, e, n)
                    }, r.create = function(t, e, n, i) {
                        return new r(t, e, n, i)
                    }, r.prototype.destroy = function() {
                        this.gl.deleteBuffer(this.buffer)
                    }, e.exports = r
                }, {}],
                7: [function(t, e, n) {
                    var i = t("./GLTexture"),
                        r = function(t, e, n) {
                            this.gl = t, this.framebuffer = t.createFramebuffer(), this.stencil = null, this.texture = null, this.width = e || 100, this.height = n || 100
                        };
                    r.prototype.enableTexture = function(t) {
                        var e = this.gl;
                        this.texture = t || new i(e), this.texture.bind(), this.bind(), e.framebufferTexture2D(e.FRAMEBUFFER, e.COLOR_ATTACHMENT0, e.TEXTURE_2D, this.texture.texture, 0)
                    }, r.prototype.enableStencil = function() {
                        if (!this.stencil) {
                            var t = this.gl;
                            this.stencil = t.createRenderbuffer(), t.bindRenderbuffer(t.RENDERBUFFER, this.stencil), t.framebufferRenderbuffer(t.FRAMEBUFFER, t.DEPTH_STENCIL_ATTACHMENT, t.RENDERBUFFER, this.stencil), t.renderbufferStorage(t.RENDERBUFFER, t.DEPTH_STENCIL, this.width, this.height)
                        }
                    }, r.prototype.clear = function(t, e, n, i) {
                        this.bind();
                        var r = this.gl;
                        r.clearColor(t, e, n, i), r.clear(r.COLOR_BUFFER_BIT | r.DEPTH_BUFFER_BIT)
                    }, r.prototype.bind = function() {
                        var t = this.gl;
                        t.bindFramebuffer(t.FRAMEBUFFER, this.framebuffer)
                    }, r.prototype.unbind = function() {
                        var t = this.gl;
                        t.bindFramebuffer(t.FRAMEBUFFER, null)
                    }, r.prototype.resize = function(t, e) {
                        var n = this.gl;
                        this.width = t, this.height = e, this.texture && this.texture.uploadData(null, t, e), this.stencil && (n.bindRenderbuffer(n.RENDERBUFFER, this.stencil), n.renderbufferStorage(n.RENDERBUFFER, n.DEPTH_STENCIL, t, e))
                    }, r.prototype.destroy = function() {
                        var t = this.gl;
                        this.texture && this.texture.destroy(), t.deleteFramebuffer(this.framebuffer), this.gl = null, this.stencil = null, this.texture = null
                    }, r.createRGBA = function(t, e, n, o) {
                        var a = i.fromData(t, null, e, n);
                        a.enableNearestScaling(), a.enableWrapClamp();
                        var s = new r(t, e, n);
                        return s.enableTexture(a), s.unbind(), s
                    }, r.createFloat32 = function(t, e, n, o) {
                        var a = new i.fromData(t, o, e, n);
                        a.enableNearestScaling(), a.enableWrapClamp();
                        var s = new r(t, e, n);
                        return s.enableTexture(a), s.unbind(), s
                    }, e.exports = r
                }, {
                    "./GLTexture": 9
                }],
                8: [function(t, e, n) {
                    var i = t("./shader/compileProgram"),
                        r = t("./shader/extractAttributes"),
                        o = t("./shader/extractUniforms"),
                        a = t("./shader/setPrecision"),
                        s = t("./shader/generateUniformAccessObject"),
                        l = function(t, e, n, l, u) {
                            this.gl = t, l && (e = a(e, l), n = a(n, l)), this.program = i(t, e, n, u), this.attributes = r(t, this.program), this.uniformData = o(t, this.program), this.uniforms = s(t, this.uniformData)
                        };
                    l.prototype.bind = function() {
                        return this.gl.useProgram(this.program), this
                    }, l.prototype.destroy = function() {
                        this.attributes = null, this.uniformData = null, this.uniforms = null, this.gl.deleteProgram(this.program)
                    }, e.exports = l
                }, {
                    "./shader/compileProgram": 14,
                    "./shader/extractAttributes": 16,
                    "./shader/extractUniforms": 17,
                    "./shader/generateUniformAccessObject": 18,
                    "./shader/setPrecision": 22
                }],
                9: [function(t, e, n) {
                    var i = function(t, e, n, i, r) {
                        this.gl = t, this.texture = t.createTexture(), this.mipmap = !1, this.premultiplyAlpha = !1, this.width = e || -1, this.height = n || -1, this.format = i || t.RGBA, this.type = r || t.UNSIGNED_BYTE
                    };
                    i.prototype.upload = function(t) {
                        this.bind();
                        var e = this.gl;
                        e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.premultiplyAlpha);
                        var n = t.videoWidth || t.width,
                            i = t.videoHeight || t.height;
                        i !== this.height || n !== this.width ? e.texImage2D(e.TEXTURE_2D, 0, this.format, this.format, this.type, t) : e.texSubImage2D(e.TEXTURE_2D, 0, 0, 0, this.format, this.type, t), this.width = n, this.height = i
                    };
                    var r = !1;
                    i.prototype.uploadData = function(t, e, n) {
                        this.bind();
                        var i = this.gl;
                        if (t instanceof Float32Array) {
                            if (!r) {
                                if (!i.getExtension("OES_texture_float")) throw new Error("floating point textures not available");
                                r = !0
                            }
                            this.type = i.FLOAT
                        } else this.type = this.type || i.UNSIGNED_BYTE;
                        i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.premultiplyAlpha), e !== this.width || n !== this.height ? i.texImage2D(i.TEXTURE_2D, 0, this.format, e, n, 0, this.format, this.type, t || null) : i.texSubImage2D(i.TEXTURE_2D, 0, 0, 0, e, n, this.format, this.type, t || null), this.width = e, this.height = n
                    }, i.prototype.bind = function(t) {
                        var e = this.gl;
                        void 0 !== t && e.activeTexture(e.TEXTURE0 + t), e.bindTexture(e.TEXTURE_2D, this.texture)
                    }, i.prototype.unbind = function() {
                        var t = this.gl;
                        t.bindTexture(t.TEXTURE_2D, null)
                    }, i.prototype.minFilter = function(t) {
                        var e = this.gl;
                        this.bind(), this.mipmap ? e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, t ? e.LINEAR_MIPMAP_LINEAR : e.NEAREST_MIPMAP_NEAREST) : e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, t ? e.LINEAR : e.NEAREST)
                    }, i.prototype.magFilter = function(t) {
                        var e = this.gl;
                        this.bind(), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MAG_FILTER, t ? e.LINEAR : e.NEAREST)
                    }, i.prototype.enableMipmap = function() {
                        var t = this.gl;
                        this.bind(), this.mipmap = !0, t.generateMipmap(t.TEXTURE_2D)
                    }, i.prototype.enableLinearScaling = function() {
                        this.minFilter(!0), this.magFilter(!0)
                    }, i.prototype.enableNearestScaling = function() {
                        this.minFilter(!1), this.magFilter(!1)
                    }, i.prototype.enableWrapClamp = function() {
                        var t = this.gl;
                        this.bind(), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_S, t.CLAMP_TO_EDGE), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_T, t.CLAMP_TO_EDGE)
                    }, i.prototype.enableWrapRepeat = function() {
                        var t = this.gl;
                        this.bind(), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_S, t.REPEAT), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_T, t.REPEAT)
                    }, i.prototype.enableWrapMirrorRepeat = function() {
                        var t = this.gl;
                        this.bind(), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_S, t.MIRRORED_REPEAT), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_T, t.MIRRORED_REPEAT)
                    }, i.prototype.destroy = function() {
                        this.gl.deleteTexture(this.texture)
                    }, i.fromSource = function(t, e, n) {
                        var r = new i(t);
                        return r.premultiplyAlpha = n || !1, r.upload(e), r
                    }, i.fromData = function(t, e, n, r) {
                        var o = new i(t);
                        return o.uploadData(e, n, r), o
                    }, e.exports = i
                }, {}],
                10: [function(t, e, n) {
                    function i(t, e) {
                        if (this.nativeVaoExtension = null, i.FORCE_NATIVE || (this.nativeVaoExtension = t.getExtension("OES_vertex_array_object") || t.getExtension("MOZ_OES_vertex_array_object") || t.getExtension("WEBKIT_OES_vertex_array_object")), this.nativeState = e, this.nativeVaoExtension) {
                            this.nativeVao = this.nativeVaoExtension.createVertexArrayOES();
                            var n = t.getParameter(t.MAX_VERTEX_ATTRIBS);
                            this.nativeState = {
                                tempAttribState: new Array(n),
                                attribState: new Array(n)
                            }
                        }
                        this.gl = t, this.attributes = [], this.indexBuffer = null, this.dirty = !1
                    }
                    var r = t("./setVertexAttribArrays");
                    i.prototype.constructor = i, e.exports = i, i.FORCE_NATIVE = !1, i.prototype.bind = function() {
                        if (this.nativeVao) {
                            if (this.nativeVaoExtension.bindVertexArrayOES(this.nativeVao), this.dirty) return this.dirty = !1, this.activate(), this;
                            this.indexBuffer && this.indexBuffer.bind()
                        } else this.activate();
                        return this
                    }, i.prototype.unbind = function() {
                        return this.nativeVao && this.nativeVaoExtension.bindVertexArrayOES(null), this
                    }, i.prototype.activate = function() {
                        for (var t = this.gl, e = null, n = 0; n < this.attributes.length; n++) {
                            var i = this.attributes[n];
                            e !== i.buffer && (i.buffer.bind(), e = i.buffer), t.vertexAttribPointer(i.attribute.location, i.attribute.size, i.type || t.FLOAT, i.normalized || !1, i.stride || 0, i.start || 0)
                        }
                        return r(t, this.attributes, this.nativeState), this.indexBuffer && this.indexBuffer.bind(), this
                    }, i.prototype.addAttribute = function(t, e, n, i, r, o) {
                        return this.attributes.push({
                            buffer: t,
                            attribute: e,
                            location: e.location,
                            type: n || this.gl.FLOAT,
                            normalized: i || !1,
                            stride: r || 0,
                            start: o || 0
                        }), this.dirty = !0, this
                    }, i.prototype.addIndex = function(t) {
                        return this.indexBuffer = t, this.dirty = !0, this
                    }, i.prototype.clear = function() {
                        return this.nativeVao && this.nativeVaoExtension.bindVertexArrayOES(this.nativeVao), this.attributes.length = 0, this.indexBuffer = null, this
                    }, i.prototype.draw = function(t, e, n) {
                        var i = this.gl;
                        return this.indexBuffer ? i.drawElements(t, e || this.indexBuffer.data.length, i.UNSIGNED_SHORT, 2 * (n || 0)) : i.drawArrays(t, n, e || this.getSize()), this
                    }, i.prototype.destroy = function() {
                        this.gl = null, this.indexBuffer = null, this.attributes = null, this.nativeState = null, this.nativeVao && this.nativeVaoExtension.deleteVertexArrayOES(this.nativeVao), this.nativeVaoExtension = null, this.nativeVao = null
                    }, i.prototype.getSize = function() {
                        var t = this.attributes[0];
                        return t.buffer.data.length / (t.stride / 4 || t.attribute.size)
                    }
                }, {
                    "./setVertexAttribArrays": 13
                }],
                11: [function(t, e, n) {
                    var i = function(t, e) {
                        var n = t.getContext("webgl", e) || t.getContext("experimental-webgl", e);
                        if (!n) throw new Error("This browser does not support webGL. Try using the canvas renderer");
                        return n
                    };
                    e.exports = i
                }, {}],
                12: [function(t, e, n) {
                    var i = {
                        createContext: t("./createContext"),
                        setVertexAttribArrays: t("./setVertexAttribArrays"),
                        GLBuffer: t("./GLBuffer"),
                        GLFramebuffer: t("./GLFramebuffer"),
                        GLShader: t("./GLShader"),
                        GLTexture: t("./GLTexture"),
                        VertexArrayObject: t("./VertexArrayObject"),
                        shader: t("./shader")
                    };
                    void 0 !== e && e.exports && (e.exports = i), "undefined" != typeof window && (window.PIXI = window.PIXI || {}, window.PIXI.glCore = i)
                }, {
                    "./GLBuffer": 6,
                    "./GLFramebuffer": 7,
                    "./GLShader": 8,
                    "./GLTexture": 9,
                    "./VertexArrayObject": 10,
                    "./createContext": 11,
                    "./setVertexAttribArrays": 13,
                    "./shader": 19
                }],
                13: [function(t, e, n) {
                    var i = function(t, e, n) {
                        var i;
                        if (n) {
                            var r = n.tempAttribState,
                                o = n.attribState;
                            for (i = 0; i < r.length; i++) r[i] = !1;
                            for (i = 0; i < e.length; i++) r[e[i].attribute.location] = !0;
                            for (i = 0; i < o.length; i++) o[i] !== r[i] && (o[i] = r[i], n.attribState[i] ? t.enableVertexAttribArray(i) : t.disableVertexAttribArray(i))
                        } else
                            for (i = 0; i < e.length; i++) {
                                var a = e[i];
                                t.enableVertexAttribArray(a.attribute.location)
                            }
                    };
                    e.exports = i
                }, {}],
                14: [function(t, e, n) {
                    var i = function(t, e, n, i) {
                            var o = r(t, t.VERTEX_SHADER, e),
                                a = r(t, t.FRAGMENT_SHADER, n),
                                s = t.createProgram();
                            if (t.attachShader(s, o), t.attachShader(s, a), i)
                                for (var l in i) t.bindAttribLocation(s, i[l], l);
                            return t.linkProgram(s), t.getProgramParameter(s, t.LINK_STATUS) || (t.getProgramInfoLog(s), t.deleteProgram(s), s = null), t.deleteShader(o), t.deleteShader(a), s
                        },
                        r = function(t, e, n) {
                            var i = t.createShader(e);
                            return t.shaderSource(i, n), t.compileShader(i), t.getShaderParameter(i, t.COMPILE_STATUS) ? i : null
                        };
                    e.exports = i
                }, {}],
                15: [function(t, e, n) {
                    var i = function(t, e) {
                            switch (t) {
                                case "float":
                                    return 0;
                                case "vec2":
                                    return new Float32Array(2 * e);
                                case "vec3":
                                    return new Float32Array(3 * e);
                                case "vec4":
                                    return new Float32Array(4 * e);
                                case "int":
                                case "sampler2D":
                                    return 0;
                                case "ivec2":
                                    return new Int32Array(2 * e);
                                case "ivec3":
                                    return new Int32Array(3 * e);
                                case "ivec4":
                                    return new Int32Array(4 * e);
                                case "bool":
                                    return !1;
                                case "bvec2":
                                    return r(2 * e);
                                case "bvec3":
                                    return r(3 * e);
                                case "bvec4":
                                    return r(4 * e);
                                case "mat2":
                                    return new Float32Array([1, 0, 0, 1]);
                                case "mat3":
                                    return new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);
                                case "mat4":
                                    return new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])
                            }
                        },
                        r = function(t) {
                            for (var e = new Array(t), n = 0; n < e.length; n++) e[n] = !1;
                            return e
                        };
                    e.exports = i
                }, {}],
                16: [function(t, e, n) {
                    var i = t("./mapType"),
                        r = t("./mapSize"),
                        o = function(t, e) {
                            for (var n = {}, o = t.getProgramParameter(e, t.ACTIVE_ATTRIBUTES), s = 0; s < o; s++) {
                                var l = t.getActiveAttrib(e, s),
                                    u = i(t, l.type);
                                n[l.name] = {
                                    type: u,
                                    size: r(u),
                                    location: t.getAttribLocation(e, l.name),
                                    pointer: a
                                }
                            }
                            return n
                        },
                        a = function(t, e, n, i) {
                            gl.vertexAttribPointer(this.location, this.size, t || gl.FLOAT, e || !1, n || 0, i || 0)
                        };
                    e.exports = o
                }, {
                    "./mapSize": 20,
                    "./mapType": 21
                }],
                17: [function(t, e, n) {
                    var i = t("./mapType"),
                        r = t("./defaultValue"),
                        o = function(t, e) {
                            for (var n = {}, o = t.getProgramParameter(e, t.ACTIVE_UNIFORMS), a = 0; a < o; a++) {
                                var s = t.getActiveUniform(e, a),
                                    l = s.name.replace(/\[.*?\]/, ""),
                                    u = i(t, s.type);
                                n[l] = {
                                    type: u,
                                    size: s.size,
                                    location: t.getUniformLocation(e, l),
                                    value: r(u, s.size)
                                }
                            }
                            return n
                        };
                    e.exports = o
                }, {
                    "./defaultValue": 15,
                    "./mapType": 21
                }],
                18: [function(t, e, n) {
                    function i(t, e) {
                        return function(n) {
                            this.data[t].value = n;
                            var i = this.data[t].location;
                            1 === e.size ? s[e.type](this.gl, i, n) : l[e.type](this.gl, i, n)
                        }
                    }

                    function r(t, e) {
                        for (var n = e, i = 0; i < t.length - 1; i++) {
                            var r = n[t[i]] || {
                                data: {}
                            };
                            n[t[i]] = r, n = r
                        }
                        return n
                    }
                    var o = function(t, e) {
                            var n = {
                                data: {}
                            };
                            n.gl = t;
                            for (var o = Object.keys(e), s = 0; s < o.length; s++) {
                                var l = o[s],
                                    u = l.split("."),
                                    c = u[u.length - 1],
                                    h = r(u, n),
                                    p = e[l];
                                h.data[c] = p, h.gl = t, Object.defineProperty(h, c, {
                                    get: a(c),
                                    set: i(c, p)
                                })
                            }
                            return n
                        },
                        a = function(t) {
                            return function() {
                                return this.data[t].value
                            }
                        },
                        s = {
                            float: function(t, e, n) {
                                t.uniform1f(e, n)
                            },
                            vec2: function(t, e, n) {
                                t.uniform2f(e, n[0], n[1])
                            },
                            vec3: function(t, e, n) {
                                t.uniform3f(e, n[0], n[1], n[2])
                            },
                            vec4: function(t, e, n) {
                                t.uniform4f(e, n[0], n[1], n[2], n[3])
                            },
                            int: function(t, e, n) {
                                t.uniform1i(e, n)
                            },
                            ivec2: function(t, e, n) {
                                t.uniform2i(e, n[0], n[1])
                            },
                            ivec3: function(t, e, n) {
                                t.uniform3i(e, n[0], n[1], n[2])
                            },
                            ivec4: function(t, e, n) {
                                t.uniform4i(e, n[0], n[1], n[2], n[3])
                            },
                            bool: function(t, e, n) {
                                t.uniform1i(e, n)
                            },
                            bvec2: function(t, e, n) {
                                t.uniform2i(e, n[0], n[1])
                            },
                            bvec3: function(t, e, n) {
                                t.uniform3i(e, n[0], n[1], n[2])
                            },
                            bvec4: function(t, e, n) {
                                t.uniform4i(e, n[0], n[1], n[2], n[3])
                            },
                            mat2: function(t, e, n) {
                                t.uniformMatrix2fv(e, !1, n)
                            },
                            mat3: function(t, e, n) {
                                t.uniformMatrix3fv(e, !1, n)
                            },
                            mat4: function(t, e, n) {
                                t.uniformMatrix4fv(e, !1, n)
                            },
                            sampler2D: function(t, e, n) {
                                t.uniform1i(e, n)
                            }
                        },
                        l = {
                            float: function(t, e, n) {
                                t.uniform1fv(e, n)
                            },
                            vec2: function(t, e, n) {
                                t.uniform2fv(e, n)
                            },
                            vec3: function(t, e, n) {
                                t.uniform3fv(e, n)
                            },
                            vec4: function(t, e, n) {
                                t.uniform4fv(e, n)
                            },
                            int: function(t, e, n) {
                                t.uniform1iv(e, n)
                            },
                            ivec2: function(t, e, n) {
                                t.uniform2iv(e, n)
                            },
                            ivec3: function(t, e, n) {
                                t.uniform3iv(e, n)
                            },
                            ivec4: function(t, e, n) {
                                t.uniform4iv(e, n)
                            },
                            bool: function(t, e, n) {
                                t.uniform1iv(e, n)
                            },
                            bvec2: function(t, e, n) {
                                t.uniform2iv(e, n)
                            },
                            bvec3: function(t, e, n) {
                                t.uniform3iv(e, n)
                            },
                            bvec4: function(t, e, n) {
                                t.uniform4iv(e, n)
                            },
                            sampler2D: function(t, e, n) {
                                t.uniform1iv(e, n)
                            }
                        };
                    e.exports = o
                }, {}],
                19: [function(t, e, n) {
                    e.exports = {
                        compileProgram: t("./compileProgram"),
                        defaultValue: t("./defaultValue"),
                        extractAttributes: t("./extractAttributes"),
                        extractUniforms: t("./extractUniforms"),
                        generateUniformAccessObject: t("./generateUniformAccessObject"),
                        setPrecision: t("./setPrecision"),
                        mapSize: t("./mapSize"),
                        mapType: t("./mapType")
                    }
                }, {
                    "./compileProgram": 14,
                    "./defaultValue": 15,
                    "./extractAttributes": 16,
                    "./extractUniforms": 17,
                    "./generateUniformAccessObject": 18,
                    "./mapSize": 20,
                    "./mapType": 21,
                    "./setPrecision": 22
                }],
                20: [function(t, e, n) {
                    var i = function(t) {
                            return r[t]
                        },
                        r = {
                            float: 1,
                            vec2: 2,
                            vec3: 3,
                            vec4: 4,
                            int: 1,
                            ivec2: 2,
                            ivec3: 3,
                            ivec4: 4,
                            bool: 1,
                            bvec2: 2,
                            bvec3: 3,
                            bvec4: 4,
                            mat2: 4,
                            mat3: 9,
                            mat4: 16,
                            sampler2D: 1
                        };
                    e.exports = i
                }, {}],
                21: [function(t, e, n) {
                    var i = function(t, e) {
                            if (!r) {
                                var n = Object.keys(o);
                                r = {};
                                for (var i = 0; i < n.length; ++i) {
                                    var a = n[i];
                                    r[t[a]] = o[a]
                                }
                            }
                            return r[e]
                        },
                        r = null,
                        o = {
                            FLOAT: "float",
                            FLOAT_VEC2: "vec2",
                            FLOAT_VEC3: "vec3",
                            FLOAT_VEC4: "vec4",
                            INT: "int",
                            INT_VEC2: "ivec2",
                            INT_VEC3: "ivec3",
                            INT_VEC4: "ivec4",
                            BOOL: "bool",
                            BOOL_VEC2: "bvec2",
                            BOOL_VEC3: "bvec3",
                            BOOL_VEC4: "bvec4",
                            FLOAT_MAT2: "mat2",
                            FLOAT_MAT3: "mat3",
                            FLOAT_MAT4: "mat4",
                            SAMPLER_2D: "sampler2D"
                        };
                    e.exports = i
                }, {}],
                22: [function(t, e, n) {
                    var i = function(t, e) {
                        return "precision" !== t.substring(0, 9) ? "precision " + e + " float;\n" + t : t
                    };
                    e.exports = i
                }, {}],
                23: [function(t, e, n) {
                    (function(t) {
                        function e(t, e) {
                            for (var n = 0, i = t.length - 1; i >= 0; i--) {
                                var r = t[i];
                                "." === r ? t.splice(i, 1) : ".." === r ? (t.splice(i, 1), n++) : n && (t.splice(i, 1), n--)
                            }
                            if (e)
                                for (; n--; n) t.unshift("..");
                            return t
                        }

                        function i(t, e) {
                            if (t.filter) return t.filter(e);
                            for (var n = [], i = 0; i < t.length; i++) e(t[i], i, t) && n.push(t[i]);
                            return n
                        }
                        var r = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,
                            o = function(t) {
                                return r.exec(t).slice(1)
                            };
                        n.resolve = function() {
                            for (var n = "", r = !1, o = arguments.length - 1; o >= -1 && !r; o--) {
                                var a = o >= 0 ? arguments[o] : t.cwd();
                                if ("string" != typeof a) throw new TypeError("Arguments to path.resolve must be strings");
                                a && (n = a + "/" + n, r = "/" === a.charAt(0))
                            }
                            return n = e(i(n.split("/"), function(t) {
                                return !!t
                            }), !r).join("/"), (r ? "/" : "") + n || "."
                        }, n.normalize = function(t) {
                            var r = n.isAbsolute(t),
                                o = "/" === a(t, -1);
                            return t = e(i(t.split("/"), function(t) {
                                return !!t
                            }), !r).join("/"), t || r || (t = "."), t && o && (t += "/"), (r ? "/" : "") + t
                        }, n.isAbsolute = function(t) {
                            return "/" === t.charAt(0)
                        }, n.join = function() {
                            var t = Array.prototype.slice.call(arguments, 0);
                            return n.normalize(i(t, function(t, e) {
                                if ("string" != typeof t) throw new TypeError("Arguments to path.join must be strings");
                                return t
                            }).join("/"))
                        }, n.relative = function(t, e) {
                            function i(t) {
                                for (var e = 0; e < t.length && "" === t[e]; e++);
                                for (var n = t.length - 1; n >= 0 && "" === t[n]; n--);
                                return e > n ? [] : t.slice(e, n - e + 1)
                            }
                            t = n.resolve(t).substr(1), e = n.resolve(e).substr(1);
                            for (var r = i(t.split("/")), o = i(e.split("/")), a = Math.min(r.length, o.length), s = a, l = 0; l < a; l++)
                                if (r[l] !== o[l]) {
                                    s = l;
                                    break
                                }
                            for (var u = [], l = s; l < r.length; l++) u.push("..");
                            return u = u.concat(o.slice(s)), u.join("/")
                        }, n.sep = "/", n.delimiter = ":", n.dirname = function(t) {
                            var e = o(t),
                                n = e[0],
                                i = e[1];
                            return n || i ? (i && (i = i.substr(0, i.length - 1)), n + i) : "."
                        }, n.basename = function(t, e) {
                            var n = o(t)[2];
                            return e && n.substr(-1 * e.length) === e && (n = n.substr(0, n.length - e.length)), n
                        }, n.extname = function(t) {
                            return o(t)[3]
                        };
                        var a = "b" === "ab".substr(-1) ? function(t, e, n) {
                            return t.substr(e, n)
                        } : function(t, e, n) {
                            return e < 0 && (e = t.length + e), t.substr(e, n)
                        }
                    }).call(this, t("_process"))
                }, {
                    _process: 24
                }],
                24: [function(t, e, n) {
                    function i() {
                        throw new Error("setTimeout has not been defined")
                    }

                    function r() {
                        throw new Error("clearTimeout has not been defined")
                    }

                    function o(t) {
                        if (h === setTimeout) return setTimeout(t, 0);
                        if ((h === i || !h) && setTimeout) return h = setTimeout, setTimeout(t, 0);
                        try {
                            return h(t, 0)
                        } catch (e) {
                            try {
                                return h.call(null, t, 0)
                            } catch (e) {
                                return h.call(this, t, 0)
                            }
                        }
                    }

                    function a(t) {
                        if (p === clearTimeout) return clearTimeout(t);
                        if ((p === r || !p) && clearTimeout) return p = clearTimeout, clearTimeout(t);
                        try {
                            return p(t)
                        } catch (e) {
                            try {
                                return p.call(null, t)
                            } catch (e) {
                                return p.call(this, t)
                            }
                        }
                    }

                    function s() {
                        g && d && (g = !1, d.length ? m = d.concat(m) : _ = -1, m.length && l())
                    }

                    function l() {
                        if (!g) {
                            var t = o(s);
                            g = !0;
                            for (var e = m.length; e;) {
                                for (d = m, m = []; ++_ < e;) d && d[_].run();
                                _ = -1, e = m.length
                            }
                            d = null, g = !1, a(t)
                        }
                    }

                    function u(t, e) {
                        this.fun = t, this.array = e
                    }

                    function c() {}
                    var h, p, f = e.exports = {};
                    ! function() {
                        try {
                            h = "function" == typeof setTimeout ? setTimeout : i
                        } catch (t) {
                            h = i
                        }
                        try {
                            p = "function" == typeof clearTimeout ? clearTimeout : r
                        } catch (t) {
                            p = r
                        }
                    }();
                    var d, m = [],
                        g = !1,
                        _ = -1;
                    f.nextTick = function(t) {
                        var e = new Array(arguments.length - 1);
                        if (arguments.length > 1)
                            for (var n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
                        m.push(new u(t, e)), 1 !== m.length || g || o(l)
                    }, u.prototype.run = function() {
                        this.fun.apply(null, this.array)
                    }, f.title = "browser", f.browser = !0, f.env = {}, f.argv = [], f.version = "", f.versions = {}, f.on = c, f.addListener = c, f.once = c, f.off = c, f.removeListener = c, f.removeAllListeners = c, f.emit = c, f.prependListener = c, f.prependOnceListener = c, f.listeners = function(t) {
                        return []
                    }, f.binding = function(t) {
                        throw new Error("process.binding is not supported")
                    }, f.cwd = function() {
                        return "/"
                    }, f.chdir = function(t) {
                        throw new Error("process.chdir is not supported")
                    }, f.umask = function() {
                        return 0
                    }
                }, {}],
                25: [function(e, n, i) {
                    (function(e) {
                        ! function(r) {
                            function o(t) {
                                throw new RangeError(L[t])
                            }

                            function a(t, e) {
                                for (var n = t.length, i = []; n--;) i[n] = e(t[n]);
                                return i
                            }

                            function s(t, e) {
                                var n = t.split("@"),
                                    i = "";
                                return n.length > 1 && (i = n[0] + "@", t = n[1]), t = t.replace(k, "."), i + a(t.split("."), e).join(".")
                            }

                            function l(t) {
                                for (var e, n, i = [], r = 0, o = t.length; r < o;) e = t.charCodeAt(r++), e >= 55296 && e <= 56319 && r < o ? (n = t.charCodeAt(r++), 56320 == (64512 & n) ? i.push(((1023 & e) << 10) + (1023 & n) + 65536) : (i.push(e), r--)) : i.push(e);
                                return i
                            }

                            function u(t) {
                                return a(t, function(t) {
                                    var e = "";
                                    return t > 65535 && (t -= 65536, e += N(t >>> 10 & 1023 | 55296), t = 56320 | 1023 & t), e += N(t)
                                }).join("")
                            }

                            function c(t) {
                                return t - 48 < 10 ? t - 22 : t - 65 < 26 ? t - 65 : t - 97 < 26 ? t - 97 : w
                            }

                            function h(t, e) {
                                return t + 22 + 75 * (t < 26) - ((0 != e) << 5)
                            }

                            function p(t, e, n) {
                                var i = 0;
                                for (t = n ? B(t / C) : t >> 1, t += B(t / e); t > D * P >> 1; i += w) t = B(t / D);
                                return B(i + (D + 1) * t / (t + M))
                            }

                            function f(t) {
                                var e, n, i, r, a, s, l, h, f, d, m = [],
                                    g = t.length,
                                    _ = 0,
                                    y = O,
                                    v = E;
                                for (n = t.lastIndexOf(I), n < 0 && (n = 0), i = 0; i < n; ++i) t.charCodeAt(i) >= 128 && o("not-basic"), m.push(t.charCodeAt(i));
                                for (r = n > 0 ? n + 1 : 0; r < g;) {
                                    for (a = _, s = 1, l = w; r >= g && o("invalid-input"), h = c(t.charCodeAt(r++)), (h >= w || h > B((T - _) / s)) && o("overflow"), _ += h * s, f = l <= v ? S : l >= v + P ? P : l - v, !(h < f); l += w) d = w - f, s > B(T / d) && o("overflow"), s *= d;
                                    e = m.length + 1, v = p(_ - a, e, 0 == a), B(_ / e) > T - y && o("overflow"), y += B(_ / e), _ %= e, m.splice(_++, 0, y)
                                }
                                return u(m)
                            }

                            function d(t) {
                                var e, n, i, r, a, s, u, c, f, d, m, g, _, y, v, b = [];
                                for (t = l(t), g = t.length, e = O, n = 0, a = E, s = 0; s < g; ++s)(m = t[s]) < 128 && b.push(N(m));
                                for (i = r = b.length, r && b.push(I); i < g;) {
                                    for (u = T, s = 0; s < g; ++s)(m = t[s]) >= e && m < u && (u = m);
                                    for (_ = i + 1, u - e > B((T - n) / _) && o("overflow"), n += (u - e) * _, e = u, s = 0; s < g; ++s)
                                        if (m = t[s], m < e && ++n > T && o("overflow"), m == e) {
                                            for (c = n, f = w; d = f <= a ? S : f >= a + P ? P : f - a, !(c < d); f += w) v = c - d, y = w - d, b.push(N(h(d + v % y, 0))), c = B(v / y);
                                            b.push(N(h(c, 0))), a = p(n, _, i == r), n = 0, ++i
                                        }++n, ++e
                                }
                                return b.join("")
                            }

                            function m(t) {
                                return s(t, function(t) {
                                    return R.test(t) ? f(t.slice(4).toLowerCase()) : t
                                })
                            }

                            function g(t) {
                                return s(t, function(t) {
                                    return A.test(t) ? "xn--" + d(t) : t
                                })
                            }
                            var _ = "object" == typeof i && i && !i.nodeType && i,
                                y = "object" == typeof n && n && !n.nodeType && n,
                                v = "object" == typeof e && e;
                            v.global !== v && v.window !== v && v.self !== v || (r = v);
                            var b, x, T = 2147483647,
                                w = 36,
                                S = 1,
                                P = 26,
                                M = 38,
                                C = 700,
                                E = 72,
                                O = 128,
                                I = "-",
                                R = /^xn--/,
                                A = /[^\x20-\x7E]/,
                                k = /[\x2E\u3002\uFF0E\uFF61]/g,
                                L = {
                                    overflow: "Overflow: input needs wider integers to process",
                                    "not-basic": "Illegal input >= 0x80 (not a basic code point)",
                                    "invalid-input": "Invalid input"
                                },
                                D = w - S,
                                B = Math.floor,
                                N = String.fromCharCode;
                            if (b = {
                                    version: "1.4.1",
                                    ucs2: {
                                        decode: l,
                                        encode: u
                                    },
                                    decode: f,
                                    encode: d,
                                    toASCII: g,
                                    toUnicode: m
                                }, "function" == typeof t && "object" == typeof t.amd && t.amd) t("punycode", function() {
                                return b
                            });
                            else if (_ && y)
                                if (n.exports == _) y.exports = b;
                                else
                                    for (x in b) b.hasOwnProperty(x) && (_[x] = b[x]);
                            else r.punycode = b
                        }(this)
                    }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
                }, {}],
                26: [function(t, e, n) {
                    function i(t, e) {
                        return Object.prototype.hasOwnProperty.call(t, e)
                    }
                    e.exports = function(t, e, n, o) {
                        e = e || "&", n = n || "=";
                        var a = {};
                        if ("string" != typeof t || 0 === t.length) return a;
                        var s = /\+/g;
                        t = t.split(e);
                        var l = 1e3;
                        o && "number" == typeof o.maxKeys && (l = o.maxKeys);
                        var u = t.length;
                        l > 0 && u > l && (u = l);
                        for (var c = 0; c < u; ++c) {
                            var h, p, f, d, m = t[c].replace(s, "%20"),
                                g = m.indexOf(n);
                            g >= 0 ? (h = m.substr(0, g), p = m.substr(g + 1)) : (h = m, p = ""), f = decodeURIComponent(h), d = decodeURIComponent(p), i(a, f) ? r(a[f]) ? a[f].push(d) : a[f] = [a[f], d] : a[f] = d
                        }
                        return a
                    };
                    var r = Array.isArray || function(t) {
                        return "[object Array]" === Object.prototype.toString.call(t)
                    }
                }, {}],
                27: [function(t, e, n) {
                    function i(t, e) {
                        if (t.map) return t.map(e);
                        for (var n = [], i = 0; i < t.length; i++) n.push(e(t[i], i));
                        return n
                    }
                    var r = function(t) {
                        switch (typeof t) {
                            case "string":
                                return t;
                            case "boolean":
                                return t ? "true" : "false";
                            case "number":
                                return isFinite(t) ? t : "";
                            default:
                                return ""
                        }
                    };
                    e.exports = function(t, e, n, s) {
                        return e = e || "&", n = n || "=", null === t && (t = void 0), "object" == typeof t ? i(a(t), function(a) {
                            var s = encodeURIComponent(r(a)) + n;
                            return o(t[a]) ? i(t[a], function(t) {
                                return s + encodeURIComponent(r(t))
                            }).join(e) : s + encodeURIComponent(r(t[a]))
                        }).join(e) : s ? encodeURIComponent(r(s)) + n + encodeURIComponent(r(t)) : ""
                    };
                    var o = Array.isArray || function(t) {
                            return "[object Array]" === Object.prototype.toString.call(t)
                        },
                        a = Object.keys || function(t) {
                            var e = [];
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && e.push(n);
                            return e
                        }
                }, {}],
                28: [function(t, e, n) {
                    "use strict";
                    n.decode = n.parse = t("./decode"), n.encode = n.stringify = t("./encode")
                }, {
                    "./decode": 26,
                    "./encode": 27
                }],
                29: [function(t, e, n) {
                    function i() {
                        this.protocol = null, this.slashes = null, this.auth = null, this.host = null, this.port = null, this.hostname = null, this.hash = null, this.search = null, this.query = null, this.pathname = null, this.path = null, this.href = null
                    }

                    function r(t, e, n) {
                        if (t && u.isObject(t) && t instanceof i) return t;
                        var r = new i;
                        return r.parse(t, e, n), r
                    }

                    function o(t) {
                        return u.isString(t) && (t = r(t)), t instanceof i ? t.format() : i.prototype.format.call(t)
                    }

                    function a(t, e) {
                        return r(t, !1, !0).resolve(e)
                    }

                    function s(t, e) {
                        return t ? r(t, !1, !0).resolveObject(e) : e
                    }
                    var l = t("punycode"),
                        u = t("./util");
                    n.parse = r, n.resolve = a, n.resolveObject = s, n.format = o, n.Url = i;
                    var c = /^([a-z0-9.+-]+:)/i,
                        h = /:[0-9]*$/,
                        p = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,
                        f = ["<", ">", '"', "`", " ", "\r", "\n", "\t"],
                        d = ["{", "}", "|", "\\", "^", "`"].concat(f),
                        m = ["'"].concat(d),
                        g = ["%", "/", "?", ";", "#"].concat(m),
                        _ = ["/", "?", "#"],
                        y = /^[+a-z0-9A-Z_-]{0,63}$/,
                        v = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,
                        b = {
                            javascript: !0,
                            "javascript:": !0
                        },
                        x = {
                            javascript: !0,
                            "javascript:": !0
                        },
                        T = {
                            http: !0,
                            https: !0,
                            ftp: !0,
                            gopher: !0,
                            file: !0,
                            "http:": !0,
                            "https:": !0,
                            "ftp:": !0,
                            "gopher:": !0,
                            "file:": !0
                        },
                        w = t("querystring");
                    i.prototype.parse = function(t, e, n) {
                        if (!u.isString(t)) throw new TypeError("Parameter 'url' must be a string, not " + typeof t);
                        var i = t.indexOf("?"),
                            r = -1 !== i && i < t.indexOf("#") ? "?" : "#",
                            o = t.split(r),
                            a = /\\/g;
                        o[0] = o[0].replace(a, "/"), t = o.join(r);
                        var s = t;
                        if (s = s.trim(), !n && 1 === t.split("#").length) {
                            var h = p.exec(s);
                            if (h) return this.path = s, this.href = s, this.pathname = h[1], h[2] ? (this.search = h[2], this.query = e ? w.parse(this.search.substr(1)) : this.search.substr(1)) : e && (this.search = "", this.query = {}), this
                        }
                        var f = c.exec(s);
                        if (f) {
                            f = f[0];
                            var d = f.toLowerCase();
                            this.protocol = d, s = s.substr(f.length)
                        }
                        if (n || f || s.match(/^\/\/[^@\/]+@[^@\/]+/)) {
                            var S = "//" === s.substr(0, 2);
                            !S || f && x[f] || (s = s.substr(2), this.slashes = !0)
                        }
                        if (!x[f] && (S || f && !T[f])) {
                            for (var P = -1, M = 0; M < _.length; M++) {
                                var C = s.indexOf(_[M]); - 1 !== C && (-1 === P || C < P) && (P = C)
                            }
                            var E, O;
                            O = -1 === P ? s.lastIndexOf("@") : s.lastIndexOf("@", P), -1 !== O && (E = s.slice(0, O), s = s.slice(O + 1), this.auth = decodeURIComponent(E)), P = -1;
                            for (var M = 0; M < g.length; M++) {
                                var C = s.indexOf(g[M]); - 1 !== C && (-1 === P || C < P) && (P = C)
                            } - 1 === P && (P = s.length), this.host = s.slice(0, P), s = s.slice(P), this.parseHost(), this.hostname = this.hostname || "";
                            var I = "[" === this.hostname[0] && "]" === this.hostname[this.hostname.length - 1];
                            if (!I)
                                for (var R = this.hostname.split(/\./), M = 0, A = R.length; M < A; M++) {
                                    var k = R[M];
                                    if (k && !k.match(y)) {
                                        for (var L = "", D = 0, B = k.length; D < B; D++) k.charCodeAt(D) > 127 ? L += "x" : L += k[D];
                                        if (!L.match(y)) {
                                            var N = R.slice(0, M),
                                                F = R.slice(M + 1),
                                                G = k.match(v);
                                            G && (N.push(G[1]), F.unshift(G[2])), F.length && (s = "/" + F.join(".") + s), this.hostname = N.join(".");
                                            break
                                        }
                                    }
                                }
                            this.hostname.length > 255 ? this.hostname = "" : this.hostname = this.hostname.toLowerCase(), I || (this.hostname = l.toASCII(this.hostname));
                            var U = this.port ? ":" + this.port : "",
                                j = this.hostname || "";
                            this.host = j + U, this.href += this.host, I && (this.hostname = this.hostname.substr(1, this.hostname.length - 2), "/" !== s[0] && (s = "/" + s))
                        }
                        if (!b[d])
                            for (var M = 0, A = m.length; M < A; M++) {
                                var W = m[M];
                                if (-1 !== s.indexOf(W)) {
                                    var X = encodeURIComponent(W);
                                    X === W && (X = escape(W)), s = s.split(W).join(X)
                                }
                            }
                        var V = s.indexOf("#"); - 1 !== V && (this.hash = s.substr(V), s = s.slice(0, V));
                        var H = s.indexOf("?");
                        if (-1 !== H ? (this.search = s.substr(H), this.query = s.substr(H + 1), e && (this.query = w.parse(this.query)), s = s.slice(0, H)) : e && (this.search = "", this.query = {}), s && (this.pathname = s), T[d] && this.hostname && !this.pathname && (this.pathname = "/"), this.pathname || this.search) {
                            var U = this.pathname || "",
                                z = this.search || "";
                            this.path = U + z
                        }
                        return this.href = this.format(), this
                    }, i.prototype.format = function() {
                        var t = this.auth || "";
                        t && (t = encodeURIComponent(t), t = t.replace(/%3A/i, ":"), t += "@");
                        var e = this.protocol || "",
                            n = this.pathname || "",
                            i = this.hash || "",
                            r = !1,
                            o = "";
                        this.host ? r = t + this.host : this.hostname && (r = t + (-1 === this.hostname.indexOf(":") ? this.hostname : "[" + this.hostname + "]"), this.port && (r += ":" + this.port)), this.query && u.isObject(this.query) && Object.keys(this.query).length && (o = w.stringify(this.query));
                        var a = this.search || o && "?" + o || "";
                        return e && ":" !== e.substr(-1) && (e += ":"), this.slashes || (!e || T[e]) && !1 !== r ? (r = "//" + (r || ""), n && "/" !== n.charAt(0) && (n = "/" + n)) : r || (r = ""), i && "#" !== i.charAt(0) && (i = "#" + i), a && "?" !== a.charAt(0) && (a = "?" + a), n = n.replace(/[?#]/g, function(t) {
                            return encodeURIComponent(t)
                        }), a = a.replace("#", "%23"), e + r + n + a + i
                    }, i.prototype.resolve = function(t) {
                        return this.resolveObject(r(t, !1, !0)).format()
                    }, i.prototype.resolveObject = function(t) {
                        if (u.isString(t)) {
                            var e = new i;
                            e.parse(t, !1, !0), t = e
                        }
                        for (var n = new i, r = Object.keys(this), o = 0; o < r.length; o++) {
                            var a = r[o];
                            n[a] = this[a]
                        }
                        if (n.hash = t.hash, "" === t.href) return n.href = n.format(), n;
                        if (t.slashes && !t.protocol) {
                            for (var s = Object.keys(t), l = 0; l < s.length; l++) {
                                var c = s[l];
                                "protocol" !== c && (n[c] = t[c])
                            }
                            return T[n.protocol] && n.hostname && !n.pathname && (n.path = n.pathname = "/"), n.href = n.format(), n
                        }
                        if (t.protocol && t.protocol !== n.protocol) {
                            if (!T[t.protocol]) {
                                for (var h = Object.keys(t), p = 0; p < h.length; p++) {
                                    var f = h[p];
                                    n[f] = t[f]
                                }
                                return n.href = n.format(), n
                            }
                            if (n.protocol = t.protocol, t.host || x[t.protocol]) n.pathname = t.pathname;
                            else {
                                for (var d = (t.pathname || "").split("/"); d.length && !(t.host = d.shift()););
                                t.host || (t.host = ""), t.hostname || (t.hostname = ""), "" !== d[0] && d.unshift(""), d.length < 2 && d.unshift(""), n.pathname = d.join("/")
                            }
                            if (n.search = t.search, n.query = t.query, n.host = t.host || "", n.auth = t.auth, n.hostname = t.hostname || t.host, n.port = t.port, n.pathname || n.search) {
                                var m = n.pathname || "",
                                    g = n.search || "";
                                n.path = m + g
                            }
                            return n.slashes = n.slashes || t.slashes, n.href = n.format(), n
                        }
                        var _ = n.pathname && "/" === n.pathname.charAt(0),
                            y = t.host || t.pathname && "/" === t.pathname.charAt(0),
                            v = y || _ || n.host && t.pathname,
                            b = v,
                            w = n.pathname && n.pathname.split("/") || [],
                            d = t.pathname && t.pathname.split("/") || [],
                            S = n.protocol && !T[n.protocol];
                        if (S && (n.hostname = "", n.port = null, n.host && ("" === w[0] ? w[0] = n.host : w.unshift(n.host)), n.host = "", t.protocol && (t.hostname = null, t.port = null, t.host && ("" === d[0] ? d[0] = t.host : d.unshift(t.host)), t.host = null), v = v && ("" === d[0] || "" === w[0])), y) n.host = t.host || "" === t.host ? t.host : n.host, n.hostname = t.hostname || "" === t.hostname ? t.hostname : n.hostname, n.search = t.search, n.query = t.query, w = d;
                        else if (d.length) w || (w = []), w.pop(), w = w.concat(d), n.search = t.search, n.query = t.query;
                        else if (!u.isNullOrUndefined(t.search)) {
                            if (S) {
                                n.hostname = n.host = w.shift();
                                var P = !!(n.host && n.host.indexOf("@") > 0) && n.host.split("@");
                                P && (n.auth = P.shift(), n.host = n.hostname = P.shift())
                            }
                            return n.search = t.search, n.query = t.query, u.isNull(n.pathname) && u.isNull(n.search) || (n.path = (n.pathname ? n.pathname : "") + (n.search ? n.search : "")), n.href = n.format(), n
                        }
                        if (!w.length) return n.pathname = null, n.search ? n.path = "/" + n.search : n.path = null, n.href = n.format(), n;
                        for (var M = w.slice(-1)[0], C = (n.host || t.host || w.length > 1) && ("." === M || ".." === M) || "" === M, E = 0, O = w.length; O >= 0; O--) M = w[O], "." === M ? w.splice(O, 1) : ".." === M ? (w.splice(O, 1), E++) : E && (w.splice(O, 1), E--);
                        if (!v && !b)
                            for (; E--; E) w.unshift("..");
                        !v || "" === w[0] || w[0] && "/" === w[0].charAt(0) || w.unshift(""), C && "/" !== w.join("/").substr(-1) && w.push("");
                        var I = "" === w[0] || w[0] && "/" === w[0].charAt(0);
                        if (S) {
                            n.hostname = n.host = I ? "" : w.length ? w.shift() : "";
                            var P = !!(n.host && n.host.indexOf("@") > 0) && n.host.split("@");
                            P && (n.auth = P.shift(), n.host = n.hostname = P.shift())
                        }
                        return v = v || n.host && w.length, v && !I && w.unshift(""), w.length ? n.pathname = w.join("/") : (n.pathname = null, n.path = null), u.isNull(n.pathname) && u.isNull(n.search) || (n.path = (n.pathname ? n.pathname : "") + (n.search ? n.search : "")), n.auth = t.auth || n.auth, n.slashes = n.slashes || t.slashes, n.href = n.format(), n
                    }, i.prototype.parseHost = function() {
                        var t = this.host,
                            e = h.exec(t);
                        e && (e = e[0], ":" !== e && (this.port = e.substr(1)), t = t.substr(0, t.length - e.length)), t && (this.hostname = t)
                    }
                }, {
                    "./util": 30,
                    punycode: 25,
                    querystring: 28
                }],
                30: [function(t, e, n) {
                    "use strict";
                    e.exports = {
                        isString: function(t) {
                            return "string" == typeof t
                        },
                        isObject: function(t) {
                            return "object" == typeof t && null !== t
                        },
                        isNull: function(t) {
                            return null === t
                        },
                        isNullOrUndefined: function(t) {
                            return null == t
                        }
                    }
                }, {}],
                31: [function(t, e, n) {
                    "use strict";
                    e.exports = function(t, e, n) {
                        var i, r = t.length;
                        if (!(e >= r || 0 === n)) {
                            n = e + n > r ? r - e : n;
                            var o = r - n;
                            for (i = e; i < o; ++i) t[i] = t[i + n];
                            t.length = o
                        }
                    }
                }, {}],
                32: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
                            return typeof t
                        } : function(t) {
                            return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
                        },
                        a = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        s = t("mini-signals"),
                        l = i(s),
                        u = t("parse-uri"),
                        c = i(u),
                        h = t("./async"),
                        p = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(h),
                        f = t("./Resource"),
                        d = i(f),
                        m = /(#[\w-]+)?$/,
                        g = function() {
                            function t() {
                                var e = this,
                                    n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
                                    i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 10;
                                r(this, t), this.baseUrl = n, this.progress = 0, this.loading = !1, this.defaultQueryString = "", this._beforeMiddleware = [], this._afterMiddleware = [], this._resourcesParsing = [], this._boundLoadResource = function(t, n) {
                                    return e._loadResource(t, n)
                                }, this._queue = p.queue(this._boundLoadResource, i), this._queue.pause(), this.resources = {}, this.onProgress = new l.default, this.onError = new l.default, this.onLoad = new l.default, this.onStart = new l.default, this.onComplete = new l.default
                            }
                            return t.prototype.add = function(t, e, n, i) {
                                if (Array.isArray(t)) {
                                    for (var r = 0; r < t.length; ++r) this.add(t[r]);
                                    return this
                                }
                                if ("object" === (void 0 === t ? "undefined" : o(t)) && (i = e || t.callback || t.onComplete, n = t, e = t.url, t = t.name || t.key || t.url), "string" != typeof e && (i = n, n = e, e = t), "string" != typeof e) throw new Error("No url passed to add resource to loader.");
                                if ("function" == typeof n && (i = n, n = null), this.loading && (!n || !n.parentResource)) throw new Error("Cannot add resources while the loader is running.");
                                if (this.resources[t]) throw new Error('Resource named "' + t + '" already exists.');
                                if (e = this._prepareUrl(e), this.resources[t] = new d.default(t, e, n), "function" == typeof i && this.resources[t].onAfterMiddleware.once(i), this.loading) {
                                    for (var a = n.parentResource, s = [], l = 0; l < a.children.length; ++l) a.children[l].isComplete || s.push(a.children[l]);
                                    var u = a.progressChunk * (s.length + 1),
                                        c = u / (s.length + 2);
                                    a.children.push(this.resources[t]), a.progressChunk = c;
                                    for (var h = 0; h < s.length; ++h) s[h].progressChunk = c;
                                    this.resources[t].progressChunk = c
                                }
                                return this._queue.push(this.resources[t]), this
                            }, t.prototype.pre = function(t) {
                                return this._beforeMiddleware.push(t), this
                            }, t.prototype.use = function(t) {
                                return this._afterMiddleware.push(t), this
                            }, t.prototype.reset = function() {
                                this.progress = 0, this.loading = !1, this._queue.kill(), this._queue.pause();
                                for (var t in this.resources) {
                                    var e = this.resources[t];
                                    e._onLoadBinding && e._onLoadBinding.detach(), e.isLoading && e.abort()
                                }
                                return this.resources = {}, this
                            }, t.prototype.load = function(t) {
                                if ("function" == typeof t && this.onComplete.once(t), this.loading) return this;
                                if (this._queue.idle()) this._onStart(), this._onComplete();
                                else {
                                    for (var e = this._queue._tasks.length, n = 100 / e, i = 0; i < this._queue._tasks.length; ++i) this._queue._tasks[i].data.progressChunk = n;
                                    this._onStart(), this._queue.resume()
                                }
                                return this
                            }, t.prototype._prepareUrl = function(t) {
                                var e = (0, c.default)(t, {
                                        strictMode: !0
                                    }),
                                    n = void 0;
                                if (n = e.protocol || !e.path || 0 === t.indexOf("//") ? t : this.baseUrl.length && this.baseUrl.lastIndexOf("/") !== this.baseUrl.length - 1 && "/" !== t.charAt(0) ? this.baseUrl + "/" + t : this.baseUrl + t, this.defaultQueryString) {
                                    var i = m.exec(n)[0];
                                    n = n.substr(0, n.length - i.length), -1 !== n.indexOf("?") ? n += "&" + this.defaultQueryString : n += "?" + this.defaultQueryString, n += i
                                }
                                return n
                            }, t.prototype._loadResource = function(t, e) {
                                var n = this;
                                t._dequeue = e, p.eachSeries(this._beforeMiddleware, function(e, i) {
                                    e.call(n, t, function() {
                                        i(t.isComplete ? {} : null)
                                    })
                                }, function() {
                                    t.isComplete ? n._onLoad(t) : (t._onLoadBinding = t.onComplete.once(n._onLoad, n), t.load())
                                }, !0)
                            }, t.prototype._onStart = function() {
                                this.progress = 0, this.loading = !0, this.onStart.dispatch(this)
                            }, t.prototype._onComplete = function() {
                                this.progress = 100, this.loading = !1, this.onComplete.dispatch(this, this.resources)
                            }, t.prototype._onLoad = function(t) {
                                var e = this;
                                t._onLoadBinding = null, this._resourcesParsing.push(t), t._dequeue(), p.eachSeries(this._afterMiddleware, function(n, i) {
                                    n.call(e, t, i)
                                }, function() {
                                    t.onAfterMiddleware.dispatch(t), e.progress += t.progressChunk, e.onProgress.dispatch(e, t), t.error ? e.onError.dispatch(t.error, e, t) : e.onLoad.dispatch(e, t), e._resourcesParsing.splice(e._resourcesParsing.indexOf(t), 1), e._queue.idle() && 0 === e._resourcesParsing.length && e._onComplete()
                                }, !0)
                            }, a(t, [{
                                key: "concurrency",
                                get: function() {
                                    return this._queue.concurrency
                                },
                                set: function(t) {
                                    this._queue.concurrency = t
                                }
                            }]), t
                        }();
                    n.default = g
                }, {
                    "./Resource": 33,
                    "./async": 34,
                    "mini-signals": 38,
                    "parse-uri": 39
                }],
                33: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o() {}

                    function a(t, e, n) {
                        e && 0 === e.indexOf(".") && (e = e.substring(1)), e && (t[e] = n)
                    }

                    function s(t) {
                        return t.toString().replace("object ", "")
                    }
                    n.__esModule = !0;
                    var l = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        u = t("parse-uri"),
                        c = i(u),
                        h = t("mini-signals"),
                        p = i(h),
                        f = !(!window.XDomainRequest || "withCredentials" in new XMLHttpRequest),
                        d = null,
                        m = function() {
                            function t(e, n, i) {
                                if (r(this, t), "string" != typeof e || "string" != typeof n) throw new Error("Both name and url are required for constructing a resource.");
                                i = i || {}, this._flags = 0, this._setFlag(t.STATUS_FLAGS.DATA_URL, 0 === n.indexOf("data:")), this.name = e, this.url = n, this.extension = this._getExtension(), this.data = null, this.crossOrigin = !0 === i.crossOrigin ? "anonymous" : i.crossOrigin, this.loadType = i.loadType || this._determineLoadType(), this.xhrType = i.xhrType, this.metadata = i.metadata || {}, this.error = null, this.xhr = null, this.children = [], this.type = t.TYPE.UNKNOWN, this.progressChunk = 0, this._dequeue = o, this._onLoadBinding = null, this._boundComplete = this.complete.bind(this), this._boundOnError = this._onError.bind(this), this._boundOnProgress = this._onProgress.bind(this), this._boundXhrOnError = this._xhrOnError.bind(this), this._boundXhrOnAbort = this._xhrOnAbort.bind(this), this._boundXhrOnLoad = this._xhrOnLoad.bind(this), this._boundXdrOnTimeout = this._xdrOnTimeout.bind(this), this.onStart = new p.default, this.onProgress = new p.default, this.onComplete = new p.default, this.onAfterMiddleware = new p.default
                            }
                            return t.setExtensionLoadType = function(e, n) {
                                a(t._loadTypeMap, e, n)
                            }, t.setExtensionXhrType = function(e, n) {
                                a(t._xhrTypeMap, e, n)
                            }, t.prototype.complete = function() {
                                if (this.data && this.data.removeEventListener && (this.data.removeEventListener("error", this._boundOnError, !1), this.data.removeEventListener("load", this._boundComplete, !1), this.data.removeEventListener("progress", this._boundOnProgress, !1), this.data.removeEventListener("canplaythrough", this._boundComplete, !1)), this.xhr && (this.xhr.removeEventListener ? (this.xhr.removeEventListener("error", this._boundXhrOnError, !1), this.xhr.removeEventListener("abort", this._boundXhrOnAbort, !1), this.xhr.removeEventListener("progress", this._boundOnProgress, !1), this.xhr.removeEventListener("load", this._boundXhrOnLoad, !1)) : (this.xhr.onerror = null, this.xhr.ontimeout = null, this.xhr.onprogress = null, this.xhr.onload = null)), this.isComplete) throw new Error("Complete called again for an already completed resource.");
                                this._setFlag(t.STATUS_FLAGS.COMPLETE, !0), this._setFlag(t.STATUS_FLAGS.LOADING, !1), this.onComplete.dispatch(this)
                            }, t.prototype.abort = function(e) {
                                if (!this.error) {
                                    if (this.error = new Error(e), this.xhr) this.xhr.abort();
                                    else if (this.xdr) this.xdr.abort();
                                    else if (this.data)
                                        if (this.data.src) this.data.src = t.EMPTY_GIF;
                                        else
                                            for (; this.data.firstChild;) this.data.removeChild(this.data.firstChild);
                                    this.complete()
                                }
                            }, t.prototype.load = function(e) {
                                var n = this;
                                if (!this.isLoading) {
                                    if (this.isComplete) return void(e && setTimeout(function() {
                                        return e(n)
                                    }, 1));
                                    switch (e && this.onComplete.once(e), this._setFlag(t.STATUS_FLAGS.LOADING, !0), this.onStart.dispatch(this), !1 !== this.crossOrigin && "string" == typeof this.crossOrigin || (this.crossOrigin = this._determineCrossOrigin(this.url)), this.loadType) {
                                        case t.LOAD_TYPE.IMAGE:
                                            this.type = t.TYPE.IMAGE, this._loadElement("image");
                                            break;
                                        case t.LOAD_TYPE.AUDIO:
                                            this.type = t.TYPE.AUDIO, this._loadSourceElement("audio");
                                            break;
                                        case t.LOAD_TYPE.VIDEO:
                                            this.type = t.TYPE.VIDEO, this._loadSourceElement("video");
                                            break;
                                        case t.LOAD_TYPE.XHR:
                                        default:
                                            f && this.crossOrigin ? this._loadXdr() : this._loadXhr()
                                    }
                                }
                            }, t.prototype._hasFlag = function(t) {
                                return !!(this._flags & t)
                            }, t.prototype._setFlag = function(t, e) {
                                this._flags = e ? this._flags | t : this._flags & ~t
                            }, t.prototype._loadElement = function(t) {
                                this.metadata.loadElement ? this.data = this.metadata.loadElement : "image" === t && void 0 !== window.Image ? this.data = new Image : this.data = document.createElement(t), this.crossOrigin && (this.data.crossOrigin = this.crossOrigin), this.metadata.skipSource || (this.data.src = this.url), this.data.addEventListener("error", this._boundOnError, !1), this.data.addEventListener("load", this._boundComplete, !1), this.data.addEventListener("progress", this._boundOnProgress, !1)
                            }, t.prototype._loadSourceElement = function(t) {
                                if (this.metadata.loadElement ? this.data = this.metadata.loadElement : "audio" === t && void 0 !== window.Audio ? this.data = new Audio : this.data = document.createElement(t), null === this.data) return void this.abort("Unsupported element: " + t);
                                if (!this.metadata.skipSource)
                                    if (navigator.isCocoonJS) this.data.src = Array.isArray(this.url) ? this.url[0] : this.url;
                                    else if (Array.isArray(this.url))
                                    for (var e = this.metadata.mimeType, n = 0; n < this.url.length; ++n) this.data.appendChild(this._createSource(t, this.url[n], Array.isArray(e) ? e[n] : e));
                                else {
                                    var i = this.metadata.mimeType;
                                    this.data.appendChild(this._createSource(t, this.url, Array.isArray(i) ? i[0] : i))
                                }
                                this.data.addEventListener("error", this._boundOnError, !1), this.data.addEventListener("load", this._boundComplete, !1), this.data.addEventListener("progress", this._boundOnProgress, !1), this.data.addEventListener("canplaythrough", this._boundComplete, !1), this.data.load()
                            }, t.prototype._loadXhr = function() {
                                "string" != typeof this.xhrType && (this.xhrType = this._determineXhrType());
                                var e = this.xhr = new XMLHttpRequest;
                                e.open("GET", this.url, !0), this.xhrType === t.XHR_RESPONSE_TYPE.JSON || this.xhrType === t.XHR_RESPONSE_TYPE.DOCUMENT ? e.responseType = t.XHR_RESPONSE_TYPE.TEXT : e.responseType = this.xhrType, e.addEventListener("error", this._boundXhrOnError, !1), e.addEventListener("abort", this._boundXhrOnAbort, !1), e.addEventListener("progress", this._boundOnProgress, !1), e.addEventListener("load", this._boundXhrOnLoad, !1), e.send()
                            }, t.prototype._loadXdr = function() {
                                "string" != typeof this.xhrType && (this.xhrType = this._determineXhrType());
                                var t = this.xhr = new XDomainRequest;
                                t.timeout = 5e3, t.onerror = this._boundXhrOnError, t.ontimeout = this._boundXdrOnTimeout, t.onprogress = this._boundOnProgress, t.onload = this._boundXhrOnLoad, t.open("GET", this.url, !0), setTimeout(function() {
                                    return t.send()
                                }, 1)
                            }, t.prototype._createSource = function(t, e, n) {
                                n || (n = t + "/" + this._getExtension(e));
                                var i = document.createElement("source");
                                return i.src = e, i.type = n, i
                            }, t.prototype._onError = function(t) {
                                this.abort("Failed to load element using: " + t.target.nodeName)
                            }, t.prototype._onProgress = function(t) {
                                t && t.lengthComputable && this.onProgress.dispatch(this, t.loaded / t.total)
                            }, t.prototype._xhrOnError = function() {
                                var t = this.xhr;
                                this.abort(s(t) + " Request failed. Status: " + t.status + ', text: "' + t.statusText + '"')
                            }, t.prototype._xhrOnAbort = function() {
                                this.abort(s(this.xhr) + " Request was aborted by the user.")
                            }, t.prototype._xdrOnTimeout = function() {
                                this.abort(s(this.xhr) + " Request timed out.")
                            }, t.prototype._xhrOnLoad = function() {
                                var e = this.xhr,
                                    n = "",
                                    i = void 0 === e.status ? 200 : e.status;
                                if ("" !== e.responseType && "text" !== e.responseType && void 0 !== e.responseType || (n = e.responseText), 0 === i && (n.length > 0 || e.responseType === t.XHR_RESPONSE_TYPE.BUFFER) ? i = 200 : 1223 === i && (i = 204), 2 != (i / 100 | 0)) return void this.abort("[" + e.status + "] " + e.statusText + ": " + e.responseURL);
                                if (this.xhrType === t.XHR_RESPONSE_TYPE.TEXT) this.data = n, this.type = t.TYPE.TEXT;
                                else if (this.xhrType === t.XHR_RESPONSE_TYPE.JSON) try {
                                    this.data = JSON.parse(n), this.type = t.TYPE.JSON
                                } catch (t) {
                                    return void this.abort("Error trying to parse loaded json: " + t)
                                } else if (this.xhrType === t.XHR_RESPONSE_TYPE.DOCUMENT) try {
                                    if (window.DOMParser) {
                                        var r = new DOMParser;
                                        this.data = r.parseFromString(n, "text/xml")
                                    } else {
                                        var o = document.createElement("div");
                                        o.innerHTML = n, this.data = o
                                    }
                                    this.type = t.TYPE.XML
                                } catch (t) {
                                    return void this.abort("Error trying to parse loaded xml: " + t)
                                } else this.data = e.response || n;
                                this.complete()
                            }, t.prototype._determineCrossOrigin = function(t, e) {
                                if (0 === t.indexOf("data:")) return "";
                                e = e || window.location, d || (d = document.createElement("a")), d.href = t, t = (0, c.default)(d.href, {
                                    strictMode: !0
                                });
                                var n = !t.port && "" === e.port || t.port === e.port,
                                    i = t.protocol ? t.protocol + ":" : "";
                                return t.host === e.hostname && n && i === e.protocol ? "" : "anonymous"
                            }, t.prototype._determineXhrType = function() {
                                return t._xhrTypeMap[this.extension] || t.XHR_RESPONSE_TYPE.TEXT
                            }, t.prototype._determineLoadType = function() {
                                return t._loadTypeMap[this.extension] || t.LOAD_TYPE.XHR
                            }, t.prototype._getExtension = function() {
                                var t = this.url,
                                    e = "";
                                if (this.isDataUrl) {
                                    var n = t.indexOf("/");
                                    e = t.substring(n + 1, t.indexOf(";", n))
                                } else {
                                    var i = t.indexOf("?"),
                                        r = t.indexOf("#"),
                                        o = Math.min(i > -1 ? i : t.length, r > -1 ? r : t.length);
                                    t = t.substring(0, o), e = t.substring(t.lastIndexOf(".") + 1)
                                }
                                return e.toLowerCase()
                            }, t.prototype._getMimeFromXhrType = function(e) {
                                switch (e) {
                                    case t.XHR_RESPONSE_TYPE.BUFFER:
                                        return "application/octet-binary";
                                    case t.XHR_RESPONSE_TYPE.BLOB:
                                        return "application/blob";
                                    case t.XHR_RESPONSE_TYPE.DOCUMENT:
                                        return "application/xml";
                                    case t.XHR_RESPONSE_TYPE.JSON:
                                        return "application/json";
                                    case t.XHR_RESPONSE_TYPE.DEFAULT:
                                    case t.XHR_RESPONSE_TYPE.TEXT:
                                    default:
                                        return "text/plain"
                                }
                            }, l(t, [{
                                key: "isDataUrl",
                                get: function() {
                                    return this._hasFlag(t.STATUS_FLAGS.DATA_URL)
                                }
                            }, {
                                key: "isComplete",
                                get: function() {
                                    return this._hasFlag(t.STATUS_FLAGS.COMPLETE)
                                }
                            }, {
                                key: "isLoading",
                                get: function() {
                                    return this._hasFlag(t.STATUS_FLAGS.LOADING)
                                }
                            }]), t
                        }();
                    n.default = m, m.STATUS_FLAGS = {
                        NONE: 0,
                        DATA_URL: 1,
                        COMPLETE: 2,
                        LOADING: 4
                    }, m.TYPE = {
                        UNKNOWN: 0,
                        JSON: 1,
                        XML: 2,
                        IMAGE: 3,
                        AUDIO: 4,
                        VIDEO: 5,
                        TEXT: 6
                    }, m.LOAD_TYPE = {
                        XHR: 1,
                        IMAGE: 2,
                        AUDIO: 3,
                        VIDEO: 4
                    }, m.XHR_RESPONSE_TYPE = {
                        DEFAULT: "text",
                        BUFFER: "arraybuffer",
                        BLOB: "blob",
                        DOCUMENT: "document",
                        JSON: "json",
                        TEXT: "text"
                    }, m._loadTypeMap = {
                        gif: m.LOAD_TYPE.IMAGE,
                        png: m.LOAD_TYPE.IMAGE,
                        bmp: m.LOAD_TYPE.IMAGE,
                        jpg: m.LOAD_TYPE.IMAGE,
                        jpeg: m.LOAD_TYPE.IMAGE,
                        tif: m.LOAD_TYPE.IMAGE,
                        tiff: m.LOAD_TYPE.IMAGE,
                        webp: m.LOAD_TYPE.IMAGE,
                        tga: m.LOAD_TYPE.IMAGE,
                        svg: m.LOAD_TYPE.IMAGE,
                        "svg+xml": m.LOAD_TYPE.IMAGE,
                        mp3: m.LOAD_TYPE.AUDIO,
                        ogg: m.LOAD_TYPE.AUDIO,
                        wav: m.LOAD_TYPE.AUDIO,
                        mp4: m.LOAD_TYPE.VIDEO,
                        webm: m.LOAD_TYPE.VIDEO
                    }, m._xhrTypeMap = {
                        xhtml: m.XHR_RESPONSE_TYPE.DOCUMENT,
                        html: m.XHR_RESPONSE_TYPE.DOCUMENT,
                        htm: m.XHR_RESPONSE_TYPE.DOCUMENT,
                        xml: m.XHR_RESPONSE_TYPE.DOCUMENT,
                        tmx: m.XHR_RESPONSE_TYPE.DOCUMENT,
                        svg: m.XHR_RESPONSE_TYPE.DOCUMENT,
                        tsx: m.XHR_RESPONSE_TYPE.DOCUMENT,
                        gif: m.XHR_RESPONSE_TYPE.BLOB,
                        png: m.XHR_RESPONSE_TYPE.BLOB,
                        bmp: m.XHR_RESPONSE_TYPE.BLOB,
                        jpg: m.XHR_RESPONSE_TYPE.BLOB,
                        jpeg: m.XHR_RESPONSE_TYPE.BLOB,
                        tif: m.XHR_RESPONSE_TYPE.BLOB,
                        tiff: m.XHR_RESPONSE_TYPE.BLOB,
                        webp: m.XHR_RESPONSE_TYPE.BLOB,
                        tga: m.XHR_RESPONSE_TYPE.BLOB,
                        json: m.XHR_RESPONSE_TYPE.JSON,
                        text: m.XHR_RESPONSE_TYPE.TEXT,
                        txt: m.XHR_RESPONSE_TYPE.TEXT,
                        ttf: m.XHR_RESPONSE_TYPE.BUFFER,
                        otf: m.XHR_RESPONSE_TYPE.BUFFER
                    }, m.EMPTY_GIF = "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="
                }, {
                    "mini-signals": 38,
                    "parse-uri": 39
                }],
                34: [function(t, e, n) {
                    "use strict";

                    function i() {}

                    function r(t, e, n, i) {
                        var r = 0,
                            o = t.length;
                        ! function a(s) {
                            if (s || r === o) return void(n && n(s));
                            i ? setTimeout(function() {
                                e(t[r++], a)
                            }, 1) : e(t[r++], a)
                        }()
                    }

                    function o(t) {
                        return function() {
                            if (null === t) throw new Error("Callback was already called.");
                            var e = t;
                            t = null, e.apply(this, arguments)
                        }
                    }

                    function a(t, e) {
                        function n(t, e, n) {
                            if (null != n && "function" != typeof n) throw new Error("task callback must be a function");
                            if (s.started = !0, null == t && s.idle()) return void setTimeout(function() {
                                return s.drain()
                            }, 1);
                            var r = {
                                data: t,
                                callback: "function" == typeof n ? n : i
                            };
                            e ? s._tasks.unshift(r) : s._tasks.push(r), setTimeout(function() {
                                return s.process()
                            }, 1)
                        }

                        function r(t) {
                            return function() {
                                a -= 1, t.callback.apply(t, arguments), null != arguments[0] && s.error(arguments[0], t.data), a <= s.concurrency - s.buffer && s.unsaturated(), s.idle() && s.drain(), s.process()
                            }
                        }
                        if (null == e) e = 1;
                        else if (0 === e) throw new Error("Concurrency must not be zero");
                        var a = 0,
                            s = {
                                _tasks: [],
                                concurrency: e,
                                saturated: i,
                                unsaturated: i,
                                buffer: e / 4,
                                empty: i,
                                drain: i,
                                error: i,
                                started: !1,
                                paused: !1,
                                push: function(t, e) {
                                    n(t, !1, e)
                                },
                                kill: function() {
                                    a = 0, s.drain = i, s.started = !1, s._tasks = []
                                },
                                unshift: function(t, e) {
                                    n(t, !0, e)
                                },
                                process: function() {
                                    for (; !s.paused && a < s.concurrency && s._tasks.length;) {
                                        var e = s._tasks.shift();
                                        0 === s._tasks.length && s.empty(), a += 1, a === s.concurrency && s.saturated(), t(e.data, o(r(e)))
                                    }
                                },
                                length: function() {
                                    return s._tasks.length
                                },
                                running: function() {
                                    return a
                                },
                                idle: function() {
                                    return s._tasks.length + a === 0
                                },
                                pause: function() {
                                    !0 !== s.paused && (s.paused = !0)
                                },
                                resume: function() {
                                    if (!1 !== s.paused) {
                                        s.paused = !1;
                                        for (var t = 1; t <= s.concurrency; t++) s.process()
                                    }
                                }
                            };
                        return s
                    }
                    n.__esModule = !0, n.eachSeries = r, n.queue = a
                }, {}],
                35: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        for (var e = "", n = 0; n < t.length;) {
                            for (var i = [0, 0, 0], o = [0, 0, 0, 0], a = 0; a < i.length; ++a) n < t.length ? i[a] = 255 & t.charCodeAt(n++) : i[a] = 0;
                            o[0] = i[0] >> 2, o[1] = (3 & i[0]) << 4 | i[1] >> 4, o[2] = (15 & i[1]) << 2 | i[2] >> 6, o[3] = 63 & i[2];
                            switch (n - (t.length - 1)) {
                                case 2:
                                    o[3] = 64, o[2] = 64;
                                    break;
                                case 1:
                                    o[3] = 64
                            }
                            for (var s = 0; s < o.length; ++s) e += r.charAt(o[s])
                        }
                        return e
                    }
                    n.__esModule = !0, n.encodeBinary = i;
                    var r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
                }, {}],
                36: [function(t, e, n) {
                    "use strict";
                    var i = t("./Loader").default,
                        r = t("./Resource").default,
                        o = t("./async"),
                        a = t("./b64");
                    i.Resource = r, i.async = o, i.base64 = a, e.exports = i, e.exports.default = i
                }, {
                    "./Loader": 32,
                    "./Resource": 33,
                    "./async": 34,
                    "./b64": 35
                }],
                37: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r() {
                        return function(t, e) {
                            if (!t.data) return void e();
                            if (t.xhr && t.xhrType === s.default.XHR_RESPONSE_TYPE.BLOB)
                                if (window.Blob && "string" != typeof t.data) {
                                    if (0 === t.data.type.indexOf("image")) {
                                        var n = function() {
                                            var n = c.createObjectURL(t.data);
                                            return t.blob = t.data, t.data = new Image, t.data.src = n, t.type = s.default.TYPE.IMAGE, t.data.onload = function() {
                                                c.revokeObjectURL(n), t.data.onload = null, e()
                                            }, {
                                                v: void 0
                                            }
                                        }();
                                        if ("object" === (void 0 === n ? "undefined" : o(n))) return n.v
                                    }
                                } else {
                                    var i = t.xhr.getResponseHeader("content-type");
                                    if (i && 0 === i.indexOf("image")) return t.data = new Image, t.data.src = "data:" + i + ";base64," + u.default.encodeBinary(t.xhr.responseText), t.type = s.default.TYPE.IMAGE, void(t.data.onload = function() {
                                        t.data.onload = null, e()
                                    })
                                }
                            e()
                        }
                    }
                    n.__esModule = !0;
                    var o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
                        return typeof t
                    } : function(t) {
                        return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
                    };
                    n.blobMiddlewareFactory = r;
                    var a = t("../../Resource"),
                        s = i(a),
                        l = t("../../b64"),
                        u = i(l),
                        c = window.URL || window.webkitURL
                }, {
                    "../../Resource": 33,
                    "../../b64": 35
                }],
                38: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        return t._head ? (t._tail._next = e, e._prev = t._tail, t._tail = e) : (t._head = e, t._tail = e), e._owner = t, e
                    }
                    Object.defineProperty(n, "__esModule", {
                        value: !0
                    });
                    var o = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        a = function() {
                            function t(e, n, r) {
                                void 0 === n && (n = !1), i(this, t), this._fn = e, this._once = n, this._thisArg = r, this._next = this._prev = this._owner = null
                            }
                            return o(t, [{
                                key: "detach",
                                value: function() {
                                    return null !== this._owner && (this._owner.detach(this), !0)
                                }
                            }]), t
                        }(),
                        s = function() {
                            function t() {
                                i(this, t), this._head = this._tail = void 0
                            }
                            return o(t, [{
                                key: "handlers",
                                value: function() {
                                    var t = !(arguments.length <= 0 || void 0 === arguments[0]) && arguments[0],
                                        e = this._head;
                                    if (t) return !!e;
                                    for (var n = []; e;) n.push(e), e = e._next;
                                    return n
                                }
                            }, {
                                key: "has",
                                value: function(t) {
                                    if (!(t instanceof a)) throw new Error("MiniSignal#has(): First arg must be a MiniSignalBinding object.");
                                    return t._owner === this
                                }
                            }, {
                                key: "dispatch",
                                value: function() {
                                    var t = this._head;
                                    if (!t) return !1;
                                    for (; t;) t._once && this.detach(t), t._fn.apply(t._thisArg, arguments), t = t._next;
                                    return !0
                                }
                            }, {
                                key: "add",
                                value: function(t) {
                                    var e = arguments.length <= 1 || void 0 === arguments[1] ? null : arguments[1];
                                    if ("function" != typeof t) throw new Error("MiniSignal#add(): First arg must be a Function.");
                                    return r(this, new a(t, !1, e))
                                }
                            }, {
                                key: "once",
                                value: function(t) {
                                    var e = arguments.length <= 1 || void 0 === arguments[1] ? null : arguments[1];
                                    if ("function" != typeof t) throw new Error("MiniSignal#once(): First arg must be a Function.");
                                    return r(this, new a(t, !0, e))
                                }
                            }, {
                                key: "detach",
                                value: function(t) {
                                    if (!(t instanceof a)) throw new Error("MiniSignal#detach(): First arg must be a MiniSignalBinding object.");
                                    return t._owner !== this ? this : (t._prev && (t._prev._next = t._next), t._next && (t._next._prev = t._prev), t === this._head ? (this._head = t._next, null === t._next && (this._tail = null)) : t === this._tail && (this._tail = t._prev, this._tail._next = null), t._owner = null, this)
                                }
                            }, {
                                key: "detachAll",
                                value: function() {
                                    var t = this._head;
                                    if (!t) return this;
                                    for (this._head = this._tail = null; t;) t._owner = null, t = t._next;
                                    return this
                                }
                            }]), t
                        }();
                    s.MiniSignalBinding = a, n.default = s, e.exports = n.default
                }, {}],
                39: [function(t, e, n) {
                    "use strict";
                    e.exports = function(t, e) {
                        e = e || {};
                        for (var n = {
                                key: ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"],
                                q: {
                                    name: "queryKey",
                                    parser: /(?:^|&)([^&=]*)=?([^&]*)/g
                                },
                                parser: {
                                    strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
                                    loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
                                }
                            }, i = n.parser[e.strictMode ? "strict" : "loose"].exec(t), r = {}, o = 14; o--;) r[n.key[o]] = i[o] || "";
                        return r[n.q.name] = {}, r[n.key[12]].replace(n.q.parser, function(t, e, i) {
                            e && (r[n.q.name][e] = i)
                        }), r
                    }
                }, {}],
                40: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var o = t("../core"),
                        a = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(o),
                        s = t("ismobilejs"),
                        l = i(s),
                        u = t("./accessibleTarget"),
                        c = i(u);
                    a.utils.mixins.delayMixin(a.DisplayObject.prototype, c.default);
                    var h = 100,
                        p = 0,
                        f = 0,
                        d = 2,
                        m = function() {
                            function t(e) {
                                r(this, t), !l.default.tablet && !l.default.phone || navigator.isCocoonJS || this.createTouchHook();
                                var n = document.createElement("div");
                                n.style.width = h + "px", n.style.height = h + "px", n.style.position = "absolute", n.style.top = p + "px", n.style.left = f + "px", n.style.zIndex = d, this.div = n, this.pool = [], this.renderId = 0, this.debug = !1, this.renderer = e, this.children = [], this._onKeyDown = this._onKeyDown.bind(this), this._onMouseMove = this._onMouseMove.bind(this), this.isActive = !1, this.isMobileAccessabillity = !1, window.addEventListener("keydown", this._onKeyDown, !1)
                            }
                            return t.prototype.createTouchHook = function() {
                                var t = this,
                                    e = document.createElement("button");
                                e.style.width = "1px", e.style.height = "1px", e.style.position = "absolute", e.style.top = "-1000px", e.style.left = "-1000px", e.style.zIndex = 2, e.style.backgroundColor = "#FF0000", e.title = "HOOK DIV", e.addEventListener("focus", function() {
                                    t.isMobileAccessabillity = !0, t.activate(), document.body.removeChild(e)
                                }), document.body.appendChild(e)
                            }, t.prototype.activate = function() {
                                this.isActive || (this.isActive = !0, window.document.addEventListener("mousemove", this._onMouseMove, !0), window.removeEventListener("keydown", this._onKeyDown, !1), this.renderer.on("postrender", this.update, this), this.renderer.view.parentNode && this.renderer.view.parentNode.appendChild(this.div))
                            }, t.prototype.deactivate = function() {
                                this.isActive && !this.isMobileAccessabillity && (this.isActive = !1, window.document.removeEventListener("mousemove", this._onMouseMove), window.addEventListener("keydown", this._onKeyDown, !1), this.renderer.off("postrender", this.update), this.div.parentNode && this.div.parentNode.removeChild(this.div))
                            }, t.prototype.updateAccessibleObjects = function(t) {
                                if (t.visible) {
                                    t.accessible && t.interactive && (t._accessibleActive || this.addChild(t), t.renderId = this.renderId);
                                    for (var e = t.children, n = e.length - 1; n >= 0; n--) this.updateAccessibleObjects(e[n])
                                }
                            }, t.prototype.update = function() {
                                if (this.renderer.renderingToScreen) {
                                    this.updateAccessibleObjects(this.renderer._lastObjectRendered);
                                    var t = this.renderer.view.getBoundingClientRect(),
                                        e = t.width / this.renderer.width,
                                        n = t.height / this.renderer.height,
                                        i = this.div;
                                    i.style.left = t.left + "px", i.style.top = t.top + "px", i.style.width = this.renderer.width + "px", i.style.height = this.renderer.height + "px";
                                    for (var r = 0; r < this.children.length; r++) {
                                        var o = this.children[r];
                                        if (o.renderId !== this.renderId) o._accessibleActive = !1, a.utils.removeItems(this.children, r, 1), this.div.removeChild(o._accessibleDiv), this.pool.push(o._accessibleDiv), o._accessibleDiv = null, r--, 0 === this.children.length && this.deactivate();
                                        else {
                                            i = o._accessibleDiv;
                                            var s = o.hitArea,
                                                l = o.worldTransform;
                                            o.hitArea ? (i.style.left = (l.tx + s.x * l.a) * e + "px", i.style.top = (l.ty + s.y * l.d) * n + "px", i.style.width = s.width * l.a * e + "px", i.style.height = s.height * l.d * n + "px") : (s = o.getBounds(), this.capHitArea(s), i.style.left = s.x * e + "px", i.style.top = s.y * n + "px", i.style.width = s.width * e + "px", i.style.height = s.height * n + "px")
                                        }
                                    }
                                    this.renderId++
                                }
                            }, t.prototype.capHitArea = function(t) {
                                t.x < 0 && (t.width += t.x, t.x = 0), t.y < 0 && (t.height += t.y, t.y = 0), t.x + t.width > this.renderer.width && (t.width = this.renderer.width - t.x), t.y + t.height > this.renderer.height && (t.height = this.renderer.height - t.y)
                            }, t.prototype.addChild = function(t) {
                                var e = this.pool.pop();
                                e || (e = document.createElement("button"), e.style.width = h + "px", e.style.height = h + "px", e.style.backgroundColor = this.debug ? "rgba(255,0,0,0.5)" : "transparent", e.style.position = "absolute", e.style.zIndex = d, e.style.borderStyle = "none", e.addEventListener("click", this._onClick.bind(this)), e.addEventListener("focus", this._onFocus.bind(this)), e.addEventListener("focusout", this._onFocusOut.bind(this))), t.accessibleTitle ? e.title = t.accessibleTitle : t.accessibleTitle || t.accessibleHint || (e.title = "displayObject " + this.tabIndex), t.accessibleHint && e.setAttribute("aria-label", t.accessibleHint), t._accessibleActive = !0, t._accessibleDiv = e, e.displayObject = t, this.children.push(t), this.div.appendChild(t._accessibleDiv), t._accessibleDiv.tabIndex = t.tabIndex
                            }, t.prototype._onClick = function(t) {
                                var e = this.renderer.plugins.interaction;
                                e.dispatchEvent(t.target.displayObject, "click", e.eventData)
                            }, t.prototype._onFocus = function(t) {
                                var e = this.renderer.plugins.interaction;
                                e.dispatchEvent(t.target.displayObject, "mouseover", e.eventData)
                            }, t.prototype._onFocusOut = function(t) {
                                var e = this.renderer.plugins.interaction;
                                e.dispatchEvent(t.target.displayObject, "mouseout", e.eventData)
                            }, t.prototype._onKeyDown = function(t) {
                                9 === t.keyCode && this.activate()
                            }, t.prototype._onMouseMove = function() {
                                this.deactivate()
                            }, t.prototype.destroy = function() {
                                this.div = null;
                                for (var t = 0; t < this.children.length; t++) this.children[t].div = null;
                                window.document.removeEventListener("mousemove", this._onMouseMove), window.removeEventListener("keydown", this._onKeyDown), this.pool = null, this.children = null, this.renderer = null
                            }, t
                        }();
                    n.default = m, a.WebGLRenderer.registerPlugin("accessibility", m), a.CanvasRenderer.registerPlugin("accessibility", m)
                }, {
                    "../core": 65,
                    "./accessibleTarget": 41,
                    ismobilejs: 4
                }],
                41: [function(t, e, n) {
                    "use strict";
                    n.__esModule = !0, n.default = {
                        accessible: !1,
                        accessibleTitle: null,
                        accessibleHint: null,
                        tabIndex: 0,
                        _accessibleActive: !1,
                        _accessibleDiv: !1
                    }
                }, {}],
                42: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }
                    n.__esModule = !0;
                    var r = t("./accessibleTarget");
                    Object.defineProperty(n, "accessibleTarget", {
                        enumerable: !0,
                        get: function() {
                            return i(r).default
                        }
                    });
                    var o = t("./AccessibilityManager");
                    Object.defineProperty(n, "AccessibilityManager", {
                        enumerable: !0,
                        get: function() {
                            return i(o).default
                        }
                    })
                }, {
                    "./AccessibilityManager": 40,
                    "./accessibleTarget": 41
                }],
                43: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var o = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        a = t("./autoDetectRenderer"),
                        s = t("./display/Container"),
                        l = i(s),
                        u = t("./ticker"),
                        c = t("./settings"),
                        h = i(c),
                        p = t("./const"),
                        f = function() {
                            function t(e, n, i, o, s) {
                                r(this, t), "number" == typeof e && (e = Object.assign({
                                    width: e,
                                    height: n || h.default.RENDER_OPTIONS.height,
                                    forceCanvas: !!o,
                                    sharedTicker: !!s
                                }, i)), this._options = e = Object.assign({
                                    autoStart: !0,
                                    sharedTicker: !1,
                                    forceCanvas: !1,
                                    sharedLoader: !1
                                }, e), this.renderer = (0, a.autoDetectRenderer)(e), this.stage = new l.default, this._ticker = null, this.ticker = e.sharedTicker ? u.shared : new u.Ticker, e.autoStart && this.start()
                            }
                            return t.prototype.render = function() {
                                this.renderer.render(this.stage)
                            }, t.prototype.stop = function() {
                                this._ticker.stop()
                            }, t.prototype.start = function() {
                                this._ticker.start()
                            }, t.prototype.destroy = function(t) {
                                if (this._ticker) {
                                    var e = this._ticker;
                                    this.ticker = null, e.destroy()
                                }
                                this.stage.destroy(), this.stage = null, this.renderer.destroy(t), this.renderer = null, this._options = null
                            }, o(t, [{
                                key: "ticker",
                                set: function(t) {
                                    this._ticker && this._ticker.remove(this.render, this), this._ticker = t, t && t.add(this.render, this, p.UPDATE_PRIORITY.LOW)
                                },
                                get: function() {
                                    return this._ticker
                                }
                            }, {
                                key: "view",
                                get: function() {
                                    return this.renderer.view
                                }
                            }, {
                                key: "screen",
                                get: function() {
                                    return this.renderer.screen
                                }
                            }]), t
                        }();
                    n.default = f
                }, {
                    "./autoDetectRenderer": 45,
                    "./const": 46,
                    "./display/Container": 48,
                    "./settings": 101,
                    "./ticker": 121
                }],
                44: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }

                    function a(t, e) {
                        if (t instanceof Array) {
                            if ("precision" !== t[0].substring(0, 9)) {
                                var n = t.slice(0);
                                return n.unshift("precision " + e + " float;"), n
                            }
                        } else if ("precision" !== t.trim().substring(0, 9)) return "precision " + e + " float;\n" + t;
                        return t
                    }
                    n.__esModule = !0;
                    var s = t("pixi-gl-core"),
                        l = t("./settings"),
                        u = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(l),
                        c = function(t) {
                            function e(n, o, s, l, c) {
                                return i(this, e), r(this, t.call(this, n, a(o, c || u.default.PRECISION_VERTEX), a(s, c || u.default.PRECISION_FRAGMENT), void 0, l))
                            }
                            return o(e, t), e
                        }(s.GLShader);
                    n.default = c
                }, {
                    "./settings": 101,
                    "pixi-gl-core": 12
                }],
                45: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e, n, i) {
                        var r = t && t.forceCanvas;
                        return void 0 !== i && (r = i), !r && a.isWebGLSupported() ? new c.default(t, e, n) : new l.default(t, e, n)
                    }
                    n.__esModule = !0, n.autoDetectRenderer = r;
                    var o = t("./utils"),
                        a = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(o),
                        s = t("./renderers/canvas/CanvasRenderer"),
                        l = i(s),
                        u = t("./renderers/webgl/WebGLRenderer"),
                        c = i(u)
                }, {
                    "./renderers/canvas/CanvasRenderer": 77,
                    "./renderers/webgl/WebGLRenderer": 84,
                    "./utils": 125
                }],
                46: [function(t, e, n) {
                    "use strict";
                    n.__esModule = !0;
                    n.VERSION = "4.7.3", n.PI_2 = 2 * Math.PI, n.RAD_TO_DEG = 180 / Math.PI, n.DEG_TO_RAD = Math.PI / 180, n.RENDERER_TYPE = {
                        UNKNOWN: 0,
                        WEBGL: 1,
                        CANVAS: 2
                    }, n.BLEND_MODES = {
                        NORMAL: 0,
                        ADD: 1,
                        MULTIPLY: 2,
                        SCREEN: 3,
                        OVERLAY: 4,
                        DARKEN: 5,
                        LIGHTEN: 6,
                        COLOR_DODGE: 7,
                        COLOR_BURN: 8,
                        HARD_LIGHT: 9,
                        SOFT_LIGHT: 10,
                        DIFFERENCE: 11,
                        EXCLUSION: 12,
                        HUE: 13,
                        SATURATION: 14,
                        COLOR: 15,
                        LUMINOSITY: 16,
                        NORMAL_NPM: 17,
                        ADD_NPM: 18,
                        SCREEN_NPM: 19
                    }, n.DRAW_MODES = {
                        POINTS: 0,
                        LINES: 1,
                        LINE_LOOP: 2,
                        LINE_STRIP: 3,
                        TRIANGLES: 4,
                        TRIANGLE_STRIP: 5,
                        TRIANGLE_FAN: 6
                    }, n.SCALE_MODES = {
                        LINEAR: 0,
                        NEAREST: 1
                    }, n.WRAP_MODES = {
                        CLAMP: 0,
                        REPEAT: 1,
                        MIRRORED_REPEAT: 2
                    }, n.GC_MODES = {
                        AUTO: 0,
                        MANUAL: 1
                    }, n.URL_FILE_EXTENSION = /\.(\w{3,4})(?:$|\?|#)/i, n.DATA_URI = /^\s*data:(?:([\w-]+)\/([\w+.-]+))?(?:;(charset=[\w-]+|base64))?,(.*)/i, n.SVG_SIZE = /<svg[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i, n.SHAPES = {
                        POLY: 0,
                        RECT: 1,
                        CIRC: 2,
                        ELIP: 3,
                        RREC: 4
                    }, n.PRECISION = {
                        LOW: "lowp",
                        MEDIUM: "mediump",
                        HIGH: "highp"
                    }, n.TRANSFORM_MODE = {
                        STATIC: 0,
                        DYNAMIC: 1
                    }, n.TEXT_GRADIENT = {
                        LINEAR_VERTICAL: 0,
                        LINEAR_HORIZONTAL: 1
                    }, n.UPDATE_PRIORITY = {
                        INTERACTION: 50,
                        HIGH: 25,
                        NORMAL: 0,
                        LOW: -25,
                        UTILITY: -50
                    }
                }, {}],
                47: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = t("../math"),
                        o = function() {
                            function t() {
                                i(this, t), this.minX = 1 / 0, this.minY = 1 / 0, this.maxX = -1 / 0, this.maxY = -1 / 0, this.rect = null
                            }
                            return t.prototype.isEmpty = function() {
                                return this.minX > this.maxX || this.minY > this.maxY
                            }, t.prototype.clear = function() {
                                this.updateID++, this.minX = 1 / 0, this.minY = 1 / 0, this.maxX = -1 / 0, this.maxY = -1 / 0
                            }, t.prototype.getRectangle = function(t) {
                                return this.minX > this.maxX || this.minY > this.maxY ? r.Rectangle.EMPTY : (t = t || new r.Rectangle(0, 0, 1, 1), t.x = this.minX, t.y = this.minY, t.width = this.maxX - this.minX, t.height = this.maxY - this.minY, t)
                            }, t.prototype.addPoint = function(t) {
                                this.minX = Math.min(this.minX, t.x), this.maxX = Math.max(this.maxX, t.x), this.minY = Math.min(this.minY, t.y), this.maxY = Math.max(this.maxY, t.y)
                            }, t.prototype.addQuad = function(t) {
                                var e = this.minX,
                                    n = this.minY,
                                    i = this.maxX,
                                    r = this.maxY,
                                    o = t[0],
                                    a = t[1];
                                e = o < e ? o : e, n = a < n ? a : n, i = o > i ? o : i, r = a > r ? a : r, o = t[2], a = t[3], e = o < e ? o : e, n = a < n ? a : n, i = o > i ? o : i, r = a > r ? a : r, o = t[4], a = t[5], e = o < e ? o : e, n = a < n ? a : n, i = o > i ? o : i, r = a > r ? a : r, o = t[6], a = t[7], e = o < e ? o : e, n = a < n ? a : n, i = o > i ? o : i, r = a > r ? a : r, this.minX = e, this.minY = n, this.maxX = i, this.maxY = r
                            }, t.prototype.addFrame = function(t, e, n, i, r) {
                                var o = t.worldTransform,
                                    a = o.a,
                                    s = o.b,
                                    l = o.c,
                                    u = o.d,
                                    c = o.tx,
                                    h = o.ty,
                                    p = this.minX,
                                    f = this.minY,
                                    d = this.maxX,
                                    m = this.maxY,
                                    g = a * e + l * n + c,
                                    _ = s * e + u * n + h;
                                p = g < p ? g : p, f = _ < f ? _ : f, d = g > d ? g : d, m = _ > m ? _ : m, g = a * i + l * n + c, _ = s * i + u * n + h, p = g < p ? g : p, f = _ < f ? _ : f, d = g > d ? g : d, m = _ > m ? _ : m, g = a * e + l * r + c, _ = s * e + u * r + h, p = g < p ? g : p, f = _ < f ? _ : f, d = g > d ? g : d, m = _ > m ? _ : m, g = a * i + l * r + c, _ = s * i + u * r + h, p = g < p ? g : p, f = _ < f ? _ : f, d = g > d ? g : d, m = _ > m ? _ : m, this.minX = p, this.minY = f, this.maxX = d, this.maxY = m
                            }, t.prototype.addVertices = function(t, e, n, i) {
                                for (var r = t.worldTransform, o = r.a, a = r.b, s = r.c, l = r.d, u = r.tx, c = r.ty, h = this.minX, p = this.minY, f = this.maxX, d = this.maxY, m = n; m < i; m += 2) {
                                    var g = e[m],
                                        _ = e[m + 1],
                                        y = o * g + s * _ + u,
                                        v = l * _ + a * g + c;
                                    h = y < h ? y : h, p = v < p ? v : p, f = y > f ? y : f, d = v > d ? v : d
                                }
                                this.minX = h, this.minY = p, this.maxX = f, this.maxY = d
                            }, t.prototype.addBounds = function(t) {
                                var e = this.minX,
                                    n = this.minY,
                                    i = this.maxX,
                                    r = this.maxY;
                                this.minX = t.minX < e ? t.minX : e, this.minY = t.minY < n ? t.minY : n, this.maxX = t.maxX > i ? t.maxX : i, this.maxY = t.maxY > r ? t.maxY : r
                            }, t.prototype.addBoundsMask = function(t, e) {
                                var n = t.minX > e.minX ? t.minX : e.minX,
                                    i = t.minY > e.minY ? t.minY : e.minY,
                                    r = t.maxX < e.maxX ? t.maxX : e.maxX,
                                    o = t.maxY < e.maxY ? t.maxY : e.maxY;
                                if (n <= r && i <= o) {
                                    var a = this.minX,
                                        s = this.minY,
                                        l = this.maxX,
                                        u = this.maxY;
                                    this.minX = n < a ? n : a, this.minY = i < s ? i : s, this.maxX = r > l ? r : l, this.maxY = o > u ? o : u
                                }
                            }, t.prototype.addBoundsArea = function(t, e) {
                                var n = t.minX > e.x ? t.minX : e.x,
                                    i = t.minY > e.y ? t.minY : e.y,
                                    r = t.maxX < e.x + e.width ? t.maxX : e.x + e.width,
                                    o = t.maxY < e.y + e.height ? t.maxY : e.y + e.height;
                                if (n <= r && i <= o) {
                                    var a = this.minX,
                                        s = this.minY,
                                        l = this.maxX,
                                        u = this.maxY;
                                    this.minX = n < a ? n : a, this.minY = i < s ? i : s, this.maxX = r > l ? r : l, this.maxY = o > u ? o : u
                                }
                            }, t
                        }();
                    n.default = o
                }, {
                    "../math": 70
                }],
                48: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        s = t("../utils"),
                        l = t("./DisplayObject"),
                        u = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(l),
                        c = function(t) {
                            function e() {
                                i(this, e);
                                var n = r(this, t.call(this));
                                return n.children = [], n
                            }
                            return o(e, t), e.prototype.onChildrenChange = function() {}, e.prototype.addChild = function(t) {
                                var e = arguments.length;
                                if (e > 1)
                                    for (var n = 0; n < e; n++) this.addChild(arguments[n]);
                                else t.parent && t.parent.removeChild(t), t.parent = this, t.transform._parentID = -1, this.children.push(t), this._boundsID++, this.onChildrenChange(this.children.length - 1), t.emit("added", this);
                                return t
                            }, e.prototype.addChildAt = function(t, e) {
                                if (e < 0 || e > this.children.length) throw new Error(t + "addChildAt: The index " + e + " supplied is out of bounds " + this.children.length);
                                return t.parent && t.parent.removeChild(t), t.parent = this, t.transform._parentID = -1, this.children.splice(e, 0, t), this._boundsID++, this.onChildrenChange(e), t.emit("added", this), t
                            }, e.prototype.swapChildren = function(t, e) {
                                if (t !== e) {
                                    var n = this.getChildIndex(t),
                                        i = this.getChildIndex(e);
                                    this.children[n] = e, this.children[i] = t, this.onChildrenChange(n < i ? n : i)
                                }
                            }, e.prototype.getChildIndex = function(t) {
                                var e = this.children.indexOf(t);
                                if (-1 === e) throw new Error("The supplied DisplayObject must be a child of the caller");
                                return e
                            }, e.prototype.setChildIndex = function(t, e) {
                                if (e < 0 || e >= this.children.length) throw new Error("The index " + e + " supplied is out of bounds " + this.children.length);
                                var n = this.getChildIndex(t);
                                (0, s.removeItems)(this.children, n, 1), this.children.splice(e, 0, t), this.onChildrenChange(e)
                            }, e.prototype.getChildAt = function(t) {
                                if (t < 0 || t >= this.children.length) throw new Error("getChildAt: Index (" + t + ") does not exist.");
                                return this.children[t]
                            }, e.prototype.removeChild = function(t) {
                                var e = arguments.length;
                                if (e > 1)
                                    for (var n = 0; n < e; n++) this.removeChild(arguments[n]);
                                else {
                                    var i = this.children.indexOf(t);
                                    if (-1 === i) return null;
                                    t.parent = null, t.transform._parentID = -1, (0, s.removeItems)(this.children, i, 1), this._boundsID++, this.onChildrenChange(i), t.emit("removed", this)
                                }
                                return t
                            }, e.prototype.removeChildAt = function(t) {
                                var e = this.getChildAt(t);
                                return e.parent = null, e.transform._parentID = -1, (0, s.removeItems)(this.children, t, 1), this._boundsID++, this.onChildrenChange(t), e.emit("removed", this), e
                            }, e.prototype.removeChildren = function() {
                                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    e = arguments[1],
                                    n = t,
                                    i = "number" == typeof e ? e : this.children.length,
                                    r = i - n,
                                    o = void 0;
                                if (r > 0 && r <= i) {
                                    o = this.children.splice(n, r);
                                    for (var a = 0; a < o.length; ++a) o[a].parent = null, o[a].transform && (o[a].transform._parentID = -1);
                                    this._boundsID++, this.onChildrenChange(t);
                                    for (var s = 0; s < o.length; ++s) o[s].emit("removed", this);
                                    return o
                                }
                                if (0 === r && 0 === this.children.length) return [];
                                throw new RangeError("removeChildren: numeric values are outside the acceptable range.")
                            }, e.prototype.updateTransform = function() {
                                this._boundsID++, this.transform.updateTransform(this.parent.transform), this.worldAlpha = this.alpha * this.parent.worldAlpha;
                                for (var t = 0, e = this.children.length; t < e; ++t) {
                                    var n = this.children[t];
                                    n.visible && n.updateTransform()
                                }
                            }, e.prototype.calculateBounds = function() {
                                this._bounds.clear(), this._calculateBounds();
                                for (var t = 0; t < this.children.length; t++) {
                                    var e = this.children[t];
                                    e.visible && e.renderable && (e.calculateBounds(), e._mask ? (e._mask.calculateBounds(), this._bounds.addBoundsMask(e._bounds, e._mask._bounds)) : e.filterArea ? this._bounds.addBoundsArea(e._bounds, e.filterArea) : this._bounds.addBounds(e._bounds))
                                }
                                this._lastBoundsID = this._boundsID
                            }, e.prototype._calculateBounds = function() {}, e.prototype.renderWebGL = function(t) {
                                if (this.visible && !(this.worldAlpha <= 0) && this.renderable)
                                    if (this._mask || this._filters) this.renderAdvancedWebGL(t);
                                    else {
                                        this._renderWebGL(t);
                                        for (var e = 0, n = this.children.length; e < n; ++e) this.children[e].renderWebGL(t)
                                    }
                            }, e.prototype.renderAdvancedWebGL = function(t) {
                                t.flush();
                                var e = this._filters,
                                    n = this._mask;
                                if (e) {
                                    this._enabledFilters || (this._enabledFilters = []), this._enabledFilters.length = 0;
                                    for (var i = 0; i < e.length; i++) e[i].enabled && this._enabledFilters.push(e[i]);
                                    this._enabledFilters.length && t.filterManager.pushFilter(this, this._enabledFilters)
                                }
                                n && t.maskManager.pushMask(this, this._mask), this._renderWebGL(t);
                                for (var r = 0, o = this.children.length; r < o; r++) this.children[r].renderWebGL(t);
                                t.flush(), n && t.maskManager.popMask(this, this._mask), e && this._enabledFilters && this._enabledFilters.length && t.filterManager.popFilter()
                            }, e.prototype._renderWebGL = function(t) {}, e.prototype._renderCanvas = function(t) {}, e.prototype.renderCanvas = function(t) {
                                if (this.visible && !(this.worldAlpha <= 0) && this.renderable) {
                                    this._mask && t.maskManager.pushMask(this._mask), this._renderCanvas(t);
                                    for (var e = 0, n = this.children.length; e < n; ++e) this.children[e].renderCanvas(t);
                                    this._mask && t.maskManager.popMask(t)
                                }
                            }, e.prototype.destroy = function(e) {
                                t.prototype.destroy.call(this);
                                var n = "boolean" == typeof e ? e : e && e.children,
                                    i = this.removeChildren(0, this.children.length);
                                if (n)
                                    for (var r = 0; r < i.length; ++r) i[r].destroy(e)
                            }, a(e, [{
                                key: "width",
                                get: function() {
                                    return this.scale.x * this.getLocalBounds().width
                                },
                                set: function(t) {
                                    var e = this.getLocalBounds().width;
                                    this.scale.x = 0 !== e ? t / e : 1, this._width = t
                                }
                            }, {
                                key: "height",
                                get: function() {
                                    return this.scale.y * this.getLocalBounds().height
                                },
                                set: function(t) {
                                    var e = this.getLocalBounds().height;
                                    this.scale.y = 0 !== e ? t / e : 1, this._height = t
                                }
                            }]), e
                        }(u.default);
                    n.default = c, c.prototype.containerUpdateTransform = c.prototype.updateTransform
                }, {
                    "../utils": 125,
                    "./DisplayObject": 49
                }],
                49: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        l = t("eventemitter3"),
                        u = i(l),
                        c = t("../const"),
                        h = t("../settings"),
                        p = i(h),
                        f = t("./TransformStatic"),
                        d = i(f),
                        m = t("./Transform"),
                        g = i(m),
                        _ = t("./Bounds"),
                        y = i(_),
                        v = t("../math"),
                        b = function(t) {
                            function e() {
                                r(this, e);
                                var n = o(this, t.call(this)),
                                    i = p.default.TRANSFORM_MODE === c.TRANSFORM_MODE.STATIC ? d.default : g.default;
                                return n.tempDisplayObjectParent = null, n.transform = new i, n.alpha = 1, n.visible = !0, n.renderable = !0, n.parent = null, n.worldAlpha = 1, n.filterArea = null, n._filters = null, n._enabledFilters = null, n._bounds = new y.default, n._boundsID = 0, n._lastBoundsID = -1, n._boundsRect = null, n._localBoundsRect = null, n._mask = null, n._destroyed = !1, n
                            }
                            return a(e, t), e.prototype.updateTransform = function() {
                                this.transform.updateTransform(this.parent.transform), this.worldAlpha = this.alpha * this.parent.worldAlpha, this._bounds.updateID++
                            }, e.prototype._recursivePostUpdateTransform = function() {
                                this.parent ? (this.parent._recursivePostUpdateTransform(), this.transform.updateTransform(this.parent.transform)) : this.transform.updateTransform(this._tempDisplayObjectParent.transform)
                            }, e.prototype.getBounds = function(t, e) {
                                return t || (this.parent ? (this._recursivePostUpdateTransform(), this.updateTransform()) : (this.parent = this._tempDisplayObjectParent, this.updateTransform(), this.parent = null)), this._boundsID !== this._lastBoundsID && this.calculateBounds(), e || (this._boundsRect || (this._boundsRect = new v.Rectangle), e = this._boundsRect), this._bounds.getRectangle(e)
                            }, e.prototype.getLocalBounds = function(t) {
                                var e = this.transform,
                                    n = this.parent;
                                this.parent = null, this.transform = this._tempDisplayObjectParent.transform, t || (this._localBoundsRect || (this._localBoundsRect = new v.Rectangle), t = this._localBoundsRect);
                                var i = this.getBounds(!1, t);
                                return this.parent = n, this.transform = e, i
                            }, e.prototype.toGlobal = function(t, e) {
                                return arguments.length > 2 && void 0 !== arguments[2] && arguments[2] || (this._recursivePostUpdateTransform(), this.parent ? this.displayObjectUpdateTransform() : (this.parent = this._tempDisplayObjectParent, this.displayObjectUpdateTransform(), this.parent = null)), this.worldTransform.apply(t, e)
                            }, e.prototype.toLocal = function(t, e, n, i) {
                                return e && (t = e.toGlobal(t, n, i)), i || (this._recursivePostUpdateTransform(), this.parent ? this.displayObjectUpdateTransform() : (this.parent = this._tempDisplayObjectParent, this.displayObjectUpdateTransform(), this.parent = null)), this.worldTransform.applyInverse(t, n)
                            }, e.prototype.renderWebGL = function(t) {}, e.prototype.renderCanvas = function(t) {}, e.prototype.setParent = function(t) {
                                if (!t || !t.addChild) throw new Error("setParent: Argument must be a Container");
                                return t.addChild(this), t
                            }, e.prototype.setTransform = function() {
                                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
                                    n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1,
                                    i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1,
                                    r = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0,
                                    o = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0,
                                    a = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : 0,
                                    s = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : 0,
                                    l = arguments.length > 8 && void 0 !== arguments[8] ? arguments[8] : 0;
                                return this.position.x = t, this.position.y = e, this.scale.x = n || 1, this.scale.y = i || 1, this.rotation = r, this.skew.x = o, this.skew.y = a, this.pivot.x = s, this.pivot.y = l, this
                            }, e.prototype.destroy = function() {
                                this.removeAllListeners(), this.parent && this.parent.removeChild(this), this.transform = null, this.parent = null, this._bounds = null, this._currentBounds = null, this._mask = null, this.filterArea = null, this.interactive = !1, this.interactiveChildren = !1, this._destroyed = !0
                            }, s(e, [{
                                key: "_tempDisplayObjectParent",
                                get: function() {
                                    return null === this.tempDisplayObjectParent && (this.tempDisplayObjectParent = new e), this.tempDisplayObjectParent
                                }
                            }, {
                                key: "x",
                                get: function() {
                                    return this.position.x
                                },
                                set: function(t) {
                                    this.transform.position.x = t
                                }
                            }, {
                                key: "y",
                                get: function() {
                                    return this.position.y
                                },
                                set: function(t) {
                                    this.transform.position.y = t
                                }
                            }, {
                                key: "worldTransform",
                                get: function() {
                                    return this.transform.worldTransform
                                }
                            }, {
                                key: "localTransform",
                                get: function() {
                                    return this.transform.localTransform
                                }
                            }, {
                                key: "position",
                                get: function() {
                                    return this.transform.position
                                },
                                set: function(t) {
                                    this.transform.position.copy(t)
                                }
                            }, {
                                key: "scale",
                                get: function() {
                                    return this.transform.scale
                                },
                                set: function(t) {
                                    this.transform.scale.copy(t)
                                }
                            }, {
                                key: "pivot",
                                get: function() {
                                    return this.transform.pivot
                                },
                                set: function(t) {
                                    this.transform.pivot.copy(t)
                                }
                            }, {
                                key: "skew",
                                get: function() {
                                    return this.transform.skew
                                },
                                set: function(t) {
                                    this.transform.skew.copy(t)
                                }
                            }, {
                                key: "rotation",
                                get: function() {
                                    return this.transform.rotation
                                },
                                set: function(t) {
                                    this.transform.rotation = t
                                }
                            }, {
                                key: "worldVisible",
                                get: function() {
                                    var t = this;
                                    do {
                                        if (!t.visible) return !1;
                                        t = t.parent
                                    } while (t);
                                    return !0
                                }
                            }, {
                                key: "mask",
                                get: function() {
                                    return this._mask
                                },
                                set: function(t) {
                                    this._mask && (this._mask.renderable = !0, this._mask.isMask = !1), this._mask = t, this._mask && (this._mask.renderable = !1, this._mask.isMask = !0)
                                }
                            }, {
                                key: "filters",
                                get: function() {
                                    return this._filters && this._filters.slice()
                                },
                                set: function(t) {
                                    this._filters = t && t.slice()
                                }
                            }]), e
                        }(u.default);
                    n.default = b, b.prototype.displayObjectUpdateTransform = b.prototype.updateTransform
                }, {
                    "../const": 46,
                    "../math": 70,
                    "../settings": 101,
                    "./Bounds": 47,
                    "./Transform": 50,
                    "./TransformStatic": 52,
                    eventemitter3: 3
                }],
                50: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        s = t("../math"),
                        l = t("./TransformBase"),
                        u = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(l),
                        c = function(t) {
                            function e() {
                                i(this, e);
                                var n = r(this, t.call(this));
                                return n.position = new s.Point(0, 0), n.scale = new s.Point(1, 1), n.skew = new s.ObservablePoint(n.updateSkew, n, 0, 0), n.pivot = new s.Point(0, 0), n._rotation = 0, n._cx = 1, n._sx = 0, n._cy = 0, n._sy = 1, n
                            }
                            return o(e, t), e.prototype.updateSkew = function() {
                                this._cx = Math.cos(this._rotation + this.skew._y),
                                    this._sx = Math.sin(this._rotation + this.skew._y), this._cy = -Math.sin(this._rotation - this.skew._x), this._sy = Math.cos(this._rotation - this.skew._x)
                            }, e.prototype.updateLocalTransform = function() {
                                var t = this.localTransform;
                                t.a = this._cx * this.scale.x, t.b = this._sx * this.scale.x, t.c = this._cy * this.scale.y, t.d = this._sy * this.scale.y, t.tx = this.position.x - (this.pivot.x * t.a + this.pivot.y * t.c), t.ty = this.position.y - (this.pivot.x * t.b + this.pivot.y * t.d)
                            }, e.prototype.updateTransform = function(t) {
                                var e = this.localTransform;
                                e.a = this._cx * this.scale.x, e.b = this._sx * this.scale.x, e.c = this._cy * this.scale.y, e.d = this._sy * this.scale.y, e.tx = this.position.x - (this.pivot.x * e.a + this.pivot.y * e.c), e.ty = this.position.y - (this.pivot.x * e.b + this.pivot.y * e.d);
                                var n = t.worldTransform,
                                    i = this.worldTransform;
                                i.a = e.a * n.a + e.b * n.c, i.b = e.a * n.b + e.b * n.d, i.c = e.c * n.a + e.d * n.c, i.d = e.c * n.b + e.d * n.d, i.tx = e.tx * n.a + e.ty * n.c + n.tx, i.ty = e.tx * n.b + e.ty * n.d + n.ty, this._worldID++
                            }, e.prototype.setFromMatrix = function(t) {
                                t.decompose(this)
                            }, a(e, [{
                                key: "rotation",
                                get: function() {
                                    return this._rotation
                                },
                                set: function(t) {
                                    this._rotation = t, this.updateSkew()
                                }
                            }]), e
                        }(u.default);
                    n.default = c
                }, {
                    "../math": 70,
                    "./TransformBase": 51
                }],
                51: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = t("../math"),
                        o = function() {
                            function t() {
                                i(this, t), this.worldTransform = new r.Matrix, this.localTransform = new r.Matrix, this._worldID = 0, this._parentID = 0
                            }
                            return t.prototype.updateLocalTransform = function() {}, t.prototype.updateTransform = function(t) {
                                var e = t.worldTransform,
                                    n = this.worldTransform,
                                    i = this.localTransform;
                                n.a = i.a * e.a + i.b * e.c, n.b = i.a * e.b + i.b * e.d, n.c = i.c * e.a + i.d * e.c, n.d = i.c * e.b + i.d * e.d, n.tx = i.tx * e.a + i.ty * e.c + e.tx, n.ty = i.tx * e.b + i.ty * e.d + e.ty, this._worldID++
                            }, t
                        }();
                    n.default = o, o.prototype.updateWorldTransform = o.prototype.updateTransform, o.IDENTITY = new o
                }, {
                    "../math": 70
                }],
                52: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        s = t("../math"),
                        l = t("./TransformBase"),
                        u = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(l),
                        c = function(t) {
                            function e() {
                                i(this, e);
                                var n = r(this, t.call(this));
                                return n.position = new s.ObservablePoint(n.onChange, n, 0, 0), n.scale = new s.ObservablePoint(n.onChange, n, 1, 1), n.pivot = new s.ObservablePoint(n.onChange, n, 0, 0), n.skew = new s.ObservablePoint(n.updateSkew, n, 0, 0), n._rotation = 0, n._cx = 1, n._sx = 0, n._cy = 0, n._sy = 1, n._localID = 0, n._currentLocalID = 0, n
                            }
                            return o(e, t), e.prototype.onChange = function() {
                                this._localID++
                            }, e.prototype.updateSkew = function() {
                                this._cx = Math.cos(this._rotation + this.skew._y), this._sx = Math.sin(this._rotation + this.skew._y), this._cy = -Math.sin(this._rotation - this.skew._x), this._sy = Math.cos(this._rotation - this.skew._x), this._localID++
                            }, e.prototype.updateLocalTransform = function() {
                                var t = this.localTransform;
                                this._localID !== this._currentLocalID && (t.a = this._cx * this.scale._x, t.b = this._sx * this.scale._x, t.c = this._cy * this.scale._y, t.d = this._sy * this.scale._y, t.tx = this.position._x - (this.pivot._x * t.a + this.pivot._y * t.c), t.ty = this.position._y - (this.pivot._x * t.b + this.pivot._y * t.d), this._currentLocalID = this._localID, this._parentID = -1)
                            }, e.prototype.updateTransform = function(t) {
                                var e = this.localTransform;
                                if (this._localID !== this._currentLocalID && (e.a = this._cx * this.scale._x, e.b = this._sx * this.scale._x, e.c = this._cy * this.scale._y, e.d = this._sy * this.scale._y, e.tx = this.position._x - (this.pivot._x * e.a + this.pivot._y * e.c), e.ty = this.position._y - (this.pivot._x * e.b + this.pivot._y * e.d), this._currentLocalID = this._localID, this._parentID = -1), this._parentID !== t._worldID) {
                                    var n = t.worldTransform,
                                        i = this.worldTransform;
                                    i.a = e.a * n.a + e.b * n.c, i.b = e.a * n.b + e.b * n.d, i.c = e.c * n.a + e.d * n.c, i.d = e.c * n.b + e.d * n.d, i.tx = e.tx * n.a + e.ty * n.c + n.tx, i.ty = e.tx * n.b + e.ty * n.d + n.ty, this._parentID = t._worldID, this._worldID++
                                }
                            }, e.prototype.setFromMatrix = function(t) {
                                t.decompose(this), this._localID++
                            }, a(e, [{
                                key: "rotation",
                                get: function() {
                                    return this._rotation
                                },
                                set: function(t) {
                                    this._rotation = t, this.updateSkew()
                                }
                            }]), e
                        }(u.default);
                    n.default = c
                }, {
                    "../math": 70,
                    "./TransformBase": 51
                }],
                53: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = t("../display/Container"),
                        l = i(s),
                        u = t("../textures/RenderTexture"),
                        c = i(u),
                        h = t("../textures/Texture"),
                        p = i(h),
                        f = t("./GraphicsData"),
                        d = i(f),
                        m = t("../sprites/Sprite"),
                        g = i(m),
                        _ = t("../math"),
                        y = t("../utils"),
                        v = t("../const"),
                        b = t("../display/Bounds"),
                        x = i(b),
                        T = t("./utils/bezierCurveTo"),
                        w = i(T),
                        S = t("../renderers/canvas/CanvasRenderer"),
                        P = i(S),
                        M = void 0,
                        C = new _.Matrix,
                        E = new _.Point,
                        O = new Float32Array(4),
                        I = new Float32Array(4),
                        R = function(t) {
                            function e() {
                                var n = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                                r(this, e);
                                var i = o(this, t.call(this));
                                return i.fillAlpha = 1, i.lineWidth = 0, i.nativeLines = n, i.lineColor = 0, i.graphicsData = [], i.tint = 16777215, i._prevTint = 16777215, i.blendMode = v.BLEND_MODES.NORMAL, i.currentPath = null, i._webGL = {}, i.isMask = !1, i.boundsPadding = 0, i._localBounds = new x.default, i.dirty = 0, i.fastRectDirty = -1, i.clearDirty = 0, i.boundsDirty = -1, i.cachedSpriteDirty = !1, i._spriteRect = null, i._fastRect = !1, i
                            }
                            return a(e, t), e.prototype.clone = function() {
                                var t = new e;
                                t.renderable = this.renderable, t.fillAlpha = this.fillAlpha, t.lineWidth = this.lineWidth, t.lineColor = this.lineColor, t.tint = this.tint, t.blendMode = this.blendMode, t.isMask = this.isMask, t.boundsPadding = this.boundsPadding, t.dirty = 0, t.cachedSpriteDirty = this.cachedSpriteDirty;
                                for (var n = 0; n < this.graphicsData.length; ++n) t.graphicsData.push(this.graphicsData[n].clone());
                                return t.currentPath = t.graphicsData[t.graphicsData.length - 1], t.updateLocalBounds(), t
                            }, e.prototype.lineStyle = function() {
                                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
                                    n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;
                                if (this.lineWidth = t, this.lineColor = e, this.lineAlpha = n, this.currentPath)
                                    if (this.currentPath.shape.points.length) {
                                        var i = new _.Polygon(this.currentPath.shape.points.slice(-2));
                                        i.closed = !1, this.drawShape(i)
                                    } else this.currentPath.lineWidth = this.lineWidth, this.currentPath.lineColor = this.lineColor, this.currentPath.lineAlpha = this.lineAlpha;
                                return this
                            }, e.prototype.moveTo = function(t, e) {
                                var n = new _.Polygon([t, e]);
                                return n.closed = !1, this.drawShape(n), this
                            }, e.prototype.lineTo = function(t, e) {
                                return this.currentPath.shape.points.push(t, e), this.dirty++, this
                            }, e.prototype.quadraticCurveTo = function(t, e, n, i) {
                                this.currentPath ? 0 === this.currentPath.shape.points.length && (this.currentPath.shape.points = [0, 0]) : this.moveTo(0, 0);
                                var r = this.currentPath.shape.points,
                                    o = 0,
                                    a = 0;
                                0 === r.length && this.moveTo(0, 0);
                                for (var s = r[r.length - 2], l = r[r.length - 1], u = 1; u <= 20; ++u) {
                                    var c = u / 20;
                                    o = s + (t - s) * c, a = l + (e - l) * c, r.push(o + (t + (n - t) * c - o) * c, a + (e + (i - e) * c - a) * c)
                                }
                                return this.dirty++, this
                            }, e.prototype.bezierCurveTo = function(t, e, n, i, r, o) {
                                this.currentPath ? 0 === this.currentPath.shape.points.length && (this.currentPath.shape.points = [0, 0]) : this.moveTo(0, 0);
                                var a = this.currentPath.shape.points,
                                    s = a[a.length - 2],
                                    l = a[a.length - 1];
                                return a.length -= 2, (0, w.default)(s, l, t, e, n, i, r, o, a), this.dirty++, this
                            }, e.prototype.arcTo = function(t, e, n, i, r) {
                                this.currentPath ? 0 === this.currentPath.shape.points.length && this.currentPath.shape.points.push(t, e) : this.moveTo(t, e);
                                var o = this.currentPath.shape.points,
                                    a = o[o.length - 2],
                                    s = o[o.length - 1],
                                    l = s - e,
                                    u = a - t,
                                    c = i - e,
                                    h = n - t,
                                    p = Math.abs(l * h - u * c);
                                if (p < 1e-8 || 0 === r) o[o.length - 2] === t && o[o.length - 1] === e || o.push(t, e);
                                else {
                                    var f = l * l + u * u,
                                        d = c * c + h * h,
                                        m = l * c + u * h,
                                        g = r * Math.sqrt(f) / p,
                                        _ = r * Math.sqrt(d) / p,
                                        y = g * m / f,
                                        v = _ * m / d,
                                        b = g * h + _ * u,
                                        x = g * c + _ * l,
                                        T = u * (_ + y),
                                        w = l * (_ + y),
                                        S = h * (g + v),
                                        P = c * (g + v),
                                        M = Math.atan2(w - x, T - b),
                                        C = Math.atan2(P - x, S - b);
                                    this.arc(b + t, x + e, r, M, C, u * c > h * l)
                                }
                                return this.dirty++, this
                            }, e.prototype.arc = function(t, e, n, i, r) {
                                var o = arguments.length > 5 && void 0 !== arguments[5] && arguments[5];
                                if (i === r) return this;
                                !o && r <= i ? r += v.PI_2 : o && i <= r && (i += v.PI_2);
                                var a = r - i,
                                    s = 40 * Math.ceil(Math.abs(a) / v.PI_2);
                                if (0 === a) return this;
                                var l = t + Math.cos(i) * n,
                                    u = e + Math.sin(i) * n,
                                    c = this.currentPath ? this.currentPath.shape.points : null;
                                c ? c[c.length - 2] === l && c[c.length - 1] === u || c.push(l, u) : (this.moveTo(l, u), c = this.currentPath.shape.points);
                                for (var h = a / (2 * s), p = 2 * h, f = Math.cos(h), d = Math.sin(h), m = s - 1, g = m % 1 / m, _ = 0; _ <= m; ++_) {
                                    var y = _ + g * _,
                                        b = h + i + p * y,
                                        x = Math.cos(b),
                                        T = -Math.sin(b);
                                    c.push((f * x + d * T) * n + t, (f * -T + d * x) * n + e)
                                }
                                return this.dirty++, this
                            }, e.prototype.beginFill = function() {
                                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;
                                return this.filling = !0, this.fillColor = t, this.fillAlpha = e, this.currentPath && this.currentPath.shape.points.length <= 2 && (this.currentPath.fill = this.filling, this.currentPath.fillColor = this.fillColor, this.currentPath.fillAlpha = this.fillAlpha), this
                            }, e.prototype.endFill = function() {
                                return this.filling = !1, this.fillColor = null, this.fillAlpha = 1, this
                            }, e.prototype.drawRect = function(t, e, n, i) {
                                return this.drawShape(new _.Rectangle(t, e, n, i)), this
                            }, e.prototype.drawRoundedRect = function(t, e, n, i, r) {
                                return this.drawShape(new _.RoundedRectangle(t, e, n, i, r)), this
                            }, e.prototype.drawCircle = function(t, e, n) {
                                return this.drawShape(new _.Circle(t, e, n)), this
                            }, e.prototype.drawEllipse = function(t, e, n, i) {
                                return this.drawShape(new _.Ellipse(t, e, n, i)), this
                            }, e.prototype.drawPolygon = function(t) {
                                var e = t,
                                    n = !0;
                                if (e instanceof _.Polygon && (n = e.closed, e = e.points), !Array.isArray(e)) {
                                    e = new Array(arguments.length);
                                    for (var i = 0; i < e.length; ++i) e[i] = arguments[i]
                                }
                                var r = new _.Polygon(e);
                                return r.closed = n, this.drawShape(r), this
                            }, e.prototype.drawStar = function(t, e, n, i, r) {
                                var o = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0;
                                r = r || i / 2;
                                for (var a = -1 * Math.PI / 2 + o, s = 2 * n, l = v.PI_2 / s, u = [], c = 0; c < s; c++) {
                                    var h = c % 2 ? r : i,
                                        p = c * l + a;
                                    u.push(t + h * Math.cos(p), e + h * Math.sin(p))
                                }
                                return this.drawPolygon(u)
                            }, e.prototype.clear = function() {
                                return (this.lineWidth || this.filling || this.graphicsData.length > 0) && (this.lineWidth = 0, this.filling = !1, this.boundsDirty = -1, this.dirty++, this.clearDirty++, this.graphicsData.length = 0), this.currentPath = null, this._spriteRect = null, this
                            }, e.prototype.isFastRect = function() {
                                return 1 === this.graphicsData.length && this.graphicsData[0].shape.type === v.SHAPES.RECT && !this.graphicsData[0].lineWidth
                            }, e.prototype._renderWebGL = function(t) {
                                this.dirty !== this.fastRectDirty && (this.fastRectDirty = this.dirty, this._fastRect = this.isFastRect()), this._fastRect ? this._renderSpriteRect(t) : (t.setObjectRenderer(t.plugins.graphics), t.plugins.graphics.render(this))
                            }, e.prototype._renderSpriteRect = function(t) {
                                var e = this.graphicsData[0].shape;
                                this._spriteRect || (this._spriteRect = new g.default(new p.default(p.default.WHITE)));
                                var n = this._spriteRect;
                                if (16777215 === this.tint) n.tint = this.graphicsData[0].fillColor;
                                else {
                                    var i = O,
                                        r = I;
                                    (0, y.hex2rgb)(this.graphicsData[0].fillColor, i), (0, y.hex2rgb)(this.tint, r), i[0] *= r[0], i[1] *= r[1], i[2] *= r[2], n.tint = (0, y.rgb2hex)(i)
                                }
                                n.alpha = this.graphicsData[0].fillAlpha, n.worldAlpha = this.worldAlpha * n.alpha, n.blendMode = this.blendMode, n._texture._frame.width = e.width, n._texture._frame.height = e.height, n.transform.worldTransform = this.transform.worldTransform, n.anchor.set(-e.x / e.width, -e.y / e.height), n._onAnchorUpdate(), n._renderWebGL(t)
                            }, e.prototype._renderCanvas = function(t) {
                                !0 !== this.isMask && t.plugins.graphics.render(this)
                            }, e.prototype._calculateBounds = function() {
                                this.boundsDirty !== this.dirty && (this.boundsDirty = this.dirty, this.updateLocalBounds(), this.cachedSpriteDirty = !0);
                                var t = this._localBounds;
                                this._bounds.addFrame(this.transform, t.minX, t.minY, t.maxX, t.maxY)
                            }, e.prototype.containsPoint = function(t) {
                                this.worldTransform.applyInverse(t, E);
                                for (var e = this.graphicsData, n = 0; n < e.length; ++n) {
                                    var i = e[n];
                                    if (i.fill && (i.shape && i.shape.contains(E.x, E.y))) {
                                        if (i.holes)
                                            for (var r = 0; r < i.holes.length; r++) {
                                                var o = i.holes[r];
                                                if (o.contains(E.x, E.y)) return !1
                                            }
                                        return !0
                                    }
                                }
                                return !1
                            }, e.prototype.updateLocalBounds = function() {
                                var t = 1 / 0,
                                    e = -1 / 0,
                                    n = 1 / 0,
                                    i = -1 / 0;
                                if (this.graphicsData.length)
                                    for (var r = 0, o = 0, a = 0, s = 0, l = 0, u = 0; u < this.graphicsData.length; u++) {
                                        var c = this.graphicsData[u],
                                            h = c.type,
                                            p = c.lineWidth;
                                        if (r = c.shape, h === v.SHAPES.RECT || h === v.SHAPES.RREC) o = r.x - p / 2, a = r.y - p / 2, s = r.width + p, l = r.height + p, t = o < t ? o : t, e = o + s > e ? o + s : e, n = a < n ? a : n, i = a + l > i ? a + l : i;
                                        else if (h === v.SHAPES.CIRC) o = r.x, a = r.y, s = r.radius + p / 2, l = r.radius + p / 2, t = o - s < t ? o - s : t, e = o + s > e ? o + s : e, n = a - l < n ? a - l : n, i = a + l > i ? a + l : i;
                                        else if (h === v.SHAPES.ELIP) o = r.x, a = r.y, s = r.width + p / 2, l = r.height + p / 2, t = o - s < t ? o - s : t, e = o + s > e ? o + s : e, n = a - l < n ? a - l : n, i = a + l > i ? a + l : i;
                                        else
                                            for (var f = r.points, d = 0, m = 0, g = 0, _ = 0, y = 0, b = 0, x = 0, T = 0, w = 0; w + 2 < f.length; w += 2) o = f[w], a = f[w + 1], d = f[w + 2], m = f[w + 3], g = Math.abs(d - o), _ = Math.abs(m - a), l = p, (s = Math.sqrt(g * g + _ * _)) < 1e-9 || (y = (l / s * _ + g) / 2, b = (l / s * g + _) / 2, x = (d + o) / 2, T = (m + a) / 2, t = x - y < t ? x - y : t, e = x + y > e ? x + y : e, n = T - b < n ? T - b : n, i = T + b > i ? T + b : i)
                                    } else t = 0, e = 0, n = 0, i = 0;
                                var S = this.boundsPadding;
                                this._localBounds.minX = t - S, this._localBounds.maxX = e + S, this._localBounds.minY = n - S, this._localBounds.maxY = i + S
                            }, e.prototype.drawShape = function(t) {
                                this.currentPath && this.currentPath.shape.points.length <= 2 && this.graphicsData.pop(), this.currentPath = null;
                                var e = new d.default(this.lineWidth, this.lineColor, this.lineAlpha, this.fillColor, this.fillAlpha, this.filling, this.nativeLines, t);
                                return this.graphicsData.push(e), e.type === v.SHAPES.POLY && (e.shape.closed = e.shape.closed || this.filling, this.currentPath = e), this.dirty++, e
                            }, e.prototype.generateCanvasTexture = function(t) {
                                var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1,
                                    n = this.getLocalBounds(),
                                    i = c.default.create(n.width, n.height, t, e);
                                M || (M = new P.default), this.transform.updateLocalTransform(), this.transform.localTransform.copy(C), C.invert(), C.tx -= n.x, C.ty -= n.y, M.render(this, i, !0, C);
                                var r = p.default.fromCanvas(i.baseTexture._canvasRenderTarget.canvas, t, "graphics");
                                return r.baseTexture.resolution = e, r.baseTexture.update(), r
                            }, e.prototype.closePath = function() {
                                var t = this.currentPath;
                                return t && t.shape && t.shape.close(), this
                            }, e.prototype.addHole = function() {
                                var t = this.graphicsData.pop();
                                return this.currentPath = this.graphicsData[this.graphicsData.length - 1], this.currentPath.addHole(t.shape), this.currentPath = null, this
                            }, e.prototype.destroy = function(e) {
                                t.prototype.destroy.call(this, e);
                                for (var n = 0; n < this.graphicsData.length; ++n) this.graphicsData[n].destroy();
                                for (var i in this._webgl)
                                    for (var r = 0; r < this._webgl[i].data.length; ++r) this._webgl[i].data[r].destroy();
                                this._spriteRect && this._spriteRect.destroy(), this.graphicsData = null, this.currentPath = null, this._webgl = null, this._localBounds = null
                            }, e
                        }(l.default);
                    n.default = R, R._SPRITE_TEXTURE = null
                }, {
                    "../const": 46,
                    "../display/Bounds": 47,
                    "../display/Container": 48,
                    "../math": 70,
                    "../renderers/canvas/CanvasRenderer": 77,
                    "../sprites/Sprite": 102,
                    "../textures/RenderTexture": 113,
                    "../textures/Texture": 115,
                    "../utils": 125,
                    "./GraphicsData": 54,
                    "./utils/bezierCurveTo": 56
                }],
                54: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = function() {
                        function t(e, n, r, o, a, s, l, u) {
                            i(this, t), this.lineWidth = e, this.nativeLines = l, this.lineColor = n, this.lineAlpha = r, this._lineTint = n, this.fillColor = o, this.fillAlpha = a, this._fillTint = o, this.fill = s, this.holes = [], this.shape = u, this.type = u.type
                        }
                        return t.prototype.clone = function() {
                            return new t(this.lineWidth, this.lineColor, this.lineAlpha, this.fillColor, this.fillAlpha, this.fill, this.nativeLines, this.shape)
                        }, t.prototype.addHole = function(t) {
                            this.holes.push(t)
                        }, t.prototype.destroy = function() {
                            this.shape = null, this.holes = null
                        }, t
                    }();
                    n.default = r
                }, {}],
                55: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = t("../../renderers/canvas/CanvasRenderer"),
                        o = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(r),
                        a = t("../../const"),
                        s = function() {
                            function t(e) {
                                i(this, t), this.renderer = e
                            }
                            return t.prototype.render = function(t) {
                                var e = this.renderer,
                                    n = e.context,
                                    i = t.worldAlpha,
                                    r = t.transform.worldTransform,
                                    o = e.resolution;
                                this._prevTint !== this.tint && (this.dirty = !0), n.setTransform(r.a * o, r.b * o, r.c * o, r.d * o, r.tx * o, r.ty * o), t.dirty && (this.updateGraphicsTint(t), t.dirty = !1), e.setBlendMode(t.blendMode);
                                for (var s = 0; s < t.graphicsData.length; s++) {
                                    var l = t.graphicsData[s],
                                        u = l.shape,
                                        c = l._fillTint,
                                        h = l._lineTint;
                                    if (n.lineWidth = l.lineWidth, l.type === a.SHAPES.POLY) {
                                        n.beginPath(), this.renderPolygon(u.points, u.closed, n);
                                        for (var p = 0; p < l.holes.length; p++) this.renderPolygon(l.holes[p].points, !0, n);
                                        l.fill && (n.globalAlpha = l.fillAlpha * i, n.fillStyle = "#" + ("00000" + (0 | c).toString(16)).substr(-6), n.fill()), l.lineWidth && (n.globalAlpha = l.lineAlpha * i, n.strokeStyle = "#" + ("00000" + (0 | h).toString(16)).substr(-6), n.stroke())
                                    } else if (l.type === a.SHAPES.RECT)(l.fillColor || 0 === l.fillColor) && (n.globalAlpha = l.fillAlpha * i, n.fillStyle = "#" + ("00000" + (0 | c).toString(16)).substr(-6), n.fillRect(u.x, u.y, u.width, u.height)), l.lineWidth && (n.globalAlpha = l.lineAlpha * i, n.strokeStyle = "#" + ("00000" + (0 | h).toString(16)).substr(-6), n.strokeRect(u.x, u.y, u.width, u.height));
                                    else if (l.type === a.SHAPES.CIRC) n.beginPath(), n.arc(u.x, u.y, u.radius, 0, 2 * Math.PI), n.closePath(), l.fill && (n.globalAlpha = l.fillAlpha * i, n.fillStyle = "#" + ("00000" + (0 | c).toString(16)).substr(-6), n.fill()), l.lineWidth && (n.globalAlpha = l.lineAlpha * i, n.strokeStyle = "#" + ("00000" + (0 | h).toString(16)).substr(-6), n.stroke());
                                    else if (l.type === a.SHAPES.ELIP) {
                                        var f = 2 * u.width,
                                            d = 2 * u.height,
                                            m = u.x - f / 2,
                                            g = u.y - d / 2;
                                        n.beginPath();
                                        var _ = f / 2 * .5522848,
                                            y = d / 2 * .5522848,
                                            v = m + f,
                                            b = g + d,
                                            x = m + f / 2,
                                            T = g + d / 2;
                                        n.moveTo(m, T), n.bezierCurveTo(m, T - y, x - _, g, x, g), n.bezierCurveTo(x + _, g, v, T - y, v, T), n.bezierCurveTo(v, T + y, x + _, b, x, b), n.bezierCurveTo(x - _, b, m, T + y, m, T), n.closePath(), l.fill && (n.globalAlpha = l.fillAlpha * i, n.fillStyle = "#" + ("00000" + (0 | c).toString(16)).substr(-6), n.fill()), l.lineWidth && (n.globalAlpha = l.lineAlpha * i, n.strokeStyle = "#" + ("00000" + (0 | h).toString(16)).substr(-6), n.stroke())
                                    } else if (l.type === a.SHAPES.RREC) {
                                        var w = u.x,
                                            S = u.y,
                                            P = u.width,
                                            M = u.height,
                                            C = u.radius,
                                            E = Math.min(P, M) / 2 | 0;
                                        C = C > E ? E : C, n.beginPath(), n.moveTo(w, S + C), n.lineTo(w, S + M - C), n.quadraticCurveTo(w, S + M, w + C, S + M), n.lineTo(w + P - C, S + M), n.quadraticCurveTo(w + P, S + M, w + P, S + M - C), n.lineTo(w + P, S + C), n.quadraticCurveTo(w + P, S, w + P - C, S), n.lineTo(w + C, S), n.quadraticCurveTo(w, S, w, S + C), n.closePath(), (l.fillColor || 0 === l.fillColor) && (n.globalAlpha = l.fillAlpha * i, n.fillStyle = "#" + ("00000" + (0 | c).toString(16)).substr(-6), n.fill()), l.lineWidth && (n.globalAlpha = l.lineAlpha * i, n.strokeStyle = "#" + ("00000" + (0 | h).toString(16)).substr(-6), n.stroke())
                                    }
                                }
                            }, t.prototype.updateGraphicsTint = function(t) {
                                t._prevTint = t.tint;
                                for (var e = (t.tint >> 16 & 255) / 255, n = (t.tint >> 8 & 255) / 255, i = (255 & t.tint) / 255, r = 0; r < t.graphicsData.length; ++r) {
                                    var o = t.graphicsData[r],
                                        a = 0 | o.fillColor,
                                        s = 0 | o.lineColor;
                                    o._fillTint = ((a >> 16 & 255) / 255 * e * 255 << 16) + ((a >> 8 & 255) / 255 * n * 255 << 8) + (255 & a) / 255 * i * 255, o._lineTint = ((s >> 16 & 255) / 255 * e * 255 << 16) + ((s >> 8 & 255) / 255 * n * 255 << 8) + (255 & s) / 255 * i * 255
                                }
                            }, t.prototype.renderPolygon = function(t, e, n) {
                                n.moveTo(t[0], t[1]);
                                for (var i = 1; i < t.length / 2; ++i) n.lineTo(t[2 * i], t[2 * i + 1]);
                                e && n.closePath()
                            }, t.prototype.destroy = function() {
                                this.renderer = null
                            }, t
                        }();
                    n.default = s, o.default.registerPlugin("graphics", s)
                }, {
                    "../../const": 46,
                    "../../renderers/canvas/CanvasRenderer": 77
                }],
                56: [function(t, e, n) {
                    "use strict";

                    function i(t, e, n, i, r, o, a, s) {
                        var l = arguments.length > 8 && void 0 !== arguments[8] ? arguments[8] : [],
                            u = 0,
                            c = 0,
                            h = 0,
                            p = 0,
                            f = 0;
                        l.push(t, e);
                        for (var d = 1, m = 0; d <= 20; ++d) m = d / 20, u = 1 - m, c = u * u, h = c * u, p = m * m, f = p * m, l.push(h * t + 3 * c * m * n + 3 * u * p * r + f * a, h * e + 3 * c * m * i + 3 * u * p * o + f * s);
                        return l
                    }
                    n.__esModule = !0, n.default = i
                }, {}],
                57: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = t("../../utils"),
                        l = t("../../const"),
                        u = t("../../renderers/webgl/utils/ObjectRenderer"),
                        c = i(u),
                        h = t("../../renderers/webgl/WebGLRenderer"),
                        p = i(h),
                        f = t("./WebGLGraphicsData"),
                        d = i(f),
                        m = t("./shaders/PrimitiveShader"),
                        g = i(m),
                        _ = t("./utils/buildPoly"),
                        y = i(_),
                        v = t("./utils/buildRectangle"),
                        b = i(v),
                        x = t("./utils/buildRoundedRectangle"),
                        T = i(x),
                        w = t("./utils/buildCircle"),
                        S = i(w),
                        P = function(t) {
                            function e(n) {
                                r(this, e);
                                var i = o(this, t.call(this, n));
                                return i.graphicsDataPool = [], i.primitiveShader = null, i.gl = n.gl, i.CONTEXT_UID = 0, i
                            }
                            return a(e, t), e.prototype.onContextChange = function() {
                                this.gl = this.renderer.gl, this.CONTEXT_UID = this.renderer.CONTEXT_UID, this.primitiveShader = new g.default(this.gl)
                            }, e.prototype.destroy = function() {
                                c.default.prototype.destroy.call(this);
                                for (var t = 0; t < this.graphicsDataPool.length; ++t) this.graphicsDataPool[t].destroy();
                                this.graphicsDataPool = null
                            }, e.prototype.render = function(t) {
                                var e = this.renderer,
                                    n = e.gl,
                                    i = void 0,
                                    r = t._webGL[this.CONTEXT_UID];
                                r && t.dirty === r.dirty || (this.updateGraphics(t), r = t._webGL[this.CONTEXT_UID]);
                                var o = this.primitiveShader;
                                e.bindShader(o), e.state.setBlendMode(t.blendMode);
                                for (var a = 0, l = r.data.length; a < l; a++) {
                                    i = r.data[a];
                                    var u = i.shader;
                                    e.bindShader(u), u.uniforms.translationMatrix = t.transform.worldTransform.toArray(!0), u.uniforms.tint = (0, s.hex2rgb)(t.tint), u.uniforms.alpha = t.worldAlpha, e.bindVao(i.vao), i.nativeLines ? n.drawArrays(n.LINES, 0, i.points.length / 6) : i.vao.draw(n.TRIANGLE_STRIP, i.indices.length)
                                }
                            }, e.prototype.updateGraphics = function(t) {
                                var e = this.renderer.gl,
                                    n = t._webGL[this.CONTEXT_UID];
                                if (n || (n = t._webGL[this.CONTEXT_UID] = {
                                        lastIndex: 0,
                                        data: [],
                                        gl: e,
                                        clearDirty: -1,
                                        dirty: -1
                                    }), n.dirty = t.dirty, t.clearDirty !== n.clearDirty) {
                                    n.clearDirty = t.clearDirty;
                                    for (var i = 0; i < n.data.length; i++) this.graphicsDataPool.push(n.data[i]);
                                    n.data.length = 0, n.lastIndex = 0
                                }
                                for (var r = void 0, o = void 0, a = n.lastIndex; a < t.graphicsData.length; a++) {
                                    var s = t.graphicsData[a];
                                    r = this.getWebGLData(n, 0), s.nativeLines && s.lineWidth && (o = this.getWebGLData(n, 0, !0), n.lastIndex++), s.type === l.SHAPES.POLY && (0, y.default)(s, r, o), s.type === l.SHAPES.RECT ? (0, b.default)(s, r, o) : s.type === l.SHAPES.CIRC || s.type === l.SHAPES.ELIP ? (0, S.default)(s, r, o) : s.type === l.SHAPES.RREC && (0, T.default)(s, r, o), n.lastIndex++
                                }
                                this.renderer.bindVao(null);
                                for (var u = 0; u < n.data.length; u++) r = n.data[u], r.dirty && r.upload()
                            }, e.prototype.getWebGLData = function(t, e, n) {
                                var i = t.data[t.data.length - 1];
                                return (!i || i.nativeLines !== n || i.points.length > 32e4) && (i = this.graphicsDataPool.pop() || new d.default(this.renderer.gl, this.primitiveShader, this.renderer.state.attribsState), i.nativeLines = n, i.reset(e), t.data.push(i)), i.dirty = !0, i
                            }, e
                        }(c.default);
                    n.default = P, p.default.registerPlugin("graphics", P)
                }, {
                    "../../const": 46,
                    "../../renderers/webgl/WebGLRenderer": 84,
                    "../../renderers/webgl/utils/ObjectRenderer": 94,
                    "../../utils": 125,
                    "./WebGLGraphicsData": 58,
                    "./shaders/PrimitiveShader": 59,
                    "./utils/buildCircle": 60,
                    "./utils/buildPoly": 62,
                    "./utils/buildRectangle": 63,
                    "./utils/buildRoundedRectangle": 64
                }],
                58: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = t("pixi-gl-core"),
                        o = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(r),
                        a = function() {
                            function t(e, n, r) {
                                i(this, t), this.gl = e, this.color = [0, 0, 0], this.points = [], this.indices = [], this.buffer = o.default.GLBuffer.createVertexBuffer(e), this.indexBuffer = o.default.GLBuffer.createIndexBuffer(e), this.dirty = !0, this.nativeLines = !1, this.glPoints = null, this.glIndices = null, this.shader = n, this.vao = new o.default.VertexArrayObject(e, r).addIndex(this.indexBuffer).addAttribute(this.buffer, n.attributes.aVertexPosition, e.FLOAT, !1, 24, 0).addAttribute(this.buffer, n.attributes.aColor, e.FLOAT, !1, 24, 8)
                            }
                            return t.prototype.reset = function() {
                                this.points.length = 0, this.indices.length = 0
                            }, t.prototype.upload = function() {
                                this.glPoints = new Float32Array(this.points), this.buffer.upload(this.glPoints), this.glIndices = new Uint16Array(this.indices), this.indexBuffer.upload(this.glIndices), this.dirty = !1
                            }, t.prototype.destroy = function() {
                                this.color = null, this.points = null, this.indices = null, this.vao.destroy(), this.buffer.destroy(), this.indexBuffer.destroy(), this.gl = null, this.buffer = null, this.indexBuffer = null, this.glPoints = null, this.glIndices = null
                            }, t
                        }();
                    n.default = a
                }, {
                    "pixi-gl-core": 12
                }],
                59: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = t("../../../Shader"),
                        s = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(a),
                        l = function(t) {
                            function e(n) {
                                return i(this, e), r(this, t.call(this, n, ["attribute vec2 aVertexPosition;", "attribute vec4 aColor;", "uniform mat3 translationMatrix;", "uniform mat3 projectionMatrix;", "uniform float alpha;", "uniform vec3 tint;", "varying vec4 vColor;", "void main(void){", "   gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);", "   vColor = aColor * vec4(tint * alpha, alpha);", "}"].join("\n"), ["varying vec4 vColor;", "void main(void){", "   gl_FragColor = vColor;", "}"].join("\n")))
                            }
                            return o(e, t), e
                        }(s.default);
                    n.default = l
                }, {
                    "../../../Shader": 44
                }],
                60: [function(t, e, n) {
                    "use strict";

                    function i(t, e, n) {
                        var i = t.shape,
                            r = i.x,
                            l = i.y,
                            u = void 0,
                            c = void 0;
                        if (t.type === a.SHAPES.CIRC ? (u = i.radius, c = i.radius) : (u = i.width, c = i.height), 0 !== u && 0 !== c) {
                            var h = Math.floor(30 * Math.sqrt(i.radius)) || Math.floor(15 * Math.sqrt(i.width + i.height)),
                                p = 2 * Math.PI / h;
                            if (t.fill) {
                                var f = (0, s.hex2rgb)(t.fillColor),
                                    d = t.fillAlpha,
                                    m = f[0] * d,
                                    g = f[1] * d,
                                    _ = f[2] * d,
                                    y = e.points,
                                    v = e.indices,
                                    b = y.length / 6;
                                v.push(b);
                                for (var x = 0; x < h + 1; x++) y.push(r, l, m, g, _, d), y.push(r + Math.sin(p * x) * u, l + Math.cos(p * x) * c, m, g, _, d), v.push(b++, b++);
                                v.push(b - 1)
                            }
                            if (t.lineWidth) {
                                var T = t.points;
                                t.points = [];
                                for (var w = 0; w < h + 1; w++) t.points.push(r + Math.sin(p * w) * u, l + Math.cos(p * w) * c);
                                (0, o.default)(t, e, n), t.points = T
                            }
                        }
                    }
                    n.__esModule = !0, n.default = i;
                    var r = t("./buildLine"),
                        o = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(r),
                        a = t("../../../const"),
                        s = t("../../../utils")
                }, {
                    "../../../const": 46,
                    "../../../utils": 125,
                    "./buildLine": 61
                }],
                61: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        var n = t.points;
                        if (0 !== n.length) {
                            var i = new o.Point(n[0], n[1]),
                                r = new o.Point(n[n.length - 2], n[n.length - 1]);
                            if (i.x === r.x && i.y === r.y) {
                                n = n.slice(), n.pop(), n.pop(), r = new o.Point(n[n.length - 2], n[n.length - 1]);
                                var s = r.x + .5 * (i.x - r.x),
                                    l = r.y + .5 * (i.y - r.y);
                                n.unshift(s, l), n.push(s, l)
                            }
                            var u = e.points,
                                c = e.indices,
                                h = n.length / 2,
                                p = n.length,
                                f = u.length / 6,
                                d = t.lineWidth / 2,
                                m = (0, a.hex2rgb)(t.lineColor),
                                g = t.lineAlpha,
                                _ = m[0] * g,
                                y = m[1] * g,
                                v = m[2] * g,
                                b = n[0],
                                x = n[1],
                                T = n[2],
                                w = n[3],
                                S = 0,
                                P = 0,
                                M = -(x - w),
                                C = b - T,
                                E = 0,
                                O = 0,
                                I = 0,
                                R = 0,
                                A = Math.sqrt(M * M + C * C);
                            M /= A, C /= A, M *= d, C *= d, u.push(b - M, x - C, _, y, v, g), u.push(b + M, x + C, _, y, v, g);
                            for (var k = 1; k < h - 1; ++k) {
                                b = n[2 * (k - 1)], x = n[2 * (k - 1) + 1], T = n[2 * k], w = n[2 * k + 1], S = n[2 * (k + 1)], P = n[2 * (k + 1) + 1], M = -(x - w), C = b - T, A = Math.sqrt(M * M + C * C), M /= A, C /= A, M *= d, C *= d, E = -(w - P), O = T - S, A = Math.sqrt(E * E + O * O), E /= A, O /= A, E *= d, O *= d;
                                var L = -C + x - (-C + w),
                                    D = -M + T - (-M + b),
                                    B = (-M + b) * (-C + w) - (-M + T) * (-C + x),
                                    N = -O + P - (-O + w),
                                    F = -E + T - (-E + S),
                                    G = (-E + S) * (-O + w) - (-E + T) * (-O + P),
                                    U = L * F - N * D;
                                if (Math.abs(U) < .1) U += 10.1, u.push(T - M, w - C, _, y, v, g), u.push(T + M, w + C, _, y, v, g);
                                else {
                                    var j = (D * G - F * B) / U,
                                        W = (N * B - L * G) / U;
                                    (j - T) * (j - T) + (W - w) * (W - w) > 196 * d * d ? (I = M - E, R = C - O, A = Math.sqrt(I * I + R * R), I /= A, R /= A, I *= d, R *= d, u.push(T - I, w - R), u.push(_, y, v, g), u.push(T + I, w + R), u.push(_, y, v, g), u.push(T - I, w - R), u.push(_, y, v, g), p++) : (u.push(j, W), u.push(_, y, v, g), u.push(T - (j - T), w - (W - w)), u.push(_, y, v, g))
                                }
                            }
                            b = n[2 * (h - 2)], x = n[2 * (h - 2) + 1], T = n[2 * (h - 1)], w = n[2 * (h - 1) + 1], M = -(x - w), C = b - T, A = Math.sqrt(M * M + C * C), M /= A, C /= A, M *= d, C *= d, u.push(T - M, w - C), u.push(_, y, v, g), u.push(T + M, w + C), u.push(_, y, v, g), c.push(f);
                            for (var X = 0; X < p; ++X) c.push(f++);
                            c.push(f - 1)
                        }
                    }

                    function r(t, e) {
                        var n = 0,
                            i = t.points;
                        if (0 !== i.length) {
                            var r = e.points,
                                o = i.length / 2,
                                s = (0, a.hex2rgb)(t.lineColor),
                                l = t.lineAlpha,
                                u = s[0] * l,
                                c = s[1] * l,
                                h = s[2] * l;
                            for (n = 1; n < o; n++) {
                                var p = i[2 * (n - 1)],
                                    f = i[2 * (n - 1) + 1],
                                    d = i[2 * n],
                                    m = i[2 * n + 1];
                                r.push(p, f), r.push(u, c, h, l), r.push(d, m), r.push(u, c, h, l)
                            }
                        }
                    }
                    n.__esModule = !0, n.default = function(t, e, n) {
                        t.nativeLines ? r(t, n) : i(t, e)
                    };
                    var o = t("../../../math"),
                        a = t("../../../utils")
                }, {
                    "../../../math": 70,
                    "../../../utils": 125
                }],
                62: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e, n) {
                        t.points = t.shape.points.slice();
                        var i = t.points;
                        if (t.fill && i.length >= 6) {
                            for (var r = [], o = t.holes, l = 0; l < o.length; l++) {
                                var c = o[l];
                                r.push(i.length / 2), i = i.concat(c.points)
                            }
                            var h = e.points,
                                p = e.indices,
                                f = i.length / 2,
                                d = (0, s.hex2rgb)(t.fillColor),
                                m = t.fillAlpha,
                                g = d[0] * m,
                                _ = d[1] * m,
                                y = d[2] * m,
                                v = (0, u.default)(i, r, 2);
                            if (!v) return;
                            for (var b = h.length / 6, x = 0; x < v.length; x += 3) p.push(v[x] + b), p.push(v[x] + b), p.push(v[x + 1] + b), p.push(v[x + 2] + b), p.push(v[x + 2] + b);
                            for (var T = 0; T < f; T++) h.push(i[2 * T], i[2 * T + 1], g, _, y, m)
                        }
                        t.lineWidth > 0 && (0, a.default)(t, e, n)
                    }
                    n.__esModule = !0, n.default = r;
                    var o = t("./buildLine"),
                        a = i(o),
                        s = t("../../../utils"),
                        l = t("earcut"),
                        u = i(l)
                }, {
                    "../../../utils": 125,
                    "./buildLine": 61,
                    earcut: 2
                }],
                63: [function(t, e, n) {
                    "use strict";

                    function i(t, e, n) {
                        var i = t.shape,
                            r = i.x,
                            s = i.y,
                            l = i.width,
                            u = i.height;
                        if (t.fill) {
                            var c = (0, a.hex2rgb)(t.fillColor),
                                h = t.fillAlpha,
                                p = c[0] * h,
                                f = c[1] * h,
                                d = c[2] * h,
                                m = e.points,
                                g = e.indices,
                                _ = m.length / 6;
                            m.push(r, s), m.push(p, f, d, h), m.push(r + l, s), m.push(p, f, d, h), m.push(r, s + u), m.push(p, f, d, h), m.push(r + l, s + u), m.push(p, f, d, h), g.push(_, _, _ + 1, _ + 2, _ + 3, _ + 3)
                        }
                        if (t.lineWidth) {
                            var y = t.points;
                            t.points = [r, s, r + l, s, r + l, s + u, r, s + u, r, s], (0, o.default)(t, e, n), t.points = y
                        }
                    }
                    n.__esModule = !0, n.default = i;
                    var r = t("./buildLine"),
                        o = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(r),
                        a = t("../../../utils")
                }, {
                    "../../../utils": 125,
                    "./buildLine": 61
                }],
                64: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e, n) {
                        var i = t.shape,
                            r = i.x,
                            o = i.y,
                            s = i.width,
                            u = i.height,
                            p = i.radius,
                            f = [];
                        if (f.push(r, o + p), a(r, o + u - p, r, o + u, r + p, o + u, f), a(r + s - p, o + u, r + s, o + u, r + s, o + u - p, f), a(r + s, o + p, r + s, o, r + s - p, o, f), a(r + p, o, r, o, r, o + p + 1e-10, f), t.fill) {
                            for (var d = (0, h.hex2rgb)(t.fillColor), m = t.fillAlpha, g = d[0] * m, _ = d[1] * m, y = d[2] * m, v = e.points, b = e.indices, x = v.length / 6, T = (0, l.default)(f, null, 2), w = 0, S = T.length; w < S; w += 3) b.push(T[w] + x), b.push(T[w] + x), b.push(T[w + 1] + x), b.push(T[w + 2] + x), b.push(T[w + 2] + x);
                            for (var P = 0, M = f.length; P < M; P++) v.push(f[P], f[++P], g, _, y, m)
                        }
                        if (t.lineWidth) {
                            var C = t.points;
                            t.points = f, (0, c.default)(t, e, n), t.points = C
                        }
                    }

                    function o(t, e, n) {
                        return t + (e - t) * n
                    }

                    function a(t, e, n, i, r, a) {
                        for (var s = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : [], l = s, u = 0, c = 0, h = 0, p = 0, f = 0, d = 0, m = 0, g = 0; m <= 20; ++m) g = m / 20, u = o(t, n, g), c = o(e, i, g), h = o(n, r, g), p = o(i, a, g), f = o(u, h, g), d = o(c, p, g), l.push(f, d);
                        return l
                    }
                    n.__esModule = !0, n.default = r;
                    var s = t("earcut"),
                        l = i(s),
                        u = t("./buildLine"),
                        c = i(u),
                        h = t("../../../utils")
                }, {
                    "../../../utils": 125,
                    "./buildLine": 61,
                    earcut: 2
                }],
                65: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        if (t && t.__esModule) return t;
                        var e = {};
                        if (null != t)
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                        return e.default = t, e
                    }

                    function r(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }
                    n.__esModule = !0, n.autoDetectRenderer = n.Application = n.Filter = n.SpriteMaskFilter = n.Quad = n.RenderTarget = n.ObjectRenderer = n.WebGLManager = n.Shader = n.CanvasRenderTarget = n.TextureUvs = n.VideoBaseTexture = n.BaseRenderTexture = n.RenderTexture = n.BaseTexture = n.TextureMatrix = n.Texture = n.Spritesheet = n.CanvasGraphicsRenderer = n.GraphicsRenderer = n.GraphicsData = n.Graphics = n.TextMetrics = n.TextStyle = n.Text = n.SpriteRenderer = n.CanvasTinter = n.CanvasSpriteRenderer = n.Sprite = n.TransformBase = n.TransformStatic = n.Transform = n.Container = n.DisplayObject = n.Bounds = n.glCore = n.WebGLRenderer = n.CanvasRenderer = n.ticker = n.utils = n.settings = void 0;
                    var o = t("./const");
                    Object.keys(o).forEach(function(t) {
                        "default" !== t && "__esModule" !== t && Object.defineProperty(n, t, {
                            enumerable: !0,
                            get: function() {
                                return o[t]
                            }
                        })
                    });
                    var a = t("./math");
                    Object.keys(a).forEach(function(t) {
                        "default" !== t && "__esModule" !== t && Object.defineProperty(n, t, {
                            enumerable: !0,
                            get: function() {
                                return a[t]
                            }
                        })
                    });
                    var s = t("pixi-gl-core");
                    Object.defineProperty(n, "glCore", {
                        enumerable: !0,
                        get: function() {
                            return r(s).default
                        }
                    });
                    var l = t("./display/Bounds");
                    Object.defineProperty(n, "Bounds", {
                        enumerable: !0,
                        get: function() {
                            return r(l).default
                        }
                    });
                    var u = t("./display/DisplayObject");
                    Object.defineProperty(n, "DisplayObject", {
                        enumerable: !0,
                        get: function() {
                            return r(u).default
                        }
                    });
                    var c = t("./display/Container");
                    Object.defineProperty(n, "Container", {
                        enumerable: !0,
                        get: function() {
                            return r(c).default
                        }
                    });
                    var h = t("./display/Transform");
                    Object.defineProperty(n, "Transform", {
                        enumerable: !0,
                        get: function() {
                            return r(h).default
                        }
                    });
                    var p = t("./display/TransformStatic");
                    Object.defineProperty(n, "TransformStatic", {
                        enumerable: !0,
                        get: function() {
                            return r(p).default
                        }
                    });
                    var f = t("./display/TransformBase");
                    Object.defineProperty(n, "TransformBase", {
                        enumerable: !0,
                        get: function() {
                            return r(f).default
                        }
                    });
                    var d = t("./sprites/Sprite");
                    Object.defineProperty(n, "Sprite", {
                        enumerable: !0,
                        get: function() {
                            return r(d).default
                        }
                    });
                    var m = t("./sprites/canvas/CanvasSpriteRenderer");
                    Object.defineProperty(n, "CanvasSpriteRenderer", {
                        enumerable: !0,
                        get: function() {
                            return r(m).default
                        }
                    });
                    var g = t("./sprites/canvas/CanvasTinter");
                    Object.defineProperty(n, "CanvasTinter", {
                        enumerable: !0,
                        get: function() {
                            return r(g).default
                        }
                    });
                    var _ = t("./sprites/webgl/SpriteRenderer");
                    Object.defineProperty(n, "SpriteRenderer", {
                        enumerable: !0,
                        get: function() {
                            return r(_).default
                        }
                    });
                    var y = t("./text/Text");
                    Object.defineProperty(n, "Text", {
                        enumerable: !0,
                        get: function() {
                            return r(y).default
                        }
                    });
                    var v = t("./text/TextStyle");
                    Object.defineProperty(n, "TextStyle", {
                        enumerable: !0,
                        get: function() {
                            return r(v).default
                        }
                    });
                    var b = t("./text/TextMetrics");
                    Object.defineProperty(n, "TextMetrics", {
                        enumerable: !0,
                        get: function() {
                            return r(b).default
                        }
                    });
                    var x = t("./graphics/Graphics");
                    Object.defineProperty(n, "Graphics", {
                        enumerable: !0,
                        get: function() {
                            return r(x).default
                        }
                    });
                    var T = t("./graphics/GraphicsData");
                    Object.defineProperty(n, "GraphicsData", {
                        enumerable: !0,
                        get: function() {
                            return r(T).default
                        }
                    });
                    var w = t("./graphics/webgl/GraphicsRenderer");
                    Object.defineProperty(n, "GraphicsRenderer", {
                        enumerable: !0,
                        get: function() {
                            return r(w).default
                        }
                    });
                    var S = t("./graphics/canvas/CanvasGraphicsRenderer");
                    Object.defineProperty(n, "CanvasGraphicsRenderer", {
                        enumerable: !0,
                        get: function() {
                            return r(S).default
                        }
                    });
                    var P = t("./textures/Spritesheet");
                    Object.defineProperty(n, "Spritesheet", {
                        enumerable: !0,
                        get: function() {
                            return r(P).default
                        }
                    });
                    var M = t("./textures/Texture");
                    Object.defineProperty(n, "Texture", {
                        enumerable: !0,
                        get: function() {
                            return r(M).default
                        }
                    });
                    var C = t("./textures/TextureMatrix");
                    Object.defineProperty(n, "TextureMatrix", {
                        enumerable: !0,
                        get: function() {
                            return r(C).default
                        }
                    });
                    var E = t("./textures/BaseTexture");
                    Object.defineProperty(n, "BaseTexture", {
                        enumerable: !0,
                        get: function() {
                            return r(E).default
                        }
                    });
                    var O = t("./textures/RenderTexture");
                    Object.defineProperty(n, "RenderTexture", {
                        enumerable: !0,
                        get: function() {
                            return r(O).default
                        }
                    });
                    var I = t("./textures/BaseRenderTexture");
                    Object.defineProperty(n, "BaseRenderTexture", {
                        enumerable: !0,
                        get: function() {
                            return r(I).default
                        }
                    });
                    var R = t("./textures/VideoBaseTexture");
                    Object.defineProperty(n, "VideoBaseTexture", {
                        enumerable: !0,
                        get: function() {
                            return r(R).default
                        }
                    });
                    var A = t("./textures/TextureUvs");
                    Object.defineProperty(n, "TextureUvs", {
                        enumerable: !0,
                        get: function() {
                            return r(A).default
                        }
                    });
                    var k = t("./renderers/canvas/utils/CanvasRenderTarget");
                    Object.defineProperty(n, "CanvasRenderTarget", {
                        enumerable: !0,
                        get: function() {
                            return r(k).default
                        }
                    });
                    var L = t("./Shader");
                    Object.defineProperty(n, "Shader", {
                        enumerable: !0,
                        get: function() {
                            return r(L).default
                        }
                    });
                    var D = t("./renderers/webgl/managers/WebGLManager");
                    Object.defineProperty(n, "WebGLManager", {
                        enumerable: !0,
                        get: function() {
                            return r(D).default
                        }
                    });
                    var B = t("./renderers/webgl/utils/ObjectRenderer");
                    Object.defineProperty(n, "ObjectRenderer", {
                        enumerable: !0,
                        get: function() {
                            return r(B).default
                        }
                    });
                    var N = t("./renderers/webgl/utils/RenderTarget");
                    Object.defineProperty(n, "RenderTarget", {
                        enumerable: !0,
                        get: function() {
                            return r(N).default
                        }
                    });
                    var F = t("./renderers/webgl/utils/Quad");
                    Object.defineProperty(n, "Quad", {
                        enumerable: !0,
                        get: function() {
                            return r(F).default
                        }
                    });
                    var G = t("./renderers/webgl/filters/spriteMask/SpriteMaskFilter");
                    Object.defineProperty(n, "SpriteMaskFilter", {
                        enumerable: !0,
                        get: function() {
                            return r(G).default
                        }
                    });
                    var U = t("./renderers/webgl/filters/Filter");
                    Object.defineProperty(n, "Filter", {
                        enumerable: !0,
                        get: function() {
                            return r(U).default
                        }
                    });
                    var j = t("./Application");
                    Object.defineProperty(n, "Application", {
                        enumerable: !0,
                        get: function() {
                            return r(j).default
                        }
                    });
                    var W = t("./autoDetectRenderer");
                    Object.defineProperty(n, "autoDetectRenderer", {
                        enumerable: !0,
                        get: function() {
                            return W.autoDetectRenderer
                        }
                    });
                    var X = t("./utils"),
                        V = i(X),
                        H = t("./ticker"),
                        z = i(H),
                        Y = t("./settings"),
                        q = r(Y),
                        J = t("./renderers/canvas/CanvasRenderer"),
                        K = r(J),
                        $ = t("./renderers/webgl/WebGLRenderer"),
                        Z = r($);
                    n.settings = q.default, n.utils = V, n.ticker = z, n.CanvasRenderer = K.default, n.WebGLRenderer = Z.default
                }, {
                    "./Application": 43,
                    "./Shader": 44,
                    "./autoDetectRenderer": 45,
                    "./const": 46,
                    "./display/Bounds": 47,
                    "./display/Container": 48,
                    "./display/DisplayObject": 49,
                    "./display/Transform": 50,
                    "./display/TransformBase": 51,
                    "./display/TransformStatic": 52,
                    "./graphics/Graphics": 53,
                    "./graphics/GraphicsData": 54,
                    "./graphics/canvas/CanvasGraphicsRenderer": 55,
                    "./graphics/webgl/GraphicsRenderer": 57,
                    "./math": 70,
                    "./renderers/canvas/CanvasRenderer": 77,
                    "./renderers/canvas/utils/CanvasRenderTarget": 79,
                    "./renderers/webgl/WebGLRenderer": 84,
                    "./renderers/webgl/filters/Filter": 86,
                    "./renderers/webgl/filters/spriteMask/SpriteMaskFilter": 89,
                    "./renderers/webgl/managers/WebGLManager": 93,
                    "./renderers/webgl/utils/ObjectRenderer": 94,
                    "./renderers/webgl/utils/Quad": 95,
                    "./renderers/webgl/utils/RenderTarget": 96,
                    "./settings": 101,
                    "./sprites/Sprite": 102,
                    "./sprites/canvas/CanvasSpriteRenderer": 103,
                    "./sprites/canvas/CanvasTinter": 104,
                    "./sprites/webgl/SpriteRenderer": 106,
                    "./text/Text": 108,
                    "./text/TextMetrics": 109,
                    "./text/TextStyle": 110,
                    "./textures/BaseRenderTexture": 111,
                    "./textures/BaseTexture": 112,
                    "./textures/RenderTexture": 113,
                    "./textures/Spritesheet": 114,
                    "./textures/Texture": 115,
                    "./textures/TextureMatrix": 116,
                    "./textures/TextureUvs": 117,
                    "./textures/VideoBaseTexture": 118,
                    "./ticker": 121,
                    "./utils": 125,
                    "pixi-gl-core": 12
                }],
                66: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t < 0 ? -1 : t > 0 ? 1 : 0
                    }
                    n.__esModule = !0;
                    var r = t("./Matrix"),
                        o = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(r),
                        a = [1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1, 0, 1],
                        s = [0, 1, 1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1],
                        l = [0, -1, -1, -1, 0, 1, 1, 1, 0, 1, 1, 1, 0, -1, -1, -1],
                        u = [1, 1, 0, -1, -1, -1, 0, 1, -1, -1, 0, 1, 1, 1, 0, -1],
                        c = [],
                        h = [];
                    ! function() {
                        for (var t = 0; t < 16; t++) {
                            var e = [];
                            h.push(e);
                            for (var n = 0; n < 16; n++)
                                for (var r = i(a[t] * a[n] + l[t] * s[n]), p = i(s[t] * a[n] + u[t] * s[n]), f = i(a[t] * l[n] + l[t] * u[n]), d = i(s[t] * l[n] + u[t] * u[n]), m = 0; m < 16; m++)
                                    if (a[m] === r && s[m] === p && l[m] === f && u[m] === d) {
                                        e.push(m);
                                        break
                                    }
                        }
                        for (var g = 0; g < 16; g++) {
                            var _ = new o.default;
                            _.set(a[g], s[g], l[g], u[g], 0, 0), c.push(_)
                        }
                    }();
                    var p = {
                        E: 0,
                        SE: 1,
                        S: 2,
                        SW: 3,
                        W: 4,
                        NW: 5,
                        N: 6,
                        NE: 7,
                        MIRROR_VERTICAL: 8,
                        MIRROR_HORIZONTAL: 12,
                        uX: function(t) {
                            return a[t]
                        },
                        uY: function(t) {
                            return s[t]
                        },
                        vX: function(t) {
                            return l[t]
                        },
                        vY: function(t) {
                            return u[t]
                        },
                        inv: function(t) {
                            return 8 & t ? 15 & t : 7 & -t
                        },
                        add: function(t, e) {
                            return h[t][e]
                        },
                        sub: function(t, e) {
                            return h[t][p.inv(e)]
                        },
                        rotate180: function(t) {
                            return 4 ^ t
                        },
                        isVertical: function(t) {
                            return 2 == (3 & t)
                        },
                        byDirection: function(t, e) {
                            return 2 * Math.abs(t) <= Math.abs(e) ? e >= 0 ? p.S : p.N : 2 * Math.abs(e) <= Math.abs(t) ? t > 0 ? p.E : p.W : e > 0 ? t > 0 ? p.SE : p.SW : t > 0 ? p.NE : p.NW
                        },
                        matrixAppendRotationInv: function(t, e) {
                            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                                i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0,
                                r = c[p.inv(e)];
                            r.tx = n, r.ty = i, t.append(r)
                        }
                    };
                    n.default = p
                }, {
                    "./Matrix": 67
                }],
                67: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        o = t("./Point"),
                        a = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(o),
                        s = t("../const"),
                        l = function() {
                            function t() {
                                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1,
                                    n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
                                    r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                                    o = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1,
                                    a = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0,
                                    s = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0;
                                i(this, t), this.a = e, this.b = n, this.c = r, this.d = o, this.tx = a, this.ty = s, this.array = null
                            }
                            return t.prototype.fromArray = function(t) {
                                this.a = t[0], this.b = t[1], this.c = t[3], this.d = t[4], this.tx = t[2], this.ty = t[5]
                            }, t.prototype.set = function(t, e, n, i, r, o) {
                                return this.a = t, this.b = e, this.c = n, this.d = i, this.tx = r, this.ty = o, this
                            }, t.prototype.toArray = function(t, e) {
                                this.array || (this.array = new Float32Array(9));
                                var n = e || this.array;
                                return t ? (n[0] = this.a, n[1] = this.b, n[2] = 0, n[3] = this.c, n[4] = this.d, n[5] = 0, n[6] = this.tx, n[7] = this.ty, n[8] = 1) : (n[0] = this.a, n[1] = this.c, n[2] = this.tx, n[3] = this.b, n[4] = this.d, n[5] = this.ty, n[6] = 0, n[7] = 0, n[8] = 1), n
                            }, t.prototype.apply = function(t, e) {
                                e = e || new a.default;
                                var n = t.x,
                                    i = t.y;
                                return e.x = this.a * n + this.c * i + this.tx, e.y = this.b * n + this.d * i + this.ty, e
                            }, t.prototype.applyInverse = function(t, e) {
                                e = e || new a.default;
                                var n = 1 / (this.a * this.d + this.c * -this.b),
                                    i = t.x,
                                    r = t.y;
                                return e.x = this.d * n * i + -this.c * n * r + (this.ty * this.c - this.tx * this.d) * n, e.y = this.a * n * r + -this.b * n * i + (-this.ty * this.a + this.tx * this.b) * n, e
                            }, t.prototype.translate = function(t, e) {
                                return this.tx += t, this.ty += e, this
                            }, t.prototype.scale = function(t, e) {
                                return this.a *= t, this.d *= e, this.c *= t, this.b *= e, this.tx *= t, this.ty *= e, this
                            }, t.prototype.rotate = function(t) {
                                var e = Math.cos(t),
                                    n = Math.sin(t),
                                    i = this.a,
                                    r = this.c,
                                    o = this.tx;
                                return this.a = i * e - this.b * n, this.b = i * n + this.b * e, this.c = r * e - this.d * n, this.d = r * n + this.d * e, this.tx = o * e - this.ty * n, this.ty = o * n + this.ty * e, this
                            }, t.prototype.append = function(t) {
                                var e = this.a,
                                    n = this.b,
                                    i = this.c,
                                    r = this.d;
                                return this.a = t.a * e + t.b * i, this.b = t.a * n + t.b * r, this.c = t.c * e + t.d * i, this.d = t.c * n + t.d * r, this.tx = t.tx * e + t.ty * i + this.tx, this.ty = t.tx * n + t.ty * r + this.ty, this
                            }, t.prototype.setTransform = function(t, e, n, i, r, o, a, s, l) {
                                return this.a = Math.cos(a + l) * r, this.b = Math.sin(a + l) * r, this.c = -Math.sin(a - s) * o, this.d = Math.cos(a - s) * o, this.tx = t - (n * this.a + i * this.c), this.ty = e - (n * this.b + i * this.d), this
                            }, t.prototype.prepend = function(t) {
                                var e = this.tx;
                                if (1 !== t.a || 0 !== t.b || 0 !== t.c || 1 !== t.d) {
                                    var n = this.a,
                                        i = this.c;
                                    this.a = n * t.a + this.b * t.c, this.b = n * t.b + this.b * t.d, this.c = i * t.a + this.d * t.c, this.d = i * t.b + this.d * t.d
                                }
                                return this.tx = e * t.a + this.ty * t.c + t.tx, this.ty = e * t.b + this.ty * t.d + t.ty, this
                            }, t.prototype.decompose = function(t) {
                                var e = this.a,
                                    n = this.b,
                                    i = this.c,
                                    r = this.d,
                                    o = -Math.atan2(-i, r),
                                    a = Math.atan2(n, e),
                                    l = Math.abs(o + a);
                                return l < 1e-5 || Math.abs(s.PI_2 - l) < 1e-5 ? (t.rotation = a, e < 0 && r >= 0 && (t.rotation += t.rotation <= 0 ? Math.PI : -Math.PI), t.skew.x = t.skew.y = 0) : (t.rotation = 0, t.skew.x = o, t.skew.y = a), t.scale.x = Math.sqrt(e * e + n * n), t.scale.y = Math.sqrt(i * i + r * r), t.position.x = this.tx, t.position.y = this.ty, t
                            }, t.prototype.invert = function() {
                                var t = this.a,
                                    e = this.b,
                                    n = this.c,
                                    i = this.d,
                                    r = this.tx,
                                    o = t * i - e * n;
                                return this.a = i / o, this.b = -e / o, this.c = -n / o, this.d = t / o, this.tx = (n * this.ty - i * r) / o, this.ty = -(t * this.ty - e * r) / o, this
                            }, t.prototype.identity = function() {
                                return this.a = 1, this.b = 0, this.c = 0, this.d = 1, this.tx = 0, this.ty = 0, this
                            }, t.prototype.clone = function() {
                                var e = new t;
                                return e.a = this.a, e.b = this.b, e.c = this.c, e.d = this.d, e.tx = this.tx, e.ty = this.ty, e
                            }, t.prototype.copy = function(t) {
                                return t.a = this.a, t.b = this.b, t.c = this.c, t.d = this.d, t.tx = this.tx, t.ty = this.ty, t
                            }, r(t, null, [{
                                key: "IDENTITY",
                                get: function() {
                                    return new t
                                }
                            }, {
                                key: "TEMP_MATRIX",
                                get: function() {
                                    return new t
                                }
                            }]), t
                        }();
                    n.default = l
                }, {
                    "../const": 46,
                    "./Point": 69
                }],
                68: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        o = function() {
                            function t(e, n) {
                                var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                                    o = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0;
                                i(this, t), this._x = r, this._y = o, this.cb = e, this.scope = n
                            }
                            return t.prototype.set = function(t, e) {
                                var n = t || 0,
                                    i = e || (0 !== e ? n : 0);
                                this._x === n && this._y === i || (this._x = n, this._y = i, this.cb.call(this.scope))
                            }, t.prototype.copy = function(t) {
                                this._x === t.x && this._y === t.y || (this._x = t.x, this._y = t.y, this.cb.call(this.scope))
                            }, r(t, [{
                                key: "x",
                                get: function() {
                                    return this._x
                                },
                                set: function(t) {
                                    this._x !== t && (this._x = t, this.cb.call(this.scope))
                                }
                            }, {
                                key: "y",
                                get: function() {
                                    return this._y
                                },
                                set: function(t) {
                                    this._y !== t && (this._y = t, this.cb.call(this.scope))
                                }
                            }]), t
                        }();
                    n.default = o
                }, {}],
                69: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = function() {
                        function t() {
                            var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
                            i(this, t), this.x = e, this.y = n
                        }
                        return t.prototype.clone = function() {
                            return new t(this.x, this.y)
                        }, t.prototype.copy = function(t) {
                            this.set(t.x, t.y)
                        }, t.prototype.equals = function(t) {
                            return t.x === this.x && t.y === this.y
                        }, t.prototype.set = function(t, e) {
                            this.x = t || 0, this.y = e || (0 !== e ? this.x : 0)
                        }, t
                    }();
                    n.default = r
                }, {}],
                70: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }
                    n.__esModule = !0;
                    var r = t("./Point");
                    Object.defineProperty(n, "Point", {
                        enumerable: !0,
                        get: function() {
                            return i(r).default
                        }
                    });
                    var o = t("./ObservablePoint");
                    Object.defineProperty(n, "ObservablePoint", {
                        enumerable: !0,
                        get: function() {
                            return i(o).default
                        }
                    });
                    var a = t("./Matrix");
                    Object.defineProperty(n, "Matrix", {
                        enumerable: !0,
                        get: function() {
                            return i(a).default
                        }
                    });
                    var s = t("./GroupD8");
                    Object.defineProperty(n, "GroupD8", {
                        enumerable: !0,
                        get: function() {
                            return i(s).default
                        }
                    });
                    var l = t("./shapes/Circle");
                    Object.defineProperty(n, "Circle", {
                        enumerable: !0,
                        get: function() {
                            return i(l).default
                        }
                    });
                    var u = t("./shapes/Ellipse");
                    Object.defineProperty(n, "Ellipse", {
                        enumerable: !0,
                        get: function() {
                            return i(u).default
                        }
                    });
                    var c = t("./shapes/Polygon");
                    Object.defineProperty(n, "Polygon", {
                        enumerable: !0,
                        get: function() {
                            return i(c).default
                        }
                    });
                    var h = t("./shapes/Rectangle");
                    Object.defineProperty(n, "Rectangle", {
                        enumerable: !0,
                        get: function() {
                            return i(h).default
                        }
                    });
                    var p = t("./shapes/RoundedRectangle");
                    Object.defineProperty(n, "RoundedRectangle", {
                        enumerable: !0,
                        get: function() {
                            return i(p).default
                        }
                    })
                }, {
                    "./GroupD8": 66,
                    "./Matrix": 67,
                    "./ObservablePoint": 68,
                    "./Point": 69,
                    "./shapes/Circle": 71,
                    "./shapes/Ellipse": 72,
                    "./shapes/Polygon": 73,
                    "./shapes/Rectangle": 74,
                    "./shapes/RoundedRectangle": 75
                }],
                71: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = t("./Rectangle"),
                        o = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(r),
                        a = t("../../const"),
                        s = function() {
                            function t() {
                                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
                                    r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;
                                i(this, t), this.x = e, this.y = n, this.radius = r, this.type = a.SHAPES.CIRC
                            }
                            return t.prototype.clone = function() {
                                return new t(this.x, this.y, this.radius)
                            }, t.prototype.contains = function(t, e) {
                                if (this.radius <= 0) return !1;
                                var n = this.radius * this.radius,
                                    i = this.x - t,
                                    r = this.y - e;
                                return i *= i, r *= r, i + r <= n
                            }, t.prototype.getBounds = function() {
                                return new o.default(this.x - this.radius, this.y - this.radius, 2 * this.radius, 2 * this.radius)
                            }, t
                        }();
                    n.default = s
                }, {
                    "../../const": 46,
                    "./Rectangle": 74
                }],
                72: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = t("./Rectangle"),
                        o = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(r),
                        a = t("../../const"),
                        s = function() {
                            function t() {
                                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
                                    r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                                    o = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0;
                                i(this, t), this.x = e, this.y = n, this.width = r, this.height = o, this.type = a.SHAPES.ELIP
                            }
                            return t.prototype.clone = function() {
                                return new t(this.x, this.y, this.width, this.height)
                            }, t.prototype.contains = function(t, e) {
                                if (this.width <= 0 || this.height <= 0) return !1;
                                var n = (t - this.x) / this.width,
                                    i = (e - this.y) / this.height;
                                return n *= n, i *= i, n + i <= 1
                            }, t.prototype.getBounds = function() {
                                return new o.default(this.x - this.width, this.y - this.height, this.width, this.height)
                            }, t
                        }();
                    n.default = s
                }, {
                    "../../const": 46,
                    "./Rectangle": 74
                }],
                73: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = t("../Point"),
                        o = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(r),
                        a = t("../../const"),
                        s = function() {
                            function t() {
                                for (var e = arguments.length, n = Array(e), r = 0; r < e; r++) n[r] = arguments[r];
                                if (i(this, t), Array.isArray(n[0]) && (n = n[0]), n[0] instanceof o.default) {
                                    for (var s = [], l = 0, u = n.length; l < u; l++) s.push(n[l].x, n[l].y);
                                    n = s
                                }
                                this.closed = !0, this.points = n, this.type = a.SHAPES.POLY
                            }
                            return t.prototype.clone = function() {
                                return new t(this.points.slice())
                            }, t.prototype.close = function() {
                                var t = this.points;
                                t[0] === t[t.length - 2] && t[1] === t[t.length - 1] || t.push(t[0], t[1])
                            }, t.prototype.contains = function(t, e) {
                                for (var n = !1, i = this.points.length / 2, r = 0, o = i - 1; r < i; o = r++) {
                                    var a = this.points[2 * r],
                                        s = this.points[2 * r + 1],
                                        l = this.points[2 * o],
                                        u = this.points[2 * o + 1];
                                    s > e != u > e && t < (e - s) / (u - s) * (l - a) + a && (n = !n)
                                }
                                return n
                            }, t
                        }();
                    n.default = s
                }, {
                    "../../const": 46,
                    "../Point": 69
                }],
                74: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        o = t("../../const"),
                        a = function() {
                            function t() {
                                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
                                    r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                                    a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0;
                                i(this, t), this.x = Number(e), this.y = Number(n), this.width = Number(r), this.height = Number(a), this.type = o.SHAPES.RECT
                            }
                            return t.prototype.clone = function() {
                                return new t(this.x, this.y, this.width, this.height)
                            }, t.prototype.copy = function(t) {
                                return this.x = t.x, this.y = t.y, this.width = t.width, this.height = t.height, this
                            }, t.prototype.contains = function(t, e) {
                                return !(this.width <= 0 || this.height <= 0) && (t >= this.x && t < this.x + this.width && e >= this.y && e < this.y + this.height)
                            }, t.prototype.pad = function(t, e) {
                                t = t || 0, e = e || (0 !== e ? t : 0), this.x -= t, this.y -= e, this.width += 2 * t, this.height += 2 * e
                            }, t.prototype.fit = function(t) {
                                this.x < t.x && (this.width += this.x, this.width < 0 && (this.width = 0), this.x = t.x), this.y < t.y && (this.height += this.y, this.height < 0 && (this.height = 0), this.y = t.y), this.x + this.width > t.x + t.width && (this.width = t.width - this.x, this.width < 0 && (this.width = 0)), this.y + this.height > t.y + t.height && (this.height = t.height - this.y, this.height < 0 && (this.height = 0))
                            }, t.prototype.enlarge = function(t) {
                                var e = Math.min(this.x, t.x),
                                    n = Math.max(this.x + this.width, t.x + t.width),
                                    i = Math.min(this.y, t.y),
                                    r = Math.max(this.y + this.height, t.y + t.height);
                                this.x = e, this.width = n - e, this.y = i, this.height = r - i
                            }, r(t, [{
                                key: "left",
                                get: function() {
                                    return this.x
                                }
                            }, {
                                key: "right",
                                get: function() {
                                    return this.x + this.width
                                }
                            }, {
                                key: "top",
                                get: function() {
                                    return this.y
                                }
                            }, {
                                key: "bottom",
                                get: function() {
                                    return this.y + this.height
                                }
                            }], [{
                                key: "EMPTY",
                                get: function() {
                                    return new t(0, 0, 0, 0)
                                }
                            }]), t
                        }();
                    n.default = a
                }, {
                    "../../const": 46
                }],
                75: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = t("../../const"),
                        o = function() {
                            function t() {
                                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
                                    o = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                                    a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0,
                                    s = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 20;
                                i(this, t), this.x = e, this.y = n, this.width = o, this.height = a, this.radius = s, this.type = r.SHAPES.RREC
                            }
                            return t.prototype.clone = function() {
                                return new t(this.x, this.y, this.width, this.height, this.radius)
                            }, t.prototype.contains = function(t, e) {
                                if (this.width <= 0 || this.height <= 0) return !1;
                                if (t >= this.x && t <= this.x + this.width && e >= this.y && e <= this.y + this.height) {
                                    if (e >= this.y + this.radius && e <= this.y + this.height - this.radius || t >= this.x + this.radius && t <= this.x + this.width - this.radius) return !0;
                                    var n = t - (this.x + this.radius),
                                        i = e - (this.y + this.radius),
                                        r = this.radius * this.radius;
                                    if (n * n + i * i <= r) return !0;
                                    if ((n = t - (this.x + this.width - this.radius)) * n + i * i <= r) return !0;
                                    if (i = e - (this.y + this.height - this.radius), n * n + i * i <= r) return !0;
                                    if ((n = t - (this.x + this.radius)) * n + i * i <= r) return !0
                                }
                                return !1
                            }, t
                        }();
                    n.default = o
                }, {
                    "../../const": 46
                }],
                76: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        l = t("../utils"),
                        u = t("../math"),
                        c = t("../const"),
                        h = t("../settings"),
                        p = i(h),
                        f = t("../display/Container"),
                        d = i(f),
                        m = t("../textures/RenderTexture"),
                        g = i(m),
                        _ = t("eventemitter3"),
                        y = i(_),
                        v = new u.Matrix,
                        b = function(t) {
                            function e(n, i, a, s) {
                                r(this, e);
                                var h = o(this, t.call(this));
                                return (0, l.sayHello)(n), "number" == typeof i && (i = Object.assign({
                                    width: i,
                                    height: a || p.default.RENDER_OPTIONS.height
                                }, s)), i = Object.assign({}, p.default.RENDER_OPTIONS, i), h.options = i, h.type = c.RENDERER_TYPE.UNKNOWN, h.screen = new u.Rectangle(0, 0, i.width, i.height), h.view = i.view || document.createElement("canvas"), h.resolution = i.resolution || p.default.RESOLUTION, h.transparent = i.transparent, h.autoResize = i.autoResize || !1, h.blendModes = null, h.preserveDrawingBuffer = i.preserveDrawingBuffer, h.clearBeforeRender = i.clearBeforeRender, h.roundPixels = i.roundPixels, h._backgroundColor = 0, h._backgroundColorRgba = [0, 0, 0, 0], h._backgroundColorString = "#000000", h.backgroundColor = i.backgroundColor || h._backgroundColor, h._tempDisplayObjectParent = new d.default, h._lastObjectRendered = h._tempDisplayObjectParent, h
                            }
                            return a(e, t), e.prototype.resize = function(t, e) {
                                this.screen.width = t, this.screen.height = e, this.view.width = t * this.resolution, this.view.height = e * this.resolution, this.autoResize && (this.view.style.width = t + "px", this.view.style.height = e + "px")
                            }, e.prototype.generateTexture = function(t, e, n, i) {
                                i = i || t.getLocalBounds();
                                var r = g.default.create(0 | i.width, 0 | i.height, e, n);
                                return v.tx = -i.x, v.ty = -i.y, this.render(t, r, !1, v, !0), r
                            }, e.prototype.destroy = function(t) {
                                t && this.view.parentNode && this.view.parentNode.removeChild(this.view), this.type = c.RENDERER_TYPE.UNKNOWN, this.view = null, this.screen = null, this.resolution = 0, this.transparent = !1, this.autoResize = !1, this.blendModes = null, this.options = null, this.preserveDrawingBuffer = !1, this.clearBeforeRender = !1, this.roundPixels = !1, this._backgroundColor = 0, this._backgroundColorRgba = null, this._backgroundColorString = null, this._tempDisplayObjectParent = null, this._lastObjectRendered = null
                            }, s(e, [{
                                key: "width",
                                get: function() {
                                    return this.view.width
                                }
                            }, {
                                key: "height",
                                get: function() {
                                    return this.view.height
                                }
                            }, {
                                key: "backgroundColor",
                                get: function() {
                                    return this._backgroundColor
                                },
                                set: function(t) {
                                    this._backgroundColor = t, this._backgroundColorString = (0, l.hex2string)(t), (0, l.hex2rgb)(t, this._backgroundColorRgba)
                                }
                            }]), e
                        }(y.default);
                    n.default = b
                }, {
                    "../const": 46,
                    "../display/Container": 48,
                    "../math": 70,
                    "../settings": 101,
                    "../textures/RenderTexture": 113,
                    "../utils": 125,
                    eventemitter3: 3
                }],
                77: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = t("../SystemRenderer"),
                        l = i(s),
                        u = t("./utils/CanvasMaskManager"),
                        c = i(u),
                        h = t("./utils/CanvasRenderTarget"),
                        p = i(h),
                        f = t("./utils/mapCanvasBlendModesToPixi"),
                        d = i(f),
                        m = t("../../utils"),
                        g = t("../../const"),
                        _ = t("../../settings"),
                        y = i(_),
                        v = function(t) {
                            function e(n, i, a) {
                                r(this, e);
                                var s = o(this, t.call(this, "Canvas", n, i, a));
                                return s.type = g.RENDERER_TYPE.CANVAS, s.rootContext = s.view.getContext("2d", {
                                    alpha: s.transparent
                                }), s.context = s.rootContext, s.refresh = !0, s.maskManager = new c.default(s), s.smoothProperty = "imageSmoothingEnabled", s.rootContext.imageSmoothingEnabled || (s.rootContext.webkitImageSmoothingEnabled ? s.smoothProperty = "webkitImageSmoothingEnabled" : s.rootContext.mozImageSmoothingEnabled ? s.smoothProperty = "mozImageSmoothingEnabled" : s.rootContext.oImageSmoothingEnabled ? s.smoothProperty = "oImageSmoothingEnabled" : s.rootContext.msImageSmoothingEnabled && (s.smoothProperty = "msImageSmoothingEnabled")), s.initPlugins(), s.blendModes = (0, d.default)(), s._activeBlendMode = null, s.renderingToScreen = !1, s.resize(s.options.width, s.options.height), s
                            }
                            return a(e, t), e.prototype.render = function(t, e, n, i, r) {
                                if (this.view) {
                                    this.renderingToScreen = !e, this.emit("prerender");
                                    var o = this.resolution;
                                    e ? (e = e.baseTexture || e, e._canvasRenderTarget || (e._canvasRenderTarget = new p.default(e.width, e.height, e.resolution), e.source = e._canvasRenderTarget.canvas, e.valid = !0), this.context = e._canvasRenderTarget.context, this.resolution = e._canvasRenderTarget.resolution) : this.context = this.rootContext;
                                    var a = this.context;
                                    if (e || (this._lastObjectRendered = t), !r) {
                                        var s = t.parent,
                                            l = this._tempDisplayObjectParent.transform.worldTransform;
                                        i ? (i.copy(l), this._tempDisplayObjectParent.transform._worldID = -1) : l.identity(), t.parent = this._tempDisplayObjectParent, t.updateTransform(), t.parent = s
                                    }
                                    a.save(), a.setTransform(1, 0, 0, 1, 0, 0), a.globalAlpha = 1, this._activeBlendMode = g.BLEND_MODES.NORMAL, a.globalCompositeOperation = this.blendModes[g.BLEND_MODES.NORMAL], navigator.isCocoonJS && this.view.screencanvas && (a.fillStyle = "black", a.clear()), (void 0 !== n ? n : this.clearBeforeRender) && this.renderingToScreen && (this.transparent ? a.clearRect(0, 0, this.width, this.height) : (a.fillStyle = this._backgroundColorString, a.fillRect(0, 0, this.width, this.height)));
                                    var u = this.context;
                                    this.context = a, t.renderCanvas(this), this.context = u, a.restore(), this.resolution = o, this.emit("postrender")
                                }
                            }, e.prototype.clear = function(t) {
                                var e = this.context;
                                t = t || this._backgroundColorString, !this.transparent && t ? (e.fillStyle = t, e.fillRect(0, 0, this.width, this.height)) : e.clearRect(0, 0, this.width, this.height)
                            }, e.prototype.setBlendMode = function(t) {
                                this._activeBlendMode !== t && (this._activeBlendMode = t, this.context.globalCompositeOperation = this.blendModes[t])
                            }, e.prototype.destroy = function(e) {
                                this.destroyPlugins(), t.prototype.destroy.call(this, e), this.context = null, this.refresh = !0, this.maskManager.destroy(), this.maskManager = null, this.smoothProperty = null
                            }, e.prototype.resize = function(e, n) {
                                t.prototype.resize.call(this, e, n), this.smoothProperty && (this.rootContext[this.smoothProperty] = y.default.SCALE_MODE === g.SCALE_MODES.LINEAR)
                            }, e.prototype.invalidateBlendMode = function() {
                                this._activeBlendMode = this.blendModes.indexOf(this.context.globalCompositeOperation)
                            }, e
                        }(l.default);
                    n.default = v, m.pluginTarget.mixin(v)
                }, {
                    "../../const": 46,
                    "../../settings": 101,
                    "../../utils": 125,
                    "../SystemRenderer": 76,
                    "./utils/CanvasMaskManager": 78,
                    "./utils/CanvasRenderTarget": 79,
                    "./utils/mapCanvasBlendModesToPixi": 81
                }],
                78: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = t("../../../const"),
                        o = function() {
                            function t(e) {
                                i(this, t), this.renderer = e
                            }
                            return t.prototype.pushMask = function(t) {
                                var e = this.renderer;
                                e.context.save();
                                var n = t.alpha,
                                    i = t.transform.worldTransform,
                                    r = e.resolution;
                                e.context.setTransform(i.a * r, i.b * r, i.c * r, i.d * r, i.tx * r, i.ty * r), t._texture || (this.renderGraphicsShape(t), e.context.clip()), t.worldAlpha = n
                            }, t.prototype.renderGraphicsShape = function(t) {
                                var e = this.renderer.context,
                                    n = t.graphicsData.length;
                                if (0 !== n) {
                                    e.beginPath();
                                    for (var i = 0; i < n; i++) {
                                        var o = t.graphicsData[i],
                                            a = o.shape;
                                        if (o.type === r.SHAPES.POLY) {
                                            var s = a.points;
                                            e.moveTo(s[0], s[1]);
                                            for (var l = 1; l < s.length / 2; l++) e.lineTo(s[2 * l], s[2 * l + 1]);
                                            s[0] === s[s.length - 2] && s[1] === s[s.length - 1] && e.closePath()
                                        } else if (o.type === r.SHAPES.RECT) e.rect(a.x, a.y, a.width, a.height), e.closePath();
                                        else if (o.type === r.SHAPES.CIRC) e.arc(a.x, a.y, a.radius, 0, 2 * Math.PI), e.closePath();
                                        else if (o.type === r.SHAPES.ELIP) {
                                            var u = 2 * a.width,
                                                c = 2 * a.height,
                                                h = a.x - u / 2,
                                                p = a.y - c / 2,
                                                f = u / 2 * .5522848,
                                                d = c / 2 * .5522848,
                                                m = h + u,
                                                g = p + c,
                                                _ = h + u / 2,
                                                y = p + c / 2;
                                            e.moveTo(h, y), e.bezierCurveTo(h, y - d, _ - f, p, _, p), e.bezierCurveTo(_ + f, p, m, y - d, m, y), e.bezierCurveTo(m, y + d, _ + f, g, _, g), e.bezierCurveTo(_ - f, g, h, y + d, h, y), e.closePath()
                                        } else if (o.type === r.SHAPES.RREC) {
                                            var v = a.x,
                                                b = a.y,
                                                x = a.width,
                                                T = a.height,
                                                w = a.radius,
                                                S = Math.min(x, T) / 2 | 0;
                                            w = w > S ? S : w, e.moveTo(v, b + w), e.lineTo(v, b + T - w), e.quadraticCurveTo(v, b + T, v + w, b + T), e.lineTo(v + x - w, b + T), e.quadraticCurveTo(v + x, b + T, v + x, b + T - w), e.lineTo(v + x, b + w), e.quadraticCurveTo(v + x, b, v + x - w, b), e.lineTo(v + w, b), e.quadraticCurveTo(v, b, v, b + w), e.closePath()
                                        }
                                    }
                                }
                            }, t.prototype.popMask = function(t) {
                                t.context.restore(), t.invalidateBlendMode()
                            }, t.prototype.destroy = function() {}, t
                        }();
                    n.default = o
                }, {
                    "../../../const": 46
                }],
                79: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        o = t("../../../settings"),
                        a = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(o),
                        s = function() {
                            function t(e, n, r) {
                                i(this, t), this.canvas = document.createElement("canvas"), this.context = this.canvas.getContext("2d"),
                                    this.resolution = r || a.default.RESOLUTION, this.resize(e, n)
                            }
                            return t.prototype.clear = function() {
                                this.context.setTransform(1, 0, 0, 1, 0, 0), this.context.clearRect(0, 0, this.canvas.width, this.canvas.height)
                            }, t.prototype.resize = function(t, e) {
                                this.canvas.width = t * this.resolution, this.canvas.height = e * this.resolution
                            }, t.prototype.destroy = function() {
                                this.context = null, this.canvas = null
                            }, r(t, [{
                                key: "width",
                                get: function() {
                                    return this.canvas.width
                                },
                                set: function(t) {
                                    this.canvas.width = t
                                }
                            }, {
                                key: "height",
                                get: function() {
                                    return this.canvas.height
                                },
                                set: function(t) {
                                    this.canvas.height = t
                                }
                            }]), t
                        }();
                    n.default = s
                }, {
                    "../../../settings": 101
                }],
                80: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        var e = document.createElement("canvas");
                        e.width = 6, e.height = 1;
                        var n = e.getContext("2d");
                        return n.fillStyle = t, n.fillRect(0, 0, 6, 1), e
                    }

                    function r() {
                        if ("undefined" == typeof document) return !1;
                        var t = i("#ff00ff"),
                            e = i("#ffff00"),
                            n = document.createElement("canvas");
                        n.width = 6, n.height = 1;
                        var r = n.getContext("2d");
                        r.globalCompositeOperation = "multiply", r.drawImage(t, 0, 0), r.drawImage(e, 2, 0);
                        var o = r.getImageData(2, 0, 1, 1);
                        if (!o) return !1;
                        var a = o.data;
                        return 255 === a[0] && 0 === a[1] && 0 === a[2]
                    }
                    n.__esModule = !0, n.default = r
                }, {}],
                81: [function(t, e, n) {
                    "use strict";

                    function i() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
                        return (0, a.default)() ? (t[r.BLEND_MODES.NORMAL] = "source-over", t[r.BLEND_MODES.ADD] = "lighter", t[r.BLEND_MODES.MULTIPLY] = "multiply", t[r.BLEND_MODES.SCREEN] = "screen", t[r.BLEND_MODES.OVERLAY] = "overlay", t[r.BLEND_MODES.DARKEN] = "darken", t[r.BLEND_MODES.LIGHTEN] = "lighten", t[r.BLEND_MODES.COLOR_DODGE] = "color-dodge", t[r.BLEND_MODES.COLOR_BURN] = "color-burn", t[r.BLEND_MODES.HARD_LIGHT] = "hard-light", t[r.BLEND_MODES.SOFT_LIGHT] = "soft-light", t[r.BLEND_MODES.DIFFERENCE] = "difference", t[r.BLEND_MODES.EXCLUSION] = "exclusion", t[r.BLEND_MODES.HUE] = "hue", t[r.BLEND_MODES.SATURATION] = "saturate", t[r.BLEND_MODES.COLOR] = "color", t[r.BLEND_MODES.LUMINOSITY] = "luminosity") : (t[r.BLEND_MODES.NORMAL] = "source-over", t[r.BLEND_MODES.ADD] = "lighter", t[r.BLEND_MODES.MULTIPLY] = "source-over", t[r.BLEND_MODES.SCREEN] = "source-over", t[r.BLEND_MODES.OVERLAY] = "source-over", t[r.BLEND_MODES.DARKEN] = "source-over", t[r.BLEND_MODES.LIGHTEN] = "source-over", t[r.BLEND_MODES.COLOR_DODGE] = "source-over", t[r.BLEND_MODES.COLOR_BURN] = "source-over", t[r.BLEND_MODES.HARD_LIGHT] = "source-over", t[r.BLEND_MODES.SOFT_LIGHT] = "source-over", t[r.BLEND_MODES.DIFFERENCE] = "source-over", t[r.BLEND_MODES.EXCLUSION] = "source-over", t[r.BLEND_MODES.HUE] = "source-over", t[r.BLEND_MODES.SATURATION] = "source-over", t[r.BLEND_MODES.COLOR] = "source-over", t[r.BLEND_MODES.LUMINOSITY] = "source-over"), t[r.BLEND_MODES.NORMAL_NPM] = t[r.BLEND_MODES.NORMAL], t[r.BLEND_MODES.ADD_NPM] = t[r.BLEND_MODES.ADD], t[r.BLEND_MODES.SCREEN_NPM] = t[r.BLEND_MODES.SCREEN], t
                    }
                    n.__esModule = !0, n.default = i;
                    var r = t("../../../const"),
                        o = t("./canUseNewCanvasBlendModes"),
                        a = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(o)
                }, {
                    "../../../const": 46,
                    "./canUseNewCanvasBlendModes": 80
                }],
                82: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = t("../../const"),
                        o = t("../../settings"),
                        a = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(o),
                        s = function() {
                            function t(e) {
                                i(this, t), this.renderer = e, this.count = 0, this.checkCount = 0, this.maxIdle = a.default.GC_MAX_IDLE, this.checkCountMax = a.default.GC_MAX_CHECK_COUNT, this.mode = a.default.GC_MODE
                            }
                            return t.prototype.update = function() {
                                this.count++, this.mode !== r.GC_MODES.MANUAL && ++this.checkCount > this.checkCountMax && (this.checkCount = 0, this.run())
                            }, t.prototype.run = function() {
                                for (var t = this.renderer.textureManager, e = t._managedTextures, n = !1, i = 0; i < e.length; i++) {
                                    var r = e[i];
                                    !r._glRenderTargets && this.count - r.touched > this.maxIdle && (t.destroyTexture(r, !0), e[i] = null, n = !0)
                                }
                                if (n) {
                                    for (var o = 0, a = 0; a < e.length; a++) null !== e[a] && (e[o++] = e[a]);
                                    e.length = o
                                }
                            }, t.prototype.unload = function(t) {
                                var e = this.renderer.textureManager;
                                t._texture && t._texture._glRenderTargets && e.destroyTexture(t._texture, !0);
                                for (var n = t.children.length - 1; n >= 0; n--) this.unload(t.children[n])
                            }, t
                        }();
                    n.default = s
                }, {
                    "../../const": 46,
                    "../../settings": 101
                }],
                83: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = t("pixi-gl-core"),
                        o = t("../../const"),
                        a = t("./utils/RenderTarget"),
                        s = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(a),
                        l = t("../../utils"),
                        u = function() {
                            function t(e) {
                                i(this, t), this.renderer = e, this.gl = e.gl, this._managedTextures = []
                            }
                            return t.prototype.bindTexture = function() {}, t.prototype.getTexture = function() {}, t.prototype.updateTexture = function(t, e) {
                                var n = this.gl,
                                    i = !!t._glRenderTargets;
                                if (!t.hasLoaded) return null;
                                var a = this.renderer.boundTextures;
                                if (void 0 === e) {
                                    e = 0;
                                    for (var l = 0; l < a.length; ++l)
                                        if (a[l] === t) {
                                            e = l;
                                            break
                                        }
                                }
                                a[e] = t, n.activeTexture(n.TEXTURE0 + e);
                                var u = t._glTextures[this.renderer.CONTEXT_UID];
                                if (u) i ? t._glRenderTargets[this.renderer.CONTEXT_UID].resize(t.width, t.height) : u.upload(t.source);
                                else {
                                    if (i) {
                                        var c = new s.default(this.gl, t.width, t.height, t.scaleMode, t.resolution);
                                        c.resize(t.width, t.height), t._glRenderTargets[this.renderer.CONTEXT_UID] = c, u = c.texture
                                    } else u = new r.GLTexture(this.gl, null, null, null, null), u.bind(e), u.premultiplyAlpha = !0, u.upload(t.source);
                                    t._glTextures[this.renderer.CONTEXT_UID] = u, t.on("update", this.updateTexture, this), t.on("dispose", this.destroyTexture, this), this._managedTextures.push(t), t.isPowerOfTwo ? (t.mipmap && u.enableMipmap(), t.wrapMode === o.WRAP_MODES.CLAMP ? u.enableWrapClamp() : t.wrapMode === o.WRAP_MODES.REPEAT ? u.enableWrapRepeat() : u.enableWrapMirrorRepeat()) : u.enableWrapClamp(), t.scaleMode === o.SCALE_MODES.NEAREST ? u.enableNearestScaling() : u.enableLinearScaling()
                                }
                                return u
                            }, t.prototype.destroyTexture = function(t, e) {
                                if (t = t.baseTexture || t, t.hasLoaded) {
                                    var n = this.renderer.CONTEXT_UID,
                                        i = t._glTextures,
                                        r = t._glRenderTargets;
                                    if (i[n] && (this.renderer.unbindTexture(t), i[n].destroy(), t.off("update", this.updateTexture, this), t.off("dispose", this.destroyTexture, this), delete i[n], !e)) {
                                        var o = this._managedTextures.indexOf(t); - 1 !== o && (0, l.removeItems)(this._managedTextures, o, 1)
                                    }
                                    r && r[n] && (r[n].destroy(), delete r[n])
                                }
                            }, t.prototype.removeAll = function() {
                                for (var t = 0; t < this._managedTextures.length; ++t) {
                                    var e = this._managedTextures[t];
                                    e._glTextures[this.renderer.CONTEXT_UID] && delete e._glTextures[this.renderer.CONTEXT_UID]
                                }
                            }, t.prototype.destroy = function() {
                                for (var t = 0; t < this._managedTextures.length; ++t) {
                                    var e = this._managedTextures[t];
                                    this.destroyTexture(e, !0), e.off("update", this.updateTexture, this), e.off("dispose", this.destroyTexture, this)
                                }
                                this._managedTextures = null
                            }, t
                        }();
                    n.default = u
                }, {
                    "../../const": 46,
                    "../../utils": 125,
                    "./utils/RenderTarget": 96,
                    "pixi-gl-core": 12
                }],
                84: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = t("../SystemRenderer"),
                        l = i(s),
                        u = t("./managers/MaskManager"),
                        c = i(u),
                        h = t("./managers/StencilManager"),
                        p = i(h),
                        f = t("./managers/FilterManager"),
                        d = i(f),
                        m = t("./utils/RenderTarget"),
                        g = i(m),
                        _ = t("./utils/ObjectRenderer"),
                        y = i(_),
                        v = t("./TextureManager"),
                        b = i(v),
                        x = t("../../textures/BaseTexture"),
                        T = i(x),
                        w = t("./TextureGarbageCollector"),
                        S = i(w),
                        P = t("./WebGLState"),
                        M = i(P),
                        C = t("./utils/mapWebGLDrawModesToPixi"),
                        E = i(C),
                        O = t("./utils/validateContext"),
                        I = i(O),
                        R = t("../../utils"),
                        A = t("pixi-gl-core"),
                        k = i(A),
                        L = t("../../const"),
                        D = 0,
                        B = function(t) {
                            function e(n, i, a) {
                                r(this, e);
                                var s = o(this, t.call(this, "WebGL", n, i, a));
                                return s.legacy = s.options.legacy, s.legacy && (k.default.VertexArrayObject.FORCE_NATIVE = !0), s.type = L.RENDERER_TYPE.WEBGL, s.handleContextLost = s.handleContextLost.bind(s), s.handleContextRestored = s.handleContextRestored.bind(s), s.view.addEventListener("webglcontextlost", s.handleContextLost, !1), s.view.addEventListener("webglcontextrestored", s.handleContextRestored, !1), s._contextOptions = {
                                    alpha: s.transparent,
                                    antialias: s.options.antialias,
                                    premultipliedAlpha: s.transparent && "notMultiplied" !== s.transparent,
                                    stencil: !0,
                                    preserveDrawingBuffer: s.options.preserveDrawingBuffer,
                                    powerPreference: s.options.powerPreference
                                }, s._backgroundColorRgba[3] = s.transparent ? 0 : 1, s.maskManager = new c.default(s), s.stencilManager = new p.default(s), s.emptyRenderer = new y.default(s), s.currentRenderer = s.emptyRenderer, s.textureManager = null, s.filterManager = null, s.initPlugins(), s.options.context && (0, I.default)(s.options.context), s.gl = s.options.context || k.default.createContext(s.view, s._contextOptions), s.CONTEXT_UID = D++, s.state = new M.default(s.gl), s.renderingToScreen = !0, s.boundTextures = null, s._activeShader = null, s._activeVao = null, s._activeRenderTarget = null, s._initContext(), s.drawModes = (0, E.default)(s.gl), s._nextTextureLocation = 0, s.setBlendMode(0), s
                            }
                            return a(e, t), e.prototype._initContext = function() {
                                var t = this.gl;
                                t.isContextLost() && t.getExtension("WEBGL_lose_context") && t.getExtension("WEBGL_lose_context").restoreContext();
                                var e = t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS);
                                this._activeShader = null, this._activeVao = null, this.boundTextures = new Array(e), this.emptyTextures = new Array(e), this.textureManager = new b.default(this), this.filterManager = new d.default(this), this.textureGC = new S.default(this), this.state.resetToDefault(), this.rootRenderTarget = new g.default(t, this.width, this.height, null, this.resolution, !0), this.rootRenderTarget.clearColor = this._backgroundColorRgba, this.bindRenderTarget(this.rootRenderTarget);
                                var n = new k.default.GLTexture.fromData(t, null, 1, 1),
                                    i = {
                                        _glTextures: {}
                                    };
                                i._glTextures[this.CONTEXT_UID] = {};
                                for (var r = 0; r < e; r++) {
                                    var o = new T.default;
                                    o._glTextures[this.CONTEXT_UID] = n, this.boundTextures[r] = i, this.emptyTextures[r] = o, this.bindTexture(null, r)
                                }
                                this.emit("context", t), this.resize(this.screen.width, this.screen.height)
                            }, e.prototype.render = function(t, e, n, i, r) {
                                if (this.renderingToScreen = !e, this.emit("prerender"), this.gl && !this.gl.isContextLost()) {
                                    if (this._nextTextureLocation = 0, e || (this._lastObjectRendered = t), !r) {
                                        var o = t.parent;
                                        t.parent = this._tempDisplayObjectParent, t.updateTransform(), t.parent = o
                                    }
                                    this.bindRenderTexture(e, i), this.currentRenderer.start(), (void 0 !== n ? n : this.clearBeforeRender) && this._activeRenderTarget.clear(), t.renderWebGL(this), this.currentRenderer.flush(), this.textureGC.update(), this.emit("postrender")
                                }
                            }, e.prototype.setObjectRenderer = function(t) {
                                this.currentRenderer !== t && (this.currentRenderer.stop(), this.currentRenderer = t, this.currentRenderer.start())
                            }, e.prototype.flush = function() {
                                this.setObjectRenderer(this.emptyRenderer)
                            }, e.prototype.resize = function(t, e) {
                                l.default.prototype.resize.call(this, t, e), this.rootRenderTarget.resize(t, e), this._activeRenderTarget === this.rootRenderTarget && (this.rootRenderTarget.activate(), this._activeShader && (this._activeShader.uniforms.projectionMatrix = this.rootRenderTarget.projectionMatrix.toArray(!0)))
                            }, e.prototype.setBlendMode = function(t) {
                                this.state.setBlendMode(t)
                            }, e.prototype.clear = function(t) {
                                this._activeRenderTarget.clear(t)
                            }, e.prototype.setTransform = function(t) {
                                this._activeRenderTarget.transform = t
                            }, e.prototype.clearRenderTexture = function(t, e) {
                                var n = t.baseTexture,
                                    i = n._glRenderTargets[this.CONTEXT_UID];
                                return i && i.clear(e), this
                            }, e.prototype.bindRenderTexture = function(t, e) {
                                var n = void 0;
                                if (t) {
                                    var i = t.baseTexture;
                                    i._glRenderTargets[this.CONTEXT_UID] || this.textureManager.updateTexture(i, 0), this.unbindTexture(i), n = i._glRenderTargets[this.CONTEXT_UID], n.setFrame(t.frame)
                                } else n = this.rootRenderTarget;
                                return n.transform = e, this.bindRenderTarget(n), this
                            }, e.prototype.bindRenderTarget = function(t) {
                                return t !== this._activeRenderTarget && (this._activeRenderTarget = t, t.activate(), this._activeShader && (this._activeShader.uniforms.projectionMatrix = t.projectionMatrix.toArray(!0)), this.stencilManager.setMaskStack(t.stencilMaskStack)), this
                            }, e.prototype.bindShader = function(t, e) {
                                return this._activeShader !== t && (this._activeShader = t, t.bind(), !1 !== e && (t.uniforms.projectionMatrix = this._activeRenderTarget.projectionMatrix.toArray(!0))), this
                            }, e.prototype.bindTexture = function(t, e, n) {
                                if (t = t || this.emptyTextures[e], t = t.baseTexture || t, t.touched = this.textureGC.count, n) e = e || 0;
                                else {
                                    for (var i = 0; i < this.boundTextures.length; i++)
                                        if (this.boundTextures[i] === t) return i;
                                    void 0 === e && (this._nextTextureLocation++, this._nextTextureLocation %= this.boundTextures.length, e = this.boundTextures.length - this._nextTextureLocation - 1)
                                }
                                var r = this.gl,
                                    o = t._glTextures[this.CONTEXT_UID];
                                return o ? (this.boundTextures[e] = t, r.activeTexture(r.TEXTURE0 + e), r.bindTexture(r.TEXTURE_2D, o.texture)) : this.textureManager.updateTexture(t, e), e
                            }, e.prototype.unbindTexture = function(t) {
                                var e = this.gl;
                                t = t.baseTexture || t;
                                for (var n = 0; n < this.boundTextures.length; n++) this.boundTextures[n] === t && (this.boundTextures[n] = this.emptyTextures[n], e.activeTexture(e.TEXTURE0 + n), e.bindTexture(e.TEXTURE_2D, this.emptyTextures[n]._glTextures[this.CONTEXT_UID].texture));
                                return this
                            }, e.prototype.createVao = function() {
                                return new k.default.VertexArrayObject(this.gl, this.state.attribState)
                            }, e.prototype.bindVao = function(t) {
                                return this._activeVao === t ? this : (t ? t.bind() : this._activeVao && this._activeVao.unbind(), this._activeVao = t, this)
                            }, e.prototype.reset = function() {
                                this.setObjectRenderer(this.emptyRenderer), this.bindVao(null), this._activeShader = null, this._activeRenderTarget = this.rootRenderTarget;
                                for (var t = 0; t < this.boundTextures.length; t++) this.boundTextures[t] = this.emptyTextures[t];
                                return this.rootRenderTarget.activate(), this.state.resetToDefault(), this
                            }, e.prototype.handleContextLost = function(t) {
                                t.preventDefault()
                            }, e.prototype.handleContextRestored = function() {
                                this.textureManager.removeAll(), this.filterManager.destroy(!0), this._initContext()
                            }, e.prototype.destroy = function(e) {
                                this.destroyPlugins(), this.view.removeEventListener("webglcontextlost", this.handleContextLost), this.view.removeEventListener("webglcontextrestored", this.handleContextRestored), this.textureManager.destroy(), t.prototype.destroy.call(this, e), this.uid = 0, this.maskManager.destroy(), this.stencilManager.destroy(), this.filterManager.destroy(), this.maskManager = null, this.filterManager = null, this.textureManager = null, this.currentRenderer = null, this.handleContextLost = null, this.handleContextRestored = null, this._contextOptions = null, this.gl.useProgram(null), this.gl.getExtension("WEBGL_lose_context") && this.gl.getExtension("WEBGL_lose_context").loseContext(), this.gl = null
                            }, e
                        }(l.default);
                    n.default = B, R.pluginTarget.mixin(B)
                }, {
                    "../../const": 46,
                    "../../textures/BaseTexture": 112,
                    "../../utils": 125,
                    "../SystemRenderer": 76,
                    "./TextureGarbageCollector": 82,
                    "./TextureManager": 83,
                    "./WebGLState": 85,
                    "./managers/FilterManager": 90,
                    "./managers/MaskManager": 91,
                    "./managers/StencilManager": 92,
                    "./utils/ObjectRenderer": 94,
                    "./utils/RenderTarget": 96,
                    "./utils/mapWebGLDrawModesToPixi": 99,
                    "./utils/validateContext": 100,
                    "pixi-gl-core": 12
                }],
                85: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = t("./utils/mapWebGLBlendModesToPixi"),
                        o = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(r),
                        a = function() {
                            function t(e) {
                                i(this, t), this.activeState = new Uint8Array(16), this.defaultState = new Uint8Array(16), this.defaultState[0] = 1, this.stackIndex = 0, this.stack = [], this.gl = e, this.maxAttribs = e.getParameter(e.MAX_VERTEX_ATTRIBS), this.attribState = {
                                    tempAttribState: new Array(this.maxAttribs),
                                    attribState: new Array(this.maxAttribs)
                                }, this.blendModes = (0, o.default)(e), this.nativeVaoExtension = e.getExtension("OES_vertex_array_object") || e.getExtension("MOZ_OES_vertex_array_object") || e.getExtension("WEBKIT_OES_vertex_array_object")
                            }
                            return t.prototype.push = function() {
                                var t = this.stack[this.stackIndex];
                                t || (t = this.stack[this.stackIndex] = new Uint8Array(16)), ++this.stackIndex;
                                for (var e = 0; e < this.activeState.length; e++) t[e] = this.activeState[e]
                            }, t.prototype.pop = function() {
                                var t = this.stack[--this.stackIndex];
                                this.setState(t)
                            }, t.prototype.setState = function(t) {
                                this.setBlend(t[0]), this.setDepthTest(t[1]), this.setFrontFace(t[2]), this.setCullFace(t[3]), this.setBlendMode(t[4])
                            }, t.prototype.setBlend = function(t) {
                                t = t ? 1 : 0, this.activeState[0] !== t && (this.activeState[0] = t, this.gl[t ? "enable" : "disable"](this.gl.BLEND))
                            }, t.prototype.setBlendMode = function(t) {
                                if (t !== this.activeState[4]) {
                                    this.activeState[4] = t;
                                    var e = this.blendModes[t];
                                    2 === e.length ? this.gl.blendFunc(e[0], e[1]) : this.gl.blendFuncSeparate(e[0], e[1], e[2], e[3])
                                }
                            }, t.prototype.setDepthTest = function(t) {
                                t = t ? 1 : 0, this.activeState[1] !== t && (this.activeState[1] = t, this.gl[t ? "enable" : "disable"](this.gl.DEPTH_TEST))
                            }, t.prototype.setCullFace = function(t) {
                                t = t ? 1 : 0, this.activeState[3] !== t && (this.activeState[3] = t, this.gl[t ? "enable" : "disable"](this.gl.CULL_FACE))
                            }, t.prototype.setFrontFace = function(t) {
                                t = t ? 1 : 0, this.activeState[2] !== t && (this.activeState[2] = t, this.gl.frontFace(this.gl[t ? "CW" : "CCW"]))
                            }, t.prototype.resetAttributes = function() {
                                for (var t = 0; t < this.attribState.tempAttribState.length; t++) this.attribState.tempAttribState[t] = 0;
                                for (var e = 0; e < this.attribState.attribState.length; e++) this.attribState.attribState[e] = 0;
                                for (var n = 1; n < this.maxAttribs; n++) this.gl.disableVertexAttribArray(n)
                            }, t.prototype.resetToDefault = function() {
                                this.nativeVaoExtension && this.nativeVaoExtension.bindVertexArrayOES(null), this.resetAttributes();
                                for (var t = 0; t < this.activeState.length; ++t) this.activeState[t] = 32;
                                this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL, !1), this.setState(this.defaultState)
                            }, t
                        }();
                    n.default = a
                }, {
                    "./utils/mapWebGLBlendModesToPixi": 98
                }],
                86: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var o = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        a = t("./extractUniformsFromSrc"),
                        s = i(a),
                        l = t("../../../utils"),
                        u = t("../../../const"),
                        c = t("../../../settings"),
                        h = i(c),
                        p = {},
                        f = function() {
                            function t(e, n, i) {
                                r(this, t), this.vertexSrc = e || t.defaultVertexSrc, this.fragmentSrc = n || t.defaultFragmentSrc, this._blendMode = u.BLEND_MODES.NORMAL, this.uniformData = i || (0, s.default)(this.vertexSrc, this.fragmentSrc, "projectionMatrix|uSampler"), this.uniforms = {};
                                for (var o in this.uniformData) this.uniforms[o] = this.uniformData[o].value, this.uniformData[o].type && (this.uniformData[o].type = this.uniformData[o].type.toLowerCase());
                                this.glShaders = {}, p[this.vertexSrc + this.fragmentSrc] || (p[this.vertexSrc + this.fragmentSrc] = (0, l.uid)()), this.glShaderKey = p[this.vertexSrc + this.fragmentSrc], this.padding = 4, this.resolution = h.default.FILTER_RESOLUTION, this.enabled = !0, this.autoFit = !0
                            }
                            return t.prototype.apply = function(t, e, n, i, r) {
                                t.applyFilter(this, e, n, i)
                            }, o(t, [{
                                key: "blendMode",
                                get: function() {
                                    return this._blendMode
                                },
                                set: function(t) {
                                    this._blendMode = t
                                }
                            }], [{
                                key: "defaultVertexSrc",
                                get: function() {
                                    return ["attribute vec2 aVertexPosition;", "attribute vec2 aTextureCoord;", "uniform mat3 projectionMatrix;", "uniform mat3 filterMatrix;", "varying vec2 vTextureCoord;", "varying vec2 vFilterCoord;", "void main(void){", "   gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);", "   vFilterCoord = ( filterMatrix * vec3( aTextureCoord, 1.0)  ).xy;", "   vTextureCoord = aTextureCoord ;", "}"].join("\n")
                                }
                            }, {
                                key: "defaultFragmentSrc",
                                get: function() {
                                    return ["varying vec2 vTextureCoord;", "varying vec2 vFilterCoord;", "uniform sampler2D uSampler;", "uniform sampler2D filterSampler;", "void main(void){", "   vec4 masky = texture2D(filterSampler, vFilterCoord);", "   vec4 sample = texture2D(uSampler, vTextureCoord);", "   vec4 color;", "   if(mod(vFilterCoord.x, 1.0) > 0.5)", "   {", "     color = vec4(1.0, 0.0, 0.0, 1.0);", "   }", "   else", "   {", "     color = vec4(0.0, 1.0, 0.0, 1.0);", "   }", "   gl_FragColor = mix(sample, masky, 0.5);", "   gl_FragColor *= sample.a;", "}"].join("\n")
                                }
                            }]), t
                        }();
                    n.default = f
                }, {
                    "../../../const": 46,
                    "../../../settings": 101,
                    "../../../utils": 125,
                    "./extractUniformsFromSrc": 87
                }],
                87: [function(t, e, n) {
                    "use strict";

                    function i(t, e, n) {
                        var i = r(t),
                            o = r(e);
                        return Object.assign(i, o)
                    }

                    function r(t) {
                        for (var e = new RegExp("^(projectionMatrix|uSampler|filterArea|filterClamp)$"), n = {}, i = void 0, r = t.replace(/\s+/g, " ").split(/\s*;\s*/), o = 0; o < r.length; o++) {
                            var a = r[o].trim();
                            if (a.indexOf("uniform") > -1) {
                                var l = a.split(" "),
                                    u = l[1],
                                    c = l[2],
                                    h = 1;
                                c.indexOf("[") > -1 && (i = c.split(/\[|]/), c = i[0], h *= Number(i[1])), c.match(e) || (n[c] = {
                                    value: s(u, h),
                                    name: c,
                                    type: u
                                })
                            }
                        }
                        return n
                    }
                    n.__esModule = !0, n.default = i;
                    var o = t("pixi-gl-core"),
                        a = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(o),
                        s = a.default.shader.defaultValue
                }, {
                    "pixi-gl-core": 12
                }],
                88: [function(t, e, n) {
                    "use strict";

                    function i(t, e, n) {
                        var i = t.identity();
                        return i.translate(e.x / n.width, e.y / n.height), i.scale(n.width, n.height), i
                    }

                    function r(t, e, n) {
                        var i = t.identity();
                        i.translate(e.x / n.width, e.y / n.height);
                        var r = n.width / e.width,
                            o = n.height / e.height;
                        return i.scale(r, o), i
                    }

                    function o(t, e, n, i) {
                        var r = i._texture.orig,
                            o = t.set(n.width, 0, 0, n.height, e.x, e.y),
                            s = i.worldTransform.copy(a.Matrix.TEMP_MATRIX);
                        return s.invert(), o.prepend(s), o.scale(1 / r.width, 1 / r.height), o.translate(i.anchor.x, i.anchor.y), o
                    }
                    n.__esModule = !0, n.calculateScreenSpaceMatrix = i, n.calculateNormalizedScreenSpaceMatrix = r, n.calculateSpriteMatrix = o;
                    var a = t("../../../math")
                }, {
                    "../../../math": 70
                }],
                89: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = t("../Filter"),
                        l = i(s),
                        u = t("../../../../math"),
                        c = (t("path"), t("../../../../textures/TextureMatrix")),
                        h = i(c),
                        p = function(t) {
                            function e(n) {
                                r(this, e);
                                var i = new u.Matrix,
                                    a = o(this, t.call(this, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 otherMatrix;\n\nvarying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n    vTextureCoord = aTextureCoord;\n    vMaskCoord = ( otherMatrix * vec3( aTextureCoord, 1.0)  ).xy;\n}\n", "varying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform sampler2D mask;\nuniform float alpha;\nuniform vec4 maskClamp;\n\nvoid main(void)\n{\n    float clip = step(3.5,\n        step(maskClamp.x, vMaskCoord.x) +\n        step(maskClamp.y, vMaskCoord.y) +\n        step(vMaskCoord.x, maskClamp.z) +\n        step(vMaskCoord.y, maskClamp.w));\n\n    vec4 original = texture2D(uSampler, vTextureCoord);\n    vec4 masky = texture2D(mask, vMaskCoord);\n\n    original *= (masky.r * masky.a * alpha * clip);\n\n    gl_FragColor = original;\n}\n"));
                                return n.renderable = !1, a.maskSprite = n, a.maskMatrix = i, a
                            }
                            return a(e, t), e.prototype.apply = function(t, e, n) {
                                var i = this.maskSprite,
                                    r = this.maskSprite.texture;
                                r.valid && (r.transform || (r.transform = new h.default(r, 0)), r.transform.update(), this.uniforms.mask = r, this.uniforms.otherMatrix = t.calculateSpriteMatrix(this.maskMatrix, i).prepend(r.transform.mapCoord), this.uniforms.alpha = i.worldAlpha, this.uniforms.maskClamp = r.transform.uClampFrame, t.applyFilter(this, e, n))
                            }, e
                        }(l.default);
                    n.default = p
                }, {
                    "../../../../math": 70,
                    "../../../../textures/TextureMatrix": 116,
                    "../Filter": 86,
                    path: 23
                }],
                90: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }

                    function a(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var s = t("./WebGLManager"),
                        l = i(s),
                        u = t("../utils/RenderTarget"),
                        c = i(u),
                        h = t("../utils/Quad"),
                        p = i(h),
                        f = t("../../../math"),
                        d = t("../../../Shader"),
                        m = i(d),
                        g = t("../filters/filterTransforms"),
                        _ = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(g),
                        y = t("bit-twiddle"),
                        v = i(y),
                        b = function t() {
                            a(this, t), this.renderTarget = null, this.sourceFrame = new f.Rectangle, this.destinationFrame = new f.Rectangle, this.filters = [], this.target = null, this.resolution = 1
                        },
                        x = function(t) {
                            function e(n) {
                                a(this, e);
                                var i = r(this, t.call(this, n));
                                return i.gl = i.renderer.gl, i.quad = new p.default(i.gl, n.state.attribState), i.shaderCache = {}, i.pool = {}, i.filterData = null, i.managedFilters = [], i.renderer.on("prerender", i.onPrerender, i), i._screenWidth = n.view.width, i._screenHeight = n.view.height, i
                            }
                            return o(e, t), e.prototype.pushFilter = function(t, e) {
                                var n = this.renderer,
                                    i = this.filterData;
                                if (!i) {
                                    i = this.renderer._activeRenderTarget.filterStack;
                                    var r = new b;
                                    r.sourceFrame = r.destinationFrame = this.renderer._activeRenderTarget.size, r.renderTarget = n._activeRenderTarget, this.renderer._activeRenderTarget.filterData = i = {
                                        index: 0,
                                        stack: [r]
                                    }, this.filterData = i
                                }
                                var o = i.stack[++i.index],
                                    a = i.stack[0].destinationFrame;
                                o || (o = i.stack[i.index] = new b);
                                var s = t.filterArea && 0 === t.filterArea.x && 0 === t.filterArea.y && t.filterArea.width === n.screen.width && t.filterArea.height === n.screen.height,
                                    l = e[0].resolution,
                                    u = 0 | e[0].padding,
                                    c = s ? n.screen : t.filterArea || t.getBounds(!0),
                                    h = o.sourceFrame,
                                    p = o.destinationFrame;
                                h.x = (c.x * l | 0) / l, h.y = (c.y * l | 0) / l, h.width = (c.width * l | 0) / l, h.height = (c.height * l | 0) / l, s || (i.stack[0].renderTarget.transform || e[0].autoFit && h.fit(a), h.pad(u)), p.width = h.width, p.height = h.height;
                                var f = this.getPotRenderTarget(n.gl, h.width, h.height, l);
                                o.target = t, o.filters = e, o.resolution = l, o.renderTarget = f, f.setFrame(p, h), n.bindRenderTarget(f), f.clear()
                            }, e.prototype.popFilter = function() {
                                var t = this.filterData,
                                    e = t.stack[t.index - 1],
                                    n = t.stack[t.index];
                                this.quad.map(n.renderTarget.size, n.sourceFrame).upload();
                                var i = n.filters;
                                if (1 === i.length) i[0].apply(this, n.renderTarget, e.renderTarget, !1, n), this.freePotRenderTarget(n.renderTarget);
                                else {
                                    var r = n.renderTarget,
                                        o = this.getPotRenderTarget(this.renderer.gl, n.sourceFrame.width, n.sourceFrame.height, n.resolution);
                                    o.setFrame(n.destinationFrame, n.sourceFrame), o.clear();
                                    var a = 0;
                                    for (a = 0; a < i.length - 1; ++a) {
                                        i[a].apply(this, r, o, !0, n);
                                        var s = r;
                                        r = o, o = s
                                    }
                                    i[a].apply(this, r, e.renderTarget, !1, n), this.freePotRenderTarget(r), this.freePotRenderTarget(o)
                                }
                                0 === --t.index && (this.filterData = null)
                            }, e.prototype.applyFilter = function(t, e, n, i) {
                                var r = this.renderer,
                                    o = r.gl,
                                    a = t.glShaders[r.CONTEXT_UID];
                                a || (t.glShaderKey ? (a = this.shaderCache[t.glShaderKey]) || (a = new m.default(this.gl, t.vertexSrc, t.fragmentSrc), t.glShaders[r.CONTEXT_UID] = this.shaderCache[t.glShaderKey] = a, this.managedFilters.push(t)) : (a = t.glShaders[r.CONTEXT_UID] = new m.default(this.gl, t.vertexSrc, t.fragmentSrc), this.managedFilters.push(t)), r.bindVao(null), this.quad.initVao(a)), r.bindVao(this.quad.vao), r.bindRenderTarget(n), i && (o.disable(o.SCISSOR_TEST), r.clear(), o.enable(o.SCISSOR_TEST)), n === r.maskManager.scissorRenderTarget && r.maskManager.pushScissorMask(null, r.maskManager.scissorData), r.bindShader(a);
                                var s = this.renderer.emptyTextures[0];
                                this.renderer.boundTextures[0] = s, this.syncUniforms(a, t), r.state.setBlendMode(t.blendMode), o.activeTexture(o.TEXTURE0), o.bindTexture(o.TEXTURE_2D, e.texture.texture), this.quad.vao.draw(this.renderer.gl.TRIANGLES, 6, 0), o.bindTexture(o.TEXTURE_2D, s._glTextures[this.renderer.CONTEXT_UID].texture)
                            }, e.prototype.syncUniforms = function(t, e) {
                                var n = e.uniformData,
                                    i = e.uniforms,
                                    r = 1,
                                    o = void 0;
                                if (t.uniforms.filterArea) {
                                    o = this.filterData.stack[this.filterData.index];
                                    var a = t.uniforms.filterArea;
                                    a[0] = o.renderTarget.size.width, a[1] = o.renderTarget.size.height, a[2] = o.sourceFrame.x, a[3] = o.sourceFrame.y, t.uniforms.filterArea = a
                                }
                                if (t.uniforms.filterClamp) {
                                    o = o || this.filterData.stack[this.filterData.index];
                                    var s = t.uniforms.filterClamp;
                                    s[0] = 0, s[1] = 0, s[2] = (o.sourceFrame.width - 1) / o.renderTarget.size.width, s[3] = (o.sourceFrame.height - 1) / o.renderTarget.size.height, t.uniforms.filterClamp = s
                                }
                                for (var l in n) {
                                    var u = n[l].type;
                                    if ("sampler2d" === u && 0 !== i[l]) {
                                        if (i[l].baseTexture) t.uniforms[l] = this.renderer.bindTexture(i[l].baseTexture, r);
                                        else {
                                            t.uniforms[l] = r;
                                            var c = this.renderer.gl;
                                            this.renderer.boundTextures[r] = this.renderer.emptyTextures[r], c.activeTexture(c.TEXTURE0 + r), i[l].texture.bind()
                                        }
                                        r++
                                    } else if ("mat3" === u) void 0 !== i[l].a ? t.uniforms[l] = i[l].toArray(!0) : t.uniforms[l] = i[l];
                                    else if ("vec2" === u)
                                        if (void 0 !== i[l].x) {
                                            var h = t.uniforms[l] || new Float32Array(2);
                                            h[0] = i[l].x, h[1] = i[l].y, t.uniforms[l] = h
                                        } else t.uniforms[l] = i[l];
                                    else "float" === u ? t.uniforms.data[l].value !== n[l] && (t.uniforms[l] = i[l]) : t.uniforms[l] = i[l]
                                }
                            }, e.prototype.getRenderTarget = function(t, e) {
                                var n = this.filterData.stack[this.filterData.index],
                                    i = this.getPotRenderTarget(this.renderer.gl, n.sourceFrame.width, n.sourceFrame.height, e || n.resolution);
                                return i.setFrame(n.destinationFrame, n.sourceFrame), i
                            }, e.prototype.returnRenderTarget = function(t) {
                                this.freePotRenderTarget(t)
                            }, e.prototype.calculateScreenSpaceMatrix = function(t) {
                                var e = this.filterData.stack[this.filterData.index];
                                return _.calculateScreenSpaceMatrix(t, e.sourceFrame, e.renderTarget.size)
                            }, e.prototype.calculateNormalizedScreenSpaceMatrix = function(t) {
                                var e = this.filterData.stack[this.filterData.index];
                                return _.calculateNormalizedScreenSpaceMatrix(t, e.sourceFrame, e.renderTarget.size, e.destinationFrame)
                            }, e.prototype.calculateSpriteMatrix = function(t, e) {
                                var n = this.filterData.stack[this.filterData.index];
                                return _.calculateSpriteMatrix(t, n.sourceFrame, n.renderTarget.size, e)
                            }, e.prototype.destroy = function() {
                                var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],
                                    e = this.renderer,
                                    n = this.managedFilters;
                                e.off("prerender", this.onPrerender, this);
                                for (var i = 0; i < n.length; i++) t || n[i].glShaders[e.CONTEXT_UID].destroy(), delete n[i].glShaders[e.CONTEXT_UID];
                                this.shaderCache = {}, t ? this.pool = {} : this.emptyPool()
                            }, e.prototype.getPotRenderTarget = function(t, e, n, i) {
                                var r = "screen";
                                e *= i, n *= i, e === this._screenWidth && n === this._screenHeight || (e = v.default.nextPow2(e), n = v.default.nextPow2(n), r = (65535 & e) << 16 | 65535 & n), this.pool[r] || (this.pool[r] = []);
                                var o = this.pool[r].pop();
                                if (!o) {
                                    var a = this.renderer.boundTextures[0];
                                    t.activeTexture(t.TEXTURE0), o = new c.default(t, e, n, null, 1), t.bindTexture(t.TEXTURE_2D, a._glTextures[this.renderer.CONTEXT_UID].texture)
                                }
                                return o.resolution = i, o.defaultFrame.width = o.size.width = e / i, o.defaultFrame.height = o.size.height = n / i, o
                            }, e.prototype.emptyPool = function() {
                                for (var t in this.pool) {
                                    var e = this.pool[t];
                                    if (e)
                                        for (var n = 0; n < e.length; n++) e[n].destroy(!0)
                                }
                                this.pool = {}
                            }, e.prototype.freePotRenderTarget = function(t) {
                                var e = t.size.width * t.resolution,
                                    n = t.size.height * t.resolution,
                                    i = "screen";
                                e === this._screenWidth && n === this._screenHeight || (i = (65535 & e) << 16 | 65535 & n), this.pool[i].push(t)
                            }, e.prototype.onPrerender = function() {
                                if (this._screenWidth !== this.renderer.view.width || this._screenHeight !== this.renderer.view.height) {
                                    this._screenWidth = this.renderer.view.width, this._screenHeight = this.renderer.view.height;
                                    var t = this.pool.screen;
                                    if (t)
                                        for (var e = 0; e < t.length; e++) t[e].destroy(!0);
                                    this.pool.screen = []
                                }
                            }, e
                        }(l.default);
                    n.default = x
                }, {
                    "../../../Shader": 44,
                    "../../../math": 70,
                    "../filters/filterTransforms": 88,
                    "../utils/Quad": 95,
                    "../utils/RenderTarget": 96,
                    "./WebGLManager": 93,
                    "bit-twiddle": 1
                }],
                91: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = t("./WebGLManager"),
                        l = i(s),
                        u = t("../filters/spriteMask/SpriteMaskFilter"),
                        c = i(u),
                        h = function(t) {
                            function e(n) {
                                r(this, e);
                                var i = o(this, t.call(this, n));
                                return i.scissor = !1, i.scissorData = null, i.scissorRenderTarget = null, i.enableScissor = !0, i.alphaMaskPool = [], i.alphaMaskIndex = 0, i
                            }
                            return a(e, t), e.prototype.pushMask = function(t, e) {
                                if (e.texture) this.pushSpriteMask(t, e);
                                else if (this.enableScissor && !this.scissor && this.renderer._activeRenderTarget.root && !this.renderer.stencilManager.stencilMaskStack.length && e.isFastRect()) {
                                    var n = e.worldTransform,
                                        i = Math.atan2(n.b, n.a);
                                    i = Math.round(i * (180 / Math.PI)), i % 90 ? this.pushStencilMask(e) : this.pushScissorMask(t, e)
                                } else this.pushStencilMask(e)
                            }, e.prototype.popMask = function(t, e) {
                                e.texture ? this.popSpriteMask(t, e) : this.enableScissor && !this.renderer.stencilManager.stencilMaskStack.length ? this.popScissorMask(t, e) : this.popStencilMask(t, e)
                            }, e.prototype.pushSpriteMask = function(t, e) {
                                var n = this.alphaMaskPool[this.alphaMaskIndex];
                                n || (n = this.alphaMaskPool[this.alphaMaskIndex] = [new c.default(e)]), n[0].resolution = this.renderer.resolution, n[0].maskSprite = e, t.filterArea = e.getBounds(!0), this.renderer.filterManager.pushFilter(t, n), this.alphaMaskIndex++
                            }, e.prototype.popSpriteMask = function() {
                                this.renderer.filterManager.popFilter(), this.alphaMaskIndex--
                            }, e.prototype.pushStencilMask = function(t) {
                                this.renderer.currentRenderer.stop(), this.renderer.stencilManager.pushStencil(t)
                            }, e.prototype.popStencilMask = function() {
                                this.renderer.currentRenderer.stop(), this.renderer.stencilManager.popStencil()
                            }, e.prototype.pushScissorMask = function(t, e) {
                                e.renderable = !0;
                                var n = this.renderer._activeRenderTarget,
                                    i = e.getBounds();
                                i.fit(n.size), e.renderable = !1, this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST);
                                var r = this.renderer.resolution;
                                this.renderer.gl.scissor(i.x * r, (n.root ? n.size.height - i.y - i.height : i.y) * r, i.width * r, i.height * r), this.scissorRenderTarget = n, this.scissorData = e, this.scissor = !0
                            }, e.prototype.popScissorMask = function() {
                                this.scissorRenderTarget = null, this.scissorData = null, this.scissor = !1;
                                var t = this.renderer.gl;
                                t.disable(t.SCISSOR_TEST)
                            }, e
                        }(l.default);
                    n.default = h
                }, {
                    "../filters/spriteMask/SpriteMaskFilter": 89,
                    "./WebGLManager": 93
                }],
                92: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = t("./WebGLManager"),
                        s = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(a),
                        l = function(t) {
                            function e(n) {
                                i(this, e);
                                var o = r(this, t.call(this, n));
                                return o.stencilMaskStack = null, o
                            }
                            return o(e, t), e.prototype.setMaskStack = function(t) {
                                this.stencilMaskStack = t;
                                var e = this.renderer.gl;
                                0 === t.length ? e.disable(e.STENCIL_TEST) : e.enable(e.STENCIL_TEST)
                            }, e.prototype.pushStencil = function(t) {
                                this.renderer.setObjectRenderer(this.renderer.plugins.graphics), this.renderer._activeRenderTarget.attachStencilBuffer();
                                var e = this.renderer.gl,
                                    n = this.stencilMaskStack.length;
                                0 === n && e.enable(e.STENCIL_TEST), this.stencilMaskStack.push(t), e.colorMask(!1, !1, !1, !1), e.stencilFunc(e.EQUAL, n, this._getBitwiseMask()), e.stencilOp(e.KEEP, e.KEEP, e.INCR), this.renderer.plugins.graphics.render(t), this._useCurrent()
                            }, e.prototype.popStencil = function() {
                                this.renderer.setObjectRenderer(this.renderer.plugins.graphics);
                                var t = this.renderer.gl,
                                    e = this.stencilMaskStack.pop();
                                0 === this.stencilMaskStack.length ? (t.disable(t.STENCIL_TEST), t.clear(t.STENCIL_BUFFER_BIT), t.clearStencil(0)) : (t.colorMask(!1, !1, !1, !1), t.stencilOp(t.KEEP, t.KEEP, t.DECR), this.renderer.plugins.graphics.render(e), this._useCurrent())
                            }, e.prototype._useCurrent = function() {
                                var t = this.renderer.gl;
                                t.colorMask(!0, !0, !0, !0), t.stencilFunc(t.EQUAL, this.stencilMaskStack.length, this._getBitwiseMask()), t.stencilOp(t.KEEP, t.KEEP, t.KEEP)
                            }, e.prototype._getBitwiseMask = function() {
                                return (1 << this.stencilMaskStack.length) - 1
                            }, e.prototype.destroy = function() {
                                s.default.prototype.destroy.call(this), this.stencilMaskStack.stencilStack = null
                            }, e
                        }(s.default);
                    n.default = l
                }, {
                    "./WebGLManager": 93
                }],
                93: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = function() {
                        function t(e) {
                            i(this, t), this.renderer = e, this.renderer.on("context", this.onContextChange, this)
                        }
                        return t.prototype.onContextChange = function() {}, t.prototype.destroy = function() {
                            this.renderer.off("context", this.onContextChange, this), this.renderer = null
                        }, t
                    }();
                    n.default = r
                }, {}],
                94: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = t("../managers/WebGLManager"),
                        s = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(a),
                        l = function(t) {
                            function e() {
                                return i(this, e), r(this, t.apply(this, arguments))
                            }
                            return o(e, t), e.prototype.start = function() {}, e.prototype.stop = function() {
                                this.flush()
                            }, e.prototype.flush = function() {}, e.prototype.render = function(t) {}, e
                        }(s.default);
                    n.default = l
                }, {
                    "../managers/WebGLManager": 93
                }],
                95: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var o = t("pixi-gl-core"),
                        a = i(o),
                        s = t("../../../utils/createIndicesForQuads"),
                        l = i(s),
                        u = function() {
                            function t(e, n) {
                                r(this, t), this.gl = e, this.vertices = new Float32Array([-1, -1, 1, -1, 1, 1, -1, 1]), this.uvs = new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]), this.interleaved = new Float32Array(16);
                                for (var i = 0; i < 4; i++) this.interleaved[4 * i] = this.vertices[2 * i], this.interleaved[4 * i + 1] = this.vertices[2 * i + 1], this.interleaved[4 * i + 2] = this.uvs[2 * i], this.interleaved[4 * i + 3] = this.uvs[2 * i + 1];
                                this.indices = (0, l.default)(1), this.vertexBuffer = a.default.GLBuffer.createVertexBuffer(e, this.interleaved, e.STATIC_DRAW), this.indexBuffer = a.default.GLBuffer.createIndexBuffer(e, this.indices, e.STATIC_DRAW), this.vao = new a.default.VertexArrayObject(e, n)
                            }
                            return t.prototype.initVao = function(t) {
                                this.vao.clear().addIndex(this.indexBuffer).addAttribute(this.vertexBuffer, t.attributes.aVertexPosition, this.gl.FLOAT, !1, 16, 0).addAttribute(this.vertexBuffer, t.attributes.aTextureCoord, this.gl.FLOAT, !1, 16, 8)
                            }, t.prototype.map = function(t, e) {
                                var n = 0,
                                    i = 0;
                                return this.uvs[0] = n, this.uvs[1] = i, this.uvs[2] = n + e.width / t.width, this.uvs[3] = i, this.uvs[4] = n + e.width / t.width, this.uvs[5] = i + e.height / t.height, this.uvs[6] = n, this.uvs[7] = i + e.height / t.height, n = e.x, i = e.y, this.vertices[0] = n, this.vertices[1] = i, this.vertices[2] = n + e.width, this.vertices[3] = i, this.vertices[4] = n + e.width, this.vertices[5] = i + e.height, this.vertices[6] = n, this.vertices[7] = i + e.height, this
                            }, t.prototype.upload = function() {
                                for (var t = 0; t < 4; t++) this.interleaved[4 * t] = this.vertices[2 * t], this.interleaved[4 * t + 1] = this.vertices[2 * t + 1], this.interleaved[4 * t + 2] = this.uvs[2 * t], this.interleaved[4 * t + 3] = this.uvs[2 * t + 1];
                                return this.vertexBuffer.upload(this.interleaved), this
                            }, t.prototype.destroy = function() {
                                var t = this.gl;
                                t.deleteBuffer(this.vertexBuffer), t.deleteBuffer(this.indexBuffer)
                            }, t
                        }();
                    n.default = u
                }, {
                    "../../../utils/createIndicesForQuads": 123,
                    "pixi-gl-core": 12
                }],
                96: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = t("../../../math"),
                        o = t("../../../const"),
                        a = t("../../../settings"),
                        s = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(a),
                        l = t("pixi-gl-core"),
                        u = function() {
                            function t(e, n, a, u, c, h) {
                                i(this, t), this.gl = e, this.frameBuffer = null, this.texture = null, this.clearColor = [0, 0, 0, 0], this.size = new r.Rectangle(0, 0, 1, 1), this.resolution = c || s.default.RESOLUTION, this.projectionMatrix = new r.Matrix, this.transform = null, this.frame = null, this.defaultFrame = new r.Rectangle, this.destinationFrame = null, this.sourceFrame = null, this.stencilBuffer = null, this.stencilMaskStack = [], this.filterData = null, this.scaleMode = void 0 !== u ? u : s.default.SCALE_MODE, this.root = h, this.root ? (this.frameBuffer = new l.GLFramebuffer(e, 100, 100), this.frameBuffer.framebuffer = null) : (this.frameBuffer = l.GLFramebuffer.createRGBA(e, 100, 100), this.scaleMode === o.SCALE_MODES.NEAREST ? this.frameBuffer.texture.enableNearestScaling() : this.frameBuffer.texture.enableLinearScaling(), this.texture = this.frameBuffer.texture), this.setFrame(), this.resize(n, a)
                            }
                            return t.prototype.clear = function(t) {
                                var e = t || this.clearColor;
                                this.frameBuffer.clear(e[0], e[1], e[2], e[3])
                            }, t.prototype.attachStencilBuffer = function() {
                                this.root || this.frameBuffer.enableStencil()
                            }, t.prototype.setFrame = function(t, e) {
                                this.destinationFrame = t || this.destinationFrame || this.defaultFrame, this.sourceFrame = e || this.sourceFrame || this.destinationFrame
                            }, t.prototype.activate = function() {
                                var t = this.gl;
                                this.frameBuffer.bind(), this.calculateProjection(this.destinationFrame, this.sourceFrame), this.transform && this.projectionMatrix.append(this.transform), this.destinationFrame !== this.sourceFrame ? (t.enable(t.SCISSOR_TEST), t.scissor(0 | this.destinationFrame.x, 0 | this.destinationFrame.y, this.destinationFrame.width * this.resolution | 0, this.destinationFrame.height * this.resolution | 0)) : t.disable(t.SCISSOR_TEST), t.viewport(0 | this.destinationFrame.x, 0 | this.destinationFrame.y, this.destinationFrame.width * this.resolution | 0, this.destinationFrame.height * this.resolution | 0)
                            }, t.prototype.calculateProjection = function(t, e) {
                                var n = this.projectionMatrix;
                                e = e || t, n.identity(), this.root ? (n.a = 1 / t.width * 2, n.d = -1 / t.height * 2, n.tx = -1 - e.x * n.a, n.ty = 1 - e.y * n.d) : (n.a = 1 / t.width * 2, n.d = 1 / t.height * 2, n.tx = -1 - e.x * n.a, n.ty = -1 - e.y * n.d)
                            }, t.prototype.resize = function(t, e) {
                                if (t |= 0, e |= 0, this.size.width !== t || this.size.height !== e) {
                                    this.size.width = t, this.size.height = e, this.defaultFrame.width = t, this.defaultFrame.height = e, this.frameBuffer.resize(t * this.resolution, e * this.resolution);
                                    var n = this.frame || this.size;
                                    this.calculateProjection(n)
                                }
                            }, t.prototype.destroy = function() {
                                this.frameBuffer.destroy(), this.frameBuffer = null, this.texture = null
                            }, t
                        }();
                    n.default = u
                }, {
                    "../../../const": 46,
                    "../../../math": 70,
                    "../../../settings": 101,
                    "pixi-gl-core": 12
                }],
                97: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        var n = !e;
                        if (0 === t) throw new Error("Invalid value of `0` passed to `checkMaxIfStatementsInShader`");
                        if (n) {
                            var i = document.createElement("canvas");
                            i.width = 1, i.height = 1, e = a.default.createContext(i)
                        }
                        for (var o = e.createShader(e.FRAGMENT_SHADER);;) {
                            var l = s.replace(/%forloop%/gi, r(t));
                            if (e.shaderSource(o, l), e.compileShader(o), e.getShaderParameter(o, e.COMPILE_STATUS)) break;
                            t = t / 2 | 0
                        }
                        return n && e.getExtension("WEBGL_lose_context") && e.getExtension("WEBGL_lose_context").loseContext(), t
                    }

                    function r(t) {
                        for (var e = "", n = 0; n < t; ++n) n > 0 && (e += "\nelse "), n < t - 1 && (e += "if(test == " + n + ".0){}");
                        return e
                    }
                    n.__esModule = !0, n.default = i;
                    var o = t("pixi-gl-core"),
                        a = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(o),
                        s = ["precision mediump float;", "void main(void){", "float test = 0.1;", "%forloop%", "gl_FragColor = vec4(0.0);", "}"].join("\n")
                }, {
                    "pixi-gl-core": 12
                }],
                98: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];
                        return e[r.BLEND_MODES.NORMAL] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], e[r.BLEND_MODES.ADD] = [t.ONE, t.DST_ALPHA], e[r.BLEND_MODES.MULTIPLY] = [t.DST_COLOR, t.ONE_MINUS_SRC_ALPHA], e[r.BLEND_MODES.SCREEN] = [t.ONE, t.ONE_MINUS_SRC_COLOR], e[r.BLEND_MODES.OVERLAY] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], e[r.BLEND_MODES.DARKEN] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], e[r.BLEND_MODES.LIGHTEN] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], e[r.BLEND_MODES.COLOR_DODGE] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], e[r.BLEND_MODES.COLOR_BURN] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], e[r.BLEND_MODES.HARD_LIGHT] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], e[r.BLEND_MODES.SOFT_LIGHT] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], e[r.BLEND_MODES.DIFFERENCE] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], e[r.BLEND_MODES.EXCLUSION] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], e[r.BLEND_MODES.HUE] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], e[r.BLEND_MODES.SATURATION] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], e[r.BLEND_MODES.COLOR] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], e[r.BLEND_MODES.LUMINOSITY] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], e[r.BLEND_MODES.NORMAL_NPM] = [t.SRC_ALPHA, t.ONE_MINUS_SRC_ALPHA, t.ONE, t.ONE_MINUS_SRC_ALPHA], e[r.BLEND_MODES.ADD_NPM] = [t.SRC_ALPHA, t.DST_ALPHA, t.ONE, t.DST_ALPHA], e[r.BLEND_MODES.SCREEN_NPM] = [t.SRC_ALPHA, t.ONE_MINUS_SRC_COLOR, t.ONE, t.ONE_MINUS_SRC_COLOR], e
                    }
                    n.__esModule = !0, n.default = i;
                    var r = t("../../../const")
                }, {
                    "../../../const": 46
                }],
                99: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        return e[r.DRAW_MODES.POINTS] = t.POINTS, e[r.DRAW_MODES.LINES] = t.LINES, e[r.DRAW_MODES.LINE_LOOP] = t.LINE_LOOP, e[r.DRAW_MODES.LINE_STRIP] = t.LINE_STRIP, e[r.DRAW_MODES.TRIANGLES] = t.TRIANGLES, e[r.DRAW_MODES.TRIANGLE_STRIP] = t.TRIANGLE_STRIP, e[r.DRAW_MODES.TRIANGLE_FAN] = t.TRIANGLE_FAN, e
                    }
                    n.__esModule = !0, n.default = i;
                    var r = t("../../../const")
                }, {
                    "../../../const": 46
                }],
                100: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        t.getContextAttributes().stencil
                    }
                    n.__esModule = !0, n.default = i
                }, {}],
                101: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }
                    n.__esModule = !0;
                    var r = t("./utils/maxRecommendedTextures"),
                        o = i(r),
                        a = t("./utils/canUploadSameBuffer"),
                        s = i(a);
                    n.default = {
                        TARGET_FPMS: .06,
                        MIPMAP_TEXTURES: !0,
                        RESOLUTION: 1,
                        FILTER_RESOLUTION: 1,
                        SPRITE_MAX_TEXTURES: (0, o.default)(32),
                        SPRITE_BATCH_SIZE: 4096,
                        RETINA_PREFIX: /@([0-9\.]+)x/,
                        RENDER_OPTIONS: {
                            view: null,
                            antialias: !1,
                            forceFXAA: !1,
                            autoResize: !1,
                            transparent: !1,
                            backgroundColor: 0,
                            clearBeforeRender: !0,
                            preserveDrawingBuffer: !1,
                            roundPixels: !1,
                            width: 800,
                            height: 600,
                            legacy: !1
                        },
                        TRANSFORM_MODE: 0,
                        GC_MODE: 0,
                        GC_MAX_IDLE: 3600,
                        GC_MAX_CHECK_COUNT: 600,
                        WRAP_MODE: 0,
                        SCALE_MODE: 0,
                        PRECISION_VERTEX: "highp",
                        PRECISION_FRAGMENT: "mediump",
                        CAN_UPLOAD_SAME_BUFFER: (0, s.default)(),
                        MESH_CANVAS_PADDING: 0
                    }
                }, {
                    "./utils/canUploadSameBuffer": 122,
                    "./utils/maxRecommendedTextures": 127
                }],
                102: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        l = t("../math"),
                        u = t("../utils"),
                        c = t("../const"),
                        h = t("../textures/Texture"),
                        p = i(h),
                        f = t("../display/Container"),
                        d = i(f),
                        m = new l.Point,
                        g = function(t) {
                            function e(n) {
                                r(this, e);
                                var i = o(this, t.call(this));
                                return i._anchor = new l.ObservablePoint(i._onAnchorUpdate, i), i._texture = null, i._width = 0, i._height = 0, i._tint = null, i._tintRGB = null, i.tint = 16777215, i.blendMode = c.BLEND_MODES.NORMAL, i.shader = null, i.cachedTint = 16777215, i.texture = n || p.default.EMPTY, i.vertexData = new Float32Array(8), i.vertexTrimmedData = null, i._transformID = -1, i._textureID = -1, i._transformTrimmedID = -1, i._textureTrimmedID = -1, i.pluginName = "sprite", i
                            }
                            return a(e, t), e.prototype._onTextureUpdate = function() {
                                this._textureID = -1, this._textureTrimmedID = -1, this.cachedTint = 16777215, this._width && (this.scale.x = (0, u.sign)(this.scale.x) * this._width / this._texture.orig.width), this._height && (this.scale.y = (0, u.sign)(this.scale.y) * this._height / this._texture.orig.height)
                            }, e.prototype._onAnchorUpdate = function() {
                                this._transformID = -1, this._transformTrimmedID = -1
                            }, e.prototype.calculateVertices = function() {
                                if (this._transformID !== this.transform._worldID || this._textureID !== this._texture._updateID) {
                                    this._transformID = this.transform._worldID, this._textureID = this._texture._updateID;
                                    var t = this._texture,
                                        e = this.transform.worldTransform,
                                        n = e.a,
                                        i = e.b,
                                        r = e.c,
                                        o = e.d,
                                        a = e.tx,
                                        s = e.ty,
                                        l = this.vertexData,
                                        u = t.trim,
                                        c = t.orig,
                                        h = this._anchor,
                                        p = 0,
                                        f = 0,
                                        d = 0,
                                        m = 0;
                                    u ? (f = u.x - h._x * c.width, p = f + u.width, m = u.y - h._y * c.height, d = m + u.height) : (f = -h._x * c.width, p = f + c.width, m = -h._y * c.height, d = m + c.height), l[0] = n * f + r * m + a, l[1] = o * m + i * f + s, l[2] = n * p + r * m + a, l[3] = o * m + i * p + s, l[4] = n * p + r * d + a, l[5] = o * d + i * p + s, l[6] = n * f + r * d + a, l[7] = o * d + i * f + s
                                }
                            }, e.prototype.calculateTrimmedVertices = function() {
                                if (this.vertexTrimmedData) {
                                    if (this._transformTrimmedID === this.transform._worldID && this._textureTrimmedID === this._texture._updateID) return
                                } else this.vertexTrimmedData = new Float32Array(8);
                                this._transformTrimmedID = this.transform._worldID, this._textureTrimmedID = this._texture._updateID;
                                var t = this._texture,
                                    e = this.vertexTrimmedData,
                                    n = t.orig,
                                    i = this._anchor,
                                    r = this.transform.worldTransform,
                                    o = r.a,
                                    a = r.b,
                                    s = r.c,
                                    l = r.d,
                                    u = r.tx,
                                    c = r.ty,
                                    h = -i._x * n.width,
                                    p = h + n.width,
                                    f = -i._y * n.height,
                                    d = f + n.height;
                                e[0] = o * h + s * f + u, e[1] = l * f + a * h + c, e[2] = o * p + s * f + u, e[3] = l * f + a * p + c, e[4] = o * p + s * d + u, e[5] = l * d + a * p + c, e[6] = o * h + s * d + u, e[7] = l * d + a * h + c
                            }, e.prototype._renderWebGL = function(t) {
                                this.calculateVertices(), t.setObjectRenderer(t.plugins[this.pluginName]), t.plugins[this.pluginName].render(this)
                            }, e.prototype._renderCanvas = function(t) {
                                t.plugins[this.pluginName].render(this)
                            }, e.prototype._calculateBounds = function() {
                                var t = this._texture.trim,
                                    e = this._texture.orig;
                                !t || t.width === e.width && t.height === e.height ? (this.calculateVertices(), this._bounds.addQuad(this.vertexData)) : (this.calculateTrimmedVertices(), this._bounds.addQuad(this.vertexTrimmedData))
                            }, e.prototype.getLocalBounds = function(e) {
                                return 0 === this.children.length ? (this._bounds.minX = this._texture.orig.width * -this._anchor._x, this._bounds.minY = this._texture.orig.height * -this._anchor._y, this._bounds.maxX = this._texture.orig.width * (1 - this._anchor._x), this._bounds.maxY = this._texture.orig.height * (1 - this._anchor._y), e || (this._localBoundsRect || (this._localBoundsRect = new l.Rectangle), e = this._localBoundsRect), this._bounds.getRectangle(e)) : t.prototype.getLocalBounds.call(this, e)
                            }, e.prototype.containsPoint = function(t) {
                                this.worldTransform.applyInverse(t, m);
                                var e = this._texture.orig.width,
                                    n = this._texture.orig.height,
                                    i = -e * this.anchor.x,
                                    r = 0;
                                return m.x >= i && m.x < i + e && (r = -n * this.anchor.y, m.y >= r && m.y < r + n)
                            }, e.prototype.destroy = function(e) {
                                if (t.prototype.destroy.call(this, e), this._anchor = null, "boolean" == typeof e ? e : e && e.texture) {
                                    var n = "boolean" == typeof e ? e : e && e.baseTexture;
                                    this._texture.destroy(!!n)
                                }
                                this._texture = null, this.shader = null
                            }, e.from = function(t) {
                                return new e(p.default.from(t))
                            }, e.fromFrame = function(t) {
                                var n = u.TextureCache[t];
                                if (!n) throw new Error('The frameId "' + t + '" does not exist in the texture cache');
                                return new e(n)
                            }, e.fromImage = function(t, n, i) {
                                return new e(p.default.fromImage(t, n, i))
                            }, s(e, [{
                                key: "width",
                                get: function() {
                                    return Math.abs(this.scale.x) * this._texture.orig.width
                                },
                                set: function(t) {
                                    var e = (0, u.sign)(this.scale.x) || 1;
                                    this.scale.x = e * t / this._texture.orig.width, this._width = t
                                }
                            }, {
                                key: "height",
                                get: function() {
                                    return Math.abs(this.scale.y) * this._texture.orig.height
                                },
                                set: function(t) {
                                    var e = (0, u.sign)(this.scale.y) || 1;
                                    this.scale.y = e * t / this._texture.orig.height, this._height = t
                                }
                            }, {
                                key: "anchor",
                                get: function() {
                                    return this._anchor
                                },
                                set: function(t) {
                                    this._anchor.copy(t)
                                }
                            }, {
                                key: "tint",
                                get: function() {
                                    return this._tint
                                },
                                set: function(t) {
                                    this._tint = t, this._tintRGB = (t >> 16) + (65280 & t) + ((255 & t) << 16)
                                }
                            }, {
                                key: "texture",
                                get: function() {
                                    return this._texture
                                },
                                set: function(t) {
                                    this._texture !== t && (this._texture = t, this.cachedTint = 16777215, this._textureID = -1, this._textureTrimmedID = -1, t && (t.baseTexture.hasLoaded ? this._onTextureUpdate() : t.once("update", this._onTextureUpdate, this)))
                                }
                            }]), e
                        }(d.default);
                    n.default = g
                }, {
                    "../const": 46,
                    "../display/Container": 48,
                    "../math": 70,
                    "../textures/Texture": 115,
                    "../utils": 125
                }],
                103: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var o = t("../../renderers/canvas/CanvasRenderer"),
                        a = i(o),
                        s = t("../../const"),
                        l = t("../../math"),
                        u = t("./CanvasTinter"),
                        c = i(u),
                        h = new l.Matrix,
                        p = function() {
                            function t(e) {
                                r(this, t), this.renderer = e
                            }
                            return t.prototype.render = function(t) {
                                var e = t._texture,
                                    n = this.renderer,
                                    i = e._frame.width,
                                    r = e._frame.height,
                                    o = t.transform.worldTransform,
                                    a = 0,
                                    u = 0;
                                if (!(e.orig.width <= 0 || e.orig.height <= 0) && e.baseTexture.source && (n.setBlendMode(t.blendMode), e.valid)) {
                                    n.context.globalAlpha = t.worldAlpha;
                                    var p = e.baseTexture.scaleMode === s.SCALE_MODES.LINEAR;
                                    n.smoothProperty && n.context[n.smoothProperty] !== p && (n.context[n.smoothProperty] = p), e.trim ? (a = e.trim.width / 2 + e.trim.x - t.anchor.x * e.orig.width, u = e.trim.height / 2 + e.trim.y - t.anchor.y * e.orig.height) : (a = (.5 - t.anchor.x) * e.orig.width, u = (.5 - t.anchor.y) * e.orig.height), e.rotate && (o.copy(h), o = h, l.GroupD8.matrixAppendRotationInv(o, e.rotate, a, u), a = 0, u = 0), a -= i / 2, u -= r / 2, n.roundPixels ? (n.context.setTransform(o.a, o.b, o.c, o.d, o.tx * n.resolution | 0, o.ty * n.resolution | 0), a |= 0, u |= 0) : n.context.setTransform(o.a, o.b, o.c, o.d, o.tx * n.resolution, o.ty * n.resolution);
                                    var f = e.baseTexture.resolution;
                                    16777215 !== t.tint ? (t.cachedTint === t.tint && t.tintedTexture.tintId === t._texture._updateID || (t.cachedTint = t.tint, t.tintedTexture = c.default.getTintedTexture(t, t.tint)), n.context.drawImage(t.tintedTexture, 0, 0, i * f, r * f, a * n.resolution, u * n.resolution, i * n.resolution, r * n.resolution)) : n.context.drawImage(e.baseTexture.source, e._frame.x * f, e._frame.y * f, i * f, r * f, a * n.resolution, u * n.resolution, i * n.resolution, r * n.resolution)
                                }
                            }, t.prototype.destroy = function() {
                                this.renderer = null
                            }, t
                        }();
                    n.default = p, a.default.registerPlugin("sprite", p)
                }, {
                    "../../const": 46,
                    "../../math": 70,
                    "../../renderers/canvas/CanvasRenderer": 77,
                    "./CanvasTinter": 104
                }],
                104: [function(t, e, n) {
                    "use strict";
                    n.__esModule = !0;
                    var i = t("../../utils"),
                        r = t("../../renderers/canvas/utils/canUseNewCanvasBlendModes"),
                        o = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(r),
                        a = {
                            getTintedTexture: function(t, e) {
                                var n = t._texture;
                                e = a.roundColor(e);
                                var i = "#" + ("00000" + (0 | e).toString(16)).substr(-6);
                                n.tintCache = n.tintCache || {};
                                var r = n.tintCache[i],
                                    o = void 0;
                                if (r) {
                                    if (r.tintId === n._updateID) return n.tintCache[i];
                                    o = n.tintCache[i]
                                } else o = a.canvas || document.createElement("canvas");
                                if (a.tintMethod(n, e, o), o.tintId = n._updateID, a.convertTintToImage) {
                                    var s = new Image;
                                    s.src = o.toDataURL(), n.tintCache[i] = s
                                } else n.tintCache[i] = o, a.canvas = null;
                                return o
                            },
                            tintWithMultiply: function(t, e, n) {
                                var i = n.getContext("2d"),
                                    r = t._frame.clone(),
                                    o = t.baseTexture.resolution;
                                r.x *= o, r.y *= o, r.width *= o, r.height *= o, n.width = Math.ceil(r.width), n.height = Math.ceil(r.height), i.save(), i.fillStyle = "#" + ("00000" + (0 | e).toString(16)).substr(-6), i.fillRect(0, 0, r.width, r.height), i.globalCompositeOperation = "multiply", i.drawImage(t.baseTexture.source, r.x, r.y, r.width, r.height, 0, 0, r.width, r.height), i.globalCompositeOperation = "destination-atop", i.drawImage(t.baseTexture.source, r.x, r.y, r.width, r.height, 0, 0, r.width, r.height), i.restore()
                            },
                            tintWithOverlay: function(t, e, n) {
                                var i = n.getContext("2d"),
                                    r = t._frame.clone(),
                                    o = t.baseTexture.resolution;
                                r.x *= o, r.y *= o, r.width *= o, r.height *= o, n.width = Math.ceil(r.width), n.height = Math.ceil(r.height), i.save(), i.globalCompositeOperation = "copy", i.fillStyle = "#" + ("00000" + (0 | e).toString(16)).substr(-6), i.fillRect(0, 0, r.width, r.height), i.globalCompositeOperation = "destination-atop", i.drawImage(t.baseTexture.source, r.x, r.y, r.width, r.height, 0, 0, r.width, r.height), i.restore()
                            },
                            tintWithPerPixel: function(t, e, n) {
                                var r = n.getContext("2d"),
                                    o = t._frame.clone(),
                                    a = t.baseTexture.resolution;
                                o.x *= a, o.y *= a, o.width *= a, o.height *= a, n.width = Math.ceil(o.width), n.height = Math.ceil(o.height), r.save(), r.globalCompositeOperation = "copy", r.drawImage(t.baseTexture.source, o.x, o.y, o.width, o.height, 0, 0, o.width, o.height), r.restore();
                                for (var s = (0, i.hex2rgb)(e), l = s[0], u = s[1], c = s[2], h = r.getImageData(0, 0, o.width, o.height), p = h.data, f = 0; f < p.length; f += 4) p[f + 0] *= l, p[f + 1] *= u, p[f + 2] *= c;
                                r.putImageData(h, 0, 0)
                            },
                            roundColor: function(t) {
                                var e = a.cacheStepsPerColorChannel,
                                    n = (0, i.hex2rgb)(t);
                                return n[0] = Math.min(255, n[0] / e * e), n[1] = Math.min(255, n[1] / e * e), n[2] = Math.min(255, n[2] / e * e), (0, i.rgb2hex)(n)
                            },
                            cacheStepsPerColorChannel: 8,
                            convertTintToImage: !1,
                            canUseMultiply: (0, o.default)(),
                            tintMethod: 0
                        };
                    a.tintMethod = a.canUseMultiply ? a.tintWithMultiply : a.tintWithPerPixel, n.default = a
                }, {
                    "../../renderers/canvas/utils/canUseNewCanvasBlendModes": 80,
                    "../../utils": 125
                }],
                105: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = function() {
                        function t(e) {
                            i(this, t), this.vertices = new ArrayBuffer(e), this.float32View = new Float32Array(this.vertices), this.uint32View = new Uint32Array(this.vertices)
                        }
                        return t.prototype.destroy = function() {
                            this.vertices = null, this.positions = null, this.uvs = null, this.colors = null
                        }, t
                    }();
                    n.default = r
                }, {}],
                106: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = t("../../renderers/webgl/utils/ObjectRenderer"),
                        l = i(s),
                        u = t("../../renderers/webgl/WebGLRenderer"),
                        c = i(u),
                        h = t("../../utils/createIndicesForQuads"),
                        p = i(h),
                        f = t("./generateMultiTextureShader"),
                        d = i(f),
                        m = t("../../renderers/webgl/utils/checkMaxIfStatmentsInShader"),
                        g = i(m),
                        _ = t("./BatchBuffer"),
                        y = i(_),
                        v = t("../../settings"),
                        b = i(v),
                        x = t("../../utils"),
                        T = t("pixi-gl-core"),
                        w = i(T),
                        S = t("bit-twiddle"),
                        P = i(S),
                        M = 0,
                        C = 0,
                        E = function(t) {
                            function e(n) {
                                r(this, e);
                                var i = o(this, t.call(this, n));
                                i.vertSize = 5, i.vertByteSize = 4 * i.vertSize, i.size = b.default.SPRITE_BATCH_SIZE, i.buffers = [];
                                for (var a = 1; a <= P.default.nextPow2(i.size); a *= 2) i.buffers.push(new y.default(4 * a * i.vertByteSize));
                                i.indices = (0, p.default)(i.size), i.shader = null, i.currentIndex = 0, i.groups = [];
                                for (var s = 0; s < i.size; s++) i.groups[s] = {
                                    textures: [],
                                    textureCount: 0,
                                    ids: [],
                                    size: 0,
                                    start: 0,
                                    blend: 0
                                };
                                return i.sprites = [], i.vertexBuffers = [], i.vaos = [], i.vaoMax = 2, i.vertexCount = 0, i.renderer.on("prerender", i.onPrerender, i), i
                            }
                            return a(e, t), e.prototype.onContextChange = function() {
                                var t = this.renderer.gl;
                                this.renderer.legacy ? this.MAX_TEXTURES = 1 : (this.MAX_TEXTURES = Math.min(t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS), b.default.SPRITE_MAX_TEXTURES), this.MAX_TEXTURES = (0, g.default)(this.MAX_TEXTURES, t)), this.shader = (0, d.default)(t, this.MAX_TEXTURES), this.indexBuffer = w.default.GLBuffer.createIndexBuffer(t, this.indices, t.STATIC_DRAW), this.renderer.bindVao(null);
                                for (var e = this.shader.attributes, n = 0; n < this.vaoMax; n++) {
                                    var i = this.vertexBuffers[n] = w.default.GLBuffer.createVertexBuffer(t, null, t.STREAM_DRAW),
                                        r = this.renderer.createVao().addIndex(this.indexBuffer).addAttribute(i, e.aVertexPosition, t.FLOAT, !1, this.vertByteSize, 0).addAttribute(i, e.aTextureCoord, t.UNSIGNED_SHORT, !0, this.vertByteSize, 8).addAttribute(i, e.aColor, t.UNSIGNED_BYTE, !0, this.vertByteSize, 12);
                                    e.aTextureId && r.addAttribute(i, e.aTextureId, t.FLOAT, !1, this.vertByteSize, 16), this.vaos[n] = r
                                }
                                this.vao = this.vaos[0], this.currentBlendMode = 99999, this.boundTextures = new Array(this.MAX_TEXTURES)
                            }, e.prototype.onPrerender = function() {
                                this.vertexCount = 0
                            }, e.prototype.render = function(t) {
                                this.currentIndex >= this.size && this.flush(), t._texture._uvs && (this.sprites[this.currentIndex++] = t)
                            }, e.prototype.flush = function() {
                                if (0 !== this.currentIndex) {
                                    var t = this.renderer.gl,
                                        e = this.MAX_TEXTURES,
                                        n = P.default.nextPow2(this.currentIndex),
                                        i = P.default.log2(n),
                                        r = this.buffers[i],
                                        o = this.sprites,
                                        a = this.groups,
                                        s = r.float32View,
                                        l = r.uint32View,
                                        u = this.boundTextures,
                                        c = this.renderer.boundTextures,
                                        h = this.renderer.textureGC.count,
                                        p = 0,
                                        f = void 0,
                                        d = void 0,
                                        m = 1,
                                        g = 0,
                                        _ = a[0],
                                        y = void 0,
                                        v = void 0,
                                        T = x.premultiplyBlendMode[o[0]._texture.baseTexture.premultipliedAlpha ? 1 : 0][o[0].blendMode];
                                    _.textureCount = 0, _.start = 0, _.blend = T, M++;
                                    var S = void 0;
                                    for (S = 0; S < e; ++S) {
                                        var E = c[S];
                                        E._enabled !== M ? (u[S] = E, E._virtalBoundId = S, E._enabled = M) : u[S] = this.renderer.emptyTextures[S]
                                    }
                                    for (M++, S = 0; S < this.currentIndex; ++S) {
                                        var O = o[S];
                                        f = O._texture.baseTexture;
                                        var I = x.premultiplyBlendMode[Number(f.premultipliedAlpha)][O.blendMode];
                                        if (T !== I && (T = I, d = null, g = e, M++), d !== f && (d = f, f._enabled !== M)) {
                                            if (g === e && (M++, _.size = S - _.start, g = 0, _ = a[m++], _.blend = T, _.textureCount = 0, _.start = S), f.touched = h, -1 === f._virtalBoundId)
                                                for (var R = 0; R < e; ++R) {
                                                    var A = (R + C) % e,
                                                        k = u[A];
                                                    if (k._enabled !== M) {
                                                        C++, k._virtalBoundId = -1, f._virtalBoundId = A, u[A] = f;
                                                        break
                                                    }
                                                }
                                            f._enabled = M, _.textureCount++, _.ids[g] = f._virtalBoundId, _.textures[g++] = f
                                        }
                                        if (y = O.vertexData, v = O._texture._uvs.uvsUint32, this.renderer.roundPixels) {
                                            var L = this.renderer.resolution;
                                            s[p] = (y[0] * L | 0) / L, s[p + 1] = (y[1] * L | 0) / L, s[p + 5] = (y[2] * L | 0) / L, s[p + 6] = (y[3] * L | 0) / L, s[p + 10] = (y[4] * L | 0) / L, s[p + 11] = (y[5] * L | 0) / L, s[p + 15] = (y[6] * L | 0) / L, s[p + 16] = (y[7] * L | 0) / L
                                        } else s[p] = y[0], s[p + 1] = y[1], s[p + 5] = y[2], s[p + 6] = y[3], s[p + 10] = y[4], s[p + 11] = y[5], s[p + 15] = y[6], s[p + 16] = y[7];
                                        l[p + 2] = v[0], l[p + 7] = v[1], l[p + 12] = v[2], l[p + 17] = v[3];
                                        var D = Math.min(O.worldAlpha, 1),
                                            B = D < 1 && f.premultipliedAlpha ? (0, x.premultiplyTint)(O._tintRGB, D) : O._tintRGB + (255 * D << 24);
                                        l[p + 3] = l[p + 8] = l[p + 13] = l[p + 18] = B, s[p + 4] = s[p + 9] = s[p + 14] = s[p + 19] = f._virtalBoundId, p += 20
                                    }
                                    if (_.size = S - _.start, b.default.CAN_UPLOAD_SAME_BUFFER) this.vertexBuffers[this.vertexCount].upload(r.vertices, 0, !0);
                                    else {
                                        if (this.vaoMax <= this.vertexCount) {
                                            this.vaoMax++;
                                            var N = this.shader.attributes,
                                                F = this.vertexBuffers[this.vertexCount] = w.default.GLBuffer.createVertexBuffer(t, null, t.STREAM_DRAW),
                                                G = this.renderer.createVao().addIndex(this.indexBuffer).addAttribute(F, N.aVertexPosition, t.FLOAT, !1, this.vertByteSize, 0).addAttribute(F, N.aTextureCoord, t.UNSIGNED_SHORT, !0, this.vertByteSize, 8).addAttribute(F, N.aColor, t.UNSIGNED_BYTE, !0, this.vertByteSize, 12);
                                            N.aTextureId && G.addAttribute(F, N.aTextureId, t.FLOAT, !1, this.vertByteSize, 16), this.vaos[this.vertexCount] = G
                                        }
                                        this.renderer.bindVao(this.vaos[this.vertexCount]), this.vertexBuffers[this.vertexCount].upload(r.vertices, 0, !1), this.vertexCount++
                                    }
                                    for (S = 0; S < e; ++S) c[S]._virtalBoundId = -1;
                                    for (S = 0; S < m; ++S) {
                                        for (var U = a[S], j = U.textureCount, W = 0; W < j; W++) d = U.textures[W], c[U.ids[W]] !== d && this.renderer.bindTexture(d, U.ids[W], !0), d._virtalBoundId = -1;
                                        this.renderer.state.setBlendMode(U.blend), t.drawElements(t.TRIANGLES, 6 * U.size, t.UNSIGNED_SHORT, 6 * U.start * 2)
                                    }
                                    this.currentIndex = 0
                                }
                            }, e.prototype.start = function() {
                                this.renderer.bindShader(this.shader), b.default.CAN_UPLOAD_SAME_BUFFER && (this.renderer.bindVao(this.vaos[this.vertexCount]), this.vertexBuffers[this.vertexCount].bind())
                            }, e.prototype.stop = function() {
                                this.flush()
                            }, e.prototype.destroy = function() {
                                for (var e = 0; e < this.vaoMax; e++) this.vertexBuffers[e] && this.vertexBuffers[e].destroy(),
                                    this.vaos[e] && this.vaos[e].destroy();
                                this.indexBuffer && this.indexBuffer.destroy(), this.renderer.off("prerender", this.onPrerender, this), t.prototype.destroy.call(this), this.shader && (this.shader.destroy(), this.shader = null), this.vertexBuffers = null, this.vaos = null, this.indexBuffer = null, this.indices = null, this.sprites = null;
                                for (var n = 0; n < this.buffers.length; ++n) this.buffers[n].destroy()
                            }, e
                        }(l.default);
                    n.default = E, c.default.registerPlugin("sprite", E)
                }, {
                    "../../renderers/webgl/WebGLRenderer": 84,
                    "../../renderers/webgl/utils/ObjectRenderer": 94,
                    "../../renderers/webgl/utils/checkMaxIfStatmentsInShader": 97,
                    "../../settings": 101,
                    "../../utils": 125,
                    "../../utils/createIndicesForQuads": 123,
                    "./BatchBuffer": 105,
                    "./generateMultiTextureShader": 107,
                    "bit-twiddle": 1,
                    "pixi-gl-core": 12
                }],
                107: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        var n = s;
                        n = n.replace(/%count%/gi, e), n = n.replace(/%forloop%/gi, r(e));
                        for (var i = new a.default(t, "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n    gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n    vTextureCoord = aTextureCoord;\n    vTextureId = aTextureId;\n    vColor = aColor;\n}\n", n), o = [], l = 0; l < e; l++) o[l] = l;
                        return i.bind(), i.uniforms.uSamplers = o, i
                    }

                    function r(t) {
                        var e = "";
                        e += "\n", e += "\n";
                        for (var n = 0; n < t; n++) n > 0 && (e += "\nelse "), n < t - 1 && (e += "if(textureId == " + n + ".0)"), e += "\n{", e += "\n\tcolor = texture2D(uSamplers[" + n + "], vTextureCoord);", e += "\n}";
                        return e += "\n", e += "\n"
                    }
                    n.__esModule = !0, n.default = i;
                    var o = t("../../Shader"),
                        a = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(o),
                        s = (t("path"), ["varying vec2 vTextureCoord;", "varying vec4 vColor;", "varying float vTextureId;", "uniform sampler2D uSamplers[%count%];", "void main(void){", "vec4 color;", "float textureId = floor(vTextureId+0.5);", "%forloop%", "gl_FragColor = color * vColor;", "}"].join("\n"))
                }, {
                    "../../Shader": 44,
                    path: 23
                }],
                108: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        l = t("../sprites/Sprite"),
                        u = i(l),
                        c = t("../textures/Texture"),
                        h = i(c),
                        p = t("../math"),
                        f = t("../utils"),
                        d = t("../const"),
                        m = t("../settings"),
                        g = i(m),
                        _ = t("./TextStyle"),
                        y = i(_),
                        v = t("./TextMetrics"),
                        b = i(v),
                        x = t("../utils/trimCanvas"),
                        T = i(x),
                        w = {
                            texture: !0,
                            children: !1,
                            baseTexture: !0
                        },
                        S = function(t) {
                            function e(n, i, a) {
                                r(this, e), a = a || document.createElement("canvas"), a.width = 3, a.height = 3;
                                var s = h.default.fromCanvas(a, g.default.SCALE_MODE, "text");
                                s.orig = new p.Rectangle, s.trim = new p.Rectangle;
                                var l = o(this, t.call(this, s));
                                return h.default.addToCache(l._texture, l._texture.baseTexture.textureCacheIds[0]), l.canvas = a, l.context = l.canvas.getContext("2d"), l.resolution = g.default.RESOLUTION, l._text = null, l._style = null, l._styleListener = null, l._font = "", l.text = n, l.style = i, l.localStyleID = -1, l
                            }
                            return a(e, t), e.prototype.updateText = function(t) {
                                var e = this._style;
                                if (this.localStyleID !== e.styleID && (this.dirty = !0, this.localStyleID = e.styleID), this.dirty || !t) {
                                    this._font = this._style.toFontString();
                                    var n = this.context,
                                        i = b.default.measureText(this._text, this._style, this._style.wordWrap, this.canvas),
                                        r = i.width,
                                        o = i.height,
                                        a = i.lines,
                                        s = i.lineHeight,
                                        l = i.lineWidths,
                                        u = i.maxLineWidth,
                                        c = i.fontProperties;
                                    this.canvas.width = Math.ceil((Math.max(1, r) + 2 * e.padding) * this.resolution), this.canvas.height = Math.ceil((Math.max(1, o) + 2 * e.padding) * this.resolution), n.scale(this.resolution, this.resolution), n.clearRect(0, 0, this.canvas.width, this.canvas.height), n.font = this._font, n.strokeStyle = e.stroke, n.lineWidth = e.strokeThickness, n.textBaseline = e.textBaseline, n.lineJoin = e.lineJoin, n.miterLimit = e.miterLimit;
                                    var h = void 0,
                                        p = void 0;
                                    if (e.dropShadow) {
                                        n.fillStyle = e.dropShadowColor, n.globalAlpha = e.dropShadowAlpha, n.shadowBlur = e.dropShadowBlur, e.dropShadowBlur > 0 && (n.shadowColor = e.dropShadowColor);
                                        for (var f = Math.cos(e.dropShadowAngle) * e.dropShadowDistance, d = Math.sin(e.dropShadowAngle) * e.dropShadowDistance, m = 0; m < a.length; m++) h = e.strokeThickness / 2, p = e.strokeThickness / 2 + m * s + c.ascent, "right" === e.align ? h += u - l[m] : "center" === e.align && (h += (u - l[m]) / 2), e.fill && (this.drawLetterSpacing(a[m], h + f + e.padding, p + d + e.padding), e.stroke && e.strokeThickness && (n.strokeStyle = e.dropShadowColor, this.drawLetterSpacing(a[m], h + f + e.padding, p + d + e.padding, !0), n.strokeStyle = e.stroke))
                                    }
                                    n.shadowBlur = 0, n.globalAlpha = 1, n.fillStyle = this._generateFillStyle(e, a);
                                    for (var g = 0; g < a.length; g++) h = e.strokeThickness / 2, p = e.strokeThickness / 2 + g * s + c.ascent, "right" === e.align ? h += u - l[g] : "center" === e.align && (h += (u - l[g]) / 2), e.stroke && e.strokeThickness && this.drawLetterSpacing(a[g], h + e.padding, p + e.padding, !0), e.fill && this.drawLetterSpacing(a[g], h + e.padding, p + e.padding);
                                    this.updateTexture()
                                }
                            }, e.prototype.drawLetterSpacing = function(t, e, n) {
                                var i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3],
                                    r = this._style,
                                    o = r.letterSpacing;
                                if (0 === o) return void(i ? this.context.strokeText(t, e, n) : this.context.fillText(t, e, n));
                                for (var a = String.prototype.split.call(t, ""), s = e, l = 0, u = ""; l < t.length;) u = a[l++], i ? this.context.strokeText(u, s, n) : this.context.fillText(u, s, n), s += this.context.measureText(u).width + o
                            }, e.prototype.updateTexture = function() {
                                var t = this.canvas;
                                if (this._style.trim) {
                                    var e = (0, T.default)(t);
                                    t.width = e.width, t.height = e.height, this.context.putImageData(e.data, 0, 0)
                                }
                                var n = this._texture,
                                    i = this._style,
                                    r = i.trim ? 0 : i.padding,
                                    o = n.baseTexture;
                                o.hasLoaded = !0, o.resolution = this.resolution, o.realWidth = t.width, o.realHeight = t.height, o.width = t.width / this.resolution, o.height = t.height / this.resolution, n.trim.width = n._frame.width = t.width / this.resolution, n.trim.height = n._frame.height = t.height / this.resolution, n.trim.x = -r, n.trim.y = -r, n.orig.width = n._frame.width - 2 * r, n.orig.height = n._frame.height - 2 * r, this._onTextureUpdate(), o.emit("update", o), this.dirty = !1
                            }, e.prototype.renderWebGL = function(e) {
                                this.resolution !== e.resolution && (this.resolution = e.resolution, this.dirty = !0), this.updateText(!0), t.prototype.renderWebGL.call(this, e)
                            }, e.prototype._renderCanvas = function(e) {
                                this.resolution !== e.resolution && (this.resolution = e.resolution, this.dirty = !0), this.updateText(!0), t.prototype._renderCanvas.call(this, e)
                            }, e.prototype.getLocalBounds = function(e) {
                                return this.updateText(!0), t.prototype.getLocalBounds.call(this, e)
                            }, e.prototype._calculateBounds = function() {
                                this.updateText(!0), this.calculateVertices(), this._bounds.addQuad(this.vertexData)
                            }, e.prototype._onStyleChange = function() {
                                this.dirty = !0
                            }, e.prototype._generateFillStyle = function(t, e) {
                                if (!Array.isArray(t.fill)) return t.fill;
                                if (navigator.isCocoonJS) return t.fill[0];
                                var n = void 0,
                                    i = void 0,
                                    r = void 0,
                                    o = void 0,
                                    a = this.canvas.width / this.resolution,
                                    s = this.canvas.height / this.resolution,
                                    l = t.fill.slice(),
                                    u = t.fillGradientStops.slice();
                                if (!u.length)
                                    for (var c = l.length + 1, h = 1; h < c; ++h) u.push(h / c);
                                if (l.unshift(t.fill[0]), u.unshift(0), l.push(t.fill[t.fill.length - 1]), u.push(1), t.fillGradientType === d.TEXT_GRADIENT.LINEAR_VERTICAL) {
                                    n = this.context.createLinearGradient(a / 2, 0, a / 2, s), i = (l.length + 1) * e.length, r = 0;
                                    for (var p = 0; p < e.length; p++) {
                                        r += 1;
                                        for (var f = 0; f < l.length; f++) o = "number" == typeof u[f] ? u[f] / e.length + p / e.length : r / i, n.addColorStop(o, l[f]), r++
                                    }
                                } else {
                                    n = this.context.createLinearGradient(0, s / 2, a, s / 2), i = l.length + 1, r = 1;
                                    for (var m = 0; m < l.length; m++) o = "number" == typeof u[m] ? u[m] : r / i, n.addColorStop(o, l[m]), r++
                                }
                                return n
                            }, e.prototype.destroy = function(e) {
                                "boolean" == typeof e && (e = {
                                    children: e
                                }), e = Object.assign({}, w, e), t.prototype.destroy.call(this, e), this.context = null, this.canvas = null, this._style = null
                            }, s(e, [{
                                key: "width",
                                get: function() {
                                    return this.updateText(!0), Math.abs(this.scale.x) * this._texture.orig.width
                                },
                                set: function(t) {
                                    this.updateText(!0);
                                    var e = (0, f.sign)(this.scale.x) || 1;
                                    this.scale.x = e * t / this._texture.orig.width, this._width = t
                                }
                            }, {
                                key: "height",
                                get: function() {
                                    return this.updateText(!0), Math.abs(this.scale.y) * this._texture.orig.height
                                },
                                set: function(t) {
                                    this.updateText(!0);
                                    var e = (0, f.sign)(this.scale.y) || 1;
                                    this.scale.y = e * t / this._texture.orig.height, this._height = t
                                }
                            }, {
                                key: "style",
                                get: function() {
                                    return this._style
                                },
                                set: function(t) {
                                    t = t || {}, t instanceof y.default ? this._style = t : this._style = new y.default(t), this.localStyleID = -1, this.dirty = !0
                                }
                            }, {
                                key: "text",
                                get: function() {
                                    return this._text
                                },
                                set: function(t) {
                                    t = String("" === t || null === t || void 0 === t ? " " : t), this._text !== t && (this._text = t, this.dirty = !0)
                                }
                            }]), e
                        }(u.default);
                    n.default = S
                }, {
                    "../const": 46,
                    "../math": 70,
                    "../settings": 101,
                    "../sprites/Sprite": 102,
                    "../textures/Texture": 115,
                    "../utils": 125,
                    "../utils/trimCanvas": 130,
                    "./TextMetrics": 109,
                    "./TextStyle": 110
                }],
                109: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = function() {
                        function t(e, n, r, o, a, s, l, u, c) {
                            i(this, t), this.text = e, this.style = n, this.width = r, this.height = o, this.lines = a, this.lineWidths = s, this.lineHeight = l, this.maxLineWidth = u, this.fontProperties = c
                        }
                        return t.measureText = function(e, n, i) {
                            var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : t._canvas;
                            i = i || n.wordWrap;
                            var o = n.toFontString(),
                                a = t.measureFont(o),
                                s = r.getContext("2d");
                            s.font = o;
                            for (var l = i ? t.wordWrap(e, n, r) : e, u = l.split(/(?:\r\n|\r|\n)/), c = new Array(u.length), h = 0, p = 0; p < u.length; p++) {
                                var f = s.measureText(u[p]).width + (u[p].length - 1) * n.letterSpacing;
                                c[p] = f, h = Math.max(h, f)
                            }
                            var d = h + n.strokeThickness;
                            n.dropShadow && (d += n.dropShadowDistance);
                            var m = n.lineHeight || a.fontSize + n.strokeThickness,
                                g = Math.max(m, a.fontSize + n.strokeThickness) + (u.length - 1) * (m + n.leading);
                            return n.dropShadow && (g += n.dropShadowDistance), new t(e, n, d, g, u, c, m + n.leading, h, a)
                        }, t.wordWrap = function(e, n) {
                            for (var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : t._canvas, r = i.getContext("2d"), o = "", a = 0, s = "", l = {}, u = n.letterSpacing, c = n.wordWrapWidth + n.letterSpacing, h = t.getFromCache(" ", u, l, r), p = e.split(" "), f = 0; f < p.length; f++) {
                                var d = p[f],
                                    m = t.getFromCache(d, u, l, r);
                                if (m > c)
                                    if (n.breakWords)
                                        for (var g = o.length > 0 ? " " + d : d, _ = g.split(""), y = 0; y < _.length; y++) {
                                            var v = _[y],
                                                b = t.getFromCache(v, u, l, r);
                                            b + a > c && (s += t.addLine(o), o = "", a = 0), o += v, a += b
                                        } else o.length > 0 && (s += t.addLine(o), o = "", a = 0), s += t.addLine(d), o = "", a = 0;
                                    else m + a > c && (s += t.addLine(o), o = "", a = 0), o.length > 0 ? o += " " + d : o += d, a += m + h
                            }
                            return s += t.addLine(o, !1)
                        }, t.addLine = function(t) {
                            return t = arguments.length > 1 && void 0 !== arguments[1] && !arguments[1] ? t : t + "\n"
                        }, t.getFromCache = function(t, e, n, i) {
                            var r = n[t];
                            if (void 0 === r) {
                                var o = t.length * e;
                                r = i.measureText(t).width + o, n[t] = r
                            }
                            return r
                        }, t.measureFont = function(e) {
                            if (t._fonts[e]) return t._fonts[e];
                            var n = {},
                                i = t._canvas,
                                r = t._context;
                            r.font = e;
                            var o = Math.ceil(r.measureText("|MÃ‰q").width),
                                a = Math.ceil(r.measureText("M").width),
                                s = 2 * a;
                            a = 1.4 * a | 0, i.width = o, i.height = s, r.fillStyle = "#f00", r.fillRect(0, 0, o, s), r.font = e, r.textBaseline = "alphabetic", r.fillStyle = "#000", r.fillText("|MÃ‰q", 0, a);
                            var l = r.getImageData(0, 0, o, s).data,
                                u = l.length,
                                c = 4 * o,
                                h = 0,
                                p = 0,
                                f = !1;
                            for (h = 0; h < a; ++h) {
                                for (var d = 0; d < c; d += 4)
                                    if (255 !== l[p + d]) {
                                        f = !0;
                                        break
                                    }
                                if (f) break;
                                p += c
                            }
                            for (n.ascent = a - h, p = u - c, f = !1, h = s; h > a; --h) {
                                for (var m = 0; m < c; m += 4)
                                    if (255 !== l[p + m]) {
                                        f = !0;
                                        break
                                    }
                                if (f) break;
                                p -= c
                            }
                            return n.descent = h - a, n.fontSize = n.ascent + n.descent, t._fonts[e] = n, n
                        }, t
                    }();
                    n.default = r;
                    var o = document.createElement("canvas");
                    o.width = o.height = 10, r._canvas = o, r._context = o.getContext("2d"), r._fonts = {}
                }, {}],
                110: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t) {
                        return "number" == typeof t ? (0, c.hex2string)(t) : ("string" == typeof t && 0 === t.indexOf("0x") && (t = t.replace("0x", "#")), t)
                    }

                    function o(t) {
                        if (Array.isArray(t)) {
                            for (var e = 0; e < t.length; ++e) t[e] = r(t[e]);
                            return t
                        }
                        return r(t)
                    }

                    function a(t, e) {
                        if (!Array.isArray(t) || !Array.isArray(e)) return !1;
                        if (t.length !== e.length) return !1;
                        for (var n = 0; n < t.length; ++n)
                            if (t[n] !== e[n]) return !1;
                        return !0
                    }

                    function s(t, e, n) {
                        for (var i in n) Array.isArray(e[i]) ? t[i] = e[i].slice() : t[i] = e[i]
                    }
                    n.__esModule = !0;
                    var l = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        u = t("../const"),
                        c = t("../utils"),
                        h = {
                            align: "left",
                            breakWords: !1,
                            dropShadow: !1,
                            dropShadowAlpha: 1,
                            dropShadowAngle: Math.PI / 6,
                            dropShadowBlur: 0,
                            dropShadowColor: "black",
                            dropShadowDistance: 5,
                            fill: "black",
                            fillGradientType: u.TEXT_GRADIENT.LINEAR_VERTICAL,
                            fillGradientStops: [],
                            fontFamily: "Arial",
                            fontSize: 26,
                            fontStyle: "normal",
                            fontVariant: "normal",
                            fontWeight: "normal",
                            letterSpacing: 0,
                            lineHeight: 0,
                            lineJoin: "miter",
                            miterLimit: 10,
                            padding: 0,
                            stroke: "black",
                            strokeThickness: 0,
                            textBaseline: "alphabetic",
                            trim: !1,
                            wordWrap: !1,
                            wordWrapWidth: 100,
                            leading: 0
                        },
                        p = function() {
                            function t(e) {
                                i(this, t), this.styleID = 0, this.reset(), s(this, e, e)
                            }
                            return t.prototype.clone = function() {
                                var e = {};
                                return s(e, this, h), new t(e)
                            }, t.prototype.reset = function() {
                                s(this, h, h)
                            }, t.prototype.toFontString = function() {
                                var t = "number" == typeof this.fontSize ? this.fontSize + "px" : this.fontSize,
                                    e = this.fontFamily;
                                Array.isArray(this.fontFamily) || (e = this.fontFamily.split(","));
                                for (var n = e.length - 1; n >= 0; n--) {
                                    var i = e[n].trim();
                                    /([\"\'])[^\'\"]+\1/.test(i) || (i = '"' + i + '"'), e[n] = i
                                }
                                return this.fontStyle + " " + this.fontVariant + " " + this.fontWeight + " " + t + " " + e.join(",")
                            }, l(t, [{
                                key: "align",
                                get: function() {
                                    return this._align
                                },
                                set: function(t) {
                                    this._align !== t && (this._align = t, this.styleID++)
                                }
                            }, {
                                key: "breakWords",
                                get: function() {
                                    return this._breakWords
                                },
                                set: function(t) {
                                    this._breakWords !== t && (this._breakWords = t, this.styleID++)
                                }
                            }, {
                                key: "dropShadow",
                                get: function() {
                                    return this._dropShadow
                                },
                                set: function(t) {
                                    this._dropShadow !== t && (this._dropShadow = t, this.styleID++)
                                }
                            }, {
                                key: "dropShadowAlpha",
                                get: function() {
                                    return this._dropShadowAlpha
                                },
                                set: function(t) {
                                    this._dropShadowAlpha !== t && (this._dropShadowAlpha = t, this.styleID++)
                                }
                            }, {
                                key: "dropShadowAngle",
                                get: function() {
                                    return this._dropShadowAngle
                                },
                                set: function(t) {
                                    this._dropShadowAngle !== t && (this._dropShadowAngle = t, this.styleID++)
                                }
                            }, {
                                key: "dropShadowBlur",
                                get: function() {
                                    return this._dropShadowBlur
                                },
                                set: function(t) {
                                    this._dropShadowBlur !== t && (this._dropShadowBlur = t, this.styleID++)
                                }
                            }, {
                                key: "dropShadowColor",
                                get: function() {
                                    return this._dropShadowColor
                                },
                                set: function(t) {
                                    var e = o(t);
                                    this._dropShadowColor !== e && (this._dropShadowColor = e, this.styleID++)
                                }
                            }, {
                                key: "dropShadowDistance",
                                get: function() {
                                    return this._dropShadowDistance
                                },
                                set: function(t) {
                                    this._dropShadowDistance !== t && (this._dropShadowDistance = t, this.styleID++)
                                }
                            }, {
                                key: "fill",
                                get: function() {
                                    return this._fill
                                },
                                set: function(t) {
                                    var e = o(t);
                                    this._fill !== e && (this._fill = e, this.styleID++)
                                }
                            }, {
                                key: "fillGradientType",
                                get: function() {
                                    return this._fillGradientType
                                },
                                set: function(t) {
                                    this._fillGradientType !== t && (this._fillGradientType = t, this.styleID++)
                                }
                            }, {
                                key: "fillGradientStops",
                                get: function() {
                                    return this._fillGradientStops
                                },
                                set: function(t) {
                                    a(this._fillGradientStops, t) || (this._fillGradientStops = t, this.styleID++)
                                }
                            }, {
                                key: "fontFamily",
                                get: function() {
                                    return this._fontFamily
                                },
                                set: function(t) {
                                    this.fontFamily !== t && (this._fontFamily = t, this.styleID++)
                                }
                            }, {
                                key: "fontSize",
                                get: function() {
                                    return this._fontSize
                                },
                                set: function(t) {
                                    this._fontSize !== t && (this._fontSize = t, this.styleID++)
                                }
                            }, {
                                key: "fontStyle",
                                get: function() {
                                    return this._fontStyle
                                },
                                set: function(t) {
                                    this._fontStyle !== t && (this._fontStyle = t, this.styleID++)
                                }
                            }, {
                                key: "fontVariant",
                                get: function() {
                                    return this._fontVariant
                                },
                                set: function(t) {
                                    this._fontVariant !== t && (this._fontVariant = t, this.styleID++)
                                }
                            }, {
                                key: "fontWeight",
                                get: function() {
                                    return this._fontWeight
                                },
                                set: function(t) {
                                    this._fontWeight !== t && (this._fontWeight = t, this.styleID++)
                                }
                            }, {
                                key: "letterSpacing",
                                get: function() {
                                    return this._letterSpacing
                                },
                                set: function(t) {
                                    this._letterSpacing !== t && (this._letterSpacing = t, this.styleID++)
                                }
                            }, {
                                key: "lineHeight",
                                get: function() {
                                    return this._lineHeight
                                },
                                set: function(t) {
                                    this._lineHeight !== t && (this._lineHeight = t, this.styleID++)
                                }
                            }, {
                                key: "leading",
                                get: function() {
                                    return this._leading
                                },
                                set: function(t) {
                                    this._leading !== t && (this._leading = t, this.styleID++)
                                }
                            }, {
                                key: "lineJoin",
                                get: function() {
                                    return this._lineJoin
                                },
                                set: function(t) {
                                    this._lineJoin !== t && (this._lineJoin = t, this.styleID++)
                                }
                            }, {
                                key: "miterLimit",
                                get: function() {
                                    return this._miterLimit
                                },
                                set: function(t) {
                                    this._miterLimit !== t && (this._miterLimit = t, this.styleID++)
                                }
                            }, {
                                key: "padding",
                                get: function() {
                                    return this._padding
                                },
                                set: function(t) {
                                    this._padding !== t && (this._padding = t, this.styleID++)
                                }
                            }, {
                                key: "stroke",
                                get: function() {
                                    return this._stroke
                                },
                                set: function(t) {
                                    var e = o(t);
                                    this._stroke !== e && (this._stroke = e, this.styleID++)
                                }
                            }, {
                                key: "strokeThickness",
                                get: function() {
                                    return this._strokeThickness
                                },
                                set: function(t) {
                                    this._strokeThickness !== t && (this._strokeThickness = t, this.styleID++)
                                }
                            }, {
                                key: "textBaseline",
                                get: function() {
                                    return this._textBaseline
                                },
                                set: function(t) {
                                    this._textBaseline !== t && (this._textBaseline = t, this.styleID++)
                                }
                            }, {
                                key: "trim",
                                get: function() {
                                    return this._trim
                                },
                                set: function(t) {
                                    this._trim !== t && (this._trim = t, this.styleID++)
                                }
                            }, {
                                key: "wordWrap",
                                get: function() {
                                    return this._wordWrap
                                },
                                set: function(t) {
                                    this._wordWrap !== t && (this._wordWrap = t, this.styleID++)
                                }
                            }, {
                                key: "wordWrapWidth",
                                get: function() {
                                    return this._wordWrapWidth
                                },
                                set: function(t) {
                                    this._wordWrapWidth !== t && (this._wordWrapWidth = t, this.styleID++)
                                }
                            }]), t
                        }();
                    n.default = p
                }, {
                    "../const": 46,
                    "../utils": 125
                }],
                111: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = t("./BaseTexture"),
                        l = i(s),
                        u = t("../settings"),
                        c = i(u),
                        h = function(t) {
                            function e() {
                                var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 100,
                                    i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 100,
                                    a = arguments[2],
                                    s = arguments[3];
                                r(this, e);
                                var l = o(this, t.call(this, null, a));
                                return l.resolution = s || c.default.RESOLUTION, l.width = Math.ceil(n), l.height = Math.ceil(i), l.realWidth = l.width * l.resolution, l.realHeight = l.height * l.resolution, l.scaleMode = void 0 !== a ? a : c.default.SCALE_MODE, l.hasLoaded = !0, l._glRenderTargets = {}, l._canvasRenderTarget = null, l.valid = !1, l
                            }
                            return a(e, t), e.prototype.resize = function(t, e) {
                                t = Math.ceil(t), e = Math.ceil(e), t === this.width && e === this.height || (this.valid = t > 0 && e > 0, this.width = t, this.height = e, this.realWidth = this.width * this.resolution, this.realHeight = this.height * this.resolution, this.valid && this.emit("update", this))
                            }, e.prototype.destroy = function() {
                                t.prototype.destroy.call(this, !0), this.renderer = null
                            }, e
                        }(l.default);
                    n.default = h
                }, {
                    "../settings": 101,
                    "./BaseTexture": 112
                }],
                112: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = t("../utils"),
                        l = t("../settings"),
                        u = i(l),
                        c = t("eventemitter3"),
                        h = i(c),
                        p = t("../utils/determineCrossOrigin"),
                        f = i(p),
                        d = t("bit-twiddle"),
                        m = i(d),
                        g = function(t) {
                            function e(n, i, a) {
                                r(this, e);
                                var l = o(this, t.call(this));
                                return l.uid = (0, s.uid)(), l.touched = 0, l.resolution = a || u.default.RESOLUTION, l.width = 100, l.height = 100, l.realWidth = 100, l.realHeight = 100, l.scaleMode = void 0 !== i ? i : u.default.SCALE_MODE, l.hasLoaded = !1, l.isLoading = !1, l.source = null, l.origSource = null, l.imageType = null, l.sourceScale = 1, l.premultipliedAlpha = !0, l.imageUrl = null, l.isPowerOfTwo = !1, l.mipmap = u.default.MIPMAP_TEXTURES, l.wrapMode = u.default.WRAP_MODE, l._glTextures = {}, l._enabled = 0, l._virtalBoundId = -1, l._destroyed = !1, l.textureCacheIds = [], n && l.loadSource(n), l
                            }
                            return a(e, t), e.prototype.update = function() {
                                "svg" !== this.imageType && (this.realWidth = this.source.naturalWidth || this.source.videoWidth || this.source.width, this.realHeight = this.source.naturalHeight || this.source.videoHeight || this.source.height, this._updateDimensions()), this.emit("update", this)
                            }, e.prototype._updateDimensions = function() {
                                this.width = this.realWidth / this.resolution, this.height = this.realHeight / this.resolution, this.isPowerOfTwo = m.default.isPow2(this.realWidth) && m.default.isPow2(this.realHeight)
                            }, e.prototype.loadSource = function(t) {
                                var e = this.isLoading;
                                this.hasLoaded = !1, this.isLoading = !1, e && this.source && (this.source.onload = null, this.source.onerror = null);
                                var n = !this.source;
                                if (this.source = t, (t.src && t.complete || t.getContext) && t.width && t.height) this._updateImageType(), "svg" === this.imageType ? this._loadSvgSource() : this._sourceLoaded(), n && this.emit("loaded", this);
                                else if (!t.getContext) {
                                    this.isLoading = !0;
                                    var i = this;
                                    if (t.onload = function() {
                                            if (i._updateImageType(), t.onload = null, t.onerror = null, i.isLoading) {
                                                if (i.isLoading = !1, i._sourceLoaded(), "svg" === i.imageType) return void i._loadSvgSource();
                                                i.emit("loaded", i)
                                            }
                                        }, t.onerror = function() {
                                            t.onload = null, t.onerror = null, i.isLoading && (i.isLoading = !1, i.emit("error", i))
                                        }, t.complete && t.src) {
                                        if (t.onload = null, t.onerror = null, "svg" === i.imageType) return void i._loadSvgSource();
                                        this.isLoading = !1, t.width && t.height ? (this._sourceLoaded(), e && this.emit("loaded", this)) : e && this.emit("error", this)
                                    }
                                }
                            }, e.prototype._updateImageType = function() {
                                if (this.imageUrl) {
                                    var t = (0, s.decomposeDataUri)(this.imageUrl),
                                        e = void 0;
                                    if (t && "image" === t.mediaType) {
                                        var n = t.subType.split("+")[0];
                                        if (!(e = (0, s.getUrlFileExtension)("." + n))) throw new Error("Invalid image type in data URI.")
                                    } else(e = (0, s.getUrlFileExtension)(this.imageUrl)) || (e = "png");
                                    this.imageType = e
                                }
                            }, e.prototype._loadSvgSource = function() {
                                if ("svg" === this.imageType) {
                                    var t = (0, s.decomposeDataUri)(this.imageUrl);
                                    t ? this._loadSvgSourceUsingDataUri(t) : this._loadSvgSourceUsingXhr()
                                }
                            }, e.prototype._loadSvgSourceUsingDataUri = function(t) {
                                var e = void 0;
                                if ("base64" === t.encoding) {
                                    if (!atob) throw new Error("Your browser doesn't support base64 conversions.");
                                    e = atob(t.data)
                                } else e = t.data;
                                this._loadSvgSourceUsingString(e)
                            }, e.prototype._loadSvgSourceUsingXhr = function() {
                                var t = this,
                                    e = new XMLHttpRequest;
                                e.onload = function() {
                                    if (e.readyState !== e.DONE || 200 !== e.status) throw new Error("Failed to load SVG using XHR.");
                                    t._loadSvgSourceUsingString(e.response)
                                }, e.onerror = function() {
                                    return t.emit("error", t)
                                }, e.open("GET", this.imageUrl, !0), e.send()
                            }, e.prototype._loadSvgSourceUsingString = function(t) {
                                var n = (0, s.getSvgSize)(t),
                                    i = n.width,
                                    r = n.height;
                                if (!i || !r) throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");
                                this.realWidth = Math.round(i * this.sourceScale), this.realHeight = Math.round(r * this.sourceScale), this._updateDimensions();
                                var o = document.createElement("canvas");
                                o.width = this.realWidth, o.height = this.realHeight, o._pixiId = "canvas_" + (0, s.uid)(), o.getContext("2d").drawImage(this.source, 0, 0, i, r, 0, 0, this.realWidth, this.realHeight), this.origSource = this.source, this.source = o, e.addToCache(this, o._pixiId), this.isLoading = !1, this._sourceLoaded(), this.emit("loaded", this)
                            }, e.prototype._sourceLoaded = function() {
                                this.hasLoaded = !0, this.update()
                            }, e.prototype.destroy = function() {
                                this.imageUrl && (delete s.TextureCache[this.imageUrl], this.imageUrl = null, navigator.isCocoonJS || (this.source.src = "")), this.source = null, this.dispose(), e.removeFromCache(this), this.textureCacheIds = null, this._destroyed = !0
                            }, e.prototype.dispose = function() {
                                this.emit("dispose", this)
                            }, e.prototype.updateSourceImage = function(t) {
                                this.source.src = t, this.loadSource(this.source)
                            }, e.fromImage = function(t, n, i, r) {
                                var o = s.BaseTextureCache[t];
                                if (!o) {
                                    var a = new Image;
                                    void 0 === n && 0 !== t.indexOf("data:") ? a.crossOrigin = (0, f.default)(t) : n && (a.crossOrigin = "string" == typeof n ? n : "anonymous"), o = new e(a, i), o.imageUrl = t, r && (o.sourceScale = r), o.resolution = (0, s.getResolutionOfUrl)(t), a.src = t, e.addToCache(o, t)
                                }
                                return o
                            }, e.fromCanvas = function(t, n) {
                                var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "canvas";
                                t._pixiId || (t._pixiId = i + "_" + (0, s.uid)());
                                var r = s.BaseTextureCache[t._pixiId];
                                return r || (r = new e(t, n), e.addToCache(r, t._pixiId)), r
                            }, e.from = function(t, n, i) {
                                if ("string" == typeof t) return e.fromImage(t, void 0, n, i);
                                if (t instanceof HTMLImageElement) {
                                    var r = t.src,
                                        o = s.BaseTextureCache[r];
                                    return o || (o = new e(t, n), o.imageUrl = r, i && (o.sourceScale = i), o.resolution = (0, s.getResolutionOfUrl)(r), e.addToCache(o, r)), o
                                }
                                return t instanceof HTMLCanvasElement ? e.fromCanvas(t, n) : t
                            }, e.addToCache = function(t, e) {
                                e && (-1 === t.textureCacheIds.indexOf(e) && t.textureCacheIds.push(e), s.BaseTextureCache[e], s.BaseTextureCache[e] = t)
                            }, e.removeFromCache = function(t) {
                                if ("string" == typeof t) {
                                    var e = s.BaseTextureCache[t];
                                    if (e) {
                                        var n = e.textureCacheIds.indexOf(t);
                                        return n > -1 && e.textureCacheIds.splice(n, 1), delete s.BaseTextureCache[t], e
                                    }
                                } else if (t && t.textureCacheIds) {
                                    for (var i = 0; i < t.textureCacheIds.length; ++i) delete s.BaseTextureCache[t.textureCacheIds[i]];
                                    return t.textureCacheIds.length = 0, t
                                }
                                return null
                            }, e
                        }(h.default);
                    n.default = g
                }, {
                    "../settings": 101,
                    "../utils": 125,
                    "../utils/determineCrossOrigin": 124,
                    "bit-twiddle": 1,
                    eventemitter3: 3
                }],
                113: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = t("./BaseRenderTexture"),
                        l = i(s),
                        u = t("./Texture"),
                        c = i(u),
                        h = function(t) {
                            function e(n, i) {
                                r(this, e);
                                var a = null;
                                if (!(n instanceof l.default)) {
                                    var s = arguments[1],
                                        u = arguments[2],
                                        c = arguments[3],
                                        h = arguments[4];
                                    a = arguments[0], i = null, n = new l.default(s, u, c, h)
                                }
                                var p = o(this, t.call(this, n, i));
                                return p.legacyRenderer = a, p.valid = !0, p._updateUvs(), p
                            }
                            return a(e, t), e.prototype.resize = function(t, e, n) {
                                t = Math.ceil(t), e = Math.ceil(e), this.valid = t > 0 && e > 0, this._frame.width = this.orig.width = t, this._frame.height = this.orig.height = e, n || this.baseTexture.resize(t, e), this._updateUvs()
                            }, e.create = function(t, n, i, r) {
                                return new e(new l.default(t, n, i, r))
                            }, e
                        }(c.default);
                    n.default = h
                }, {
                    "./BaseRenderTexture": 111,
                    "./Texture": 115
                }],
                114: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        o = t("../"),
                        a = t("../utils"),
                        s = function() {
                            function t(e, n) {
                                var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;
                                i(this, t), this.baseTexture = e, this.textures = {}, this.data = n, this.resolution = this._updateResolution(r || this.baseTexture.imageUrl), this._frames = this.data.frames, this._frameKeys = Object.keys(this._frames), this._batchIndex = 0, this._callback = null
                            }
                            return r(t, null, [{
                                key: "BATCH_SIZE",
                                get: function() {
                                    return 1e3
                                }
                            }]), t.prototype._updateResolution = function(t) {
                                var e = this.data.meta.scale,
                                    n = (0, a.getResolutionOfUrl)(t, null);
                                return null === n && (n = void 0 !== e ? parseFloat(e) : 1), 1 !== n && (this.baseTexture.resolution = n, this.baseTexture.update()), n
                            }, t.prototype.parse = function(e) {
                                this._batchIndex = 0, this._callback = e, this._frameKeys.length <= t.BATCH_SIZE ? (this._processFrames(0), this._parseComplete()) : this._nextBatch()
                            }, t.prototype._processFrames = function(e) {
                                for (var n = e, i = t.BATCH_SIZE, r = this.baseTexture.sourceScale; n - e < i && n < this._frameKeys.length;) {
                                    var a = this._frameKeys[n],
                                        s = this._frames[a],
                                        l = s.frame;
                                    if (l) {
                                        var u = null,
                                            c = null,
                                            h = !1 !== s.trimmed && s.sourceSize ? s.sourceSize : s.frame,
                                            p = new o.Rectangle(0, 0, Math.floor(h.w * r) / this.resolution, Math.floor(h.h * r) / this.resolution);
                                        u = s.rotated ? new o.Rectangle(Math.floor(l.x * r) / this.resolution, Math.floor(l.y * r) / this.resolution, Math.floor(l.h * r) / this.resolution, Math.floor(l.w * r) / this.resolution) : new o.Rectangle(Math.floor(l.x * r) / this.resolution, Math.floor(l.y * r) / this.resolution, Math.floor(l.w * r) / this.resolution, Math.floor(l.h * r) / this.resolution), !1 !== s.trimmed && s.spriteSourceSize && (c = new o.Rectangle(Math.floor(s.spriteSourceSize.x * r) / this.resolution, Math.floor(s.spriteSourceSize.y * r) / this.resolution, Math.floor(l.w * r) / this.resolution, Math.floor(l.h * r) / this.resolution)), this.textures[a] = new o.Texture(this.baseTexture, u, p, c, s.rotated ? 2 : 0), o.Texture.addToCache(this.textures[a], a)
                                    }
                                    n++
                                }
                            }, t.prototype._parseComplete = function() {
                                var t = this._callback;
                                this._callback = null, this._batchIndex = 0, t.call(this, this.textures)
                            }, t.prototype._nextBatch = function() {
                                var e = this;
                                this._processFrames(this._batchIndex * t.BATCH_SIZE), this._batchIndex++, setTimeout(function() {
                                    e._batchIndex * t.BATCH_SIZE < e._frameKeys.length ? e._nextBatch() : e._parseComplete()
                                }, 0)
                            }, t.prototype.destroy = function() {
                                var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                                for (var e in this.textures) this.textures[e].destroy();
                                this._frames = null, this._frameKeys = null, this.data = null, this.textures = null, t && this.baseTexture.destroy(), this.baseTexture = null
                            }, t
                        }();
                    n.default = s
                }, {
                    "../": 65,
                    "../utils": 125
                }],
                115: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }

                    function s(t) {
                        t.destroy = function() {}, t.on = function() {}, t.once = function() {}, t.emit = function() {}
                    }
                    n.__esModule = !0;
                    var l = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        u = t("./BaseTexture"),
                        c = i(u),
                        h = t("./VideoBaseTexture"),
                        p = i(h),
                        f = t("./TextureUvs"),
                        d = i(f),
                        m = t("eventemitter3"),
                        g = i(m),
                        _ = t("../math"),
                        y = t("../utils"),
                        v = t("../settings"),
                        b = i(v),
                        x = function(t) {
                            function e(n, i, a, s, l) {
                                r(this, e);
                                var u = o(this, t.call(this));
                                if (u.noFrame = !1, i || (u.noFrame = !0, i = new _.Rectangle(0, 0, 1, 1)), n instanceof e && (n = n.baseTexture), u.baseTexture = n, u._frame = i, u.trim = s, u.valid = !1, u.requiresUpdate = !1, u._uvs = null, u.orig = a || i, u._rotate = Number(l || 0), !0 === l) u._rotate = 2;
                                else if (u._rotate % 2 != 0) throw new Error("attempt to use diamond-shaped UVs. If you are sure, set rotation manually");
                                return n.hasLoaded ? (u.noFrame && (i = new _.Rectangle(0, 0, n.width, n.height),
                                    n.on("update", u.onBaseTextureUpdated, u)), u.frame = i) : n.once("loaded", u.onBaseTextureLoaded, u), u._updateID = 0, u.transform = null, u.textureCacheIds = [], u
                            }
                            return a(e, t), e.prototype.update = function() {
                                this.baseTexture.update()
                            }, e.prototype.onBaseTextureLoaded = function(t) {
                                this._updateID++, this.noFrame ? this.frame = new _.Rectangle(0, 0, t.width, t.height) : this.frame = this._frame, this.baseTexture.on("update", this.onBaseTextureUpdated, this), this.emit("update", this)
                            }, e.prototype.onBaseTextureUpdated = function(t) {
                                this._updateID++, this._frame.width = t.width, this._frame.height = t.height, this.emit("update", this)
                            }, e.prototype.destroy = function(t) {
                                this.baseTexture && (t && (y.TextureCache[this.baseTexture.imageUrl] && e.removeFromCache(this.baseTexture.imageUrl), this.baseTexture.destroy()), this.baseTexture.off("update", this.onBaseTextureUpdated, this), this.baseTexture.off("loaded", this.onBaseTextureLoaded, this), this.baseTexture = null), this._frame = null, this._uvs = null, this.trim = null, this.orig = null, this.valid = !1, e.removeFromCache(this), this.textureCacheIds = null
                            }, e.prototype.clone = function() {
                                return new e(this.baseTexture, this.frame, this.orig, this.trim, this.rotate)
                            }, e.prototype._updateUvs = function() {
                                this._uvs || (this._uvs = new d.default), this._uvs.set(this._frame, this.baseTexture, this.rotate), this._updateID++
                            }, e.fromImage = function(t, n, i, r) {
                                var o = y.TextureCache[t];
                                return o || (o = new e(c.default.fromImage(t, n, i, r)), e.addToCache(o, t)), o
                            }, e.fromFrame = function(t) {
                                var e = y.TextureCache[t];
                                if (!e) throw new Error('The frameId "' + t + '" does not exist in the texture cache');
                                return e
                            }, e.fromCanvas = function(t, n) {
                                var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "canvas";
                                return new e(c.default.fromCanvas(t, n, i))
                            }, e.fromVideo = function(t, n) {
                                return "string" == typeof t ? e.fromVideoUrl(t, n) : new e(p.default.fromVideo(t, n))
                            }, e.fromVideoUrl = function(t, n) {
                                return new e(p.default.fromUrl(t, n))
                            }, e.from = function(t) {
                                if ("string" == typeof t) {
                                    var n = y.TextureCache[t];
                                    if (!n) {
                                        return null !== t.match(/\.(mp4|webm|ogg|h264|avi|mov)$/) ? e.fromVideoUrl(t) : e.fromImage(t)
                                    }
                                    return n
                                }
                                return t instanceof HTMLImageElement ? new e(c.default.from(t)) : t instanceof HTMLCanvasElement ? e.fromCanvas(t, b.default.SCALE_MODE, "HTMLCanvasElement") : t instanceof HTMLVideoElement ? e.fromVideo(t) : t instanceof c.default ? new e(t) : t
                            }, e.fromLoader = function(t, n, i) {
                                var r = new c.default(t, void 0, (0, y.getResolutionOfUrl)(n)),
                                    o = new e(r);
                                return r.imageUrl = n, i || (i = n), c.default.addToCache(o.baseTexture, i), e.addToCache(o, i), i !== n && (c.default.addToCache(o.baseTexture, n), e.addToCache(o, n)), o
                            }, e.addToCache = function(t, e) {
                                e && (-1 === t.textureCacheIds.indexOf(e) && t.textureCacheIds.push(e), y.TextureCache[e], y.TextureCache[e] = t)
                            }, e.removeFromCache = function(t) {
                                if ("string" == typeof t) {
                                    var e = y.TextureCache[t];
                                    if (e) {
                                        var n = e.textureCacheIds.indexOf(t);
                                        return n > -1 && e.textureCacheIds.splice(n, 1), delete y.TextureCache[t], e
                                    }
                                } else if (t && t.textureCacheIds) {
                                    for (var i = 0; i < t.textureCacheIds.length; ++i) y.TextureCache[t.textureCacheIds[i]] === t && delete y.TextureCache[t.textureCacheIds[i]];
                                    return t.textureCacheIds.length = 0, t
                                }
                                return null
                            }, l(e, [{
                                key: "frame",
                                get: function() {
                                    return this._frame
                                },
                                set: function(t) {
                                    this._frame = t, this.noFrame = !1;
                                    var e = t.x,
                                        n = t.y,
                                        i = t.width,
                                        r = t.height,
                                        o = e + i > this.baseTexture.width,
                                        a = n + r > this.baseTexture.height;
                                    if (o || a) {
                                        var s = o && a ? "and" : "or",
                                            l = "X: " + e + " + " + i + " = " + (e + i) + " > " + this.baseTexture.width,
                                            u = "Y: " + n + " + " + r + " = " + (n + r) + " > " + this.baseTexture.height;
                                        throw new Error("Texture Error: frame does not fit inside the base Texture dimensions: " + l + " " + s + " " + u)
                                    }
                                    this.valid = i && r && this.baseTexture.hasLoaded, this.trim || this.rotate || (this.orig = t), this.valid && this._updateUvs()
                                }
                            }, {
                                key: "rotate",
                                get: function() {
                                    return this._rotate
                                },
                                set: function(t) {
                                    this._rotate = t, this.valid && this._updateUvs()
                                }
                            }, {
                                key: "width",
                                get: function() {
                                    return this.orig.width
                                }
                            }, {
                                key: "height",
                                get: function() {
                                    return this.orig.height
                                }
                            }]), e
                        }(g.default);
                    n.default = x, x.EMPTY = new x(new c.default), s(x.EMPTY), s(x.EMPTY.baseTexture), x.WHITE = function() {
                        var t = document.createElement("canvas");
                        t.width = 10, t.height = 10;
                        var e = t.getContext("2d");
                        return e.fillStyle = "white", e.fillRect(0, 0, 10, 10), new x(new c.default(t))
                    }(), s(x.WHITE), s(x.WHITE.baseTexture)
                }, {
                    "../math": 70,
                    "../settings": 101,
                    "../utils": 125,
                    "./BaseTexture": 112,
                    "./TextureUvs": 117,
                    "./VideoBaseTexture": 118,
                    eventemitter3: 3
                }],
                116: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        o = t("../math/Matrix"),
                        a = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(o),
                        s = new a.default,
                        l = function() {
                            function t(e, n) {
                                i(this, t), this._texture = e, this.mapCoord = new a.default, this.uClampFrame = new Float32Array(4), this.uClampOffset = new Float32Array(2), this._lastTextureID = -1, this.clampOffset = 0, this.clampMargin = void 0 === n ? .5 : n
                            }
                            return t.prototype.multiplyUvs = function(t, e) {
                                void 0 === e && (e = t);
                                for (var n = this.mapCoord, i = 0; i < t.length; i += 2) {
                                    var r = t[i],
                                        o = t[i + 1];
                                    e[i] = r * n.a + o * n.c + n.tx, e[i + 1] = r * n.b + o * n.d + n.ty
                                }
                                return e
                            }, t.prototype.update = function(t) {
                                var e = this._texture;
                                if (!e || !e.valid) return !1;
                                if (!t && this._lastTextureID === e._updateID) return !1;
                                this._lastTextureID = e._updateID;
                                var n = e._uvs;
                                this.mapCoord.set(n.x1 - n.x0, n.y1 - n.y0, n.x3 - n.x0, n.y3 - n.y0, n.x0, n.y0);
                                var i = e.orig,
                                    r = e.trim;
                                r && (s.set(i.width / r.width, 0, 0, i.height / r.height, -r.x / r.width, -r.y / r.height), this.mapCoord.append(s));
                                var o = e.baseTexture,
                                    a = this.uClampFrame,
                                    l = this.clampMargin / o.resolution,
                                    u = this.clampOffset;
                                return a[0] = (e._frame.x + l + u) / o.width, a[1] = (e._frame.y + l + u) / o.height, a[2] = (e._frame.x + e._frame.width - l + u) / o.width, a[3] = (e._frame.y + e._frame.height - l + u) / o.height, this.uClampOffset[0] = u / o.realWidth, this.uClampOffset[1] = u / o.realHeight, !0
                            }, r(t, [{
                                key: "texture",
                                get: function() {
                                    return this._texture
                                },
                                set: function(t) {
                                    this._texture = t, this._lastTextureID = -1
                                }
                            }]), t
                        }();
                    n.default = l
                }, {
                    "../math/Matrix": 67
                }],
                117: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = t("../math/GroupD8"),
                        o = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(r),
                        a = function() {
                            function t() {
                                i(this, t), this.x0 = 0, this.y0 = 0, this.x1 = 1, this.y1 = 0, this.x2 = 1, this.y2 = 1, this.x3 = 0, this.y3 = 1, this.uvsUint32 = new Uint32Array(4)
                            }
                            return t.prototype.set = function(t, e, n) {
                                var i = e.width,
                                    r = e.height;
                                if (n) {
                                    var a = t.width / 2 / i,
                                        s = t.height / 2 / r,
                                        l = t.x / i + a,
                                        u = t.y / r + s;
                                    n = o.default.add(n, o.default.NW), this.x0 = l + a * o.default.uX(n), this.y0 = u + s * o.default.uY(n), n = o.default.add(n, 2), this.x1 = l + a * o.default.uX(n), this.y1 = u + s * o.default.uY(n), n = o.default.add(n, 2), this.x2 = l + a * o.default.uX(n), this.y2 = u + s * o.default.uY(n), n = o.default.add(n, 2), this.x3 = l + a * o.default.uX(n), this.y3 = u + s * o.default.uY(n)
                                } else this.x0 = t.x / i, this.y0 = t.y / r, this.x1 = (t.x + t.width) / i, this.y1 = t.y / r, this.x2 = (t.x + t.width) / i, this.y2 = (t.y + t.height) / r, this.x3 = t.x / i, this.y3 = (t.y + t.height) / r;
                                this.uvsUint32[0] = (65535 * this.y0 & 65535) << 16 | 65535 * this.x0 & 65535, this.uvsUint32[1] = (65535 * this.y1 & 65535) << 16 | 65535 * this.x1 & 65535, this.uvsUint32[2] = (65535 * this.y2 & 65535) << 16 | 65535 * this.x2 & 65535, this.uvsUint32[3] = (65535 * this.y3 & 65535) << 16 | 65535 * this.x3 & 65535
                            }, t
                        }();
                    n.default = a
                }, {
                    "../math/GroupD8": 66
                }],
                118: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }

                    function s(t, e) {
                        e || (e = "video/" + t.substr(t.lastIndexOf(".") + 1));
                        var n = document.createElement("source");
                        return n.src = t, n.type = e, n
                    }
                    n.__esModule = !0;
                    var l = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        u = t("./BaseTexture"),
                        c = i(u),
                        h = t("../utils"),
                        p = t("../ticker"),
                        f = t("../const"),
                        d = t("../utils/determineCrossOrigin"),
                        m = i(d),
                        g = function(t) {
                            function e(n, i) {
                                if (r(this, e), !n) throw new Error("No video source element specified.");
                                (n.readyState === n.HAVE_ENOUGH_DATA || n.readyState === n.HAVE_FUTURE_DATA) && n.width && n.height && (n.complete = !0);
                                var a = o(this, t.call(this, n, i));
                                return a.width = n.videoWidth, a.height = n.videoHeight, a._autoUpdate = !0, a._isAutoUpdating = !1, a.autoPlay = !0, a.update = a.update.bind(a), a._onCanPlay = a._onCanPlay.bind(a), n.addEventListener("play", a._onPlayStart.bind(a)), n.addEventListener("pause", a._onPlayStop.bind(a)), a.hasLoaded = !1, a.__loaded = !1, a._isSourceReady() ? a._onCanPlay() : (n.addEventListener("canplay", a._onCanPlay), n.addEventListener("canplaythrough", a._onCanPlay)), a
                            }
                            return a(e, t), e.prototype._isSourcePlaying = function() {
                                var t = this.source;
                                return t.currentTime > 0 && !1 === t.paused && !1 === t.ended && t.readyState > 2
                            }, e.prototype._isSourceReady = function() {
                                return 3 === this.source.readyState || 4 === this.source.readyState
                            }, e.prototype._onPlayStart = function() {
                                this.hasLoaded || this._onCanPlay(), !this._isAutoUpdating && this.autoUpdate && (p.shared.add(this.update, this, f.UPDATE_PRIORITY.HIGH), this._isAutoUpdating = !0)
                            }, e.prototype._onPlayStop = function() {
                                this._isAutoUpdating && (p.shared.remove(this.update, this), this._isAutoUpdating = !1)
                            }, e.prototype._onCanPlay = function() {
                                this.hasLoaded = !0, this.source && (this.source.removeEventListener("canplay", this._onCanPlay), this.source.removeEventListener("canplaythrough", this._onCanPlay), this.width = this.source.videoWidth, this.height = this.source.videoHeight, this.__loaded || (this.__loaded = !0, this.emit("loaded", this)), this._isSourcePlaying() ? this._onPlayStart() : this.autoPlay && this.source.play())
                            }, e.prototype.destroy = function() {
                                this._isAutoUpdating && p.shared.remove(this.update, this), this.source && this.source._pixiId && (c.default.removeFromCache(this.source._pixiId), delete this.source._pixiId, this.source.pause(), this.source.src = "", this.source.load()), t.prototype.destroy.call(this)
                            }, e.fromVideo = function(t, n) {
                                t._pixiId || (t._pixiId = "video_" + (0, h.uid)());
                                var i = h.BaseTextureCache[t._pixiId];
                                return i || (i = new e(t, n), c.default.addToCache(i, t._pixiId)), i
                            }, e.fromUrl = function(t, n, i) {
                                var r = document.createElement("video");
                                r.setAttribute("webkit-playsinline", ""), r.setAttribute("playsinline", "");
                                var o = Array.isArray(t) ? t[0].src || t[0] : t.src || t;
                                if (void 0 === i && 0 !== o.indexOf("data:") ? r.crossOrigin = (0, m.default)(o) : i && (r.crossOrigin = "string" == typeof i ? i : "anonymous"), Array.isArray(t))
                                    for (var a = 0; a < t.length; ++a) r.appendChild(s(t[a].src || t[a], t[a].mime));
                                else r.appendChild(s(o, t.mime));
                                return r.load(), e.fromVideo(r, n)
                            }, l(e, [{
                                key: "autoUpdate",
                                get: function() {
                                    return this._autoUpdate
                                },
                                set: function(t) {
                                    t !== this._autoUpdate && (this._autoUpdate = t, !this._autoUpdate && this._isAutoUpdating ? (p.shared.remove(this.update, this), this._isAutoUpdating = !1) : this._autoUpdate && !this._isAutoUpdating && (p.shared.add(this.update, this, f.UPDATE_PRIORITY.HIGH), this._isAutoUpdating = !0))
                                }
                            }]), e
                        }(c.default);
                    n.default = g, g.fromUrls = g.fromUrl
                }, {
                    "../const": 46,
                    "../ticker": 121,
                    "../utils": 125,
                    "../utils/determineCrossOrigin": 124,
                    "./BaseTexture": 112
                }],
                119: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var o = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        a = t("../settings"),
                        s = i(a),
                        l = t("../const"),
                        u = t("./TickerListener"),
                        c = i(u),
                        h = function() {
                            function t() {
                                var e = this;
                                r(this, t), this._head = new c.default(null, null, 1 / 0), this._requestId = null, this._maxElapsedMS = 100, this.autoStart = !1, this.deltaTime = 1, this.elapsedMS = 1 / s.default.TARGET_FPMS, this.lastTime = -1, this.speed = 1, this.started = !1, this._tick = function(t) {
                                    e._requestId = null, e.started && (e.update(t), e.started && null === e._requestId && e._head.next && (e._requestId = requestAnimationFrame(e._tick)))
                                }
                            }
                            return t.prototype._requestIfNeeded = function() {
                                null === this._requestId && this._head.next && (this.lastTime = performance.now(), this._requestId = requestAnimationFrame(this._tick))
                            }, t.prototype._cancelIfNeeded = function() {
                                null !== this._requestId && (cancelAnimationFrame(this._requestId), this._requestId = null)
                            }, t.prototype._startIfPossible = function() {
                                this.started ? this._requestIfNeeded() : this.autoStart && this.start()
                            }, t.prototype.add = function(t, e) {
                                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : l.UPDATE_PRIORITY.NORMAL;
                                return this._addListener(new c.default(t, e, n))
                            }, t.prototype.addOnce = function(t, e) {
                                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : l.UPDATE_PRIORITY.NORMAL;
                                return this._addListener(new c.default(t, e, n, !0))
                            }, t.prototype._addListener = function(t) {
                                var e = this._head.next,
                                    n = this._head;
                                if (e) {
                                    for (; e;) {
                                        if (t.priority > e.priority) {
                                            t.connect(n);
                                            break
                                        }
                                        n = e, e = e.next
                                    }
                                    t.previous || t.connect(n)
                                } else t.connect(n);
                                return this._startIfPossible(), this
                            }, t.prototype.remove = function(t, e) {
                                for (var n = this._head.next; n;) n = n.match(t, e) ? n.destroy() : n.next;
                                return this._head.next || this._cancelIfNeeded(), this
                            }, t.prototype.start = function() {
                                this.started || (this.started = !0, this._requestIfNeeded())
                            }, t.prototype.stop = function() {
                                this.started && (this.started = !1, this._cancelIfNeeded())
                            }, t.prototype.destroy = function() {
                                this.stop();
                                for (var t = this._head.next; t;) t = t.destroy(!0);
                                this._head.destroy(), this._head = null
                            }, t.prototype.update = function() {
                                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : performance.now(),
                                    e = void 0;
                                if (t > this.lastTime) {
                                    e = this.elapsedMS = t - this.lastTime, e > this._maxElapsedMS && (e = this._maxElapsedMS), this.deltaTime = e * s.default.TARGET_FPMS * this.speed;
                                    for (var n = this._head, i = n.next; i;) i = i.emit(this.deltaTime);
                                    n.next || this._cancelIfNeeded()
                                } else this.deltaTime = this.elapsedMS = 0;
                                this.lastTime = t
                            }, o(t, [{
                                key: "FPS",
                                get: function() {
                                    return 1e3 / this.elapsedMS
                                }
                            }, {
                                key: "minFPS",
                                get: function() {
                                    return 1e3 / this._maxElapsedMS
                                },
                                set: function(t) {
                                    var e = Math.min(Math.max(0, t) / 1e3, s.default.TARGET_FPMS);
                                    this._maxElapsedMS = 1 / e
                                }
                            }]), t
                        }();
                    n.default = h
                }, {
                    "../const": 46,
                    "../settings": 101,
                    "./TickerListener": 120
                }],
                120: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = function() {
                        function t(e) {
                            var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null,
                                r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                                o = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
                            i(this, t), this.fn = e, this.context = n, this.priority = r, this.once = o, this.next = null, this.previous = null, this._destroyed = !1
                        }
                        return t.prototype.match = function(t, e) {
                            return e = e || null, this.fn === t && this.context === e
                        }, t.prototype.emit = function(t) {
                            this.fn && (this.context ? this.fn.call(this.context, t) : this.fn(t));
                            var e = this.next;
                            return this.once && this.destroy(!0), this._destroyed && (this.next = null), e
                        }, t.prototype.connect = function(t) {
                            this.previous = t, t.next && (t.next.previous = this), this.next = t.next, t.next = this
                        }, t.prototype.destroy = function() {
                            var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                            this._destroyed = !0, this.fn = null, this.context = null, this.previous && (this.previous.next = this.next), this.next && (this.next.previous = this.previous);
                            var e = this.previous;
                            return this.next = t ? null : e, this.previous = null, e
                        }, t
                    }();
                    n.default = r
                }, {}],
                121: [function(t, e, n) {
                    "use strict";
                    n.__esModule = !0, n.Ticker = n.shared = void 0;
                    var i = t("./Ticker"),
                        r = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(i),
                        o = new r.default;
                    o.autoStart = !0, o.destroy = function() {}, n.shared = o, n.Ticker = r.default
                }, {
                    "./Ticker": 119
                }],
                122: [function(t, e, n) {
                    "use strict";

                    function i() {
                        return !(!!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform))
                    }
                    n.__esModule = !0, n.default = i
                }, {}],
                123: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        for (var e = 6 * t, n = new Uint16Array(e), i = 0, r = 0; i < e; i += 6, r += 4) n[i + 0] = r + 0, n[i + 1] = r + 1, n[i + 2] = r + 2, n[i + 3] = r + 0, n[i + 4] = r + 2, n[i + 5] = r + 3;
                        return n
                    }
                    n.__esModule = !0, n.default = i
                }, {}],
                124: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : window.location;
                        if (0 === t.indexOf("data:")) return "";
                        e = e || window.location, a || (a = document.createElement("a")), a.href = t, t = o.default.parse(a.href);
                        var n = !t.port && "" === e.port || t.port === e.port;
                        return t.hostname === e.hostname && n && t.protocol === e.protocol ? "" : "anonymous"
                    }
                    n.__esModule = !0, n.default = i;
                    var r = t("url"),
                        o = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(r),
                        a = void 0
                }, {
                    url: 29
                }],
                125: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        if (t && t.__esModule) return t;
                        var e = {};
                        if (null != t)
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                        return e.default = t, e
                    }

                    function r(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function o() {
                        return ++U
                    }

                    function a(t, e) {
                        return e = e || [], e[0] = (t >> 16 & 255) / 255, e[1] = (t >> 8 & 255) / 255, e[2] = (255 & t) / 255, e
                    }

                    function s(t) {
                        return t = t.toString(16), "#" + (t = "000000".substr(0, 6 - t.length) + t)
                    }

                    function l(t) {
                        return (255 * t[0] << 16) + (255 * t[1] << 8) + (255 * t[2] | 0)
                    }

                    function u(t, e) {
                        var n = P.default.RETINA_PREFIX.exec(t);
                        return n ? parseFloat(n[1]) : void 0 !== e ? e : 1
                    }

                    function c(t) {
                        var e = w.DATA_URI.exec(t);
                        if (e) return {
                            mediaType: e[1] ? e[1].toLowerCase() : void 0,
                            subType: e[2] ? e[2].toLowerCase() : void 0,
                            encoding: e[3] ? e[3].toLowerCase() : void 0,
                            data: e[4]
                        }
                    }

                    function h(t) {
                        var e = w.URL_FILE_EXTENSION.exec(t);
                        if (e) return e[1].toLowerCase()
                    }

                    function p(t) {
                        var e = w.SVG_SIZE.exec(t),
                            n = {};
                        return e && (n[e[1]] = Math.round(parseFloat(e[3])), n[e[5]] = Math.round(parseFloat(e[7]))), n
                    }

                    function f() {
                        j = !0
                    }

                    function d(t) {
                        if (!j) {
                            if (navigator.userAgent.toLowerCase().indexOf("chrome") > -1) {
                                var e = ["\n %c %c %c PixiJS " + w.VERSION + " - ✰ " + t + " ✰  %c  %c  http://www.pixijs.com/  %c %c ♥%c♥%c♥ \n\n", "background: #ff66a5; padding:5px 0;", "background: #ff66a5; padding:5px 0;", "color: #ff66a5; background: #030307; padding:5px 0;", "background: #ff66a5; padding:5px 0;", "background: #ffc3dc; padding:5px 0;", "background: #ff66a5; padding:5px 0;", "color: #ff2424; background: #fff; padding:5px 0;", "color: #ff2424; background: #fff; padding:5px 0;", "color: #ff2424; background: #fff; padding:5px 0;"];
                                window.console.log.apply(console, e)
                            } else window.console && window.console.log("PixiJS " + w.VERSION + " - " + t + " - http://www.pixijs.com/");
                            j = !0
                        }
                    }

                    function m() {
                        var t = {
                            stencil: !0,
                            failIfMajorPerformanceCaveat: !0
                        };
                        try {
                            if (!window.WebGLRenderingContext) return !1;
                            var e = document.createElement("canvas"),
                                n = e.getContext("webgl", t) || e.getContext("experimental-webgl", t),
                                i = !(!n || !n.getContextAttributes().stencil);
                            if (n) {
                                var r = n.getExtension("WEBGL_lose_context");
                                r && r.loseContext()
                            }
                            return n = null, i
                        } catch (t) {
                            return !1
                        }
                    }

                    function g(t) {
                        return 0 === t ? 0 : t < 0 ? -1 : 1
                    }

                    function _() {
                        var t = void 0;
                        for (t in W) W[t].destroy();
                        for (t in X) X[t].destroy()
                    }

                    function y() {
                        var t = void 0;
                        for (t in W) delete W[t];
                        for (t in X) delete X[t]
                    }

                    function v(t, e) {
                        return V[e ? 1 : 0][t]
                    }

                    function b(t, e) {
                        if (1 === e) return (255 * e << 24) + t;
                        if (0 === e) return 0;
                        var n = t >> 16 & 255,
                            i = t >> 8 & 255,
                            r = 255 & t;
                        return n = n * e + .5 | 0, i = i * e + .5 | 0, r = r * e + .5 | 0, (255 * e << 24) + (n << 16) + (i << 8) + r
                    }

                    function x(t, e, n, i) {
                        return n = n || new Float32Array(4), i || void 0 === i ? (n[0] = t[0] * e, n[1] = t[1] * e, n[2] = t[2] * e) : (n[0] = t[0], n[1] = t[1], n[2] = t[2]), n[3] = e, n
                    }

                    function T(t, e, n, i) {
                        return n = n || new Float32Array(4), n[0] = (t >> 16 & 255) / 255, n[1] = (t >> 8 & 255) / 255, n[2] = (255 & t) / 255, (i || void 0 === i) && (n[0] *= e, n[1] *= e, n[2] *= e), n[3] = e, n
                    }
                    n.__esModule = !0, n.premultiplyBlendMode = n.BaseTextureCache = n.TextureCache = n.earcut = n.mixins = n.pluginTarget = n.EventEmitter = n.removeItems = n.isMobile = void 0, n.uid = o, n.hex2rgb = a, n.hex2string = s, n.rgb2hex = l, n.getResolutionOfUrl = u, n.decomposeDataUri = c, n.getUrlFileExtension = h, n.getSvgSize = p, n.skipHello = f, n.sayHello = d, n.isWebGLSupported = m, n.sign = g, n.destroyTextureCache = _, n.clearTextureCache = y, n.correctBlendMode = v, n.premultiplyTint = b, n.premultiplyRgba = x, n.premultiplyTintToRgba = T;
                    var w = t("../const"),
                        S = t("../settings"),
                        P = r(S),
                        M = t("eventemitter3"),
                        C = r(M),
                        E = t("./pluginTarget"),
                        O = r(E),
                        I = t("./mixin"),
                        R = i(I),
                        A = t("ismobilejs"),
                        k = i(A),
                        L = t("remove-array-items"),
                        D = r(L),
                        B = t("./mapPremultipliedBlendModes"),
                        N = r(B),
                        F = t("earcut"),
                        G = r(F),
                        U = 0,
                        j = !1;
                    n.isMobile = k, n.removeItems = D.default, n.EventEmitter = C.default, n.pluginTarget = O.default, n.mixins = R, n.earcut = G.default;
                    var W = n.TextureCache = Object.create(null),
                        X = n.BaseTextureCache = Object.create(null),
                        V = n.premultiplyBlendMode = (0, N.default)()
                }, {
                    "../const": 46,
                    "../settings": 101,
                    "./mapPremultipliedBlendModes": 126,
                    "./mixin": 128,
                    "./pluginTarget": 129,
                    earcut: 2,
                    eventemitter3: 3,
                    ismobilejs: 4,
                    "remove-array-items": 31
                }],
                126: [function(t, e, n) {
                    "use strict";

                    function i() {
                        for (var t = [], e = [], n = 0; n < 32; n++) t[n] = n, e[n] = n;
                        t[r.BLEND_MODES.NORMAL_NPM] = r.BLEND_MODES.NORMAL, t[r.BLEND_MODES.ADD_NPM] = r.BLEND_MODES.ADD, t[r.BLEND_MODES.SCREEN_NPM] = r.BLEND_MODES.SCREEN, e[r.BLEND_MODES.NORMAL] = r.BLEND_MODES.NORMAL_NPM, e[r.BLEND_MODES.ADD] = r.BLEND_MODES.ADD_NPM, e[r.BLEND_MODES.SCREEN] = r.BLEND_MODES.SCREEN_NPM;
                        var i = [];
                        return i.push(e), i.push(t), i
                    }
                    n.__esModule = !0, n.default = i;
                    var r = t("../const")
                }, {
                    "../const": 46
                }],
                127: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return o.default.tablet || o.default.phone ? 4 : t
                    }
                    n.__esModule = !0, n.default = i;
                    var r = t("ismobilejs"),
                        o = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(r)
                }, {
                    ismobilejs: 4
                }],
                128: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (t && e)
                            for (var n = Object.keys(e), i = 0; i < n.length; ++i) {
                                var r = n[i];
                                Object.defineProperty(t, r, Object.getOwnPropertyDescriptor(e, r))
                            }
                    }

                    function r(t, e) {
                        a.push(t, e)
                    }

                    function o() {
                        for (var t = 0; t < a.length; t += 2) i(a[t], a[t + 1]);
                        a.length = 0
                    }
                    n.__esModule = !0, n.mixin = i, n.delayMixin = r, n.performMixins = o;
                    var a = []
                }, {}],
                129: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        t.__plugins = {}, t.registerPlugin = function(e, n) {
                            t.__plugins[e] = n
                        }, t.prototype.initPlugins = function() {
                            this.plugins = this.plugins || {};
                            for (var e in t.__plugins) this.plugins[e] = new t.__plugins[e](this)
                        }, t.prototype.destroyPlugins = function() {
                            for (var t in this.plugins) this.plugins[t].destroy(), this.plugins[t] = null;
                            this.plugins = null
                        }
                    }
                    n.__esModule = !0, n.default = {
                        mixin: function(t) {
                            i(t)
                        }
                    }
                }, {}],
                130: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        var e = t.width,
                            n = t.height,
                            i = t.getContext("2d"),
                            r = i.getImageData(0, 0, e, n),
                            o = r.data,
                            a = o.length,
                            s = {
                                top: null,
                                left: null,
                                right: null,
                                bottom: null
                            },
                            l = void 0,
                            u = void 0,
                            c = void 0;
                        for (l = 0; l < a; l += 4) 0 !== o[l + 3] && (u = l / 4 % e, c = ~~(l / 4 / e), null === s.top && (s.top = c), null === s.left ? s.left = u : u < s.left && (s.left = u), null === s.right ? s.right = u + 1 : s.right < u && (s.right = u + 1), null === s.bottom ? s.bottom = c : s.bottom < c && (s.bottom = c));
                        return e = s.right - s.left, n = s.bottom - s.top + 1, {
                            height: n,
                            width: e,
                            data: i.getImageData(s.left, s.top, e, n)
                        }
                    }
                    n.__esModule = !0, n.default = i
                }, {}],
                131: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        if (!o[t]) {
                            var e = (new Error).stack;
                            void 0 === e || (e = e.split("\n").splice(3).join("\n"), console.groupCollapsed), o[t] = !0
                        }
                    }

                    function r(t) {
                        var e = t.mesh,
                            n = t.particles,
                            r = t.extras,
                            o = t.filters,
                            a = t.prepare,
                            s = t.loaders,
                            l = t.interaction;
                        Object.defineProperties(t, {
                            SpriteBatch: {
                                get: function() {
                                    throw new ReferenceError("SpriteBatch does not exist any more, please use the new ParticleContainer instead.")
                                }
                            },
                            AssetLoader: {
                                get: function() {
                                    throw new ReferenceError("The loader system was overhauled in PixiJS v3, please see the new PIXI.loaders.Loader class.")
                                }
                            },
                            Stage: {
                                get: function() {
                                    return i("You do not need to use a PIXI Stage any more, you can simply render any container."), t.Container
                                }
                            },
                            DisplayObjectContainer: {
                                get: function() {
                                    return i("DisplayObjectContainer has been shortened to Container, please use Container from now on."), t.Container
                                }
                            },
                            Strip: {
                                get: function() {
                                    return i("The Strip class has been renamed to Mesh and moved to mesh.Mesh, please use mesh.Mesh from now on."), e.Mesh
                                }
                            },
                            Rope: {
                                get: function() {
                                    return i("The Rope class has been moved to mesh.Rope, please use mesh.Rope from now on."), e.Rope
                                }
                            },
                            ParticleContainer: {
                                get: function() {
                                    return i("The ParticleContainer class has been moved to particles.ParticleContainer, please use particles.ParticleContainer from now on."), n.ParticleContainer
                                }
                            },
                            MovieClip: {
                                get: function() {
                                    return i("The MovieClip class has been moved to extras.AnimatedSprite, please use extras.AnimatedSprite."), r.AnimatedSprite
                                }
                            },
                            TilingSprite: {
                                get: function() {
                                    return i("The TilingSprite class has been moved to extras.TilingSprite, please use extras.TilingSprite from now on."), r.TilingSprite
                                }
                            },
                            BitmapText: {
                                get: function() {
                                    return i("The BitmapText class has been moved to extras.BitmapText, please use extras.BitmapText from now on."), r.BitmapText
                                }
                            },
                            blendModes: {
                                get: function() {
                                    return i("The blendModes has been moved to BLEND_MODES, please use BLEND_MODES from now on."), t.BLEND_MODES
                                }
                            },
                            scaleModes: {
                                get: function() {
                                    return i("The scaleModes has been moved to SCALE_MODES, please use SCALE_MODES from now on."), t.SCALE_MODES
                                }
                            },
                            BaseTextureCache: {
                                get: function() {
                                    return i("The BaseTextureCache class has been moved to utils.BaseTextureCache, please use utils.BaseTextureCache from now on."), t.utils.BaseTextureCache
                                }
                            },
                            TextureCache: {
                                get: function() {
                                    return i("The TextureCache class has been moved to utils.TextureCache, please use utils.TextureCache from now on."), t.utils.TextureCache
                                }
                            },
                            math: {
                                get: function() {
                                    return i("The math namespace is deprecated, please access members already accessible on PIXI."), t
                                }
                            },
                            AbstractFilter: {
                                get: function() {
                                    return i("AstractFilter has been renamed to Filter, please use PIXI.Filter"), t.Filter
                                }
                            },
                            TransformManual: {
                                get: function() {
                                    return i("TransformManual has been renamed to TransformBase, please update your pixi-spine"), t.TransformBase
                                }
                            },
                            TARGET_FPMS: {
                                get: function() {
                                    return i("PIXI.TARGET_FPMS has been deprecated, please use PIXI.settings.TARGET_FPMS"), t.settings.TARGET_FPMS
                                },
                                set: function(e) {
                                    i("PIXI.TARGET_FPMS has been deprecated, please use PIXI.settings.TARGET_FPMS"), t.settings.TARGET_FPMS = e
                                }
                            },
                            FILTER_RESOLUTION: {
                                get: function() {
                                    return i("PIXI.FILTER_RESOLUTION has been deprecated, please use PIXI.settings.FILTER_RESOLUTION"), t.settings.FILTER_RESOLUTION
                                },
                                set: function(e) {
                                    i("PIXI.FILTER_RESOLUTION has been deprecated, please use PIXI.settings.FILTER_RESOLUTION"), t.settings.FILTER_RESOLUTION = e
                                }
                            },
                            RESOLUTION: {
                                get: function() {
                                    return i("PIXI.RESOLUTION has been deprecated, please use PIXI.settings.RESOLUTION"), t.settings.RESOLUTION
                                },
                                set: function(e) {
                                    i("PIXI.RESOLUTION has been deprecated, please use PIXI.settings.RESOLUTION"), t.settings.RESOLUTION = e
                                }
                            },
                            MIPMAP_TEXTURES: {
                                get: function() {
                                    return i("PIXI.MIPMAP_TEXTURES has been deprecated, please use PIXI.settings.MIPMAP_TEXTURES"), t.settings.MIPMAP_TEXTURES
                                },
                                set: function(e) {
                                    i("PIXI.MIPMAP_TEXTURES has been deprecated, please use PIXI.settings.MIPMAP_TEXTURES"), t.settings.MIPMAP_TEXTURES = e
                                }
                            },
                            SPRITE_BATCH_SIZE: {
                                get: function() {
                                    return i("PIXI.SPRITE_BATCH_SIZE has been deprecated, please use PIXI.settings.SPRITE_BATCH_SIZE"), t.settings.SPRITE_BATCH_SIZE
                                },
                                set: function(e) {
                                    i("PIXI.SPRITE_BATCH_SIZE has been deprecated, please use PIXI.settings.SPRITE_BATCH_SIZE"), t.settings.SPRITE_BATCH_SIZE = e
                                }
                            },
                            SPRITE_MAX_TEXTURES: {
                                get: function() {
                                    return i("PIXI.SPRITE_MAX_TEXTURES has been deprecated, please use PIXI.settings.SPRITE_MAX_TEXTURES"), t.settings.SPRITE_MAX_TEXTURES
                                },
                                set: function(e) {
                                    i("PIXI.SPRITE_MAX_TEXTURES has been deprecated, please use PIXI.settings.SPRITE_MAX_TEXTURES"), t.settings.SPRITE_MAX_TEXTURES = e
                                }
                            },
                            RETINA_PREFIX: {
                                get: function() {
                                    return i("PIXI.RETINA_PREFIX has been deprecated, please use PIXI.settings.RETINA_PREFIX"), t.settings.RETINA_PREFIX
                                },
                                set: function(e) {
                                    i("PIXI.RETINA_PREFIX has been deprecated, please use PIXI.settings.RETINA_PREFIX"), t.settings.RETINA_PREFIX = e
                                }
                            },
                            DEFAULT_RENDER_OPTIONS: {
                                get: function() {
                                    return i("PIXI.DEFAULT_RENDER_OPTIONS has been deprecated, please use PIXI.settings.DEFAULT_RENDER_OPTIONS"), t.settings.RENDER_OPTIONS
                                }
                            }
                        });
                        for (var u = [{
                                parent: "TRANSFORM_MODE",
                                target: "TRANSFORM_MODE"
                            }, {
                                parent: "GC_MODES",
                                target: "GC_MODE"
                            }, {
                                parent: "WRAP_MODES",
                                target: "WRAP_MODE"
                            }, {
                                parent: "SCALE_MODES",
                                target: "SCALE_MODE"
                            }, {
                                parent: "PRECISION",
                                target: "PRECISION_FRAGMENT"
                            }], c = 0; c < u.length; c++) ! function(e) {
                            var n = u[e];
                            Object.defineProperty(t[n.parent], "DEFAULT", {
                                get: function() {
                                    return i("PIXI." + n.parent + ".DEFAULT has been deprecated, please use PIXI.settings." + n.target), t.settings[n.target]
                                },
                                set: function(e) {
                                    i("PIXI." + n.parent + ".DEFAULT has been deprecated, please use PIXI.settings." + n.target), t.settings[n.target] = e
                                }
                            })
                        }(c);
                        Object.defineProperties(t.settings, {
                            PRECISION: {
                                get: function() {
                                    return i("PIXI.settings.PRECISION has been deprecated, please use PIXI.settings.PRECISION_FRAGMENT"), t.settings.PRECISION_FRAGMENT
                                },
                                set: function(e) {
                                    i("PIXI.settings.PRECISION has been deprecated, please use PIXI.settings.PRECISION_FRAGMENT"), t.settings.PRECISION_FRAGMENT = e
                                }
                            }
                        }), r.AnimatedSprite && Object.defineProperties(r, {
                            MovieClip: {
                                get: function() {
                                    return i("The MovieClip class has been renamed to AnimatedSprite, please use AnimatedSprite from now on."), r.AnimatedSprite
                                }
                            }
                        }), r && Object.defineProperties(r, {
                            TextureTransform: {
                                get: function() {
                                    return i("The TextureTransform class has been renamed to TextureMatrix, please use PIXI.TextureMatrix from now on."), t.TextureMatrix
                                }
                            }
                        }), t.DisplayObject.prototype.generateTexture = function(t, e, n) {
                            return i("generateTexture has moved to the renderer, please use renderer.generateTexture(displayObject)"), t.generateTexture(this, e, n)
                        }, t.Graphics.prototype.generateTexture = function(t, e) {
                            return i("graphics generate texture has moved to the renderer. Or to render a graphics to a texture using canvas please use generateCanvasTexture"), this.generateCanvasTexture(t, e)
                        }, t.GroupD8.isSwapWidthHeight = function(e) {
                            return i("GroupD8.isSwapWidthHeight was renamed to GroupD8.isVertical"), t.GroupD8.isVertical(e)
                        }, t.RenderTexture.prototype.render = function(t, e, n, r) {
                            this.legacyRenderer.render(t, this, n, e, !r), i("RenderTexture.render is now deprecated, please use renderer.render(displayObject, renderTexture)")
                        }, t.RenderTexture.prototype.getImage = function(t) {
                            return i("RenderTexture.getImage is now deprecated, please use renderer.extract.image(target)"), this.legacyRenderer.extract.image(t)
                        }, t.RenderTexture.prototype.getBase64 = function(t) {
                            return i("RenderTexture.getBase64 is now deprecated, please use renderer.extract.base64(target)"), this.legacyRenderer.extract.base64(t)
                        }, t.RenderTexture.prototype.getCanvas = function(t) {
                            return i("RenderTexture.getCanvas is now deprecated, please use renderer.extract.canvas(target)"), this.legacyRenderer.extract.canvas(t)
                        }, t.RenderTexture.prototype.getPixels = function(t) {
                            return i("RenderTexture.getPixels is now deprecated, please use renderer.extract.pixels(target)"), this.legacyRenderer.pixels(t)
                        }, t.Sprite.prototype.setTexture = function(t) {
                            this.texture = t, i("setTexture is now deprecated, please use the texture property, e.g : sprite.texture = texture;")
                        }, r.BitmapText && (r.BitmapText.prototype.setText = function(t) {
                            this.text = t, i("setText is now deprecated, please use the text property, e.g : myBitmapText.text = 'my text';")
                        }), t.Text.prototype.setText = function(t) {
                            this.text = t, i("setText is now deprecated, please use the text property, e.g : myText.text = 'my text';")
                        }, t.Text.calculateFontProperties = function(e) {
                            return i("Text.calculateFontProperties is now deprecated, please use the TextMetrics.measureFont"), t.TextMetrics.measureFont(e)
                        }, Object.defineProperties(t.Text, {
                            fontPropertiesCache: {
                                get: function() {
                                    return i("Text.fontPropertiesCache is deprecated"), t.TextMetrics._fonts
                                }
                            },
                            fontPropertiesCanvas: {
                                get: function() {
                                    return i("Text.fontPropertiesCanvas is deprecated"), t.TextMetrics._canvas
                                }
                            },
                            fontPropertiesContext: {
                                get: function() {
                                    return i("Text.fontPropertiesContext is deprecated"), t.TextMetrics._context
                                }
                            }
                        }), t.Text.prototype.setStyle = function(t) {
                            this.style = t, i("setStyle is now deprecated, please use the style property, e.g : myText.style = style;")
                        }, t.Text.prototype.determineFontProperties = function(e) {
                            return i("determineFontProperties is now deprecated, please use TextMetrics.measureFont method"), t.TextMetrics.measureFont(e)
                        }, t.Text.getFontStyle = function(e) {
                            return i("getFontStyle is now deprecated, please use TextStyle.toFontString() instead"), e = e || {}, e instanceof t.TextStyle || (e = new t.TextStyle(e)), e.toFontString()
                        }, Object.defineProperties(t.TextStyle.prototype, {
                            font: {
                                get: function() {
                                    i("text style property 'font' is now deprecated, please use the 'fontFamily', 'fontSize', 'fontStyle', 'fontVariant' and 'fontWeight' properties from now on");
                                    var t = "number" == typeof this._fontSize ? this._fontSize + "px" : this._fontSize;
                                    return this._fontStyle + " " + this._fontVariant + " " + this._fontWeight + " " + t + " " + this._fontFamily
                                },
                                set: function(t) {
                                    i("text style property 'font' is now deprecated, please use the 'fontFamily','fontSize',fontStyle','fontVariant' and 'fontWeight' properties from now on"), t.indexOf("italic") > 1 ? this._fontStyle = "italic" : t.indexOf("oblique") > -1 ? this._fontStyle = "oblique" : this._fontStyle = "normal", t.indexOf("small-caps") > -1 ? this._fontVariant = "small-caps" : this._fontVariant = "normal";
                                    var e = t.split(" "),
                                        n = -1;
                                    this._fontSize = 26;
                                    for (var r = 0; r < e.length; ++r)
                                        if (e[r].match(/(px|pt|em|%)/)) {
                                            n = r, this._fontSize = e[r];
                                            break
                                        }
                                    this._fontWeight = "normal";
                                    for (var o = 0; o < n; ++o)
                                        if (e[o].match(/(bold|bolder|lighter|100|200|300|400|500|600|700|800|900)/)) {
                                            this._fontWeight = e[o];
                                            break
                                        }
                                    if (n > -1 && n < e.length - 1) {
                                        this._fontFamily = "";
                                        for (var a = n + 1; a < e.length; ++a) this._fontFamily += e[a] + " ";
                                        this._fontFamily = this._fontFamily.slice(0, -1)
                                    } else this._fontFamily = "Arial";
                                    this.styleID++
                                }
                            }
                        }), t.Texture.prototype.setFrame = function(t) {
                            this.frame = t, i("setFrame is now deprecated, please use the frame property, e.g: myTexture.frame = frame;")
                        }, t.Texture.addTextureToCache = function(e, n) {
                            t.Texture.addToCache(e, n), i("Texture.addTextureToCache is deprecated, please use Texture.addToCache from now on.")
                        }, t.Texture.removeTextureFromCache = function(e) {
                            return i("Texture.removeTextureFromCache is deprecated, please use Texture.removeFromCache from now on. Be aware that Texture.removeFromCache does not automatically its BaseTexture from the BaseTextureCache. For that, use BaseTexture.removeFromCache"), t.BaseTexture.removeFromCache(e), t.Texture.removeFromCache(e)
                        }, Object.defineProperties(o, {
                            AbstractFilter: {
                                get: function() {
                                    return i("AstractFilter has been renamed to Filter, please use PIXI.Filter"), t.AbstractFilter
                                }
                            },
                            SpriteMaskFilter: {
                                get: function() {
                                    return i("filters.SpriteMaskFilter is an undocumented alias, please use SpriteMaskFilter from now on."), t.SpriteMaskFilter
                                }
                            },
                            VoidFilter: {
                                get: function() {
                                    return i("VoidFilter has been renamed to AlphaFilter, please use PIXI.filters.AlphaFilter"), o.AlphaFilter
                                }
                            }
                        }), t.utils.uuid = function() {
                            return i("utils.uuid() is deprecated, please use utils.uid() from now on."), t.utils.uid()
                        }, t.utils.canUseNewCanvasBlendModes = function() {
                            return i("utils.canUseNewCanvasBlendModes() is deprecated, please use CanvasTinter.canUseMultiply from now on"), t.CanvasTinter.canUseMultiply
                        };
                        var h = !0;
                        if (Object.defineProperty(t.utils, "_saidHello", {
                                set: function(t) {
                                    t && (i("PIXI.utils._saidHello is deprecated, please use PIXI.utils.skipHello()"), this.skipHello()), h = t
                                },
                                get: function() {
                                    return h
                                }
                            }), a.BasePrepare && (a.BasePrepare.prototype.register = function(t, e) {
                                return i("renderer.plugins.prepare.register is now deprecated, please use renderer.plugins.prepare.registerFindHook & renderer.plugins.prepare.registerUploadHook"), t && this.registerFindHook(t), e && this.registerUploadHook(e), this
                            }), a.canvas && Object.defineProperty(a.canvas, "UPLOADS_PER_FRAME", {
                                set: function() {
                                    i("PIXI.CanvasPrepare.UPLOADS_PER_FRAME has been removed. Please set renderer.plugins.prepare.limiter.maxItemsPerFrame on your renderer")
                                },
                                get: function() {
                                    return i("PIXI.CanvasPrepare.UPLOADS_PER_FRAME has been removed. Please use renderer.plugins.prepare.limiter"), NaN
                                }
                            }), a.webgl && Object.defineProperty(a.webgl, "UPLOADS_PER_FRAME", {
                                set: function() {
                                    i("PIXI.WebGLPrepare.UPLOADS_PER_FRAME has been removed. Please set renderer.plugins.prepare.limiter.maxItemsPerFrame on your renderer")
                                },
                                get: function() {
                                    return i("PIXI.WebGLPrepare.UPLOADS_PER_FRAME has been removed. Please use renderer.plugins.prepare.limiter"), NaN
                                }
                            }), s.Loader) {
                            var p = s.Resource,
                                f = s.Loader;
                            Object.defineProperties(p.prototype, {
                                isJson: {
                                    get: function() {
                                        return i("The isJson property is deprecated, please use `resource.type === Resource.TYPE.JSON`."), this.type === p.TYPE.JSON
                                    }
                                },
                                isXml: {
                                    get: function() {
                                        return i("The isXml property is deprecated, please use `resource.type === Resource.TYPE.XML`."), this.type === p.TYPE.XML
                                    }
                                },
                                isImage: {
                                    get: function() {
                                        return i("The isImage property is deprecated, please use `resource.type === Resource.TYPE.IMAGE`."), this.type === p.TYPE.IMAGE
                                    }
                                },
                                isAudio: {
                                    get: function() {
                                        return i("The isAudio property is deprecated, please use `resource.type === Resource.TYPE.AUDIO`."), this.type === p.TYPE.AUDIO
                                    }
                                },
                                isVideo: {
                                    get: function() {
                                        return i("The isVideo property is deprecated, please use `resource.type === Resource.TYPE.VIDEO`."), this.type === p.TYPE.VIDEO
                                    }
                                }
                            }), Object.defineProperties(f.prototype, {
                                before: {
                                    get: function() {
                                        return i("The before() method is deprecated, please use pre()."), this.pre
                                    }
                                },
                                after: {
                                    get: function() {
                                        return i("The after() method is deprecated, please use use()."), this.use
                                    }
                                }
                            })
                        }
                        l.interactiveTarget && Object.defineProperty(l.interactiveTarget, "defaultCursor", {
                            set: function(t) {
                                i("Property defaultCursor has been replaced with 'cursor'. "), this.cursor = t
                            },
                            get: function() {
                                return i("Property defaultCursor has been replaced with 'cursor'. "), this.cursor
                            }
                        }), l.InteractionManager && (Object.defineProperty(l.InteractionManager, "defaultCursorStyle", {
                            set: function(t) {
                                i("Property defaultCursorStyle has been replaced with 'cursorStyles.default'. "), this.cursorStyles.default = t
                            },
                            get: function() {
                                return i("Property defaultCursorStyle has been replaced with 'cursorStyles.default'. "), this.cursorStyles.default
                            }
                        }), Object.defineProperty(l.InteractionManager, "currentCursorStyle", {
                            set: function(t) {
                                i("Property currentCursorStyle has been removed.See the currentCursorMode property, which works differently."), this.currentCursorMode = t
                            },
                            get: function() {
                                return i("Property currentCursorStyle has been removed.See the currentCursorMode property, which works differently."), this.currentCursorMode
                            }
                        }))
                    }
                    n.__esModule = !0, n.default = r;
                    var o = {}
                }, {}],
                132: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = t("../../core"),
                        o = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(r),
                        a = new o.Rectangle,
                        s = function() {
                            function t(e) {
                                i(this, t), this.renderer = e, e.extract = this
                            }
                            return t.prototype.image = function(t) {
                                var e = new Image;
                                return e.src = this.base64(t), e
                            }, t.prototype.base64 = function(t) {
                                return this.canvas(t).toDataURL()
                            }, t.prototype.canvas = function(t) {
                                var e = this.renderer,
                                    n = void 0,
                                    i = void 0,
                                    r = void 0,
                                    s = void 0;
                                t && (s = t instanceof o.RenderTexture ? t : e.generateTexture(t)), s ? (n = s.baseTexture._canvasRenderTarget.context, i = s.baseTexture._canvasRenderTarget.resolution, r = s.frame) : (n = e.rootContext, r = a, r.width = this.renderer.width, r.height = this.renderer.height);
                                var l = r.width * i,
                                    u = r.height * i,
                                    c = new o.CanvasRenderTarget(l, u),
                                    h = n.getImageData(r.x * i, r.y * i, l, u);
                                return c.context.putImageData(h, 0, 0), c.canvas
                            }, t.prototype.pixels = function(t) {
                                var e = this.renderer,
                                    n = void 0,
                                    i = void 0,
                                    r = void 0,
                                    s = void 0;
                                return t && (s = t instanceof o.RenderTexture ? t : e.generateTexture(t)), s ? (n = s.baseTexture._canvasRenderTarget.context, i = s.baseTexture._canvasRenderTarget.resolution, r = s.frame) : (n = e.rootContext, r = a, r.width = e.width, r.height = e.height), n.getImageData(0, 0, r.width * i, r.height * i).data
                            }, t.prototype.destroy = function() {
                                this.renderer.extract = null, this.renderer = null
                            }, t
                        }();
                    n.default = s, o.CanvasRenderer.registerPlugin("extract", s)
                }, {
                    "../../core": 65
                }],
                133: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }
                    n.__esModule = !0;
                    var r = t("./webgl/WebGLExtract");
                    Object.defineProperty(n, "webgl", {
                        enumerable: !0,
                        get: function() {
                            return i(r).default
                        }
                    });
                    var o = t("./canvas/CanvasExtract");
                    Object.defineProperty(n, "canvas", {
                        enumerable: !0,
                        get: function() {
                            return i(o).default
                        }
                    })
                }, {
                    "./canvas/CanvasExtract": 132,
                    "./webgl/WebGLExtract": 134
                }],
                134: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = t("../../core"),
                        o = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(r),
                        a = new o.Rectangle,
                        s = function() {
                            function t(e) {
                                i(this, t), this.renderer = e, e.extract = this
                            }
                            return t.prototype.image = function(t) {
                                var e = new Image;
                                return e.src = this.base64(t), e
                            }, t.prototype.base64 = function(t) {
                                return this.canvas(t).toDataURL()
                            }, t.prototype.canvas = function(t) {
                                var e = this.renderer,
                                    n = void 0,
                                    i = void 0,
                                    r = void 0,
                                    s = !1,
                                    l = void 0,
                                    u = !1;
                                t && (t instanceof o.RenderTexture ? l = t : (l = this.renderer.generateTexture(t), u = !0)), l ? (n = l.baseTexture._glRenderTargets[this.renderer.CONTEXT_UID], i = n.resolution, r = l.frame, s = !1) : (n = this.renderer.rootRenderTarget, i = n.resolution, s = !0, r = a, r.width = n.size.width, r.height = n.size.height);
                                var c = r.width * i,
                                    h = r.height * i,
                                    p = new o.CanvasRenderTarget(c, h);
                                if (n) {
                                    e.bindRenderTarget(n);
                                    var f = new Uint8Array(4 * c * h),
                                        d = e.gl;
                                    d.readPixels(r.x * i, r.y * i, c, h, d.RGBA, d.UNSIGNED_BYTE, f);
                                    var m = p.context.getImageData(0, 0, c, h);
                                    m.data.set(f), p.context.putImageData(m, 0, 0), s && (p.context.scale(1, -1), p.context.drawImage(p.canvas, 0, -h))
                                }
                                return u && l.destroy(!0), p.canvas
                            }, t.prototype.pixels = function(t) {
                                var e = this.renderer,
                                    n = void 0,
                                    i = void 0,
                                    r = void 0,
                                    s = void 0,
                                    l = !1;
                                t && (t instanceof o.RenderTexture ? s = t : (s = this.renderer.generateTexture(t), l = !0)), s ? (n = s.baseTexture._glRenderTargets[this.renderer.CONTEXT_UID], i = n.resolution, r = s.frame) : (n = this.renderer.rootRenderTarget, i = n.resolution, r = a, r.width = n.size.width, r.height = n.size.height);
                                var u = r.width * i,
                                    c = r.height * i,
                                    h = new Uint8Array(4 * u * c);
                                if (n) {
                                    e.bindRenderTarget(n);
                                    var p = e.gl;
                                    p.readPixels(r.x * i, r.y * i, u, c, p.RGBA, p.UNSIGNED_BYTE, h)
                                }
                                return l && s.destroy(!0), h
                            }, t.prototype.destroy = function() {
                                this.renderer.extract = null, this.renderer = null
                            }, t
                        }();
                    n.default = s, o.WebGLRenderer.registerPlugin("extract", s)
                }, {
                    "../../core": 65
                }],
                135: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        s = t("../core"),
                        l = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(s),
                        u = function(t) {
                            function e(n, o) {
                                i(this, e);
                                var a = r(this, t.call(this, n[0] instanceof l.Texture ? n[0] : n[0].texture));
                                return a._textures = null, a._durations = null, a.textures = n, a._autoUpdate = !1 !== o, a.animationSpeed = 1, a.loop = !0, a.onComplete = null, a.onFrameChange = null, a.onLoop = null, a._currentTime = 0, a.playing = !1, a
                            }
                            return o(e, t), e.prototype.stop = function() {
                                this.playing && (this.playing = !1, this._autoUpdate && l.ticker.shared.remove(this.update, this))
                            }, e.prototype.play = function() {
                                this.playing || (this.playing = !0, this._autoUpdate && l.ticker.shared.add(this.update, this, l.UPDATE_PRIORITY.HIGH))
                            }, e.prototype.gotoAndStop = function(t) {
                                this.stop();
                                var e = this.currentFrame;
                                this._currentTime = t, e !== this.currentFrame && this.updateTexture()
                            }, e.prototype.gotoAndPlay = function(t) {
                                var e = this.currentFrame;
                                this._currentTime = t, e !== this.currentFrame && this.updateTexture(), this.play()
                            }, e.prototype.update = function(t) {
                                var e = this.animationSpeed * t,
                                    n = this.currentFrame;
                                if (null !== this._durations) {
                                    var i = this._currentTime % 1 * this._durations[this.currentFrame];
                                    for (i += e / 60 * 1e3; i < 0;) this._currentTime--, i += this._durations[this.currentFrame];
                                    var r = Math.sign(this.animationSpeed * t);
                                    for (this._currentTime = Math.floor(this._currentTime); i >= this._durations[this.currentFrame];) i -= this._durations[this.currentFrame] * r, this._currentTime += r;
                                    this._currentTime += i / this._durations[this.currentFrame]
                                } else this._currentTime += e;
                                this._currentTime < 0 && !this.loop ? (this.gotoAndStop(0), this.onComplete && this.onComplete()) : this._currentTime >= this._textures.length && !this.loop ? (this.gotoAndStop(this._textures.length - 1), this.onComplete && this.onComplete()) : n !== this.currentFrame && (this.loop && this.onLoop && (this.animationSpeed > 0 && this.currentFrame < n ? this.onLoop() : this.animationSpeed < 0 && this.currentFrame > n && this.onLoop()), this.updateTexture())
                            }, e.prototype.updateTexture = function() {
                                this._texture = this._textures[this.currentFrame], this._textureID = -1, this.cachedTint = 16777215, this.onFrameChange && this.onFrameChange(this.currentFrame)
                            }, e.prototype.destroy = function(e) {
                                this.stop(), t.prototype.destroy.call(this, e)
                            }, e.fromFrames = function(t) {
                                for (var n = [], i = 0; i < t.length; ++i) n.push(l.Texture.fromFrame(t[i]));
                                return new e(n)
                            }, e.fromImages = function(t) {
                                for (var n = [], i = 0; i < t.length; ++i) n.push(l.Texture.fromImage(t[i]));
                                return new e(n)
                            }, a(e, [{
                                key: "totalFrames",
                                get: function() {
                                    return this._textures.length
                                }
                            }, {
                                key: "textures",
                                get: function() {
                                    return this._textures
                                },
                                set: function(t) {
                                    if (t[0] instanceof l.Texture) this._textures = t, this._durations = null;
                                    else {
                                        this._textures = [], this._durations = [];
                                        for (var e = 0; e < t.length; e++) this._textures.push(t[e].texture), this._durations.push(t[e].time)
                                    }
                                    this.gotoAndStop(0), this.updateTexture()
                                }
                            }, {
                                key: "currentFrame",
                                get: function() {
                                    var t = Math.floor(this._currentTime) % this._textures.length;
                                    return t < 0 && (t += this._textures.length), t
                                }
                            }]), e
                        }(l.Sprite);
                    n.default = u
                }, {
                    "../core": 65
                }],
                136: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        l = t("../core"),
                        u = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(l),
                        c = t("../core/math/ObservablePoint"),
                        h = i(c),
                        p = t("../core/utils"),
                        f = t("../core/settings"),
                        d = i(f),
                        m = function(t) {
                            function e(n) {
                                var i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                                r(this, e);
                                var a = o(this, t.call(this));
                                return a._textWidth = 0, a._textHeight = 0, a._glyphs = [], a._font = {
                                    tint: void 0 !== i.tint ? i.tint : 16777215,
                                    align: i.align || "left",
                                    name: null,
                                    size: 0
                                }, a.font = i.font, a._text = n, a._maxWidth = 0, a._maxLineHeight = 0, a._anchor = new h.default(function() {
                                    a.dirty = !0
                                }, a, 0, 0), a.dirty = !1, a.updateText(), a
                            }
                            return a(e, t), e.prototype.updateText = function() {
                                for (var t = e.fonts[this._font.name], n = this._font.size / t.size, i = new u.Point, r = [], o = [], a = null, s = 0, l = 0, c = 0, h = -1, p = 0, f = 0, d = 0, m = 0; m < this.text.length; m++) {
                                    var g = this.text.charCodeAt(m);
                                    if (/(\s)/.test(this.text.charAt(m)) && (h = m, p = s), /(?:\r\n|\r|\n)/.test(this.text.charAt(m))) o.push(s), l = Math.max(l, s), c++, i.x = 0, i.y += t.lineHeight, a = null;
                                    else if (-1 !== h && this._maxWidth > 0 && i.x * n > this._maxWidth) u.utils.removeItems(r, h - f, m - h), m = h, h = -1, ++f, o.push(p), l = Math.max(l, p), c++, i.x = 0, i.y += t.lineHeight, a = null;
                                    else {
                                        var _ = t.chars[g];
                                        _ && (a && _.kerning[a] && (i.x += _.kerning[a]), r.push({
                                            texture: _.texture,
                                            line: c,
                                            charCode: g,
                                            position: new u.Point(i.x + _.xOffset, i.y + _.yOffset)
                                        }), s = i.x + (_.texture.width + _.xOffset), i.x += _.xAdvance, d = Math.max(d, _.yOffset + _.texture.height), a = g)
                                    }
                                }
                                o.push(s), l = Math.max(l, s);
                                for (var y = [], v = 0; v <= c; v++) {
                                    var b = 0;
                                    "right" === this._font.align ? b = l - o[v] : "center" === this._font.align && (b = (l - o[v]) / 2), y.push(b)
                                }
                                for (var x = r.length, T = this.tint, w = 0; w < x; w++) {
                                    var S = this._glyphs[w];
                                    S ? S.texture = r[w].texture : (S = new u.Sprite(r[w].texture), this._glyphs.push(S)), S.position.x = (r[w].position.x + y[r[w].line]) * n, S.position.y = r[w].position.y * n, S.scale.x = S.scale.y = n, S.tint = T, S.parent || this.addChild(S)
                                }
                                for (var P = x; P < this._glyphs.length; ++P) this.removeChild(this._glyphs[P]);
                                if (this._textWidth = l * n, this._textHeight = (i.y + t.lineHeight) * n, 0 !== this.anchor.x || 0 !== this.anchor.y)
                                    for (var M = 0; M < x; M++) this._glyphs[M].x -= this._textWidth * this.anchor.x, this._glyphs[M].y -= this._textHeight * this.anchor.y;
                                this._maxLineHeight = d * n
                            }, e.prototype.updateTransform = function() {
                                this.validate(), this.containerUpdateTransform()
                            }, e.prototype.getLocalBounds = function() {
                                return this.validate(), t.prototype.getLocalBounds.call(this)
                            }, e.prototype.validate = function() {
                                this.dirty && (this.updateText(), this.dirty = !1)
                            }, e.registerFont = function(t, n) {
                                var i = {},
                                    r = t.getElementsByTagName("info")[0],
                                    o = t.getElementsByTagName("common")[0],
                                    a = t.getElementsByTagName("page")[0].getAttribute("file"),
                                    s = (0, p.getResolutionOfUrl)(a, d.default.RESOLUTION);
                                i.font = r.getAttribute("face"), i.size = parseInt(r.getAttribute("size"), 10), i.lineHeight = parseInt(o.getAttribute("lineHeight"), 10) / s, i.chars = {};
                                for (var l = t.getElementsByTagName("char"), c = 0; c < l.length; c++) {
                                    var h = l[c],
                                        f = parseInt(h.getAttribute("id"), 10),
                                        m = new u.Rectangle(parseInt(h.getAttribute("x"), 10) / s + n.frame.x / s, parseInt(h.getAttribute("y"), 10) / s + n.frame.y / s, parseInt(h.getAttribute("width"), 10) / s, parseInt(h.getAttribute("height"), 10) / s);
                                    i.chars[f] = {
                                        xOffset: parseInt(h.getAttribute("xoffset"), 10) / s,
                                        yOffset: parseInt(h.getAttribute("yoffset"), 10) / s,
                                        xAdvance: parseInt(h.getAttribute("xadvance"), 10) / s,
                                        kerning: {},
                                        texture: new u.Texture(n.baseTexture, m)
                                    }
                                }
                                for (var g = t.getElementsByTagName("kerning"), _ = 0; _ < g.length; _++) {
                                    var y = g[_],
                                        v = parseInt(y.getAttribute("first"), 10) / s,
                                        b = parseInt(y.getAttribute("second"), 10) / s,
                                        x = parseInt(y.getAttribute("amount"), 10) / s;
                                    i.chars[b] && (i.chars[b].kerning[v] = x)
                                }
                                return e.fonts[i.font] = i, i
                            }, s(e, [{
                                key: "tint",
                                get: function() {
                                    return this._font.tint
                                },
                                set: function(t) {
                                    this._font.tint = "number" == typeof t && t >= 0 ? t : 16777215, this.dirty = !0
                                }
                            }, {
                                key: "align",
                                get: function() {
                                    return this._font.align
                                },
                                set: function(t) {
                                    this._font.align = t || "left", this.dirty = !0
                                }
                            }, {
                                key: "anchor",
                                get: function() {
                                    return this._anchor
                                },
                                set: function(t) {
                                    "number" == typeof t ? this._anchor.set(t) : this._anchor.copy(t)
                                }
                            }, {
                                key: "font",
                                get: function() {
                                    return this._font
                                },
                                set: function(t) {
                                    t && ("string" == typeof t ? (t = t.split(" "), this._font.name = 1 === t.length ? t[0] : t.slice(1).join(" "), this._font.size = t.length >= 2 ? parseInt(t[0], 10) : e.fonts[this._font.name].size) : (this._font.name = t.name, this._font.size = "number" == typeof t.size ? t.size : parseInt(t.size, 10)), this.dirty = !0)
                                }
                            }, {
                                key: "text",
                                get: function() {
                                    return this._text
                                },
                                set: function(t) {
                                    t = t.toString() || " ", this._text !== t && (this._text = t, this.dirty = !0)
                                }
                            }, {
                                key: "maxWidth",
                                get: function() {
                                    return this._maxWidth
                                },
                                set: function(t) {
                                    this._maxWidth !== t && (this._maxWidth = t, this.dirty = !0)
                                }
                            }, {
                                key: "maxLineHeight",
                                get: function() {
                                    return this.validate(), this._maxLineHeight
                                }
                            }, {
                                key: "textWidth",
                                get: function() {
                                    return this.validate(), this._textWidth
                                }
                            }, {
                                key: "textHeight",
                                get: function() {
                                    return this.validate(), this._textHeight
                                }
                            }]), e
                        }(u.Container);
                    n.default = m, m.fonts = {}
                }, {
                    "../core": 65,
                    "../core/math/ObservablePoint": 68,
                    "../core/settings": 101,
                    "../core/utils": 125
                }],
                137: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        s = t("../core"),
                        l = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(s),
                        u = t("../core/sprites/canvas/CanvasTinter"),
                        c = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(u),
                        h = new l.Point,
                        p = function(t) {
                            function e(n) {
                                var o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 100,
                                    a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 100;
                                i(this, e);
                                var s = r(this, t.call(this, n));
                                return s.tileTransform = new l.TransformStatic, s._width = o, s._height = a, s._canvasPattern = null, s.uvTransform = n.transform || new l.TextureMatrix(n), s.pluginName = "tilingSprite", s.uvRespectAnchor = !1, s
                            }
                            return o(e, t), e.prototype._onTextureUpdate = function() {
                                this.uvTransform && (this.uvTransform.texture = this._texture), this.cachedTint = 16777215
                            }, e.prototype._renderWebGL = function(t) {
                                var e = this._texture;
                                e && e.valid && (this.tileTransform.updateLocalTransform(), this.uvTransform.update(), t.setObjectRenderer(t.plugins[this.pluginName]), t.plugins[this.pluginName].render(this))
                            }, e.prototype._renderCanvas = function(t) {
                                var e = this._texture;
                                if (e.baseTexture.hasLoaded) {
                                    var n = t.context,
                                        i = this.worldTransform,
                                        r = t.resolution,
                                        o = e.baseTexture,
                                        a = o.resolution,
                                        s = this.tilePosition.x / this.tileScale.x % e._frame.width * a,
                                        u = this.tilePosition.y / this.tileScale.y % e._frame.height * a;
                                    if (this._textureID !== this._texture._updateID || this.cachedTint !== this.tint) {
                                        this._textureID = this._texture._updateID;
                                        var h = new l.CanvasRenderTarget(e._frame.width, e._frame.height, a);
                                        16777215 !== this.tint ? (this.tintedTexture = c.default.getTintedTexture(this, this.tint), h.context.drawImage(this.tintedTexture, 0, 0)) : h.context.drawImage(o.source, -e._frame.x * a, -e._frame.y * a), this.cachedTint = this.tint, this._canvasPattern = h.context.createPattern(h.canvas, "repeat")
                                    }
                                    n.globalAlpha = this.worldAlpha, n.setTransform(i.a * r, i.b * r, i.c * r, i.d * r, i.tx * r, i.ty * r), t.setBlendMode(this.blendMode), n.fillStyle = this._canvasPattern, n.scale(this.tileScale.x / a, this.tileScale.y / a);
                                    var p = this.anchor.x * -this._width,
                                        f = this.anchor.y * -this._height;
                                    this.uvRespectAnchor ? (n.translate(s, u), n.fillRect(-s + p, -u + f, this._width / this.tileScale.x * a, this._height / this.tileScale.y * a)) : (n.translate(s + p, u + f), n.fillRect(-s, -u, this._width / this.tileScale.x * a, this._height / this.tileScale.y * a))
                                }
                            }, e.prototype._calculateBounds = function() {
                                var t = this._width * -this._anchor._x,
                                    e = this._height * -this._anchor._y,
                                    n = this._width * (1 - this._anchor._x),
                                    i = this._height * (1 - this._anchor._y);
                                this._bounds.addFrame(this.transform, t, e, n, i)
                            }, e.prototype.getLocalBounds = function(e) {
                                return 0 === this.children.length ? (this._bounds.minX = this._width * -this._anchor._x, this._bounds.minY = this._height * -this._anchor._y, this._bounds.maxX = this._width * (1 - this._anchor._x), this._bounds.maxY = this._height * (1 - this._anchor._x), e || (this._localBoundsRect || (this._localBoundsRect = new l.Rectangle), e = this._localBoundsRect), this._bounds.getRectangle(e)) : t.prototype.getLocalBounds.call(this, e)
                            }, e.prototype.containsPoint = function(t) {
                                this.worldTransform.applyInverse(t, h);
                                var e = this._width,
                                    n = this._height,
                                    i = -e * this.anchor._x;
                                if (h.x >= i && h.x < i + e) {
                                    var r = -n * this.anchor._y;
                                    if (h.y >= r && h.y < r + n) return !0
                                }
                                return !1
                            }, e.prototype.destroy = function(e) {
                                t.prototype.destroy.call(this, e), this.tileTransform = null, this.uvTransform = null
                            }, e.from = function(t, n, i) {
                                return new e(l.Texture.from(t), n, i)
                            }, e.fromFrame = function(t, n, i) {
                                var r = l.utils.TextureCache[t];
                                if (!r) throw new Error('The frameId "' + t + '" does not exist in the texture cache ' + this);
                                return new e(r, n, i)
                            }, e.fromImage = function(t, n, i, r, o) {
                                return new e(l.Texture.fromImage(t, r, o), n, i)
                            }, a(e, [{
                                key: "clampMargin",
                                get: function() {
                                    return this.uvTransform.clampMargin
                                },
                                set: function(t) {
                                    this.uvTransform.clampMargin = t, this.uvTransform.update(!0)
                                }
                            }, {
                                key: "tileScale",
                                get: function() {
                                    return this.tileTransform.scale
                                },
                                set: function(t) {
                                    this.tileTransform.scale.copy(t)
                                }
                            }, {
                                key: "tilePosition",
                                get: function() {
                                    return this.tileTransform.position
                                },
                                set: function(t) {
                                    this.tileTransform.position.copy(t)
                                }
                            }, {
                                key: "width",
                                get: function() {
                                    return this._width
                                },
                                set: function(t) {
                                    this._width = t
                                }
                            }, {
                                key: "height",
                                get: function() {
                                    return this._height
                                },
                                set: function(t) {
                                    this._height = t
                                }
                            }]), e
                        }(l.Sprite);
                    n.default = p
                }, {
                    "../core": 65,
                    "../core/sprites/canvas/CanvasTinter": 104
                }],
                138: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    var o = t("../core"),
                        a = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(o),
                        s = t("../core/textures/Texture"),
                        l = i(s),
                        u = t("../core/textures/BaseTexture"),
                        c = i(u),
                        h = t("../core/utils"),
                        p = a.DisplayObject,
                        f = new a.Matrix;
                    p.prototype._cacheAsBitmap = !1, p.prototype._cacheData = !1;
                    var d = function t() {
                        r(this, t), this.textureCacheId = null, this.originalRenderWebGL = null, this.originalRenderCanvas = null, this.originalCalculateBounds = null, this.originalGetLocalBounds = null, this.originalUpdateTransform = null, this.originalHitTest = null, this.originalDestroy = null, this.originalMask = null, this.originalFilterArea = null, this.sprite = null
                    };
                    Object.defineProperties(p.prototype, {
                        cacheAsBitmap: {
                            get: function() {
                                return this._cacheAsBitmap
                            },
                            set: function(t) {
                                if (this._cacheAsBitmap !== t) {
                                    this._cacheAsBitmap = t;
                                    var e = void 0;
                                    t ? (this._cacheData || (this._cacheData = new d), e = this._cacheData, e.originalRenderWebGL = this.renderWebGL, e.originalRenderCanvas = this.renderCanvas, e.originalUpdateTransform = this.updateTransform, e.originalCalculateBounds = this._calculateBounds, e.originalGetLocalBounds = this.getLocalBounds, e.originalDestroy = this.destroy, e.originalContainsPoint = this.containsPoint, e.originalMask = this._mask, e.originalFilterArea = this.filterArea, this.renderWebGL = this._renderCachedWebGL, this.renderCanvas = this._renderCachedCanvas, this.destroy = this._cacheAsBitmapDestroy) : (e = this._cacheData, e.sprite && this._destroyCachedDisplayObject(), this.renderWebGL = e.originalRenderWebGL, this.renderCanvas = e.originalRenderCanvas, this._calculateBounds = e.originalCalculateBounds, this.getLocalBounds = e.originalGetLocalBounds, this.destroy = e.originalDestroy, this.updateTransform = e.originalUpdateTransform, this.containsPoint = e.originalContainsPoint, this._mask = e.originalMask, this.filterArea = e.originalFilterArea)
                                }
                            }
                        }
                    }), p.prototype._renderCachedWebGL = function(t) {
                        !this.visible || this.worldAlpha <= 0 || !this.renderable || (this._initCachedDisplayObject(t), this._cacheData.sprite._transformID = -1, this._cacheData.sprite.worldAlpha = this.worldAlpha, this._cacheData.sprite._renderWebGL(t))
                    }, p.prototype._initCachedDisplayObject = function(t) {
                        if (!this._cacheData || !this._cacheData.sprite) {
                            var e = this.alpha;
                            this.alpha = 1, t.currentRenderer.flush();
                            var n = this.getLocalBounds().clone();
                            if (this._filters) {
                                var i = this._filters[0].padding;
                                n.pad(i)
                            }
                            var r = t._activeRenderTarget,
                                o = t.filterManager.filterStack,
                                s = a.RenderTexture.create(0 | n.width, 0 | n.height),
                                u = "cacheAsBitmap_" + (0, h.uid)();
                            this._cacheData.textureCacheId = u, c.default.addToCache(s.baseTexture, u), l.default.addToCache(s, u);
                            var p = f;
                            p.tx = -n.x, p.ty = -n.y, this.transform.worldTransform.identity(), this.renderWebGL = this._cacheData.originalRenderWebGL, t.render(this, s, !0, p, !0), t.bindRenderTarget(r), t.filterManager.filterStack = o, this.renderWebGL = this._renderCachedWebGL, this.updateTransform = this.displayObjectUpdateTransform, this._mask = null, this.filterArea = null;
                            var d = new a.Sprite(s);
                            d.transform.worldTransform = this.transform.worldTransform, d.anchor.x = -n.x / n.width, d.anchor.y = -n.y / n.height, d.alpha = e, d._bounds = this._bounds, this._calculateBounds = this._calculateCachedBounds, this.getLocalBounds = this._getCachedLocalBounds, this._cacheData.sprite = d, this.transform._parentID = -1, this.parent ? this.updateTransform() : (this.parent = t._tempDisplayObjectParent, this.updateTransform(), this.parent = null), this.containsPoint = d.containsPoint.bind(d)
                        }
                    }, p.prototype._renderCachedCanvas = function(t) {
                        !this.visible || this.worldAlpha <= 0 || !this.renderable || (this._initCachedDisplayObjectCanvas(t), this._cacheData.sprite.worldAlpha = this.worldAlpha, this._cacheData.sprite.renderCanvas(t))
                    }, p.prototype._initCachedDisplayObjectCanvas = function(t) {
                        if (!this._cacheData || !this._cacheData.sprite) {
                            var e = this.getLocalBounds(),
                                n = this.alpha;
                            this.alpha = 1;
                            var i = t.context,
                                r = a.RenderTexture.create(0 | e.width, 0 | e.height),
                                o = "cacheAsBitmap_" + (0, h.uid)();
                            this._cacheData.textureCacheId = o, c.default.addToCache(r.baseTexture, o), l.default.addToCache(r, o);
                            var s = f;
                            this.transform.localTransform.copy(s), s.invert(), s.tx -= e.x, s.ty -= e.y, this.renderCanvas = this._cacheData.originalRenderCanvas, t.render(this, r, !0, s, !1), t.context = i, this.renderCanvas = this._renderCachedCanvas, this._calculateBounds = this._calculateCachedBounds, this._mask = null, this.filterArea = null;
                            var u = new a.Sprite(r);
                            u.transform.worldTransform = this.transform.worldTransform, u.anchor.x = -e.x / e.width, u.anchor.y = -e.y / e.height, u._bounds = this._bounds, u.alpha = n, this.parent ? this.updateTransform() : (this.parent = t._tempDisplayObjectParent, this.updateTransform(), this.parent = null), this.updateTransform = this.displayObjectUpdateTransform, this._cacheData.sprite = u, this.containsPoint = u.containsPoint.bind(u)
                        }
                    }, p.prototype._calculateCachedBounds = function() {
                        this._cacheData.sprite._calculateBounds()
                    }, p.prototype._getCachedLocalBounds = function() {
                        return this._cacheData.sprite.getLocalBounds()
                    }, p.prototype._destroyCachedDisplayObject = function() {
                        this._cacheData.sprite._texture.destroy(!0), this._cacheData.sprite = null, c.default.removeFromCache(this._cacheData.textureCacheId), l.default.removeFromCache(this._cacheData.textureCacheId), this._cacheData.textureCacheId = null
                    }, p.prototype._cacheAsBitmapDestroy = function(t) {
                        this.cacheAsBitmap = !1, this.destroy(t)
                    }
                }, {
                    "../core": 65,
                    "../core/textures/BaseTexture": 112,
                    "../core/textures/Texture": 115,
                    "../core/utils": 125
                }],
                139: [function(t, e, n) {
                    "use strict";
                    var i = t("../core"),
                        r = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(i);
                    r.DisplayObject.prototype.name = null, r.Container.prototype.getChildByName = function(t) {
                        for (var e = 0; e < this.children.length; e++)
                            if (this.children[e].name === t) return this.children[e];
                        return null
                    }
                }, {
                    "../core": 65
                }],
                140: [function(t, e, n) {
                    "use strict";
                    var i = t("../core"),
                        r = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(i);
                    r.DisplayObject.prototype.getGlobalPosition = function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new r.Point,
                            e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
                        return this.parent ? this.parent.toGlobal(this.position, t, e) : (t.x = this.position.x, t.y = this.position.y), t
                    }
                }, {
                    "../core": 65
                }],
                141: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }
                    n.__esModule = !0, n.BitmapText = n.TilingSpriteRenderer = n.TilingSprite = n.AnimatedSprite = void 0;
                    var r = t("./AnimatedSprite");
                    Object.defineProperty(n, "AnimatedSprite", {
                        enumerable: !0,
                        get: function() {
                            return i(r).default
                        }
                    });
                    var o = t("./TilingSprite");
                    Object.defineProperty(n, "TilingSprite", {
                        enumerable: !0,
                        get: function() {
                            return i(o).default
                        }
                    });
                    var a = t("./webgl/TilingSpriteRenderer");
                    Object.defineProperty(n, "TilingSpriteRenderer", {
                        enumerable: !0,
                        get: function() {
                            return i(a).default
                        }
                    });
                    var s = t("./BitmapText");
                    Object.defineProperty(n, "BitmapText", {
                            enumerable: !0,
                            get: function() {
                                return i(s).default
                            }
                        }), t("./cacheAsBitmap"), t("./getChildByName"),
                        t("./getGlobalPosition")
                }, {
                    "./AnimatedSprite": 135,
                    "./BitmapText": 136,
                    "./TilingSprite": 137,
                    "./cacheAsBitmap": 138,
                    "./getChildByName": 139,
                    "./getGlobalPosition": 140,
                    "./webgl/TilingSpriteRenderer": 142
                }],
                142: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = t("../../core"),
                        s = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(a),
                        l = t("../../core/const"),
                        u = (t("path"), new s.Matrix),
                        c = function(t) {
                            function e(n) {
                                i(this, e);
                                var o = r(this, t.call(this, n));
                                return o.shader = null, o.simpleShader = null, o.quad = null, o
                            }
                            return o(e, t), e.prototype.onContextChange = function() {
                                var t = this.renderer.gl;
                                this.shader = new s.Shader(t, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n    vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n", "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n    vec2 coord = mod(vTextureCoord - uClampOffset, vec2(1.0, 1.0)) + uClampOffset;\n    coord = (uMapCoord * vec3(coord, 1.0)).xy;\n    coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n    vec4 sample = texture2D(uSampler, coord);\n    gl_FragColor = sample * uColor;\n}\n"), this.simpleShader = new s.Shader(t, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n    vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n", "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\n\nvoid main(void)\n{\n    vec4 sample = texture2D(uSampler, vTextureCoord);\n    gl_FragColor = sample * uColor;\n}\n"), this.renderer.bindVao(null), this.quad = new s.Quad(t, this.renderer.state.attribState), this.quad.initVao(this.shader)
                            }, e.prototype.render = function(t) {
                                var e = this.renderer,
                                    n = this.quad;
                                e.bindVao(n.vao);
                                var i = n.vertices;
                                i[0] = i[6] = t._width * -t.anchor.x, i[1] = i[3] = t._height * -t.anchor.y, i[2] = i[4] = t._width * (1 - t.anchor.x), i[5] = i[7] = t._height * (1 - t.anchor.y), t.uvRespectAnchor && (i = n.uvs, i[0] = i[6] = -t.anchor.x, i[1] = i[3] = -t.anchor.y, i[2] = i[4] = 1 - t.anchor.x, i[5] = i[7] = 1 - t.anchor.y), n.upload();
                                var r = t._texture,
                                    o = r.baseTexture,
                                    a = t.tileTransform.localTransform,
                                    c = t.uvTransform,
                                    h = o.isPowerOfTwo && r.frame.width === o.width && r.frame.height === o.height;
                                h && (o._glTextures[e.CONTEXT_UID] ? h = o.wrapMode !== l.WRAP_MODES.CLAMP : o.wrapMode === l.WRAP_MODES.CLAMP && (o.wrapMode = l.WRAP_MODES.REPEAT));
                                var p = h ? this.simpleShader : this.shader;
                                e.bindShader(p);
                                var f = r.width,
                                    d = r.height,
                                    m = t._width,
                                    g = t._height;
                                u.set(a.a * f / m, a.b * f / g, a.c * d / m, a.d * d / g, a.tx / m, a.ty / g), u.invert(), h ? u.prepend(c.mapCoord) : (p.uniforms.uMapCoord = c.mapCoord.toArray(!0), p.uniforms.uClampFrame = c.uClampFrame, p.uniforms.uClampOffset = c.uClampOffset), p.uniforms.uTransform = u.toArray(!0), p.uniforms.uColor = s.utils.premultiplyTintToRgba(t.tint, t.worldAlpha, p.uniforms.uColor, o.premultipliedAlpha), p.uniforms.translationMatrix = t.transform.worldTransform.toArray(!0), p.uniforms.uSampler = e.bindTexture(r), e.setBlendMode(s.utils.correctBlendMode(t.blendMode, o.premultipliedAlpha)), n.vao.draw(this.renderer.gl.TRIANGLES, 6, 0)
                            }, e
                        }(s.ObjectRenderer);
                    n.default = c, s.WebGLRenderer.registerPlugin("tilingSprite", c)
                }, {
                    "../../core": 65,
                    "../../core/const": 46,
                    path: 23
                }],
                143: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        s = t("../../core"),
                        l = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(s),
                        u = (t("path"), function(t) {
                            function e() {
                                var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1;
                                i(this, e);
                                var o = r(this, t.call(this, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n    vTextureCoord = aTextureCoord;\n}", "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float uAlpha;\n\nvoid main(void)\n{\n   gl_FragColor = texture2D(uSampler, vTextureCoord) * uAlpha;\n}\n"));
                                return o.alpha = n, o.glShaderKey = "alpha", o
                            }
                            return o(e, t), a(e, [{
                                key: "alpha",
                                get: function() {
                                    return this.uniforms.uAlpha
                                },
                                set: function(t) {
                                    this.uniforms.uAlpha = t
                                }
                            }]), e
                        }(l.Filter));
                    n.default = u
                }, {
                    "../../core": 65,
                    path: 23
                }],
                144: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        l = t("../../core"),
                        u = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(l),
                        c = t("./BlurXFilter"),
                        h = i(c),
                        p = t("./BlurYFilter"),
                        f = i(p),
                        d = function(t) {
                            function e(n, i, a, s) {
                                r(this, e);
                                var l = o(this, t.call(this));
                                return l.blurXFilter = new h.default(n, i, a, s), l.blurYFilter = new f.default(n, i, a, s), l.padding = 0, l.resolution = a || u.settings.RESOLUTION, l.quality = i || 4, l.blur = n || 8, l
                            }
                            return a(e, t), e.prototype.apply = function(t, e, n) {
                                var i = t.getRenderTarget(!0);
                                this.blurXFilter.apply(t, e, i, !0), this.blurYFilter.apply(t, i, n, !1), t.returnRenderTarget(i)
                            }, s(e, [{
                                key: "blur",
                                get: function() {
                                    return this.blurXFilter.blur
                                },
                                set: function(t) {
                                    this.blurXFilter.blur = this.blurYFilter.blur = t, this.padding = 2 * Math.max(Math.abs(this.blurXFilter.strength), Math.abs(this.blurYFilter.strength))
                                }
                            }, {
                                key: "quality",
                                get: function() {
                                    return this.blurXFilter.quality
                                },
                                set: function(t) {
                                    this.blurXFilter.quality = this.blurYFilter.quality = t
                                }
                            }, {
                                key: "blurX",
                                get: function() {
                                    return this.blurXFilter.blur
                                },
                                set: function(t) {
                                    this.blurXFilter.blur = t, this.padding = 2 * Math.max(Math.abs(this.blurXFilter.strength), Math.abs(this.blurYFilter.strength))
                                }
                            }, {
                                key: "blurY",
                                get: function() {
                                    return this.blurYFilter.blur
                                },
                                set: function(t) {
                                    this.blurYFilter.blur = t, this.padding = 2 * Math.max(Math.abs(this.blurXFilter.strength), Math.abs(this.blurYFilter.strength))
                                }
                            }, {
                                key: "blendMode",
                                get: function() {
                                    return this.blurYFilter._blendMode
                                },
                                set: function(t) {
                                    this.blurYFilter._blendMode = t
                                }
                            }]), e
                        }(u.Filter);
                    n.default = d
                }, {
                    "../../core": 65,
                    "./BlurXFilter": 145,
                    "./BlurYFilter": 146
                }],
                145: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        l = t("../../core"),
                        u = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(l),
                        c = t("./generateBlurVertSource"),
                        h = i(c),
                        p = t("./generateBlurFragSource"),
                        f = i(p),
                        d = t("./getMaxBlurKernelSize"),
                        m = i(d),
                        g = function(t) {
                            function e(n, i, a, s) {
                                r(this, e), s = s || 5;
                                var l = (0, h.default)(s, !0),
                                    c = (0, f.default)(s),
                                    p = o(this, t.call(this, l, c));
                                return p.resolution = a || u.settings.RESOLUTION, p._quality = 0, p.quality = i || 4, p.strength = n || 8, p.firstRun = !0, p
                            }
                            return a(e, t), e.prototype.apply = function(t, e, n, i) {
                                if (this.firstRun) {
                                    var r = t.renderer.gl,
                                        o = (0, m.default)(r);
                                    this.vertexSrc = (0, h.default)(o, !0), this.fragmentSrc = (0, f.default)(o), this.firstRun = !1
                                }
                                if (this.uniforms.strength = 1 / n.size.width * (n.size.width / e.size.width), this.uniforms.strength *= this.strength, this.uniforms.strength /= this.passes, 1 === this.passes) t.applyFilter(this, e, n, i);
                                else {
                                    for (var a = t.getRenderTarget(!0), s = e, l = a, u = 0; u < this.passes - 1; u++) {
                                        t.applyFilter(this, s, l, !0);
                                        var c = l;
                                        l = s, s = c
                                    }
                                    t.applyFilter(this, s, n, i), t.returnRenderTarget(a)
                                }
                            }, s(e, [{
                                key: "blur",
                                get: function() {
                                    return this.strength
                                },
                                set: function(t) {
                                    this.padding = 2 * Math.abs(t), this.strength = t
                                }
                            }, {
                                key: "quality",
                                get: function() {
                                    return this._quality
                                },
                                set: function(t) {
                                    this._quality = t, this.passes = t
                                }
                            }]), e
                        }(u.Filter);
                    n.default = g
                }, {
                    "../../core": 65,
                    "./generateBlurFragSource": 147,
                    "./generateBlurVertSource": 148,
                    "./getMaxBlurKernelSize": 149
                }],
                146: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        l = t("../../core"),
                        u = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(l),
                        c = t("./generateBlurVertSource"),
                        h = i(c),
                        p = t("./generateBlurFragSource"),
                        f = i(p),
                        d = t("./getMaxBlurKernelSize"),
                        m = i(d),
                        g = function(t) {
                            function e(n, i, a, s) {
                                r(this, e), s = s || 5;
                                var l = (0, h.default)(s, !1),
                                    c = (0, f.default)(s),
                                    p = o(this, t.call(this, l, c));
                                return p.resolution = a || u.settings.RESOLUTION, p._quality = 0, p.quality = i || 4, p.strength = n || 8, p.firstRun = !0, p
                            }
                            return a(e, t), e.prototype.apply = function(t, e, n, i) {
                                if (this.firstRun) {
                                    var r = t.renderer.gl,
                                        o = (0, m.default)(r);
                                    this.vertexSrc = (0, h.default)(o, !1), this.fragmentSrc = (0, f.default)(o), this.firstRun = !1
                                }
                                if (this.uniforms.strength = 1 / n.size.height * (n.size.height / e.size.height), this.uniforms.strength *= this.strength, this.uniforms.strength /= this.passes, 1 === this.passes) t.applyFilter(this, e, n, i);
                                else {
                                    for (var a = t.getRenderTarget(!0), s = e, l = a, u = 0; u < this.passes - 1; u++) {
                                        t.applyFilter(this, s, l, !0);
                                        var c = l;
                                        l = s, s = c
                                    }
                                    t.applyFilter(this, s, n, i), t.returnRenderTarget(a)
                                }
                            }, s(e, [{
                                key: "blur",
                                get: function() {
                                    return this.strength
                                },
                                set: function(t) {
                                    this.padding = 2 * Math.abs(t), this.strength = t
                                }
                            }, {
                                key: "quality",
                                get: function() {
                                    return this._quality
                                },
                                set: function(t) {
                                    this._quality = t, this.passes = t
                                }
                            }]), e
                        }(u.Filter);
                    n.default = g
                }, {
                    "../../core": 65,
                    "./generateBlurFragSource": 147,
                    "./generateBlurVertSource": 148,
                    "./getMaxBlurKernelSize": 149
                }],
                147: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        for (var e = r[t], n = e.length, i = o, a = "", s = "gl_FragColor += texture2D(uSampler, vBlurTexCoords[%index%]) * %value%;", l = void 0, u = 0; u < t; u++) {
                            var c = s.replace("%index%", u);
                            l = u, u >= n && (l = t - u - 1), c = c.replace("%value%", e[l]), a += c, a += "\n"
                        }
                        return i = i.replace("%blur%", a), i = i.replace("%size%", t)
                    }
                    n.__esModule = !0, n.default = i;
                    var r = {
                            5: [.153388, .221461, .250301],
                            7: [.071303, .131514, .189879, .214607],
                            9: [.028532, .067234, .124009, .179044, .20236],
                            11: [.0093, .028002, .065984, .121703, .175713, .198596],
                            13: [.002406, .009255, .027867, .065666, .121117, .174868, .197641],
                            15: [489e-6, .002403, .009246, .02784, .065602, .120999, .174697, .197448]
                        },
                        o = ["varying vec2 vBlurTexCoords[%size%];", "uniform sampler2D uSampler;", "void main(void)", "{", "    gl_FragColor = vec4(0.0);", "    %blur%", "}"].join("\n")
                }, {}],
                148: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        var n = Math.ceil(t / 2),
                            i = r,
                            o = "",
                            a = void 0;
                        a = e ? "vBlurTexCoords[%index%] = aTextureCoord + vec2(%sampleIndex% * strength, 0.0);" : "vBlurTexCoords[%index%] = aTextureCoord + vec2(0.0, %sampleIndex% * strength);";
                        for (var s = 0; s < t; s++) {
                            var l = a.replace("%index%", s);
                            l = l.replace("%sampleIndex%", s - (n - 1) + ".0"), o += l, o += "\n"
                        }
                        return i = i.replace("%blur%", o), i = i.replace("%size%", t)
                    }
                    n.__esModule = !0, n.default = i;
                    var r = ["attribute vec2 aVertexPosition;", "attribute vec2 aTextureCoord;", "uniform float strength;", "uniform mat3 projectionMatrix;", "varying vec2 vBlurTexCoords[%size%];", "void main(void)", "{", "gl_Position = vec4((projectionMatrix * vec3((aVertexPosition), 1.0)).xy, 0.0, 1.0);", "%blur%", "}"].join("\n")
                }, {}],
                149: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        for (var e = t.getParameter(t.MAX_VARYING_VECTORS), n = 15; n > e;) n -= 2;
                        return n
                    }
                    n.__esModule = !0, n.default = i
                }, {}],
                150: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        s = t("../../core"),
                        l = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(s),
                        u = (t("path"), function(t) {
                            function e() {
                                i(this, e);
                                var n = r(this, t.call(this, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n    vTextureCoord = aTextureCoord;\n}", "varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform float m[20];\nuniform float uAlpha;\n\nvoid main(void)\n{\n    vec4 c = texture2D(uSampler, vTextureCoord);\n\n    if (uAlpha == 0.0) {\n        gl_FragColor = c;\n        return;\n    }\n\n    // Un-premultiply alpha before applying the color matrix. See issue #3539.\n    if (c.a > 0.0) {\n      c.rgb /= c.a;\n    }\n\n    vec4 result;\n\n    result.r = (m[0] * c.r);\n        result.r += (m[1] * c.g);\n        result.r += (m[2] * c.b);\n        result.r += (m[3] * c.a);\n        result.r += m[4];\n\n    result.g = (m[5] * c.r);\n        result.g += (m[6] * c.g);\n        result.g += (m[7] * c.b);\n        result.g += (m[8] * c.a);\n        result.g += m[9];\n\n    result.b = (m[10] * c.r);\n       result.b += (m[11] * c.g);\n       result.b += (m[12] * c.b);\n       result.b += (m[13] * c.a);\n       result.b += m[14];\n\n    result.a = (m[15] * c.r);\n       result.a += (m[16] * c.g);\n       result.a += (m[17] * c.b);\n       result.a += (m[18] * c.a);\n       result.a += m[19];\n\n    vec3 rgb = mix(c.rgb, result.rgb, uAlpha);\n\n    // Premultiply alpha again.\n    rgb *= result.a;\n\n    gl_FragColor = vec4(rgb, result.a);\n}\n"));
                                return n.uniforms.m = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0], n.alpha = 1, n
                            }
                            return o(e, t), e.prototype._loadMatrix = function(t) {
                                var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
                                    n = t;
                                e && (this._multiply(n, this.uniforms.m, t), n = this._colorMatrix(n)), this.uniforms.m = n
                            }, e.prototype._multiply = function(t, e, n) {
                                return t[0] = e[0] * n[0] + e[1] * n[5] + e[2] * n[10] + e[3] * n[15], t[1] = e[0] * n[1] + e[1] * n[6] + e[2] * n[11] + e[3] * n[16], t[2] = e[0] * n[2] + e[1] * n[7] + e[2] * n[12] + e[3] * n[17], t[3] = e[0] * n[3] + e[1] * n[8] + e[2] * n[13] + e[3] * n[18], t[4] = e[0] * n[4] + e[1] * n[9] + e[2] * n[14] + e[3] * n[19] + e[4], t[5] = e[5] * n[0] + e[6] * n[5] + e[7] * n[10] + e[8] * n[15], t[6] = e[5] * n[1] + e[6] * n[6] + e[7] * n[11] + e[8] * n[16], t[7] = e[5] * n[2] + e[6] * n[7] + e[7] * n[12] + e[8] * n[17], t[8] = e[5] * n[3] + e[6] * n[8] + e[7] * n[13] + e[8] * n[18], t[9] = e[5] * n[4] + e[6] * n[9] + e[7] * n[14] + e[8] * n[19] + e[9], t[10] = e[10] * n[0] + e[11] * n[5] + e[12] * n[10] + e[13] * n[15], t[11] = e[10] * n[1] + e[11] * n[6] + e[12] * n[11] + e[13] * n[16], t[12] = e[10] * n[2] + e[11] * n[7] + e[12] * n[12] + e[13] * n[17], t[13] = e[10] * n[3] + e[11] * n[8] + e[12] * n[13] + e[13] * n[18], t[14] = e[10] * n[4] + e[11] * n[9] + e[12] * n[14] + e[13] * n[19] + e[14], t[15] = e[15] * n[0] + e[16] * n[5] + e[17] * n[10] + e[18] * n[15], t[16] = e[15] * n[1] + e[16] * n[6] + e[17] * n[11] + e[18] * n[16], t[17] = e[15] * n[2] + e[16] * n[7] + e[17] * n[12] + e[18] * n[17], t[18] = e[15] * n[3] + e[16] * n[8] + e[17] * n[13] + e[18] * n[18], t[19] = e[15] * n[4] + e[16] * n[9] + e[17] * n[14] + e[18] * n[19] + e[19], t
                            }, e.prototype._colorMatrix = function(t) {
                                var e = new Float32Array(t);
                                return e[4] /= 255, e[9] /= 255, e[14] /= 255, e[19] /= 255, e
                            }, e.prototype.brightness = function(t, e) {
                                var n = [t, 0, 0, 0, 0, 0, t, 0, 0, 0, 0, 0, t, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(n, e)
                            }, e.prototype.greyscale = function(t, e) {
                                var n = [t, t, t, 0, 0, t, t, t, 0, 0, t, t, t, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(n, e)
                            }, e.prototype.blackAndWhite = function(t) {
                                var e = [.3, .6, .1, 0, 0, .3, .6, .1, 0, 0, .3, .6, .1, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(e, t)
                            }, e.prototype.hue = function(t, e) {
                                t = (t || 0) / 180 * Math.PI;
                                var n = Math.cos(t),
                                    i = Math.sin(t),
                                    r = Math.sqrt,
                                    o = 1 / 3,
                                    a = r(o),
                                    s = n + (1 - n) * o,
                                    l = o * (1 - n) - a * i,
                                    u = o * (1 - n) + a * i,
                                    c = o * (1 - n) + a * i,
                                    h = n + o * (1 - n),
                                    p = o * (1 - n) - a * i,
                                    f = o * (1 - n) - a * i,
                                    d = o * (1 - n) + a * i,
                                    m = n + o * (1 - n),
                                    g = [s, l, u, 0, 0, c, h, p, 0, 0, f, d, m, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(g, e)
                            }, e.prototype.contrast = function(t, e) {
                                var n = (t || 0) + 1,
                                    i = -.5 * (n - 1),
                                    r = [n, 0, 0, 0, i, 0, n, 0, 0, i, 0, 0, n, 0, i, 0, 0, 0, 1, 0];
                                this._loadMatrix(r, e)
                            }, e.prototype.saturate = function() {
                                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                    e = arguments[1],
                                    n = 2 * t / 3 + 1,
                                    i = -.5 * (n - 1),
                                    r = [n, i, i, 0, 0, i, n, i, 0, 0, i, i, n, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(r, e)
                            }, e.prototype.desaturate = function() {
                                this.saturate(-1)
                            }, e.prototype.negative = function(t) {
                                var e = [-1, 0, 0, 1, 0, 0, -1, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(e, t)
                            }, e.prototype.sepia = function(t) {
                                var e = [.393, .7689999, .18899999, 0, 0, .349, .6859999, .16799999, 0, 0, .272, .5339999, .13099999, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(e, t)
                            }, e.prototype.technicolor = function(t) {
                                var e = [1.9125277891456083, -.8545344976951645, -.09155508482755585, 0, 11.793603434377337, -.3087833385928097, 1.7658908555458428, -.10601743074722245, 0, -70.35205161461398, -.231103377548616, -.7501899197440212, 1.847597816108189, 0, 30.950940869491138, 0, 0, 0, 1, 0];
                                this._loadMatrix(e, t)
                            }, e.prototype.polaroid = function(t) {
                                var e = [1.438, -.062, -.062, 0, 0, -.122, 1.378, -.122, 0, 0, -.016, -.016, 1.483, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(e, t)
                            }, e.prototype.toBGR = function(t) {
                                var e = [0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(e, t)
                            }, e.prototype.kodachrome = function(t) {
                                var e = [1.1285582396593525, -.3967382283601348, -.03992559172921793, 0, 63.72958762196502, -.16404339962244616, 1.0835251566291304, -.05498805115633132, 0, 24.732407896706203, -.16786010706155763, -.5603416277695248, 1.6014850761964943, 0, 35.62982807460946, 0, 0, 0, 1, 0];
                                this._loadMatrix(e, t)
                            }, e.prototype.browni = function(t) {
                                var e = [.5997023498159715, .34553243048391263, -.2708298674538042, 0, 47.43192855600873, -.037703249837783157, .8609577587992641, .15059552388459913, 0, -36.96841498319127, .24113635128153335, -.07441037908422492, .44972182064877153, 0, -7.562075277591283, 0, 0, 0, 1, 0];
                                this._loadMatrix(e, t)
                            }, e.prototype.vintage = function(t) {
                                var e = [.6279345635605994, .3202183420819367, -.03965408211312453, 0, 9.651285835294123, .02578397704808868, .6441188644374771, .03259127616149294, 0, 7.462829176470591, .0466055556782719, -.0851232987247891, .5241648018700465, 0, 5.159190588235296, 0, 0, 0, 1, 0];
                                this._loadMatrix(e, t)
                            }, e.prototype.colorTone = function(t, e, n, i, r) {
                                t = t || .2, e = e || .15, n = n || 16770432, i = i || 3375104;
                                var o = (n >> 16 & 255) / 255,
                                    a = (n >> 8 & 255) / 255,
                                    s = (255 & n) / 255,
                                    l = (i >> 16 & 255) / 255,
                                    u = (i >> 8 & 255) / 255,
                                    c = (255 & i) / 255,
                                    h = [.3, .59, .11, 0, 0, o, a, s, t, 0, l, u, c, e, 0, o - l, a - u, s - c, 0, 0];
                                this._loadMatrix(h, r)
                            }, e.prototype.night = function(t, e) {
                                t = t || .1;
                                var n = [-2 * t, -t, 0, 0, 0, -t, 0, t, 0, 0, 0, t, 2 * t, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(n, e)
                            }, e.prototype.predator = function(t, e) {
                                var n = [11.224130630493164 * t, -4.794486999511719 * t, -2.8746118545532227 * t, 0 * t, .40342438220977783 * t, -3.6330697536468506 * t, 9.193157196044922 * t, -2.951810836791992 * t, 0 * t, -1.316135048866272 * t, -3.2184197902679443 * t, -4.2375030517578125 * t, 7.476448059082031 * t, 0 * t, .8044459223747253 * t, 0, 0, 0, 1, 0];
                                this._loadMatrix(n, e)
                            }, e.prototype.lsd = function(t) {
                                var e = [2, -.4, .5, 0, 0, -.5, 2, -.4, 0, 0, -.4, -.5, 3, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(e, t)
                            }, e.prototype.reset = function() {
                                var t = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0];
                                this._loadMatrix(t, !1)
                            }, a(e, [{
                                key: "matrix",
                                get: function() {
                                    return this.uniforms.m
                                },
                                set: function(t) {
                                    this.uniforms.m = t
                                }
                            }, {
                                key: "alpha",
                                get: function() {
                                    return this.uniforms.uAlpha
                                },
                                set: function(t) {
                                    this.uniforms.uAlpha = t
                                }
                            }]), e
                        }(l.Filter));
                    n.default = u, u.prototype.grayscale = u.prototype.greyscale
                }, {
                    "../../core": 65,
                    path: 23
                }],
                151: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        s = t("../../core"),
                        l = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(s),
                        u = (t("path"), function(t) {
                            function e(n, o) {
                                i(this, e);
                                var a = new l.Matrix;
                                n.renderable = !1;
                                var s = r(this, t.call(this, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 filterMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vFilterCoord;\n\nvoid main(void)\n{\n   gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n   vFilterCoord = ( filterMatrix * vec3( aTextureCoord, 1.0)  ).xy;\n   vTextureCoord = aTextureCoord;\n}", "varying vec2 vFilterCoord;\nvarying vec2 vTextureCoord;\n\nuniform vec2 scale;\n\nuniform sampler2D uSampler;\nuniform sampler2D mapSampler;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\n\nvoid main(void)\n{\n  vec4 map =  texture2D(mapSampler, vFilterCoord);\n\n  map -= 0.5;\n  map.xy *= scale / filterArea.xy;\n\n  gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), filterClamp.xy, filterClamp.zw));\n}\n"));
                                return s.maskSprite = n, s.maskMatrix = a, s.uniforms.mapSampler = n._texture, s.uniforms.filterMatrix = a, s.uniforms.scale = {
                                    x: 1,
                                    y: 1
                                }, null !== o && void 0 !== o || (o = 20), s.scale = new l.Point(o, o), s
                            }
                            return o(e, t), e.prototype.apply = function(t, e, n) {
                                this.uniforms.filterMatrix = t.calculateSpriteMatrix(this.maskMatrix, this.maskSprite), this.uniforms.scale.x = this.scale.x, this.uniforms.scale.y = this.scale.y, t.applyFilter(this, e, n)
                            }, a(e, [{
                                key: "map",
                                get: function() {
                                    return this.uniforms.mapSampler
                                },
                                set: function(t) {
                                    this.uniforms.mapSampler = t
                                }
                            }]), e
                        }(l.Filter));
                    n.default = u
                }, {
                    "../../core": 65,
                    path: 23
                }],
                152: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = t("../../core"),
                        s = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(a),
                        l = (t("path"), function(t) {
                            function e() {
                                return i(this, e),
                                    r(this, t.call(this, "\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nuniform vec4 filterArea;\n\nvarying vec2 vTextureCoord;\n\nvec2 mapCoord( vec2 coord )\n{\n    coord *= filterArea.xy;\n    coord += filterArea.zw;\n\n    return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n    coord -= filterArea.zw;\n    coord /= filterArea.xy;\n\n    return coord;\n}\n\nvoid texcoords(vec2 fragCoord, vec2 resolution,\n               out vec2 v_rgbNW, out vec2 v_rgbNE,\n               out vec2 v_rgbSW, out vec2 v_rgbSE,\n               out vec2 v_rgbM) {\n    vec2 inverseVP = 1.0 / resolution.xy;\n    v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;\n    v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;\n    v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;\n    v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;\n    v_rgbM = vec2(fragCoord * inverseVP);\n}\n\nvoid main(void) {\n\n   gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n   vTextureCoord = aTextureCoord;\n\n   vec2 fragCoord = vTextureCoord * filterArea.xy;\n\n   texcoords(fragCoord, filterArea.xy, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n}", 'varying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\n\n/**\n Basic FXAA implementation based on the code on geeks3d.com with the\n modification that the texture2DLod stuff was removed since it\'s\n unsupported by WebGL.\n \n --\n \n From:\n https://github.com/mitsuhiko/webgl-meincraft\n \n Copyright (c) 2011 by Armin Ronacher.\n \n Some rights reserved.\n \n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are\n met:\n \n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n \n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials provided\n with the distribution.\n \n * The names of the contributors may not be used to endorse or\n promote products derived from this software without specific\n prior written permission.\n \n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n#ifndef FXAA_REDUCE_MIN\n#define FXAA_REDUCE_MIN   (1.0/ 128.0)\n#endif\n#ifndef FXAA_REDUCE_MUL\n#define FXAA_REDUCE_MUL   (1.0 / 8.0)\n#endif\n#ifndef FXAA_SPAN_MAX\n#define FXAA_SPAN_MAX     8.0\n#endif\n\n//optimized version for mobile, where dependent\n//texture reads can be a bottleneck\nvec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 resolution,\n          vec2 v_rgbNW, vec2 v_rgbNE,\n          vec2 v_rgbSW, vec2 v_rgbSE,\n          vec2 v_rgbM) {\n    vec4 color;\n    mediump vec2 inverseVP = vec2(1.0 / resolution.x, 1.0 / resolution.y);\n    vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;\n    vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;\n    vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;\n    vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;\n    vec4 texColor = texture2D(tex, v_rgbM);\n    vec3 rgbM  = texColor.xyz;\n    vec3 luma = vec3(0.299, 0.587, 0.114);\n    float lumaNW = dot(rgbNW, luma);\n    float lumaNE = dot(rgbNE, luma);\n    float lumaSW = dot(rgbSW, luma);\n    float lumaSE = dot(rgbSE, luma);\n    float lumaM  = dot(rgbM,  luma);\n    float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n    float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n    \n    mediump vec2 dir;\n    dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n    dir.y =  ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n    \n    float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\n                          (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\n    \n    float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\n    dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n              max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n                  dir * rcpDirMin)) * inverseVP;\n    \n    vec3 rgbA = 0.5 * (\n                       texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +\n                       texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);\n    vec3 rgbB = rgbA * 0.5 + 0.25 * (\n                                     texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +\n                                     texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);\n    \n    float lumaB = dot(rgbB, luma);\n    if ((lumaB < lumaMin) || (lumaB > lumaMax))\n        color = vec4(rgbA, texColor.a);\n    else\n        color = vec4(rgbB, texColor.a);\n    return color;\n}\n\nvoid main() {\n\n      vec2 fragCoord = vTextureCoord * filterArea.xy;\n\n      vec4 color;\n\n    color = fxaa(uSampler, fragCoord, filterArea.xy, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n\n      gl_FragColor = color;\n}\n'))
                            }
                            return o(e, t), e
                        }(s.Filter));
                    n.default = l
                }, {
                    "../../core": 65,
                    path: 23
                }],
                153: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }
                    n.__esModule = !0;
                    var r = t("./fxaa/FXAAFilter");
                    Object.defineProperty(n, "FXAAFilter", {
                        enumerable: !0,
                        get: function() {
                            return i(r).default
                        }
                    });
                    var o = t("./noise/NoiseFilter");
                    Object.defineProperty(n, "NoiseFilter", {
                        enumerable: !0,
                        get: function() {
                            return i(o).default
                        }
                    });
                    var a = t("./displacement/DisplacementFilter");
                    Object.defineProperty(n, "DisplacementFilter", {
                        enumerable: !0,
                        get: function() {
                            return i(a).default
                        }
                    });
                    var s = t("./blur/BlurFilter");
                    Object.defineProperty(n, "BlurFilter", {
                        enumerable: !0,
                        get: function() {
                            return i(s).default
                        }
                    });
                    var l = t("./blur/BlurXFilter");
                    Object.defineProperty(n, "BlurXFilter", {
                        enumerable: !0,
                        get: function() {
                            return i(l).default
                        }
                    });
                    var u = t("./blur/BlurYFilter");
                    Object.defineProperty(n, "BlurYFilter", {
                        enumerable: !0,
                        get: function() {
                            return i(u).default
                        }
                    });
                    var c = t("./colormatrix/ColorMatrixFilter");
                    Object.defineProperty(n, "ColorMatrixFilter", {
                        enumerable: !0,
                        get: function() {
                            return i(c).default
                        }
                    });
                    var h = t("./alpha/AlphaFilter");
                    Object.defineProperty(n, "AlphaFilter", {
                        enumerable: !0,
                        get: function() {
                            return i(h).default
                        }
                    })
                }, {
                    "./alpha/AlphaFilter": 143,
                    "./blur/BlurFilter": 144,
                    "./blur/BlurXFilter": 145,
                    "./blur/BlurYFilter": 146,
                    "./colormatrix/ColorMatrixFilter": 150,
                    "./displacement/DisplacementFilter": 151,
                    "./fxaa/FXAAFilter": 152,
                    "./noise/NoiseFilter": 154
                }],
                154: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        s = t("../../core"),
                        l = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(s),
                        u = (t("path"), function(t) {
                            function e() {
                                var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : .5,
                                    o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Math.random();
                                i(this, e);
                                var a = r(this, t.call(this, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n    vTextureCoord = aTextureCoord;\n}", "precision highp float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform float uNoise;\nuniform float uSeed;\nuniform sampler2D uSampler;\n\nfloat rand(vec2 co)\n{\n    return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main()\n{\n    vec4 color = texture2D(uSampler, vTextureCoord);\n    float randomValue = rand(gl_FragCoord.xy * uSeed);\n    float diff = (randomValue - 0.5) * uNoise;\n\n    // Un-premultiply alpha before applying the color matrix. See issue #3539.\n    if (color.a > 0.0) {\n        color.rgb /= color.a;\n    }\n\n    color.r += diff;\n    color.g += diff;\n    color.b += diff;\n\n    // Premultiply alpha again.\n    color.rgb *= color.a;\n\n    gl_FragColor = color;\n}\n"));
                                return a.noise = n, a.seed = o, a
                            }
                            return o(e, t), a(e, [{
                                key: "noise",
                                get: function() {
                                    return this.uniforms.uNoise
                                },
                                set: function(t) {
                                    this.uniforms.uNoise = t
                                }
                            }, {
                                key: "seed",
                                get: function() {
                                    return this.uniforms.uSeed
                                },
                                set: function(t) {
                                    this.uniforms.uSeed = t
                                }
                            }]), e
                        }(l.Filter));
                    n.default = u
                }, {
                    "../../core": 65,
                    path: 23
                }],
                155: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        o = t("../core"),
                        a = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(o),
                        s = function() {
                            function t() {
                                i(this, t), this.global = new a.Point, this.target = null, this.originalEvent = null, this.identifier = null, this.isPrimary = !1, this.button = 0, this.buttons = 0, this.width = 0, this.height = 0, this.tiltX = 0, this.tiltY = 0, this.pointerType = null, this.pressure = 0, this.rotationAngle = 0, this.twist = 0, this.tangentialPressure = 0
                            }
                            return t.prototype.getLocalPosition = function(t, e, n) {
                                return t.worldTransform.applyInverse(n || this.global, e)
                            }, t.prototype.copyEvent = function(t) {
                                t.isPrimary && (this.isPrimary = !0), this.button = t.button, this.buttons = Number.isInteger(t.buttons) ? t.buttons : t.which, this.width = t.width, this.height = t.height, this.tiltX = t.tiltX, this.tiltY = t.tiltY, this.pointerType = t.pointerType, this.pressure = t.pressure, this.rotationAngle = t.rotationAngle, this.twist = t.twist || 0, this.tangentialPressure = t.tangentialPressure || 0
                            }, t.prototype.reset = function() {
                                this.isPrimary = !1
                            }, r(t, [{
                                key: "pointerId",
                                get: function() {
                                    return this.identifier
                                }
                            }]), t
                        }();
                    n.default = s
                }, {
                    "../core": 65
                }],
                156: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = function() {
                        function t() {
                            i(this, t), this.stopped = !1, this.target = null, this.currentTarget = null, this.type = null, this.data = null
                        }
                        return t.prototype.stopPropagation = function() {
                            this.stopped = !0
                        }, t.prototype.reset = function() {
                            this.stopped = !1, this.currentTarget = null, this.target = null
                        }, t
                    }();
                    n.default = r
                }, {}],
                157: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
                            return typeof t
                        } : function(t) {
                            return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
                        },
                        l = t("../core"),
                        u = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(l),
                        c = t("./InteractionData"),
                        h = i(c),
                        p = t("./InteractionEvent"),
                        f = i(p),
                        d = t("./InteractionTrackingData"),
                        m = i(d),
                        g = t("eventemitter3"),
                        _ = i(g),
                        y = t("./interactiveTarget"),
                        v = i(y);
                    u.utils.mixins.delayMixin(u.DisplayObject.prototype, v.default);
                    var b = 1,
                        x = {
                            target: null,
                            data: {
                                global: null
                            }
                        },
                        T = function(t) {
                            function e(n, i) {
                                r(this, e);
                                var a = o(this, t.call(this));
                                return i = i || {}, a.renderer = n, a.autoPreventDefault = void 0 === i.autoPreventDefault || i.autoPreventDefault, a.interactionFrequency = i.interactionFrequency || 10, a.mouse = new h.default, a.mouse.identifier = b, a.mouse.global.set(-999999), a.activeInteractionData = {}, a.activeInteractionData[b] = a.mouse, a.interactionDataPool = [], a.eventData = new f.default, a.interactionDOMElement = null, a.moveWhenInside = !1, a.eventsAdded = !1, a.mouseOverRenderer = !1, a.supportsTouchEvents = "ontouchstart" in window, a.supportsPointerEvents = !!window.PointerEvent, a.onPointerUp = a.onPointerUp.bind(a), a.processPointerUp = a.processPointerUp.bind(a), a.onPointerCancel = a.onPointerCancel.bind(a), a.processPointerCancel = a.processPointerCancel.bind(a), a.onPointerDown = a.onPointerDown.bind(a), a.processPointerDown = a.processPointerDown.bind(a), a.onPointerMove = a.onPointerMove.bind(a), a.processPointerMove = a.processPointerMove.bind(a), a.onPointerOut = a.onPointerOut.bind(a), a.processPointerOverOut = a.processPointerOverOut.bind(a), a.onPointerOver = a.onPointerOver.bind(a), a.cursorStyles = {
                                    default: "inherit",
                                    pointer: "pointer"
                                }, a.currentCursorMode = null, a.cursor = null, a._tempPoint = new u.Point, a.resolution = 1, a.setTargetElement(a.renderer.view, a.renderer.resolution), a
                            }
                            return a(e, t), e.prototype.hitTest = function(t, e) {
                                return x.target = null, x.data.global = t, e || (e = this.renderer._lastObjectRendered), this.processInteractive(x, e, null, !0), x.target
                            }, e.prototype.setTargetElement = function(t) {
                                var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;
                                this.removeEvents(), this.interactionDOMElement = t, this.resolution = e, this.addEvents()
                            }, e.prototype.addEvents = function() {
                                this.interactionDOMElement && (u.ticker.shared.add(this.update, this, u.UPDATE_PRIORITY.INTERACTION), window.navigator.msPointerEnabled ? (this.interactionDOMElement.style["-ms-content-zooming"] = "none", this.interactionDOMElement.style["-ms-touch-action"] = "none") : this.supportsPointerEvents && (this.interactionDOMElement.style["touch-action"] = "none"), this.supportsPointerEvents ? (window.document.addEventListener("pointermove", this.onPointerMove, !0), this.interactionDOMElement.addEventListener("pointerdown", this.onPointerDown, !0), this.interactionDOMElement.addEventListener("pointerleave", this.onPointerOut, !0), this.interactionDOMElement.addEventListener("pointerover", this.onPointerOver, !0), window.addEventListener("pointercancel", this.onPointerCancel, !0), window.addEventListener("pointerup", this.onPointerUp, !0)) : (window.document.addEventListener("mousemove", this.onPointerMove, !0), this.interactionDOMElement.addEventListener("mousedown", this.onPointerDown, !0), this.interactionDOMElement.addEventListener("mouseout", this.onPointerOut, !0), this.interactionDOMElement.addEventListener("mouseover", this.onPointerOver, !0), window.addEventListener("mouseup", this.onPointerUp, !0)), this.supportsTouchEvents && (this.interactionDOMElement.addEventListener("touchstart", this.onPointerDown, !0), this.interactionDOMElement.addEventListener("touchcancel", this.onPointerCancel, !0), this.interactionDOMElement.addEventListener("touchend", this.onPointerUp, !0), this.interactionDOMElement.addEventListener("touchmove", this.onPointerMove, !0)), this.eventsAdded = !0)
                            }, e.prototype.removeEvents = function() {
                                this.interactionDOMElement && (u.ticker.shared.remove(this.update, this), window.navigator.msPointerEnabled ? (this.interactionDOMElement.style["-ms-content-zooming"] = "", this.interactionDOMElement.style["-ms-touch-action"] = "") : this.supportsPointerEvents && (this.interactionDOMElement.style["touch-action"] = ""), this.supportsPointerEvents ? (window.document.removeEventListener("pointermove", this.onPointerMove, !0), this.interactionDOMElement.removeEventListener("pointerdown", this.onPointerDown, !0), this.interactionDOMElement.removeEventListener("pointerleave", this.onPointerOut, !0), this.interactionDOMElement.removeEventListener("pointerover", this.onPointerOver, !0), window.removeEventListener("pointercancel", this.onPointerCancel, !0), window.removeEventListener("pointerup", this.onPointerUp, !0)) : (window.document.removeEventListener("mousemove", this.onPointerMove, !0), this.interactionDOMElement.removeEventListener("mousedown", this.onPointerDown, !0), this.interactionDOMElement.removeEventListener("mouseout", this.onPointerOut, !0), this.interactionDOMElement.removeEventListener("mouseover", this.onPointerOver, !0), window.removeEventListener("mouseup", this.onPointerUp, !0)), this.supportsTouchEvents && (this.interactionDOMElement.removeEventListener("touchstart", this.onPointerDown, !0), this.interactionDOMElement.removeEventListener("touchcancel", this.onPointerCancel, !0), this.interactionDOMElement.removeEventListener("touchend", this.onPointerUp, !0), this.interactionDOMElement.removeEventListener("touchmove", this.onPointerMove, !0)), this.interactionDOMElement = null, this.eventsAdded = !1)
                            }, e.prototype.update = function(t) {
                                if (this._deltaTime += t, !(this._deltaTime < this.interactionFrequency) && (this._deltaTime = 0, this.interactionDOMElement)) {
                                    if (this.didMove) return void(this.didMove = !1);
                                    this.cursor = null;
                                    for (var e in this.activeInteractionData)
                                        if (this.activeInteractionData.hasOwnProperty(e)) {
                                            var n = this.activeInteractionData[e];
                                            if (n.originalEvent && "touch" !== n.pointerType) {
                                                var i = this.configureInteractionEventForDOMEvent(this.eventData, n.originalEvent, n);
                                                this.processInteractive(i, this.renderer._lastObjectRendered, this.processPointerOverOut, !0)
                                            }
                                        }
                                    this.setCursorMode(this.cursor)
                                }
                            }, e.prototype.setCursorMode = function(t) {
                                if (t = t || "default", this.currentCursorMode !== t) {
                                    this.currentCursorMode = t;
                                    var e = this.cursorStyles[t];
                                    if (e) switch (void 0 === e ? "undefined" : s(e)) {
                                        case "string":
                                            this.interactionDOMElement.style.cursor = e;
                                            break;
                                        case "function":
                                            e(t);
                                            break;
                                        case "object":
                                            Object.assign(this.interactionDOMElement.style, e)
                                    } else "string" != typeof t || Object.prototype.hasOwnProperty.call(this.cursorStyles, t) || (this.interactionDOMElement.style.cursor = t)
                                }
                            }, e.prototype.dispatchEvent = function(t, e, n) {
                                n.stopped || (n.currentTarget = t, n.type = e, t.emit(e, n), t[e] && t[e](n))
                            }, e.prototype.mapPositionToPoint = function(t, e, n) {
                                var i = void 0;
                                i = this.interactionDOMElement.parentElement ? this.interactionDOMElement.getBoundingClientRect() : {
                                    x: 0,
                                    y: 0,
                                    width: 0,
                                    height: 0
                                };
                                var r = navigator.isCocoonJS ? this.resolution : 1 / this.resolution;
                                t.x = (e - i.left) * (this.interactionDOMElement.width / i.width) * r, t.y = (n - i.top) * (this.interactionDOMElement.height / i.height) * r
                            }, e.prototype.processInteractive = function(t, e, n, i, r) {
                                if (!e || !e.visible) return !1;
                                var o = t.data.global;
                                r = e.interactive || r;
                                var a = !1,
                                    s = r,
                                    l = !0;
                                if (e.hitArea ? (i && (e.worldTransform.applyInverse(o, this._tempPoint), e.hitArea.contains(this._tempPoint.x, this._tempPoint.y) ? a = !0 : (i = !1, l = !1)), s = !1) : e._mask && i && (e._mask.containsPoint(o) || (i = !1, l = !1)), l && e.interactiveChildren && e.children)
                                    for (var u = e.children, c = u.length - 1; c >= 0; c--) {
                                        var h = u[c],
                                            p = this.processInteractive(t, h, n, i, s);
                                        if (p) {
                                            if (!h.parent) continue;
                                            s = !1, p && (t.target && (i = !1), a = !0)
                                        }
                                    }
                                return r && (i && !t.target && !e.hitArea && e.containsPoint && e.containsPoint(o) && (a = !0), e.interactive && (a && !t.target && (t.target = e), n && n(t, e, !!a))), a
                            }, e.prototype.onPointerDown = function(t) {
                                if (!this.supportsTouchEvents || "touch" !== t.pointerType) {
                                    var e = this.normalizeToPointerData(t);
                                    this.autoPreventDefault && e[0].isNormalized && t.preventDefault();
                                    for (var n = e.length, i = 0; i < n; i++) {
                                        var r = e[i],
                                            o = this.getInteractionDataForPointerId(r),
                                            a = this.configureInteractionEventForDOMEvent(this.eventData, r, o);
                                        if (a.data.originalEvent = t, this.processInteractive(a, this.renderer._lastObjectRendered, this.processPointerDown, !0), this.emit("pointerdown", a), "touch" === r.pointerType) this.emit("touchstart", a);
                                        else if ("mouse" === r.pointerType || "pen" === r.pointerType) {
                                            var s = 2 === r.button;
                                            this.emit(s ? "rightdown" : "mousedown", this.eventData)
                                        }
                                    }
                                }
                            }, e.prototype.processPointerDown = function(t, e, n) {
                                var i = t.data,
                                    r = t.data.identifier;
                                if (n)
                                    if (e.trackedPointers[r] || (e.trackedPointers[r] = new m.default(r)), this.dispatchEvent(e, "pointerdown", t), "touch" === i.pointerType) this.dispatchEvent(e, "touchstart", t);
                                    else if ("mouse" === i.pointerType || "pen" === i.pointerType) {
                                    var o = 2 === i.button;
                                    o ? e.trackedPointers[r].rightDown = !0 : e.trackedPointers[r].leftDown = !0, this.dispatchEvent(e, o ? "rightdown" : "mousedown", t)
                                }
                            }, e.prototype.onPointerComplete = function(t, e, n) {
                                for (var i = this.normalizeToPointerData(t), r = i.length, o = t.target !== this.interactionDOMElement ? "outside" : "", a = 0; a < r; a++) {
                                    var s = i[a],
                                        l = this.getInteractionDataForPointerId(s),
                                        u = this.configureInteractionEventForDOMEvent(this.eventData, s, l);
                                    if (u.data.originalEvent = t, this.processInteractive(u, this.renderer._lastObjectRendered, n, e || !o), this.emit(e ? "pointercancel" : "pointerup" + o, u), "mouse" === s.pointerType || "pen" === s.pointerType) {
                                        var c = 2 === s.button;
                                        this.emit(c ? "rightup" + o : "mouseup" + o, u)
                                    } else "touch" === s.pointerType && (this.emit(e ? "touchcancel" : "touchend" + o, u), this.releaseInteractionDataForPointerId(s.pointerId, l))
                                }
                            }, e.prototype.onPointerCancel = function(t) {
                                this.supportsTouchEvents && "touch" === t.pointerType || this.onPointerComplete(t, !0, this.processPointerCancel)
                            }, e.prototype.processPointerCancel = function(t, e) {
                                var n = t.data,
                                    i = t.data.identifier;
                                void 0 !== e.trackedPointers[i] && (delete e.trackedPointers[i], this.dispatchEvent(e, "pointercancel", t), "touch" === n.pointerType && this.dispatchEvent(e, "touchcancel", t))
                            }, e.prototype.onPointerUp = function(t) {
                                this.supportsTouchEvents && "touch" === t.pointerType || this.onPointerComplete(t, !1, this.processPointerUp)
                            }, e.prototype.processPointerUp = function(t, e, n) {
                                var i = t.data,
                                    r = t.data.identifier,
                                    o = e.trackedPointers[r],
                                    a = "touch" === i.pointerType;
                                if ("mouse" === i.pointerType || "pen" === i.pointerType) {
                                    var s = 2 === i.button,
                                        l = m.default.FLAGS,
                                        u = s ? l.RIGHT_DOWN : l.LEFT_DOWN,
                                        c = void 0 !== o && o.flags & u;
                                    n ? (this.dispatchEvent(e, s ? "rightup" : "mouseup", t), c && this.dispatchEvent(e, s ? "rightclick" : "click", t)) : c && this.dispatchEvent(e, s ? "rightupoutside" : "mouseupoutside", t), o && (s ? o.rightDown = !1 : o.leftDown = !1)
                                }
                                n ? (this.dispatchEvent(e, "pointerup", t), a && this.dispatchEvent(e, "touchend", t), o && (this.dispatchEvent(e, "pointertap", t), a && (this.dispatchEvent(e, "tap", t), o.over = !1))) : o && (this.dispatchEvent(e, "pointerupoutside", t), a && this.dispatchEvent(e, "touchendoutside", t)), o && o.none && delete e.trackedPointers[r]
                            }, e.prototype.onPointerMove = function(t) {
                                if (!this.supportsTouchEvents || "touch" !== t.pointerType) {
                                    var e = this.normalizeToPointerData(t);
                                    "mouse" !== e[0].pointerType && "pen" !== e[0].pointerType || (this.didMove = !0, this.cursor = null);
                                    for (var n = e.length, i = 0; i < n; i++) {
                                        var r = e[i],
                                            o = this.getInteractionDataForPointerId(r),
                                            a = this.configureInteractionEventForDOMEvent(this.eventData, r, o);
                                        a.data.originalEvent = t;
                                        var s = "touch" !== r.pointerType || this.moveWhenInside;
                                        this.processInteractive(a, this.renderer._lastObjectRendered, this.processPointerMove, s), this.emit("pointermove", a), "touch" === r.pointerType && this.emit("touchmove", a), "mouse" !== r.pointerType && "pen" !== r.pointerType || this.emit("mousemove", a)
                                    }
                                    "mouse" === e[0].pointerType && this.setCursorMode(this.cursor)
                                }
                            }, e.prototype.processPointerMove = function(t, e, n) {
                                var i = t.data,
                                    r = "touch" === i.pointerType,
                                    o = "mouse" === i.pointerType || "pen" === i.pointerType;
                                o && this.processPointerOverOut(t, e, n), this.moveWhenInside && !n || (this.dispatchEvent(e, "pointermove", t), r && this.dispatchEvent(e, "touchmove", t), o && this.dispatchEvent(e, "mousemove", t))
                            }, e.prototype.onPointerOut = function(t) {
                                if (!this.supportsTouchEvents || "touch" !== t.pointerType) {
                                    var e = this.normalizeToPointerData(t),
                                        n = e[0];
                                    "mouse" === n.pointerType && (this.mouseOverRenderer = !1, this.setCursorMode(null));
                                    var i = this.getInteractionDataForPointerId(n),
                                        r = this.configureInteractionEventForDOMEvent(this.eventData, n, i);
                                    r.data.originalEvent = n, this.processInteractive(r, this.renderer._lastObjectRendered, this.processPointerOverOut, !1), this.emit("pointerout", r), "mouse" === n.pointerType || "pen" === n.pointerType ? this.emit("mouseout", r) : this.releaseInteractionDataForPointerId(i.identifier)
                                }
                            }, e.prototype.processPointerOverOut = function(t, e, n) {
                                var i = t.data,
                                    r = t.data.identifier,
                                    o = "mouse" === i.pointerType || "pen" === i.pointerType,
                                    a = e.trackedPointers[r];
                                n && !a && (a = e.trackedPointers[r] = new m.default(r)), void 0 !== a && (n && this.mouseOverRenderer ? (a.over || (a.over = !0, this.dispatchEvent(e, "pointerover", t), o && this.dispatchEvent(e, "mouseover", t)), o && null === this.cursor && (this.cursor = e.cursor)) : a.over && (a.over = !1, this.dispatchEvent(e, "pointerout", this.eventData), o && this.dispatchEvent(e, "mouseout", t), a.none && delete e.trackedPointers[r]))
                            }, e.prototype.onPointerOver = function(t) {
                                var e = this.normalizeToPointerData(t),
                                    n = e[0],
                                    i = this.getInteractionDataForPointerId(n),
                                    r = this.configureInteractionEventForDOMEvent(this.eventData, n, i);
                                r.data.originalEvent = n, "mouse" === n.pointerType && (this.mouseOverRenderer = !0), this.emit("pointerover", r), "mouse" !== n.pointerType && "pen" !== n.pointerType || this.emit("mouseover", r)
                            }, e.prototype.getInteractionDataForPointerId = function(t) {
                                var e = t.pointerId,
                                    n = void 0;
                                return e === b || "mouse" === t.pointerType ? n = this.mouse : this.activeInteractionData[e] ? n = this.activeInteractionData[e] : (n = this.interactionDataPool.pop() || new h.default, n.identifier = e, this.activeInteractionData[e] = n), n.copyEvent(t), n
                            }, e.prototype.releaseInteractionDataForPointerId = function(t) {
                                var e = this.activeInteractionData[t];
                                e && (delete this.activeInteractionData[t], e.reset(), this.interactionDataPool.push(e))
                            }, e.prototype.configureInteractionEventForDOMEvent = function(t, e, n) {
                                return t.data = n, this.mapPositionToPoint(n.global, e.clientX, e.clientY), navigator.isCocoonJS && "touch" === e.pointerType && (n.global.x = n.global.x / this.resolution, n.global.y = n.global.y / this.resolution), "touch" === e.pointerType && (e.globalX = n.global.x, e.globalY = n.global.y), n.originalEvent = e, t.reset(), t
                            }, e.prototype.normalizeToPointerData = function(t) {
                                var e = [];
                                if (this.supportsTouchEvents && t instanceof TouchEvent)
                                    for (var n = 0, i = t.changedTouches.length; n < i; n++) {
                                        var r = t.changedTouches[n];
                                        void 0 === r.button && (r.button = t.touches.length ? 1 : 0), void 0 === r.buttons && (r.buttons = t.touches.length ? 1 : 0), void 0 === r.isPrimary && (r.isPrimary = 1 === t.touches.length && "touchstart" === t.type), void 0 === r.width && (r.width = r.radiusX || 1), void 0 === r.height && (r.height = r.radiusY || 1), void 0 === r.tiltX && (r.tiltX = 0), void 0 === r.tiltY && (r.tiltY = 0), void 0 === r.pointerType && (r.pointerType = "touch"), void 0 === r.pointerId && (r.pointerId = r.identifier || 0), void 0 === r.pressure && (r.pressure = r.force || .5), r.twist = 0, r.tangentialPressure = 0, void 0 === r.layerX && (r.layerX = r.offsetX = r.clientX), void 0 === r.layerY && (r.layerY = r.offsetY = r.clientY), r.isNormalized = !0, e.push(r)
                                    } else !(t instanceof MouseEvent) || this.supportsPointerEvents && t instanceof window.PointerEvent ? e.push(t) : (void 0 === t.isPrimary && (t.isPrimary = !0), void 0 === t.width && (t.width = 1), void 0 === t.height && (t.height = 1), void 0 === t.tiltX && (t.tiltX = 0), void 0 === t.tiltY && (t.tiltY = 0), void 0 === t.pointerType && (t.pointerType = "mouse"), void 0 === t.pointerId && (t.pointerId = b), void 0 === t.pressure && (t.pressure = .5), t.twist = 0, t.tangentialPressure = 0, t.isNormalized = !0, e.push(t));
                                return e
                            }, e.prototype.destroy = function() {
                                this.removeEvents(), this.removeAllListeners(), this.renderer = null, this.mouse = null, this.eventData = null, this.interactionDOMElement = null, this.onPointerDown = null, this.processPointerDown = null, this.onPointerUp = null, this.processPointerUp = null, this.onPointerCancel = null, this.processPointerCancel = null, this.onPointerMove = null, this.processPointerMove = null, this.onPointerOut = null, this.processPointerOverOut = null, this.onPointerOver = null, this._tempPoint = null
                            }, e
                        }(_.default);
                    n.default = T, u.WebGLRenderer.registerPlugin("interaction", T), u.CanvasRenderer.registerPlugin("interaction", T)
                }, {
                    "../core": 65,
                    "./InteractionData": 155,
                    "./InteractionEvent": 156,
                    "./InteractionTrackingData": 158,
                    "./interactiveTarget": 160,
                    eventemitter3: 3
                }],
                158: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        o = function() {
                            function t(e) {
                                i(this, t), this._pointerId = e, this._flags = t.FLAGS.NONE
                            }
                            return t.prototype._doSet = function(t, e) {
                                this._flags = e ? this._flags | t : this._flags & ~t
                            }, r(t, [{
                                key: "pointerId",
                                get: function() {
                                    return this._pointerId
                                }
                            }, {
                                key: "flags",
                                get: function() {
                                    return this._flags
                                },
                                set: function(t) {
                                    this._flags = t
                                }
                            }, {
                                key: "none",
                                get: function() {
                                    return this._flags === this.constructor.FLAGS.NONE
                                }
                            }, {
                                key: "over",
                                get: function() {
                                    return 0 != (this._flags & this.constructor.FLAGS.OVER)
                                },
                                set: function(t) {
                                    this._doSet(this.constructor.FLAGS.OVER, t)
                                }
                            }, {
                                key: "rightDown",
                                get: function() {
                                    return 0 != (this._flags & this.constructor.FLAGS.RIGHT_DOWN)
                                },
                                set: function(t) {
                                    this._doSet(this.constructor.FLAGS.RIGHT_DOWN, t)
                                }
                            }, {
                                key: "leftDown",
                                get: function() {
                                    return 0 != (this._flags & this.constructor.FLAGS.LEFT_DOWN)
                                },
                                set: function(t) {
                                    this._doSet(this.constructor.FLAGS.LEFT_DOWN, t)
                                }
                            }]), t
                        }();
                    n.default = o, o.FLAGS = Object.freeze({
                        NONE: 0,
                        OVER: 1,
                        LEFT_DOWN: 2,
                        RIGHT_DOWN: 4
                    })
                }, {}],
                159: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }
                    n.__esModule = !0;
                    var r = t("./InteractionData");
                    Object.defineProperty(n, "InteractionData", {
                        enumerable: !0,
                        get: function() {
                            return i(r).default
                        }
                    });
                    var o = t("./InteractionManager");
                    Object.defineProperty(n, "InteractionManager", {
                        enumerable: !0,
                        get: function() {
                            return i(o).default
                        }
                    });
                    var a = t("./interactiveTarget");
                    Object.defineProperty(n, "interactiveTarget", {
                        enumerable: !0,
                        get: function() {
                            return i(a).default
                        }
                    });
                    var s = t("./InteractionTrackingData");
                    Object.defineProperty(n, "InteractionTrackingData", {
                        enumerable: !0,
                        get: function() {
                            return i(s).default
                        }
                    });
                    var l = t("./InteractionEvent");
                    Object.defineProperty(n, "InteractionEvent", {
                        enumerable: !0,
                        get: function() {
                            return i(l).default
                        }
                    })
                }, {
                    "./InteractionData": 155,
                    "./InteractionEvent": 156,
                    "./InteractionManager": 157,
                    "./InteractionTrackingData": 158,
                    "./interactiveTarget": 160
                }],
                160: [function(t, e, n) {
                    "use strict";
                    n.__esModule = !0, n.default = {
                        interactive: !1,
                        interactiveChildren: !0,
                        hitArea: null,
                        get buttonMode() {
                            return "pointer" === this.cursor
                        },
                        set buttonMode(t) {
                            t ? this.cursor = "pointer" : "pointer" === this.cursor && (this.cursor = null)
                        },
                        cursor: null,
                        get trackedPointers() {
                            return void 0 === this._trackedPointers && (this._trackedPointers = {}), this._trackedPointers
                        },
                        _trackedPointers: void 0
                    }
                }, {}],
                161: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        t.bitmapFont = l.BitmapText.registerFont(t.data, e)
                    }
                    n.__esModule = !0, n.parse = i, n.default = function() {
                        return function(t, e) {
                            if (!t.data || t.type !== s.Resource.TYPE.XML) return void e();
                            if (0 === t.data.getElementsByTagName("page").length || 0 === t.data.getElementsByTagName("info").length || null === t.data.getElementsByTagName("info")[0].getAttribute("face")) return void e();
                            var n = t.isDataUrl ? "" : o.dirname(t.url);
                            t.isDataUrl && ("." === n && (n = ""), this.baseUrl && n && "/" === this.baseUrl.charAt(this.baseUrl.length - 1) && (n += "/")), (n = n.replace(this.baseUrl, "")) && "/" !== n.charAt(n.length - 1) && (n += "/");
                            var r = n + t.data.getElementsByTagName("page")[0].getAttribute("file");
                            if (a.utils.TextureCache[r]) i(t, a.utils.TextureCache[r]), e();
                            else {
                                var l = {
                                    crossOrigin: t.crossOrigin,
                                    loadType: s.Resource.LOAD_TYPE.IMAGE,
                                    metadata: t.metadata.imageMetadata,
                                    parentResource: t
                                };
                                this.add(t.name + "_image", r, l, function(n) {
                                    i(t, n.texture), e()
                                })
                            }
                        }
                    };
                    var r = t("path"),
                        o = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(r),
                        a = t("../core"),
                        s = t("resource-loader"),
                        l = t("../extras")
                }, {
                    "../core": 65,
                    "../extras": 141,
                    path: 23,
                    "resource-loader": 36
                }],
                162: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }
                    n.__esModule = !0, n.shared = n.Resource = n.textureParser = n.getResourcePath = n.spritesheetParser = n.parseBitmapFontData = n.bitmapFontParser = n.Loader = void 0;
                    var r = t("./bitmapFontParser");
                    Object.defineProperty(n, "bitmapFontParser", {
                        enumerable: !0,
                        get: function() {
                            return i(r).default
                        }
                    }), Object.defineProperty(n, "parseBitmapFontData", {
                        enumerable: !0,
                        get: function() {
                            return r.parse
                        }
                    });
                    var o = t("./spritesheetParser");
                    Object.defineProperty(n, "spritesheetParser", {
                        enumerable: !0,
                        get: function() {
                            return i(o).default
                        }
                    }), Object.defineProperty(n, "getResourcePath", {
                        enumerable: !0,
                        get: function() {
                            return o.getResourcePath
                        }
                    });
                    var a = t("./textureParser");
                    Object.defineProperty(n, "textureParser", {
                        enumerable: !0,
                        get: function() {
                            return i(a).default
                        }
                    });
                    var s = t("resource-loader");
                    Object.defineProperty(n, "Resource", {
                        enumerable: !0,
                        get: function() {
                            return s.Resource
                        }
                    });
                    var l = t("../core/Application"),
                        u = i(l),
                        c = t("./loader"),
                        h = i(c);
                    n.Loader = h.default;
                    var p = new h.default;
                    p.destroy = function() {}, n.shared = p;
                    var f = u.default.prototype;
                    f._loader = null, Object.defineProperty(f, "loader", {
                        get: function() {
                            if (!this._loader) {
                                var t = this._options.sharedLoader;
                                this._loader = t ? p : new h.default
                            }
                            return this._loader
                        }
                    }), f._parentDestroy = f.destroy, f.destroy = function(t) {
                        this._loader && (this._loader.destroy(), this._loader = null), this._parentDestroy(t)
                    }
                }, {
                    "../core/Application": 43,
                    "./bitmapFontParser": 161,
                    "./loader": 163,
                    "./spritesheetParser": 164,
                    "./textureParser": 165,
                    "resource-loader": 36
                }],
                163: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = t("resource-loader"),
                        l = i(s),
                        u = t("resource-loader/lib/middlewares/parsing/blob"),
                        c = t("eventemitter3"),
                        h = i(c),
                        p = t("./textureParser"),
                        f = i(p),
                        d = t("./spritesheetParser"),
                        m = i(d),
                        g = t("./bitmapFontParser"),
                        _ = i(g),
                        y = function(t) {
                            function e(n, i) {
                                r(this, e);
                                var a = o(this, t.call(this, n, i));
                                h.default.call(a);
                                for (var s = 0; s < e._pixiMiddleware.length; ++s) a.use(e._pixiMiddleware[s]());
                                return a.onStart.add(function(t) {
                                    return a.emit("start", t)
                                }), a.onProgress.add(function(t, e) {
                                    return a.emit("progress", t, e)
                                }), a.onError.add(function(t, e, n) {
                                    return a.emit("error", t, e, n)
                                }), a.onLoad.add(function(t, e) {
                                    return a.emit("load", t, e)
                                }), a.onComplete.add(function(t, e) {
                                    return a.emit("complete", t, e)
                                }), a
                            }
                            return a(e, t), e.addPixiMiddleware = function(t) {
                                e._pixiMiddleware.push(t)
                            }, e.prototype.destroy = function() {
                                this.removeAllListeners(), this.reset()
                            }, e
                        }(l.default);
                    n.default = y;
                    for (var v in h.default.prototype) y.prototype[v] = h.default.prototype[v];
                    y._pixiMiddleware = [u.blobMiddlewareFactory, f.default, m.default, _.default];
                    var b = l.default.Resource;
                    b.setExtensionXhrType("fnt", b.XHR_RESPONSE_TYPE.DOCUMENT)
                }, {
                    "./bitmapFontParser": 161,
                    "./spritesheetParser": 164,
                    "./textureParser": 165,
                    eventemitter3: 3,
                    "resource-loader": 36,
                    "resource-loader/lib/middlewares/parsing/blob": 37
                }],
                164: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        return t.isDataUrl ? t.data.meta.image : a.default.resolve(t.url.replace(e, ""), t.data.meta.image)
                    }
                    n.__esModule = !0, n.default = function() {
                        return function(t, e) {
                            var n = t.name + "_image";
                            if (!t.data || t.type !== r.Resource.TYPE.JSON || !t.data.frames || this.resources[n]) return void e();
                            var o = {
                                    crossOrigin: t.crossOrigin,
                                    metadata: t.metadata.imageMetadata,
                                    parentResource: t
                                },
                                a = i(t, this.baseUrl);
                            this.add(n, a, o, function(n) {
                                if (n.error) return void e(n.error);
                                var i = new s.Spritesheet(n.texture.baseTexture, t.data, t.url);
                                i.parse(function() {
                                    t.spritesheet = i, t.textures = i.textures, e()
                                })
                            })
                        }
                    }, n.getResourcePath = i;
                    var r = t("resource-loader"),
                        o = t("url"),
                        a = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(o),
                        s = t("../core")
                }, {
                    "../core": 65,
                    "resource-loader": 36,
                    url: 29
                }],
                165: [function(t, e, n) {
                    "use strict";
                    n.__esModule = !0, n.default = function() {
                        return function(t, e) {
                            t.data && t.type === i.Resource.TYPE.IMAGE && (t.texture = o.default.fromLoader(t.data, t.url, t.name)), e()
                        }
                    };
                    var i = t("resource-loader"),
                        r = t("../core/textures/Texture"),
                        o = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(r)
                }, {
                    "../core/textures/Texture": 115,
                    "resource-loader": 36
                }],
                166: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        s = t("../core"),
                        l = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(s),
                        u = t("../core/textures/Texture"),
                        c = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(u),
                        h = new l.Point,
                        p = new l.Polygon,
                        f = function(t) {
                            function e(n, o, a, s, u) {
                                i(this, e);
                                var h = r(this, t.call(this));
                                return h._texture = n || c.default.EMPTY, h.uvs = a || new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]), h.vertices = o || new Float32Array([0, 0, 100, 0, 100, 100, 0, 100]), h.indices = s || new Uint16Array([0, 1, 3, 2]), h.dirty = 0, h.indexDirty = 0, h.blendMode = l.BLEND_MODES.NORMAL, h.canvasPadding = l.settings.MESH_CANVAS_PADDING, h.drawMode = u || e.DRAW_MODES.TRIANGLE_MESH, h.shader = null, h.tintRgb = new Float32Array([1, 1, 1]), h._glDatas = {}, h._uvTransform = new l.TextureMatrix(h._texture), h.uploadUvTransform = !1, h.pluginName = "mesh", h
                            }
                            return o(e, t), e.prototype._renderWebGL = function(t) {
                                this.refresh(), t.setObjectRenderer(t.plugins[this.pluginName]), t.plugins[this.pluginName].render(this)
                            }, e.prototype._renderCanvas = function(t) {
                                this.refresh(), t.plugins[this.pluginName].render(this)
                            }, e.prototype._onTextureUpdate = function() {
                                this._uvTransform.texture = this._texture, this.refresh()
                            }, e.prototype.multiplyUvs = function() {
                                this.uploadUvTransform || this._uvTransform.multiplyUvs(this.uvs)
                            }, e.prototype.refresh = function(t) {
                                this._uvTransform.update(t) && this._refresh()
                            }, e.prototype._refresh = function() {}, e.prototype._calculateBounds = function() {
                                this._bounds.addVertices(this.transform, this.vertices, 0, this.vertices.length)
                            }, e.prototype.containsPoint = function(t) {
                                if (!this.getBounds().contains(t.x, t.y)) return !1;
                                this.worldTransform.applyInverse(t, h);
                                for (var n = this.vertices, i = p.points, r = this.indices, o = this.indices.length, a = this.drawMode === e.DRAW_MODES.TRIANGLES ? 3 : 1, s = 0; s + 2 < o; s += a) {
                                    var l = 2 * r[s],
                                        u = 2 * r[s + 1],
                                        c = 2 * r[s + 2];
                                    if (i[0] = n[l], i[1] = n[l + 1], i[2] = n[u], i[3] = n[u + 1], i[4] = n[c], i[5] = n[c + 1], p.contains(h.x, h.y)) return !0
                                }
                                return !1
                            }, a(e, [{
                                key: "texture",
                                get: function() {
                                    return this._texture
                                },
                                set: function(t) {
                                    this._texture !== t && (this._texture = t, t && (t.baseTexture.hasLoaded ? this._onTextureUpdate() : t.once("update", this._onTextureUpdate, this)))
                                }
                            }, {
                                key: "tint",
                                get: function() {
                                    return l.utils.rgb2hex(this.tintRgb)
                                },
                                set: function(t) {
                                    this.tintRgb = l.utils.hex2rgb(t, this.tintRgb)
                                }
                            }]), e
                        }(l.Container);
                    n.default = f, f.DRAW_MODES = {
                        TRIANGLE_MESH: 0,
                        TRIANGLES: 1
                    }
                }, {
                    "../core": 65,
                    "../core/textures/Texture": 115
                }],
                167: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        s = t("./Plane"),
                        l = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(s),
                        u = 10,
                        c = function(t) {
                            function e(n, o, a, s, l) {
                                i(this, e);
                                var c = r(this, t.call(this, n, 4, 4));
                                return c._origWidth = n.orig.width, c._origHeight = n.orig.height, c._width = c._origWidth, c._height = c._origHeight, c.leftWidth = void 0 !== o ? o : u, c.rightWidth = void 0 !== s ? s : u, c.topHeight = void 0 !== a ? a : u, c.bottomHeight = void 0 !== l ? l : u, c.refresh(!0), c
                            }
                            return o(e, t), e.prototype.updateHorizontalVertices = function() {
                                var t = this.vertices;
                                t[9] = t[11] = t[13] = t[15] = this._topHeight, t[17] = t[19] = t[21] = t[23] = this._height - this._bottomHeight, t[25] = t[27] = t[29] = t[31] = this._height
                            }, e.prototype.updateVerticalVertices = function() {
                                var t = this.vertices;
                                t[2] = t[10] = t[18] = t[26] = this._leftWidth, t[4] = t[12] = t[20] = t[28] = this._width - this._rightWidth, t[6] = t[14] = t[22] = t[30] = this._width
                            }, e.prototype._renderCanvas = function(t) {
                                var e = t.context;
                                e.globalAlpha = this.worldAlpha, t.setBlendMode(this.blendMode);
                                var n = this.worldTransform,
                                    i = t.resolution;
                                t.roundPixels ? e.setTransform(n.a * i, n.b * i, n.c * i, n.d * i, n.tx * i | 0, n.ty * i | 0) : e.setTransform(n.a * i, n.b * i, n.c * i, n.d * i, n.tx * i, n.ty * i);
                                var r = this._texture.baseTexture,
                                    o = r.source,
                                    a = r.width * r.resolution,
                                    s = r.height * r.resolution;
                                this.drawSegment(e, o, a, s, 0, 1, 10, 11), this.drawSegment(e, o, a, s, 2, 3, 12, 13), this.drawSegment(e, o, a, s, 4, 5, 14, 15), this.drawSegment(e, o, a, s, 8, 9, 18, 19), this.drawSegment(e, o, a, s, 10, 11, 20, 21), this.drawSegment(e, o, a, s, 12, 13, 22, 23), this.drawSegment(e, o, a, s, 16, 17, 26, 27), this.drawSegment(e, o, a, s, 18, 19, 28, 29), this.drawSegment(e, o, a, s, 20, 21, 30, 31)
                            }, e.prototype.drawSegment = function(t, e, n, i, r, o, a, s) {
                                var l = this.uvs,
                                    u = this.vertices,
                                    c = (l[a] - l[r]) * n,
                                    h = (l[s] - l[o]) * i,
                                    p = u[a] - u[r],
                                    f = u[s] - u[o];
                                c < 1 && (c = 1), h < 1 && (h = 1), p < 1 && (p = 1), f < 1 && (f = 1), t.drawImage(e, l[r] * n, l[o] * i, c, h, u[r], u[o], p, f)
                            }, e.prototype._refresh = function() {
                                t.prototype._refresh.call(this);
                                var e = this.uvs,
                                    n = this._texture;
                                this._origWidth = n.orig.width, this._origHeight = n.orig.height;
                                var i = 1 / this._origWidth,
                                    r = 1 / this._origHeight;
                                e[0] = e[8] = e[16] = e[24] = 0, e[1] = e[3] = e[5] = e[7] = 0, e[6] = e[14] = e[22] = e[30] = 1, e[25] = e[27] = e[29] = e[31] = 1, e[2] = e[10] = e[18] = e[26] = i * this._leftWidth, e[4] = e[12] = e[20] = e[28] = 1 - i * this._rightWidth, e[9] = e[11] = e[13] = e[15] = r * this._topHeight, e[17] = e[19] = e[21] = e[23] = 1 - r * this._bottomHeight, this.updateHorizontalVertices(), this.updateVerticalVertices(), this.dirty++, this.multiplyUvs()
                            }, a(e, [{
                                key: "width",
                                get: function() {
                                    return this._width
                                },
                                set: function(t) {
                                    this._width = t, this._refresh()
                                }
                            }, {
                                key: "height",
                                get: function() {
                                    return this._height
                                },
                                set: function(t) {
                                    this._height = t, this._refresh()
                                }
                            }, {
                                key: "leftWidth",
                                get: function() {
                                    return this._leftWidth
                                },
                                set: function(t) {
                                    this._leftWidth = t, this._refresh()
                                }
                            }, {
                                key: "rightWidth",
                                get: function() {
                                    return this._rightWidth
                                },
                                set: function(t) {
                                    this._rightWidth = t, this._refresh()
                                }
                            }, {
                                key: "topHeight",
                                get: function() {
                                    return this._topHeight
                                },
                                set: function(t) {
                                    this._topHeight = t, this._refresh()
                                }
                            }, {
                                key: "bottomHeight",
                                get: function() {
                                    return this._bottomHeight
                                },
                                set: function(t) {
                                    this._bottomHeight = t, this._refresh()
                                }
                            }]), e
                        }(l.default);
                    n.default = c
                }, {
                    "./Plane": 168
                }],
                168: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = t("./Mesh"),
                        s = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(a),
                        l = function(t) {
                            function e(n, o, a) {
                                i(this, e);
                                var l = r(this, t.call(this, n));
                                return l._ready = !0, l.verticesX = o || 10, l.verticesY = a || 10, l.drawMode = s.default.DRAW_MODES.TRIANGLES, l.refresh(), l
                            }
                            return o(e, t), e.prototype._refresh = function() {
                                for (var t = this._texture, e = this.verticesX * this.verticesY, n = [], i = [], r = [], o = [], a = this.verticesX - 1, s = this.verticesY - 1, l = t.width / a, u = t.height / s, c = 0; c < e; c++) {
                                    var h = c % this.verticesX,
                                        p = c / this.verticesX | 0;
                                    n.push(h * l, p * u), r.push(h / a, p / s)
                                }
                                for (var f = a * s, d = 0; d < f; d++) {
                                    var m = d % a,
                                        g = d / a | 0,
                                        _ = g * this.verticesX + m,
                                        y = g * this.verticesX + m + 1,
                                        v = (g + 1) * this.verticesX + m,
                                        b = (g + 1) * this.verticesX + m + 1;
                                    o.push(_, y, v), o.push(y, b, v)
                                }
                                this.vertices = new Float32Array(n), this.uvs = new Float32Array(r), this.colors = new Float32Array(i), this.indices = new Uint16Array(o), this.dirty++, this.indexDirty++, this.multiplyUvs()
                            }, e.prototype._onTextureUpdate = function() {
                                s.default.prototype._onTextureUpdate.call(this), this._ready && this.refresh()
                            }, e
                        }(s.default);
                    n.default = l
                }, {
                    "./Mesh": 166
                }],
                169: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = t("./Mesh"),
                        s = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(a),
                        l = function(t) {
                            function e(n, o) {
                                i(this, e);
                                var a = r(this, t.call(this, n));
                                return a.points = o, a.vertices = new Float32Array(4 * o.length), a.uvs = new Float32Array(4 * o.length), a.colors = new Float32Array(2 * o.length), a.indices = new Uint16Array(2 * o.length), a.autoUpdate = !0, a.refresh(), a
                            }
                            return o(e, t), e.prototype._refresh = function() {
                                var t = this.points;
                                if (!(t.length < 1) && this._texture._uvs) {
                                    this.vertices.length / 4 !== t.length && (this.vertices = new Float32Array(4 * t.length), this.uvs = new Float32Array(4 * t.length), this.colors = new Float32Array(2 * t.length), this.indices = new Uint16Array(2 * t.length));
                                    var e = this.uvs,
                                        n = this.indices,
                                        i = this.colors;
                                    e[0] = 0, e[1] = 0, e[2] = 0, e[3] = 1, i[0] = 1, i[1] = 1, n[0] = 0, n[1] = 1;
                                    for (var r = t.length, o = 1; o < r; o++) {
                                        var a = 4 * o,
                                            s = o / (r - 1);
                                        e[a] = s, e[a + 1] = 0, e[a + 2] = s, e[a + 3] = 1, a = 2 * o, i[a] = 1, i[a + 1] = 1, a = 2 * o, n[a] = a, n[a + 1] = a + 1
                                    }
                                    this.dirty++, this.indexDirty++, this.multiplyUvs(), this.refreshVertices()
                                }
                            }, e.prototype.refreshVertices = function() {
                                var t = this.points;
                                if (!(t.length < 1))
                                    for (var e = t[0], n = void 0, i = 0, r = 0, o = this.vertices, a = t.length, s = 0; s < a; s++) {
                                        var l = t[s],
                                            u = 4 * s;
                                        n = s < t.length - 1 ? t[s + 1] : l, r = -(n.x - e.x), i = n.y - e.y;
                                        var c = 10 * (1 - s / (a - 1));
                                        c > 1 && (c = 1);
                                        var h = Math.sqrt(i * i + r * r),
                                            p = this._texture.height / 2;
                                        i /= h, r /= h, i *= p, r *= p, o[u] = l.x + i, o[u + 1] = l.y + r, o[u + 2] = l.x - i, o[u + 3] = l.y - r, e = l
                                    }
                            }, e.prototype.updateTransform = function() {
                                this.autoUpdate && this.refreshVertices(), this.containerUpdateTransform()
                            }, e
                        }(s.default);
                    n.default = l
                }, {
                    "./Mesh": 166
                }],
                170: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = t("../../core"),
                        o = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(r),
                        a = t("../Mesh"),
                        s = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(a),
                        l = function() {
                            function t(e) {
                                i(this, t), this.renderer = e
                            }
                            return t.prototype.render = function(t) {
                                var e = this.renderer,
                                    n = e.context,
                                    i = t.worldTransform,
                                    r = e.resolution;
                                e.roundPixels ? n.setTransform(i.a * r, i.b * r, i.c * r, i.d * r, i.tx * r | 0, i.ty * r | 0) : n.setTransform(i.a * r, i.b * r, i.c * r, i.d * r, i.tx * r, i.ty * r), e.context.globalAlpha = t.worldAlpha, e.setBlendMode(t.blendMode), t.drawMode === s.default.DRAW_MODES.TRIANGLE_MESH ? this._renderTriangleMesh(t) : this._renderTriangles(t)
                            }, t.prototype._renderTriangleMesh = function(t) {
                                for (var e = t.vertices.length / 2, n = 0; n < e - 2; n++) {
                                    var i = 2 * n;
                                    this._renderDrawTriangle(t, i, i + 2, i + 4)
                                }
                            }, t.prototype._renderTriangles = function(t) {
                                for (var e = t.indices, n = e.length, i = 0; i < n; i += 3) {
                                    var r = 2 * e[i],
                                        o = 2 * e[i + 1],
                                        a = 2 * e[i + 2];
                                    this._renderDrawTriangle(t, r, o, a)
                                }
                            }, t.prototype._renderDrawTriangle = function(t, e, n, i) {
                                var r = this.renderer.context,
                                    o = t.uvs,
                                    a = t.vertices,
                                    s = t._texture;
                                if (s.valid) {
                                    var l = s.baseTexture,
                                        u = l.source,
                                        c = l.width,
                                        h = l.height,
                                        p = void 0,
                                        f = void 0,
                                        d = void 0,
                                        m = void 0,
                                        g = void 0,
                                        _ = void 0;
                                    if (t.uploadUvTransform) {
                                        var y = t._uvTransform.mapCoord;
                                        p = (o[e] * y.a + o[e + 1] * y.c + y.tx) * l.width, f = (o[n] * y.a + o[n + 1] * y.c + y.tx) * l.width, d = (o[i] * y.a + o[i + 1] * y.c + y.tx) * l.width, m = (o[e] * y.b + o[e + 1] * y.d + y.ty) * l.height, g = (o[n] * y.b + o[n + 1] * y.d + y.ty) * l.height, _ = (o[i] * y.b + o[i + 1] * y.d + y.ty) * l.height
                                    } else p = o[e] * l.width, f = o[n] * l.width, d = o[i] * l.width, m = o[e + 1] * l.height, g = o[n + 1] * l.height, _ = o[i + 1] * l.height;
                                    var v = a[e],
                                        b = a[n],
                                        x = a[i],
                                        T = a[e + 1],
                                        w = a[n + 1],
                                        S = a[i + 1],
                                        P = t.canvasPadding / this.renderer.resolution;
                                    if (P > 0) {
                                        var M = P / Math.abs(t.worldTransform.a),
                                            C = P / Math.abs(t.worldTransform.d),
                                            E = (v + b + x) / 3,
                                            O = (T + w + S) / 3,
                                            I = v - E,
                                            R = T - O,
                                            A = Math.sqrt(I * I + R * R);
                                        v = E + I / A * (A + M), T = O + R / A * (A + C), I = b - E, R = w - O, A = Math.sqrt(I * I + R * R), b = E + I / A * (A + M), w = O + R / A * (A + C), I = x - E, R = S - O, A = Math.sqrt(I * I + R * R), x = E + I / A * (A + M), S = O + R / A * (A + C)
                                    }
                                    r.save(), r.beginPath(), r.moveTo(v, T), r.lineTo(b, w), r.lineTo(x, S), r.closePath(), r.clip();
                                    var k = p * g + m * d + f * _ - g * d - m * f - p * _,
                                        L = v * g + m * x + b * _ - g * x - m * b - v * _,
                                        D = p * b + v * d + f * x - b * d - v * f - p * x,
                                        B = p * g * x + m * b * d + v * f * _ - v * g * d - m * f * x - p * b * _,
                                        N = T * g + m * S + w * _ - g * S - m * w - T * _,
                                        F = p * w + T * d + f * S - w * d - T * f - p * S,
                                        G = p * g * S + m * w * d + T * f * _ - T * g * d - m * f * S - p * w * _;
                                    r.transform(L / k, N / k, D / k, F / k, B / k, G / k), r.drawImage(u, 0, 0, c * l.resolution, h * l.resolution, 0, 0, c, h), r.restore(), this.renderer.invalidateBlendMode()
                                }
                            }, t.prototype.renderMeshFlat = function(t) {
                                var e = this.renderer.context,
                                    n = t.vertices,
                                    i = n.length / 2;
                                e.beginPath();
                                for (var r = 1; r < i - 2; ++r) {
                                    var o = 2 * r,
                                        a = n[o],
                                        s = n[o + 1],
                                        l = n[o + 2],
                                        u = n[o + 3],
                                        c = n[o + 4],
                                        h = n[o + 5];
                                    e.moveTo(a, s), e.lineTo(l, u), e.lineTo(c, h)
                                }
                                e.fillStyle = "#FF0000", e.fill(), e.closePath()
                            }, t.prototype.destroy = function() {
                                this.renderer = null
                            }, t
                        }();
                    n.default = l, o.CanvasRenderer.registerPlugin("mesh", l)
                }, {
                    "../../core": 65,
                    "../Mesh": 166
                }],
                171: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }
                    n.__esModule = !0;
                    var r = t("./Mesh");
                    Object.defineProperty(n, "Mesh", {
                        enumerable: !0,
                        get: function() {
                            return i(r).default
                        }
                    });
                    var o = t("./webgl/MeshRenderer");
                    Object.defineProperty(n, "MeshRenderer", {
                        enumerable: !0,
                        get: function() {
                            return i(o).default
                        }
                    });
                    var a = t("./canvas/CanvasMeshRenderer");
                    Object.defineProperty(n, "CanvasMeshRenderer", {
                        enumerable: !0,
                        get: function() {
                            return i(a).default
                        }
                    });
                    var s = t("./Plane");
                    Object.defineProperty(n, "Plane", {
                        enumerable: !0,
                        get: function() {
                            return i(s).default
                        }
                    });
                    var l = t("./NineSlicePlane");
                    Object.defineProperty(n, "NineSlicePlane", {
                        enumerable: !0,
                        get: function() {
                            return i(l).default
                        }
                    });
                    var u = t("./Rope");
                    Object.defineProperty(n, "Rope", {
                        enumerable: !0,
                        get: function() {
                            return i(u).default
                        }
                    })
                }, {
                    "./Mesh": 166,
                    "./NineSlicePlane": 167,
                    "./Plane": 168,
                    "./Rope": 169,
                    "./canvas/CanvasMeshRenderer": 170,
                    "./webgl/MeshRenderer": 172
                }],
                172: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = t("../../core"),
                        l = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(s),
                        u = t("pixi-gl-core"),
                        c = i(u),
                        h = t("../Mesh"),
                        p = i(h),
                        f = (t("path"), l.Matrix.IDENTITY),
                        d = function(t) {
                            function e(n) {
                                r(this, e);
                                var i = o(this, t.call(this, n));
                                return i.shader = null, i
                            }
                            return a(e, t), e.prototype.onContextChange = function() {
                                var t = this.renderer.gl;
                                this.shader = new l.Shader(t, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n    vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n", "varying vec2 vTextureCoord;\nuniform vec4 uColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n    gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\n}\n")
                            }, e.prototype.render = function(t) {
                                var e = this.renderer,
                                    n = e.gl,
                                    i = t._texture;
                                if (i.valid) {
                                    var r = t._glDatas[e.CONTEXT_UID];
                                    r || (e.bindVao(null), r = {
                                        shader: this.shader,
                                        vertexBuffer: c.default.GLBuffer.createVertexBuffer(n, t.vertices, n.STREAM_DRAW),
                                        uvBuffer: c.default.GLBuffer.createVertexBuffer(n, t.uvs, n.STREAM_DRAW),
                                        indexBuffer: c.default.GLBuffer.createIndexBuffer(n, t.indices, n.STATIC_DRAW),
                                        vao: null,
                                        dirty: t.dirty,
                                        indexDirty: t.indexDirty
                                    }, r.vao = new c.default.VertexArrayObject(n).addIndex(r.indexBuffer).addAttribute(r.vertexBuffer, r.shader.attributes.aVertexPosition, n.FLOAT, !1, 8, 0).addAttribute(r.uvBuffer, r.shader.attributes.aTextureCoord, n.FLOAT, !1, 8, 0), t._glDatas[e.CONTEXT_UID] = r), e.bindVao(r.vao), t.dirty !== r.dirty && (r.dirty = t.dirty, r.uvBuffer.upload(t.uvs)), t.indexDirty !== r.indexDirty && (r.indexDirty = t.indexDirty, r.indexBuffer.upload(t.indices)), r.vertexBuffer.upload(t.vertices), e.bindShader(r.shader), r.shader.uniforms.uSampler = e.bindTexture(i), e.state.setBlendMode(l.utils.correctBlendMode(t.blendMode, i.baseTexture.premultipliedAlpha)), r.shader.uniforms.uTransform && (t.uploadUvTransform ? r.shader.uniforms.uTransform = t._uvTransform.mapCoord.toArray(!0) : r.shader.uniforms.uTransform = f.toArray(!0)), r.shader.uniforms.translationMatrix = t.worldTransform.toArray(!0), r.shader.uniforms.uColor = l.utils.premultiplyRgba(t.tintRgb, t.worldAlpha, r.shader.uniforms.uColor, i.baseTexture.premultipliedAlpha);
                                    var o = t.drawMode === p.default.DRAW_MODES.TRIANGLE_MESH ? n.TRIANGLE_STRIP : n.TRIANGLES;
                                    r.vao.draw(o, t.indices.length, 0)
                                }
                            }, e
                        }(l.ObjectRenderer);
                    n.default = d, l.WebGLRenderer.registerPlugin("mesh", d)
                }, {
                    "../../core": 65,
                    "../Mesh": 166,
                    path: 23,
                    "pixi-gl-core": 12
                }],
                173: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = function() {
                            function t(t, e) {
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                }
                            }
                            return function(e, n, i) {
                                return n && t(e.prototype, n), i && t(e, i), e
                            }
                        }(),
                        s = t("../core"),
                        l = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(s),
                        u = t("../core/utils"),
                        c = function(t) {
                            function e() {
                                var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1500,
                                    o = arguments[1],
                                    a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 16384,
                                    s = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
                                i(this, e);
                                var u = r(this, t.call(this));
                                return a > 16384 && (a = 16384), a > n && (a = n), u._properties = [!1, !0, !1, !1, !1], u._maxSize = n, u._batchSize = a, u._glBuffers = {}, u._bufferUpdateIDs = [], u._updateID = 0, u.interactiveChildren = !1, u.blendMode = l.BLEND_MODES.NORMAL, u.autoResize = s, u.roundPixels = !0, u.baseTexture = null, u.setProperties(o), u._tint = 0, u.tintRgb = new Float32Array(4), u.tint = 16777215, u
                            }
                            return o(e, t), e.prototype.setProperties = function(t) {
                                t && (this._properties[0] = "vertices" in t || "scale" in t ? !!t.vertices || !!t.scale : this._properties[0], this._properties[1] = "position" in t ? !!t.position : this._properties[1], this._properties[2] = "rotation" in t ? !!t.rotation : this._properties[2], this._properties[3] = "uvs" in t ? !!t.uvs : this._properties[3], this._properties[4] = "tint" in t || "alpha" in t ? !!t.tint || !!t.alpha : this._properties[4])
                            }, e.prototype.updateTransform = function() {
                                this.displayObjectUpdateTransform()
                            }, e.prototype.renderWebGL = function(t) {
                                var e = this;
                                this.visible && !(this.worldAlpha <= 0) && this.children.length && this.renderable && (this.baseTexture || (this.baseTexture = this.children[0]._texture.baseTexture, this.baseTexture.hasLoaded || this.baseTexture.once("update", function() {
                                    return e.onChildrenChange(0)
                                })), t.setObjectRenderer(t.plugins.particle), t.plugins.particle.render(this))
                            }, e.prototype.onChildrenChange = function(t) {
                                for (var e = Math.floor(t / this._batchSize); this._bufferUpdateIDs.length < e;) this._bufferUpdateIDs.push(0);
                                this._bufferUpdateIDs[e] = ++this._updateID
                            }, e.prototype.renderCanvas = function(t) {
                                if (this.visible && !(this.worldAlpha <= 0) && this.children.length && this.renderable) {
                                    var e = t.context,
                                        n = this.worldTransform,
                                        i = !0,
                                        r = 0,
                                        o = 0,
                                        a = 0,
                                        s = 0;
                                    t.setBlendMode(this.blendMode), e.globalAlpha = this.worldAlpha, this.displayObjectUpdateTransform();
                                    for (var l = 0; l < this.children.length; ++l) {
                                        var u = this.children[l];
                                        if (u.visible) {
                                            var c = u._texture.frame;
                                            if (e.globalAlpha = this.worldAlpha * u.alpha, u.rotation % (2 * Math.PI) == 0) i && (e.setTransform(n.a, n.b, n.c, n.d, n.tx * t.resolution, n.ty * t.resolution), i = !1), r = u.anchor.x * (-c.width * u.scale.x) + u.position.x + .5, o = u.anchor.y * (-c.height * u.scale.y) + u.position.y + .5, a = c.width * u.scale.x, s = c.height * u.scale.y;
                                            else {
                                                i || (i = !0), u.displayObjectUpdateTransform();
                                                var h = u.worldTransform;
                                                t.roundPixels ? e.setTransform(h.a, h.b, h.c, h.d, h.tx * t.resolution | 0, h.ty * t.resolution | 0) : e.setTransform(h.a, h.b, h.c, h.d, h.tx * t.resolution, h.ty * t.resolution), r = u.anchor.x * -c.width + .5, o = u.anchor.y * -c.height + .5, a = c.width, s = c.height
                                            }
                                            var p = u._texture.baseTexture.resolution;
                                            e.drawImage(u._texture.baseTexture.source, c.x * p, c.y * p, c.width * p, c.height * p, r * t.resolution, o * t.resolution, a * t.resolution, s * t.resolution)
                                        }
                                    }
                                }
                            }, e.prototype.destroy = function(e) {
                                if (t.prototype.destroy.call(this, e), this._buffers)
                                    for (var n = 0; n < this._buffers.length; ++n) this._buffers[n].destroy();
                                this._properties = null, this._buffers = null, this._bufferUpdateIDs = null
                            }, a(e, [{
                                key: "tint",
                                get: function() {
                                    return this._tint
                                },
                                set: function(t) {
                                    this._tint = t, (0, u.hex2rgb)(t, this.tintRgb)
                                }
                            }]), e
                        }(l.Container);
                    n.default = c
                }, {
                    "../core": 65,
                    "../core/utils": 125
                }],
                174: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }
                    n.__esModule = !0;
                    var r = t("./ParticleContainer");
                    Object.defineProperty(n, "ParticleContainer", {
                        enumerable: !0,
                        get: function() {
                            return i(r).default
                        }
                    });
                    var o = t("./webgl/ParticleRenderer");
                    Object.defineProperty(n, "ParticleRenderer", {
                        enumerable: !0,
                        get: function() {
                            return i(o).default
                        }
                    })
                }, {
                    "./ParticleContainer": 173,
                    "./webgl/ParticleRenderer": 176
                }],
                175: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var o = t("pixi-gl-core"),
                        a = i(o),
                        s = t("../../core/utils/createIndicesForQuads"),
                        l = i(s),
                        u = function() {
                            function t(e, n, i, o) {
                                r(this, t), this.gl = e, this.size = o, this.dynamicProperties = [], this.staticProperties = [];
                                for (var a = 0; a < n.length; ++a) {
                                    var s = n[a];
                                    s = {
                                        attribute: s.attribute,
                                        size: s.size,
                                        uploadFunction: s.uploadFunction,
                                        unsignedByte: s.unsignedByte,
                                        offset: s.offset
                                    }, i[a] ? this.dynamicProperties.push(s) : this.staticProperties.push(s)
                                }
                                this.staticStride = 0, this.staticBuffer = null, this.staticData = null, this.staticDataUint32 = null, this.dynamicStride = 0, this.dynamicBuffer = null, this.dynamicData = null, this.dynamicDataUint32 = null, this._updateID = 0, this.initBuffers()
                            }
                            return t.prototype.initBuffers = function() {
                                var t = this.gl,
                                    e = 0;
                                this.indices = (0, l.default)(this.size), this.indexBuffer = a.default.GLBuffer.createIndexBuffer(t, this.indices, t.STATIC_DRAW), this.dynamicStride = 0;
                                for (var n = 0; n < this.dynamicProperties.length; ++n) {
                                    var i = this.dynamicProperties[n];
                                    i.offset = e, e += i.size, this.dynamicStride += i.size
                                }
                                var r = new ArrayBuffer(this.size * this.dynamicStride * 4 * 4);
                                this.dynamicData = new Float32Array(r), this.dynamicDataUint32 = new Uint32Array(r), this.dynamicBuffer = a.default.GLBuffer.createVertexBuffer(t, r, t.STREAM_DRAW);
                                var o = 0;
                                this.staticStride = 0;
                                for (var s = 0; s < this.staticProperties.length; ++s) {
                                    var u = this.staticProperties[s];
                                    u.offset = o, o += u.size, this.staticStride += u.size
                                }
                                var c = new ArrayBuffer(this.size * this.staticStride * 4 * 4);
                                this.staticData = new Float32Array(c), this.staticDataUint32 = new Uint32Array(c), this.staticBuffer = a.default.GLBuffer.createVertexBuffer(t, c, t.STATIC_DRAW), this.vao = new a.default.VertexArrayObject(t).addIndex(this.indexBuffer);
                                for (var h = 0; h < this.dynamicProperties.length; ++h) {
                                    var p = this.dynamicProperties[h];
                                    p.unsignedByte ? this.vao.addAttribute(this.dynamicBuffer, p.attribute, t.UNSIGNED_BYTE, !0, 4 * this.dynamicStride, 4 * p.offset) : this.vao.addAttribute(this.dynamicBuffer, p.attribute, t.FLOAT, !1, 4 * this.dynamicStride, 4 * p.offset)
                                }
                                for (var f = 0; f < this.staticProperties.length; ++f) {
                                    var d = this.staticProperties[f];
                                    d.unsignedByte ? this.vao.addAttribute(this.staticBuffer, d.attribute, t.UNSIGNED_BYTE, !0, 4 * this.staticStride, 4 * d.offset) : this.vao.addAttribute(this.staticBuffer, d.attribute, t.FLOAT, !1, 4 * this.staticStride, 4 * d.offset)
                                }
                            }, t.prototype.uploadDynamic = function(t, e, n) {
                                for (var i = 0; i < this.dynamicProperties.length; i++) {
                                    var r = this.dynamicProperties[i];
                                    r.uploadFunction(t, e, n, r.unsignedByte ? this.dynamicDataUint32 : this.dynamicData, this.dynamicStride, r.offset)
                                }
                                this.dynamicBuffer.upload()
                            }, t.prototype.uploadStatic = function(t, e, n) {
                                for (var i = 0; i < this.staticProperties.length; i++) {
                                    var r = this.staticProperties[i];
                                    r.uploadFunction(t, e, n, r.unsignedByte ? this.staticDataUint32 : this.staticData, this.staticStride, r.offset)
                                }
                                this.staticBuffer.upload()
                            }, t.prototype.destroy = function() {
                                this.dynamicProperties = null, this.dynamicBuffer.destroy(), this.dynamicBuffer = null, this.dynamicData = null, this.dynamicDataUint32 = null, this.staticProperties = null, this.staticBuffer.destroy(), this.staticBuffer = null, this.staticData = null, this.staticDataUint32 = null
                            }, t
                        }();
                    n.default = u
                }, {
                    "../../core/utils/createIndicesForQuads": 123,
                    "pixi-gl-core": 12
                }],
                176: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }

                    function r(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function o(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function a(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var s = t("../../core"),
                        l = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(s),
                        u = t("./ParticleShader"),
                        c = i(u),
                        h = t("./ParticleBuffer"),
                        p = i(h),
                        f = t("../../core/utils"),
                        d = function(t) {
                            function e(n) {
                                r(this, e);
                                var i = o(this, t.call(this, n));
                                return i.shader = null, i.indexBuffer = null, i.properties = null, i.tempMatrix = new l.Matrix, i.CONTEXT_UID = 0, i
                            }
                            return a(e, t), e.prototype.onContextChange = function() {
                                var t = this.renderer.gl;
                                this.CONTEXT_UID = this.renderer.CONTEXT_UID, this.shader = new c.default(t), this.properties = [{
                                    attribute: this.shader.attributes.aVertexPosition,
                                    size: 2,
                                    uploadFunction: this.uploadVertices,
                                    offset: 0
                                }, {
                                    attribute: this.shader.attributes.aPositionCoord,
                                    size: 2,
                                    uploadFunction: this.uploadPosition,
                                    offset: 0
                                }, {
                                    attribute: this.shader.attributes.aRotation,
                                    size: 1,
                                    uploadFunction: this.uploadRotation,
                                    offset: 0
                                }, {
                                    attribute: this.shader.attributes.aTextureCoord,
                                    size: 2,
                                    uploadFunction: this.uploadUvs,
                                    offset: 0
                                }, {
                                    attribute: this.shader.attributes.aColor,
                                    size: 1,
                                    unsignedByte: !0,
                                    uploadFunction: this.uploadTint,
                                    offset: 0
                                }]
                            }, e.prototype.start = function() {
                                this.renderer.bindShader(this.shader)
                            }, e.prototype.render = function(t) {
                                var e = t.children,
                                    n = t._maxSize,
                                    i = t._batchSize,
                                    r = this.renderer,
                                    o = e.length;
                                if (0 !== o) {
                                    o > n && (o = n);
                                    var a = t._glBuffers[r.CONTEXT_UID];
                                    a || (a = t._glBuffers[r.CONTEXT_UID] = this.generateBuffers(t));
                                    var s = e[0]._texture.baseTexture;
                                    this.renderer.setBlendMode(l.utils.correctBlendMode(t.blendMode, s.premultipliedAlpha));
                                    var u = r.gl,
                                        c = t.worldTransform.copy(this.tempMatrix);
                                    c.prepend(r._activeRenderTarget.projectionMatrix), this.shader.uniforms.projectionMatrix = c.toArray(!0), this.shader.uniforms.uColor = l.utils.premultiplyRgba(t.tintRgb, t.worldAlpha, this.shader.uniforms.uColor, s.premultipliedAlpha), this.shader.uniforms.uSampler = r.bindTexture(s);
                                    for (var h = !1, p = 0, f = 0; p < o; p += i, f += 1) {
                                        var d = o - p;
                                        if (d > i && (d = i), f >= a.length) {
                                            if (!t.autoResize) break;
                                            a.push(this._generateOneMoreBuffer(t))
                                        }
                                        var m = a[f];
                                        m.uploadDynamic(e, p, d);
                                        var g = t._bufferUpdateIDs[p] || 0;
                                        h = h || m._updateID < g, h && (m._updateID = t._updateID, m.uploadStatic(e, p, d)), r.bindVao(m.vao), m.vao.draw(u.TRIANGLES, 6 * d)
                                    }
                                }
                            }, e.prototype.generateBuffers = function(t) {
                                for (var e = this.renderer.gl, n = [], i = t._maxSize, r = t._batchSize, o = t._properties, a = 0; a < i; a += r) n.push(new p.default(e, this.properties, o, r));
                                return n
                            }, e.prototype._generateOneMoreBuffer = function(t) {
                                var e = this.renderer.gl,
                                    n = t._batchSize,
                                    i = t._properties;
                                return new p.default(e, this.properties, i, n)
                            }, e.prototype.uploadVertices = function(t, e, n, i, r, o) {
                                for (var a = 0, s = 0, l = 0, u = 0, c = 0; c < n; ++c) {
                                    var h = t[e + c],
                                        p = h._texture,
                                        f = h.scale.x,
                                        d = h.scale.y,
                                        m = p.trim,
                                        g = p.orig;
                                    m ? (s = m.x - h.anchor.x * g.width, a = s + m.width, u = m.y - h.anchor.y * g.height, l = u + m.height) : (a = g.width * (1 - h.anchor.x), s = g.width * -h.anchor.x, l = g.height * (1 - h.anchor.y), u = g.height * -h.anchor.y), i[o] = s * f, i[o + 1] = u * d, i[o + r] = a * f, i[o + r + 1] = u * d, i[o + 2 * r] = a * f, i[o + 2 * r + 1] = l * d, i[o + 3 * r] = s * f, i[o + 3 * r + 1] = l * d, o += 4 * r
                                }
                            }, e.prototype.uploadPosition = function(t, e, n, i, r, o) {
                                for (var a = 0; a < n; a++) {
                                    var s = t[e + a].position;
                                    i[o] = s.x, i[o + 1] = s.y, i[o + r] = s.x, i[o + r + 1] = s.y, i[o + 2 * r] = s.x, i[o + 2 * r + 1] = s.y, i[o + 3 * r] = s.x, i[o + 3 * r + 1] = s.y, o += 4 * r
                                }
                            }, e.prototype.uploadRotation = function(t, e, n, i, r, o) {
                                for (var a = 0; a < n; a++) {
                                    var s = t[e + a].rotation;
                                    i[o] = s, i[o + r] = s, i[o + 2 * r] = s, i[o + 3 * r] = s, o += 4 * r
                                }
                            }, e.prototype.uploadUvs = function(t, e, n, i, r, o) {
                                for (var a = 0; a < n; ++a) {
                                    var s = t[e + a]._texture._uvs;
                                    s ? (i[o] = s.x0, i[o + 1] = s.y0, i[o + r] = s.x1, i[o + r + 1] = s.y1, i[o + 2 * r] = s.x2, i[o + 2 * r + 1] = s.y2, i[o + 3 * r] = s.x3, i[o + 3 * r + 1] = s.y3, o += 4 * r) : (i[o] = 0, i[o + 1] = 0, i[o + r] = 0, i[o + r + 1] = 0, i[o + 2 * r] = 0, i[o + 2 * r + 1] = 0, i[o + 3 * r] = 0, i[o + 3 * r + 1] = 0, o += 4 * r)
                                }
                            }, e.prototype.uploadTint = function(t, e, n, i, r, o) {
                                for (var a = 0; a < n; ++a) {
                                    var s = t[e + a],
                                        l = s._texture.baseTexture.premultipliedAlpha,
                                        u = s.alpha,
                                        c = u < 1 && l ? (0, f.premultiplyTint)(s._tintRGB, u) : s._tintRGB + (255 * u << 24);
                                    i[o] = c, i[o + r] = c, i[o + 2 * r] = c, i[o + 3 * r] = c, o += 4 * r
                                }
                            }, e.prototype.destroy = function() {
                                this.renderer.gl && this.renderer.gl.deleteBuffer(this.indexBuffer), t.prototype.destroy.call(this), this.shader.destroy(), this.indices = null, this.tempMatrix = null
                            }, e
                        }(l.ObjectRenderer);
                    n.default = d, l.WebGLRenderer.registerPlugin("particle", d)
                }, {
                    "../../core": 65,
                    "../../core/utils": 125,
                    "./ParticleBuffer": 175,
                    "./ParticleShader": 177
                }],
                177: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }
                    n.__esModule = !0;
                    var a = t("../../core/Shader"),
                        s = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(a),
                        l = function(t) {
                            function e(n) {
                                return i(this, e), r(this, t.call(this, n, ["attribute vec2 aVertexPosition;", "attribute vec2 aTextureCoord;", "attribute vec4 aColor;", "attribute vec2 aPositionCoord;", "attribute float aRotation;", "uniform mat3 projectionMatrix;", "uniform vec4 uColor;", "varying vec2 vTextureCoord;", "varying vec4 vColor;", "void main(void){", "   float x = (aVertexPosition.x) * cos(aRotation) - (aVertexPosition.y) * sin(aRotation);", "   float y = (aVertexPosition.x) * sin(aRotation) + (aVertexPosition.y) * cos(aRotation);", "   vec2 v = vec2(x, y);", "   v = v + aPositionCoord;", "   gl_Position = vec4((projectionMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);", "   vTextureCoord = aTextureCoord;", "   vColor = aColor * uColor;", "}"].join("\n"), ["varying vec2 vTextureCoord;", "varying vec4 vColor;", "uniform sampler2D uSampler;", "void main(void){", "  vec4 color = texture2D(uSampler, vTextureCoord) * vColor;", "  gl_FragColor = color;", "}"].join("\n")))
                            }
                            return o(e, t), e
                        }(s.default);
                    n.default = l
                }, {
                    "../../core/Shader": 44
                }],
                178: [function(t, e, n) {
                    "use strict";
                    Math.sign || (Math.sign = function(t) {
                        return t = Number(t), 0 === t || isNaN(t) ? t : t > 0 ? 1 : -1
                    })
                }, {}],
                179: [function(t, e, n) {
                    "use strict";
                    Number.isInteger || (Number.isInteger = function(t) {
                        return "number" == typeof t && isFinite(t) && Math.floor(t) === t
                    })
                }, {}],
                180: [function(t, e, n) {
                    "use strict";
                    var i = t("object-assign"),
                        r = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(i);
                    Object.assign || (Object.assign = r.default)
                }, {
                    "object-assign": 5
                }],
                181: [function(t, e, n) {
                    "use strict";
                    t("./Object.assign"), t("./requestAnimationFrame"), t("./Math.sign"), t("./Number.isInteger"), window.ArrayBuffer || (window.ArrayBuffer = Array), window.Float32Array || (window.Float32Array = Array), window.Uint32Array || (window.Uint32Array = Array), window.Uint16Array || (window.Uint16Array = Array)
                }, {
                    "./Math.sign": 178,
                    "./Number.isInteger": 179,
                    "./Object.assign": 180,
                    "./requestAnimationFrame": 182
                }],
                182: [function(t, e, n) {
                    (function(t) {
                        "use strict";
                        if (Date.now && Date.prototype.getTime || (Date.now = function() {
                                return (new Date).getTime()
                            }), !t.performance || !t.performance.now) {
                            var e = Date.now();
                            t.performance || (t.performance = {}), t.performance.now = function() {
                                return Date.now() - e
                            }
                        }
                        for (var n = Date.now(), i = ["ms", "moz", "webkit", "o"], r = 0; r < i.length && !t.requestAnimationFrame; ++r) {
                            var o = i[r];
                            t.requestAnimationFrame = t[o + "RequestAnimationFrame"], t.cancelAnimationFrame = t[o + "CancelAnimationFrame"] || t[o + "CancelRequestAnimationFrame"]
                        }
                        t.requestAnimationFrame || (t.requestAnimationFrame = function(t) {
                            if ("function" != typeof t) throw new TypeError(t + "is not a function");
                            var e = Date.now(),
                                i = 16 + n - e;
                            return i < 0 && (i = 0), n = e, setTimeout(function() {
                                n = Date.now(), t(performance.now())
                            }, i)
                        }), t.cancelAnimationFrame || (t.cancelAnimationFrame = function(t) {
                            return clearTimeout(t)
                        })
                    }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
                }, {}],
                183: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        var n = !1;
                        if (t && t._textures && t._textures.length)
                            for (var i = 0; i < t._textures.length; i++)
                                if (t._textures[i] instanceof p.Texture) {
                                    var r = t._textures[i].baseTexture; - 1 === e.indexOf(r) && (e.push(r), n = !0)
                                }
                        return n
                    }

                    function o(t, e) {
                        return t instanceof p.BaseTexture && (-1 === e.indexOf(t) && e.push(t), !0)
                    }

                    function a(t, e) {
                        if (t._texture && t._texture instanceof p.Texture) {
                            var n = t._texture.baseTexture;
                            return -1 === e.indexOf(n) && e.push(n), !0
                        }
                        return !1
                    }

                    function s(t, e) {
                        return e instanceof p.Text && (e.updateText(!0), !0)
                    }

                    function l(t, e) {
                        if (e instanceof p.TextStyle) {
                            var n = e.toFontString();
                            return p.TextMetrics.measureFont(n), !0
                        }
                        return !1
                    }

                    function u(t, e) {
                        if (t instanceof p.Text) {
                            -1 === e.indexOf(t.style) && e.push(t.style), -1 === e.indexOf(t) && e.push(t);
                            var n = t._texture.baseTexture;
                            return -1 === e.indexOf(n) && e.push(n), !0
                        }
                        return !1
                    }

                    function c(t, e) {
                        return t instanceof p.TextStyle && (-1 === e.indexOf(t) && e.push(t), !0)
                    }
                    n.__esModule = !0;
                    var h = t("../core"),
                        p = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(h),
                        f = t("./limiters/CountLimiter"),
                        d = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(f),
                        m = p.ticker.shared;
                    p.settings.UPLOADS_PER_FRAME = 4;
                    var g = function() {
                        function t(e) {
                            var n = this;
                            i(this, t), this.limiter = new d.default(p.settings.UPLOADS_PER_FRAME), this.renderer = e, this.uploadHookHelper = null, this.queue = [], this.addHooks = [], this.uploadHooks = [], this.completes = [], this.ticking = !1, this.delayedTick = function() {
                                n.queue && n.prepareItems()
                            }, this.registerFindHook(u), this.registerFindHook(c), this.registerFindHook(r), this.registerFindHook(o), this.registerFindHook(a), this.registerUploadHook(s), this.registerUploadHook(l)
                        }
                        return t.prototype.upload = function(t, e) {
                            "function" == typeof t && (e = t, t = null), t && this.add(t), this.queue.length ? (e && this.completes.push(e), this.ticking || (this.ticking = !0, m.addOnce(this.tick, this, p.UPDATE_PRIORITY.UTILITY))) : e && e()
                        }, t.prototype.tick = function() {
                            setTimeout(this.delayedTick, 0)
                        }, t.prototype.prepareItems = function() {
                            for (this.limiter.beginFrame(); this.queue.length && this.limiter.allowedToUpload();) {
                                var t = this.queue[0],
                                    e = !1;
                                if (t && !t._destroyed)
                                    for (var n = 0, i = this.uploadHooks.length; n < i; n++)
                                        if (this.uploadHooks[n](this.uploadHookHelper, t)) {
                                            this.queue.shift(), e = !0;
                                            break
                                        }
                                e || this.queue.shift()
                            }
                            if (this.queue.length) m.addOnce(this.tick, this, p.UPDATE_PRIORITY.UTILITY);
                            else {
                                this.ticking = !1;
                                var r = this.completes.slice(0);
                                this.completes.length = 0;
                                for (var o = 0, a = r.length; o < a; o++) r[o]()
                            }
                        }, t.prototype.registerFindHook = function(t) {
                            return t && this.addHooks.push(t), this
                        }, t.prototype.registerUploadHook = function(t) {
                            return t && this.uploadHooks.push(t), this
                        }, t.prototype.add = function(t) {
                            for (var e = 0, n = this.addHooks.length; e < n && !this.addHooks[e](t, this.queue); e++);
                            if (t instanceof p.Container)
                                for (var i = t.children.length - 1; i >= 0; i--) this.add(t.children[i]);
                            return this
                        }, t.prototype.destroy = function() {
                            this.ticking && m.remove(this.tick, this), this.ticking = !1, this.addHooks = null, this.uploadHooks = null, this.renderer = null, this.completes = null, this.queue = null, this.limiter = null, this.uploadHookHelper = null
                        }, t
                    }();
                    n.default = g
                }, {
                    "../core": 65,
                    "./limiters/CountLimiter": 186
                }],
                184: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }

                    function a(t, e) {
                        if (e instanceof l.BaseTexture) {
                            var n = e.source,
                                i = 0 === n.width ? t.canvas.width : Math.min(t.canvas.width, n.width),
                                r = 0 === n.height ? t.canvas.height : Math.min(t.canvas.height, n.height);
                            return t.ctx.drawImage(n, 0, 0, i, r, 0, 0, t.canvas.width, t.canvas.height), !0
                        }
                        return !1
                    }
                    n.__esModule = !0;
                    var s = t("../../core"),
                        l = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(s),
                        u = t("../BasePrepare"),
                        c = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(u),
                        h = 16,
                        p = function(t) {
                            function e(n) {
                                i(this, e);
                                var o = r(this, t.call(this, n));
                                return o.uploadHookHelper = o, o.canvas = document.createElement("canvas"), o.canvas.width = h, o.canvas.height = h, o.ctx = o.canvas.getContext("2d"), o.registerUploadHook(a), o
                            }
                            return o(e, t), e.prototype.destroy = function() {
                                t.prototype.destroy.call(this), this.ctx = null, this.canvas = null
                            }, e
                        }(c.default);
                    n.default = p, l.CanvasRenderer.registerPlugin("prepare", p)
                }, {
                    "../../core": 65,
                    "../BasePrepare": 183
                }],
                185: [function(t, e, n) {
                    "use strict";

                    function i(t) {
                        return t && t.__esModule ? t : {
                            default: t
                        }
                    }
                    n.__esModule = !0;
                    var r = t("./webgl/WebGLPrepare");
                    Object.defineProperty(n, "webgl", {
                        enumerable: !0,
                        get: function() {
                            return i(r).default
                        }
                    });
                    var o = t("./canvas/CanvasPrepare");
                    Object.defineProperty(n, "canvas", {
                        enumerable: !0,
                        get: function() {
                            return i(o).default
                        }
                    });
                    var a = t("./BasePrepare");
                    Object.defineProperty(n, "BasePrepare", {
                        enumerable: !0,
                        get: function() {
                            return i(a).default
                        }
                    });
                    var s = t("./limiters/CountLimiter");
                    Object.defineProperty(n, "CountLimiter", {
                        enumerable: !0,
                        get: function() {
                            return i(s).default
                        }
                    });
                    var l = t("./limiters/TimeLimiter");
                    Object.defineProperty(n, "TimeLimiter", {
                        enumerable: !0,
                        get: function() {
                            return i(l).default
                        }
                    })
                }, {
                    "./BasePrepare": 183,
                    "./canvas/CanvasPrepare": 184,
                    "./limiters/CountLimiter": 186,
                    "./limiters/TimeLimiter": 187,
                    "./webgl/WebGLPrepare": 188
                }],
                186: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = function() {
                        function t(e) {
                            i(this, t), this.maxItemsPerFrame = e, this.itemsLeft = 0
                        }
                        return t.prototype.beginFrame = function() {
                            this.itemsLeft = this.maxItemsPerFrame
                        }, t.prototype.allowedToUpload = function() {
                            return this.itemsLeft-- > 0
                        }, t
                    }();
                    n.default = r
                }, {}],
                187: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }
                    n.__esModule = !0;
                    var r = function() {
                        function t(e) {
                            i(this, t), this.maxMilliseconds = e, this.frameStart = 0
                        }
                        return t.prototype.beginFrame = function() {
                            this.frameStart = Date.now()
                        }, t.prototype.allowedToUpload = function() {
                            return Date.now() - this.frameStart < this.maxMilliseconds
                        }, t
                    }();
                    n.default = r
                }, {}],
                188: [function(t, e, n) {
                    "use strict";

                    function i(t, e) {
                        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                    }

                    function r(t, e) {
                        if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return !e || "object" != typeof e && "function" != typeof e ? t : e
                    }

                    function o(t, e) {
                        if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                        t.prototype = Object.create(e && e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                    }

                    function a(t, e) {
                        return e instanceof c.BaseTexture && (e._glTextures[t.CONTEXT_UID] || t.textureManager.updateTexture(e), !0)
                    }

                    function s(t, e) {
                        return e instanceof c.Graphics && ((e.dirty || e.clearDirty || !e._webGL[t.plugins.graphics.CONTEXT_UID]) && t.plugins.graphics.updateGraphics(e), !0)
                    }

                    function l(t, e) {
                        return t instanceof c.Graphics && (e.push(t), !0)
                    }
                    n.__esModule = !0;
                    var u = t("../../core"),
                        c = function(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }(u),
                        h = t("../BasePrepare"),
                        p = function(t) {
                            return t && t.__esModule ? t : {
                                default: t
                            }
                        }(h),
                        f = function(t) {
                            function e(n) {
                                i(this, e);
                                var o = r(this, t.call(this, n));
                                return o.uploadHookHelper = o.renderer, o.registerFindHook(l), o.registerUploadHook(a), o.registerUploadHook(s), o
                            }
                            return o(e, t), e
                        }(p.default);
                    n.default = f, c.WebGLRenderer.registerPlugin("prepare", f)
                }, {
                    "../../core": 65,
                    "../BasePrepare": 183
                }],
                189: [function(t, e, n) {
                    (function(e) {
                        "use strict";

                        function i(t) {
                            if (t && t.__esModule) return t;
                            var e = {};
                            if (null != t)
                                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
                            return e.default = t, e
                        }
                        n.__esModule = !0, n.loader = n.prepare = n.particles = n.mesh = n.loaders = n.interaction = n.filters = n.extras = n.extract = n.accessibility = void 0;
                        var r = t("./polyfill");
                        Object.keys(r).forEach(function(t) {
                            "default" !== t && "__esModule" !== t && Object.defineProperty(n, t, {
                                enumerable: !0,
                                get: function() {
                                    return r[t]
                                }
                            })
                        });
                        var o = t("./core");
                        Object.keys(o).forEach(function(t) {
                            "default" !== t && "__esModule" !== t && Object.defineProperty(n, t, {
                                enumerable: !0,
                                get: function() {
                                    return o[t]
                                }
                            })
                        });
                        var a = t("./deprecation"),
                            s = function(t) {
                                return t && t.__esModule ? t : {
                                    default: t
                                }
                            }(a),
                            l = t("./accessibility"),
                            u = i(l),
                            c = t("./extract"),
                            h = i(c),
                            p = t("./extras"),
                            f = i(p),
                            d = t("./filters"),
                            m = i(d),
                            g = t("./interaction"),
                            _ = i(g),
                            y = t("./loaders"),
                            v = i(y),
                            b = t("./mesh"),
                            x = i(b),
                            T = t("./particles"),
                            w = i(T),
                            S = t("./prepare"),
                            P = i(S);
                        o.utils.mixins.performMixins();
                        var M = v.shared || null;
                        n.accessibility = u, n.extract = h, n.extras = f, n.filters = m, n.interaction = _, n.loaders = v, n.mesh = x, n.particles = w, n.prepare = P, n.loader = M, "function" == typeof s.default && (0, s.default)(n), e.PIXI = n
                    }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
                }, {
                    "./accessibility": 42,
                    "./core": 65,
                    "./deprecation": 131,
                    "./extract": 133,
                    "./extras": 141,
                    "./filters": 153,
                    "./interaction": 159,
                    "./loaders": 162,
                    "./mesh": 171,
                    "./particles": 174,
                    "./polyfill": 181,
                    "./prepare": 185
                }]
            }, {}, [189])(189)
        }), define("skbJet/component/resourceLoader/resourceLib", [], function() {
            return {}
        }), define("skbJet/component/resourceLoader/Util", [], function() {
            var t = {};
            return t.httpGetJson = function(e, n, i) {
                t.httpGetText(e, function(t) {
                    n(JSON.parse(t))
                }, i)
            }, t.httpGetText = function(t, e, n) {
                var i = new XMLHttpRequest;
                i.withCredentials = !0, i.addEventListener("load", function(t) {
                    t.target.status >= 200 && t.target.status < 300 ? e(t.target.responseText) : n()
                }), i.addEventListener("error", n), i.addEventListener("timeout", n), i.open("GET", t), i.send()
            }, t.removeQueryStr = function(t) {
                var e = t.match(/(.*)\?/);
                return e ? e[1] : t
            }, t.getFileNameFromPath = function(t) {
                var e = t.match(/\/?([^\/]+)$/);
                return e ? e[1] : t
            }, t.getFileExt = function(e, n) {
                e = t.removeQueryStr(e), e = t.getFileNameFromPath(e);
                var i = e.match(/\.(\w+)$/);
                return i && i[1] ? n ? i[1].toLowerCase() : i[1] : null
            }, t.getFileNameWithoutExt = function(e) {
                e = t.removeQueryStr(e), e = t.getFileNameFromPath(e);
                var n = e.match(/(.*)(\.\w+)+$/);
                return n ? n[1] : e
            }, t.getParentFolder = function(e) {
                e = t.removeQueryStr(e);
                var n = t.getFileNameFromPath(e);
                return e.substring(0, e.length - n.length)
            }, t
        }), define("skbJet/component/resourceLoader/LoaderContext", [], function() {
            function t(t, e, n) {
                this.assetPackUrl = t, this.languageCode = e, this.skinCode = n, this.totalResAmount = 0, this.currentLoaded = 0, this.gameFolder = null, this.i18nParent = null, this.queryStr = "", window._cacheFlag && window._cacheFlag.queryStr && (this.queryStr = window._cacheFlag.queryStr), this.fileListMap = {
                    i18n: null
                }, this.subLoaderMap = {}, this.onFileLoaded = function() {}, this.onLoadFailed = function() {}
            }
            return t
        }), define("skbJet/component/resourceLoader/LoaderChainHandler", [], function() {
            function t() {}
            return t.prototype.next = null, t.prototype.handle = null, t
        }), define("skbJet/component/resourceLoader/handlers/languageListHandler", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/LoaderChainHandler"], function(t, e) {
            function n(t, e) {
                for (var n = {}, i = 0; i < t.length; i++) n[t[i]] = [t[i].toLowerCase()], t[i].indexOf("_") > -1 ? n[t[i]].push(t[i].replace("_", "-").toLowerCase()) : t[i].indexOf("-") > -1 && n[t[i]].push(t[i].replace("-", "_").toLowerCase());
                var r;
                for (var o in n)
                    if (n[o].indexOf("i18n/" + e.languageCode.toLowerCase() + ".json") >= 0) {
                        r = o.substring(o.lastIndexOf("/") + 1, o.lastIndexOf("."));
                        break
                    }
                if (!r)
                    for (var o in n)
                        if (n[o].indexOf("i18n/default.json") >= 0) {
                            r = o.substring(o.lastIndexOf("/") + 1, o.lastIndexOf("."));
                            break
                        }
                if (!r)
                    for (var o in n)
                        if (n[o].indexOf("i18n/en.json") >= 0) {
                            r = o.substring(o.lastIndexOf("/") + 1, o.lastIndexOf("."));
                            break
                        }
                return !!r && (e.languageCode = r, !0)
            }

            function i(t) {
                var e = t.gameFolder,
                    n = !1;
                if (window.location.search.match(/&?custom=true&?/) && (n = !0), window.gtk && window.gtk.jLottery && window.gtk.jLottery.embeddedParams && window.gtk.jLottery.embeddedParams.custom && (n = !0), n) {
                    var i = t.gameFolder.match(/\/([^\/]+\/)$/)[1];
                    e = "/custom_lang/" + t.skinCode + "/" + i
                }
                return e
            }
            var r = new e;
            return r.handle = function(e) {
                e.languageCode = e.languageCode || "default", e.languageCode = e.languageCode.toLowerCase();
                var o = e.assetPackUrl.substring(0, e.assetPackUrl.lastIndexOf("/"));
                e.gameFolder = o.substring(0, o.lastIndexOf("/") + 1), e.i18nParent = i(e), t.httpGetJson(e.i18nParent + "i18n.json" + e.queryStr, function(t) {
                    n(t.i18n, e) ? r.next.handle(e) : e.onLoadFailed()
                }, e.onLoadFailed)
            }, r
        }), define("skbJet/component/resourceLoader/handlers/skinListHandler", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/LoaderChainHandler"], function(t, e) {
            function n(t, e) {
                for (var n = 0; n < t.length; n++) {
                    var i = t[n];
                    if (i = i.substring(i.lastIndexOf("/") + 1, i.lastIndexOf(".")), e.skinCode.toLowerCase() === i.toLowerCase()) return
                }
                e.skinCode = "default"
            }
            var i = new e;
            return i.handle = function(e) {
                e.skinCode = e.skinCode || "default";
                var r = e.i18nParent + "i18n/" + e.languageCode + ".json" + e.queryStr;
                t.httpGetJson(r, function(t) {
                    n(t[e.languageCode], e), i.next.handle(e)
                }, e.onLoadFailed)
            }, i
        }), define("skbJet/component/resourceLoader/handlers/fileListHandler", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/LoaderChainHandler"], function(t, e) {
            function n(t, e, n, i) {
                i.fileListMap[t] || (i.fileListMap[t] = {});
                for (var r = 0; r < e.length; r++) i.fileListMap[t][e[r]] = n
            }

            function i(e, i) {
                var o = e.assetPackUrl + ".json" + e.queryStr;
                t.httpGetJson(o, function(t) {
                    for (var o in t) n(o, t[o], e.gameFolder + "assetPacks/", e);
                    var s = e.assetPackUrl.substring(e.assetPackUrl.lastIndexOf("assetPacks"));
                    i && i.indexOf(e.skinCode + "/" + s + ".json") > -1 ? r(e, s) : a.next.handle(e)
                }, e.onLoadFailed)
            }

            function r(e, i) {
                var r = e.i18nParent + "i18n/" + e.languageCode + "/" + e.skinCode + "/",
                    o = r + i + ".json" + e.queryStr;
                t.httpGetJson(o, function(t) {
                    for (var i in t) n(i, t[i], r + "assetPacks/", e);
                    a.next.handle(e)
                }, e.onLoadFailed)
            }

            function o(e) {
                var r = e.i18nParent + "i18n/",
                    o = r + e.languageCode + "/",
                    a = o + e.skinCode + ".json" + e.queryStr;
                t.httpGetJson(a, function(t) {
                    n("i18n", t[e.skinCode], o, e), i(e, t.assetPacks)
                }, e.onLoadFailed)
            }
            var a = new e;
            return a.handle = o, a
        }), define("skbJet/component/resourceLoader/handlers/fileLoadHandler", ["skbJet/component/resourceLoader/LoaderChainHandler"], function(t) {
            function e(t, e, n) {
                setTimeout(function() {
                    t.load(e, n)
                }, 1)
            }
            var n = new t;
            return n.handle = function(t) {
                for (var n in t.fileListMap) t.subLoaderMap[n] && e(t.subLoaderMap[n], t.fileListMap[n], {
                    onFileLoaded: t.onFileLoaded,
                    onLoadFailed: t.onLoadFailed,
                    queryStr: t.queryStr
                })
            }, n.addSubLoader = function(t, e, n) {
                t.subLoaderMap[e] = n
            }, n.summary = function(t) {
                var e = 0,
                    n = 0,
                    i = !0;
                for (var r in t.fileListMap) t.subLoaderMap[r] && (e += t.subLoaderMap[r].getTotal(), n += t.subLoaderMap[r].getCurrent(), i = i && t.subLoaderMap[r].isComplete());
                return {
                    total: e,
                    current: n,
                    complete: i
                }
            }, n
        }), define("skbJet/component/resourceLoader/ResourceLoader", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/LoaderContext", "skbJet/component/resourceLoader/handlers/languageListHandler", "skbJet/component/resourceLoader/handlers/skinListHandler", "skbJet/component/resourceLoader/handlers/fileListHandler", "skbJet/component/resourceLoader/handlers/fileLoadHandler"], function(t, e, n, i, r, o) {
            function a(t, a, s) {
                this.context = new e(t, a, s), this.loadChain = [n, i, r, o]
            }
            var s;
            return a.prototype.load = function(t, e) {
                for (var n = 0; n < this.loadChain.length - 1; n++) this.loadChain[n].next = this.loadChain[n + 1];
                this.context.onFileLoaded = t, this.context.onLoadFailed = e, this.loadChain[0].handle(this.context)
            }, a.prototype.addSubLoader = function(t, e) {
                o.addSubLoader(this.context, t, e)
            }, a.prototype.currentProgress = function() {
                return o.summary(this.context)
            }, a.initDefault = function(t, e, n) {
                if (s) throw "Default loader already inited.";
                s = new a(t, e, n)
            }, a.getDefault = function() {
                return s
            }, a
        }), define("skbJet/component/resourceLoader/AbstractSubLoader", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/resourceLib"], function(t, e) {
            function n() {}

            function i() {}
            return i.prototype._initOptions = function(t, n) {
                this._count = {
                    total: 0,
                    current: 0,
                    complete: !1
                }, this.options = n || {}, this.options.type = this.options.type || t, e[this.options.type] || (e[this.options.type] = {})
            }, i.prototype.getTotal = function() {
                return this._count.total
            }, i.prototype.getCurrent = function() {
                return this._count.current
            }, i.prototype.isComplete = function() {
                return this._count.complete
            }, i.prototype._prepareLoad = function(t) {
                t = t || {}, this._count.total = 0, this._count.current = 0, t.queryStr = t.queryStr ? t.queryStr : "", t.onFileLoaded = t.onFileLoaded ? t.onFileLoaded : n, t.onLoadFailed = t.onLoadFailed ? t.onLoadFailed : n;
                for (var e in t) this.options[e] = t[e]
            }, i.prototype.load = function(n, i) {
                this._prepareLoad(i);
                var r = [];
                for (var o in n)
                    if (n[o]) {
                        if (this.options.fileExtFilterList) {
                            var a = t.getFileExt(o, !0);
                            if (this.options.fileExtFilterList.indexOf(a) < 0) continue
                        }
                        this._count.total++, r.push(o)
                    }
                if (0 === this._count.total) return this._count.complete = !0, void this.options.onFileLoaded();
                for (var s = this, l = 0; l < r.length; l++) {
                    var o = r[l];
                    this._doLoadFile(n[o] + o + this.options.queryStr, function(t) {
                        return function(n) {
                            s._count.current++, s._count.current === s._count.total && (s._count.complete = !0), e[s.options.type] = e[s.options.type] || {}, e[s.options.type][t] = n, s.options.onFileLoaded()
                        }
                    }(t.getFileNameWithoutExt(o)), this.options.onLoadFailed)
                }
            }, i.prototype._doLoadFile = function(t, e, n) {
                throw "Not implemented yet. Params: url:" + t + "   success:" + e + "   fail:" + n
            }, i
        }), define("skbJet/component/resourceLoader/subLoaders/TextFilesSubLoader", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/AbstractSubLoader"], function(t, e) {
            function n(t) {
                this._initOptions("_text_files", t)
            }
            return n.prototype = new e, n.prototype._doLoadFile = function(e, n, i) {
                "json" === t.getFileExt(e, !0) && this.options.parseJson ? t.httpGetJson(e, n, i) : t.httpGetText(e, n, i)
            }, n
        }), define("skbJet/component/resourceLoader/subLoaders/HtmlTagSubLoader", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/AbstractSubLoader"], function(t, e) {
            function n(t) {
                this._initOptions("_html_tags", t)
            }
            return n.prototype = new e, n.prototype._doLoadFile = function(t, e, n) {
                var i = document.createElement(this.options.tagName);
                if (i.onload = function() {
                        e(i)
                    }, i.onerror = n, this.options.parentTag && this.options.parentTag.appendChild(i), this.options.tagAttributes)
                    for (var r in this.options.tagAttributes) i.setAttribute(r, this.options.tagAttributes[r]);
                i.src = t
            }, n
        }), define("skbJet/component/pixiResourceLoader/PixiSpriteSubLoader", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/AbstractSubLoader", "com/pixijs/pixi"], function(t, e, n) {
            function i(t) {
                t = t || {}, t.fileExtFilterList = ["json"], this._initOptions("sprites", t)
            }
            return i.prototype = new e, i.prototype._load = i.prototype.load, i.prototype.load = function(e, i) {
                this.loader = new n.loaders.Loader, this.loader.defaultQueryString = i.queryStr, i.queryStr = null, this._load(e, i);
                var r = this;
                this.loader.on("load", function(e, i) {
                    if (i.textures) {
                        for (var o in i.textures) {
                            var a = t.getFileNameWithoutExt(o);
                            n.Texture.addToCache(i.textures[o], a)
                        }
                        r._count.current++, r.options.onFileLoaded()
                    }
                }), this.loader.once("complete", function() {
                    r._count.current === r._count.total && (r._count.complete = !0, r.options.onFileLoaded())
                }), this.loader.on("error", this.options.onLoadFailed), this.loader.load()
            }, i.prototype._doLoadFile = function(e) {
                var n = t.getFileNameWithoutExt(e);
                this.loader.add(n, e)
            }, i
        }), define("skbJet/component/pixiResourceLoader/PixiImageSubLoader", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/AbstractSubLoader", "com/pixijs/pixi"], function(t, e, n) {
            function i(t) {
                this._initOptions("images", t)
            }
            return i.prototype = new e, i.prototype._load = i.prototype.load, i.prototype.load = function(t, e) {
                this.loader = new n.loaders.Loader, this._load(t, e);
                var i = this;
                this.loader.on("load", function(t, e) {
                    n.Texture.addToCache(e.texture, e.name), i._count.current++, i.options.onFileLoaded()
                }), this.loader.once("complete", function() {
                    i._count.current === i._count.total && (i._count.complete = !0, i.options.onFileLoaded())
                }), this.loader.on("error", this.options.onLoadFailed), this.loader.load()
            }, i.prototype._doLoadFile = function(e) {
                var n = t.getFileNameWithoutExt(e);
                this.loader.add(n, e)
            }, i
        }), define("skbJet/component/pixiResourceLoader/pixiResourceLoader", ["skbJet/component/gameMsgBus/GameMsgBus", "com/pixijs/pixi", "skbJet/component/resourceLoader/resourceLib", "skbJet/component/resourceLoader/ResourceLoader", "skbJet/component/resourceLoader/subLoaders/TextFilesSubLoader", "skbJet/component/resourceLoader/subLoaders/HtmlTagSubLoader", "skbJet/component/pixiResourceLoader/PixiSpriteSubLoader", "skbJet/component/pixiResourceLoader/PixiImageSubLoader"], function(t, e, n, i, r, o, a, s) {
            function l() {
                f = h.currentProgress(), f.complete && (p.i18n = n.i18n.game || {}, p.i18n.helpHTML = n.i18n.help, p.i18n.paytableHTML = n.i18n.paytable), t.publish("resourceLoader.loadProgress", {
                    total: f.total,
                    current: f.current,
                    complete: f.complete
                })
            }

            function u() {
                t.publish("toPlatform", {
                    channel: "Kernel",
                    topic: "LoadProgress",
                    data: {
                        id: "game",
                        items: f.total,
                        current: f.current,
                        complete: !1,
                        fail: !0
                    }
                })
            }

            function c(t) {
                if (e.utils.TextureCache[t]) {
                    var n = e.utils.TextureCache[t],
                        i = new e.CanvasRenderer(n.orig.width, n.orig.height, {
                            transparent: !0
                        }),
                        r = new e.Sprite(n);
                    m.addChild(r), i.render(m);
                    var o = new Image;
                    o.src = i.view.toDataURL(), d[t] = o, m.removeChild(r)
                }
            }
            n.sounds = n.sounds || {}, n.images = n.images || {}, n.layout = n.layout || {}, n.sprites = n.sprites || {}, n.i18n = n.i18n || {};
            var h, p = {
                    audio: n.sounds,
                    images: n.images,
                    layout: n.layout,
                    sprites: n.sprites,
                    i18n: null
                },
                f = {};
            p.load = function(t, e, n) {
                i.initDefault(t, e, n), h = i.getDefault(), h.addSubLoader("images", new s({
                    type: "images"
                })), h.addSubLoader("sprites", new a({
                    type: "sprites"
                }));
                var c = new r({
                    type: "i18n",
                    parseJson: !0
                });
                c.origLoad = c.load, c.load = function(t, e) {
                    for (var n in t) n.match(/splash\.json$/) && delete t[n];
                    this.origLoad(t, e)
                }, h.addSubLoader("i18n", c), h.addSubLoader("layout", new o({
                    tagName: "script",
                    tagAttributes: {
                        type: "text/javascript"
                    },
                    fileExtFilterList: ["js"],
                    parentTag: document.getElementsByTagName("head")[0]
                })), h.load(l, u)
            };
            var d = {},
                m = new e.Container;
            return p.getImgObj = function(t) {
                return d[t] || c(t), d[t]
            }, p
        }),
        function() {
            function t(t, e, n) {
                for (var i = t.length, r = n ? i : -1; n ? r-- : ++r < i;)
                    if (e(t[r], r, t)) return r;
                return -1
            }

            function e(t, e, n) {
                if (e !== e) return i(t, n);
                for (var r = n - 1, o = t.length; ++r < o;)
                    if (t[r] === e) return r;
                return -1
            }

            function n(t) {
                return null == t ? "" : t + ""
            }

            function i(t, e, n) {
                for (var i = t.length, r = e + (n ? 0 : -1); n ? r-- : ++r < i;) {
                    var o = t[r];
                    if (o !== o) return r
                }
                return -1
            }

            function r(t) {
                return !!t && "object" == typeof t
            }

            function o(t, e) {
                for (var n = -1, i = t.length, r = -1, o = []; ++n < i;) t[n] === e && (t[n] = Ae, o[++r] = n);
                return o
            }

            function a(t) {
                if (r(t) && !ui(t) && !(t instanceof u)) {
                    if (t instanceof l) return t;
                    if (wn.call(t, "__chain__") && wn.call(t, "__wrapped__")) return kt(t)
                }
                return new l(t)
            }

            function s() {}

            function l(t, e, n) {
                this.__wrapped__ = t, this.__actions__ = n || [], this.__chain__ = !!e
            }

            function u(t) {
                this.__wrapped__ = t, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = Un, this.__views__ = []
            }

            function c() {
                var t = new u(this.__wrapped__);
                return t.__actions__ = _(this.__actions__), t.__dir__ = this.__dir__, t.__filtered__ = this.__filtered__, t.__iteratees__ = _(this.__iteratees__), t.__takeCount__ = this.__takeCount__, t.__views__ = _(this.__views__), t
            }

            function h() {
                if (this.__filtered__) {
                    var t = new u(this);
                    t.__dir__ = -1, t.__filtered__ = !0
                } else t = this.clone(), t.__dir__ *= -1;
                return t
            }

            function p() {
                var t = this.__wrapped__.value(),
                    e = this.__dir__,
                    n = ui(t),
                    i = e < 0,
                    r = n ? t.length : 0,
                    o = _t(0, r, this.__views__),
                    a = o.start,
                    s = o.end,
                    l = s - a,
                    u = i ? s : a - 1,
                    c = this.__iteratees__,
                    h = c.length,
                    p = 0,
                    f = Fn(l, this.__takeCount__);
                if (!n || r < Ee || r == l && f == l) return K(t, this.__actions__);
                var d = [];
                t: for (; l-- && p < f;) {
                    u += e;
                    for (var m = -1, g = t[u]; ++m < h;) {
                        var _ = c[m],
                            y = _.iteratee,
                            v = _.type,
                            b = y(g);
                        if (v == Ie) g = b;
                        else if (!b) {
                            if (v == Oe) continue t;
                            break t
                        }
                    }
                    d[p++] = g
                }
                return d
            }

            function f(t) {
                var e = t ? t.length : 0;
                for (this.data = {
                        hash: An(null),
                        set: new En
                    }; e--;) this.push(t[e])
            }

            function d(t, e) {
                var n = t.data;
                return ("string" == typeof e || re(e) ? n.set.has(e) : n.hash[e]) ? 0 : -1
            }

            function m(t) {
                var e = this.data;
                "string" == typeof t || re(t) ? e.set.add(t) : e.hash[t] = !0
            }

            function g(t, e) {
                for (var n = -1, i = t.length, r = -1, o = e.length, a = Array(i + o); ++n < i;) a[n] = t[n];
                for (; ++r < o;) a[n++] = e[r];
                return a
            }

            function _(t, e) {
                var n = -1,
                    i = t.length;
                for (e || (e = Array(i)); ++n < i;) e[n] = t[n];
                return e
            }

            function y(t, e) {
                for (var n = -1, i = t.length; ++n < i && !1 !== e(t[n], n, t););
                return t
            }

            function v(t, e) {
                for (var n = -1, i = t.length, r = -1, o = []; ++n < i;) {
                    var a = t[n];
                    e(a, n, t) && (o[++r] = a)
                }
                return o
            }

            function b(t, e) {
                for (var n = -1, i = t.length, r = Array(i); ++n < i;) r[n] = e(t[n], n, t);
                return r
            }

            function x(t, e) {
                for (var n = -1, i = e.length, r = t.length; ++n < i;) t[r + n] = e[n];
                return t
            }

            function T(t, e, n, i) {
                var r = -1,
                    o = t.length;
                for (i && o && (n = t[++r]); ++r < o;) n = e(n, t[r], r, t);
                return n
            }

            function w(t, e) {
                for (var n = -1, i = t.length; ++n < i;)
                    if (e(t[n], n, t)) return !0;
                return !1
            }

            function S(t, e) {
                return t === ye ? e : t
            }

            function P(t, e, n) {
                for (var i = -1, r = pi(e), o = r.length; ++i < o;) {
                    var a = r[i],
                        s = t[a],
                        l = n(s, e[a], a, t, e);
                    (l === l ? l === s : s !== s) && (s !== ye || a in t) || (t[a] = l)
                }
                return t
            }

            function M(t, e) {
                return null == e ? t : C(e, pi(e), t)
            }

            function C(t, e, n) {
                n || (n = {});
                for (var i = -1, r = e.length; ++i < r;) {
                    var o = e[i];
                    n[o] = t[o]
                }
                return n
            }

            function E(t, e, n) {
                var i = typeof t;
                return "function" == i ? e === ye ? t : Q(t, e, n) : null == t ? fe : "object" == i ? W(t) : e === ye ? _e(t) : X(t, e)
            }

            function O(t, e, n, i, r, o, a) {
                var s;
                if (n && (s = r ? n(t, i, r) : n(t)), s !== ye) return s;
                if (!re(t)) return t;
                var l = ui(t);
                if (l) {
                    if (s = yt(t), !e) return _(t, s)
                } else {
                    var u = Sn.call(t),
                        c = u == Fe;
                    if (u != Ue && u != ke && (!c || r)) return un[u] ? bt(t, u, e) : r ? t : {};
                    if (_n(t)) return r ? t : {};
                    if (s = vt(c ? {} : t), !e) return M(s, t)
                }
                o || (o = []), a || (a = []);
                for (var h = o.length; h--;)
                    if (o[h] == t) return a[h];
                return o.push(t), a.push(s), (l ? y : D)(t, function(i, r) {
                    s[r] = O(i, e, n, r, t, o, a)
                }), s
            }

            function I(t, n) {
                var i = t ? t.length : 0,
                    r = [];
                if (!i) return r;
                var o = -1,
                    a = dt(),
                    s = a === e,
                    l = s && n.length >= Ee ? rt(n) : null,
                    u = n.length;
                l && (a = d, s = !1, n = l);
                t: for (; ++o < i;) {
                    var c = t[o];
                    if (s && c === c) {
                        for (var h = u; h--;)
                            if (n[h] === c) continue t;
                        r.push(c)
                    } else a(n, c, 0) < 0 && r.push(c)
                }
                return r
            }

            function R(t, e) {
                var n = [];
                return Kn(t, function(t, i, r) {
                    e(t, i, r) && n.push(t)
                }), n
            }

            function A(t, e, n, i) {
                var r;
                return n(t, function(t, n, o) {
                    if (e(t, n, o)) return r = i ? n : t, !1
                }), r
            }

            function k(t, e, n, i) {
                i || (i = []);
                for (var o = -1, a = t.length; ++o < a;) {
                    var s = t[o];
                    r(s) && xt(s) && (n || ui(s) || ee(s)) ? e ? k(s, e, n, i) : x(i, s) : n || (i[i.length] = s)
                }
                return i
            }

            function L(t, e) {
                return $n(t, e, ue)
            }

            function D(t, e) {
                return $n(t, e, pi)
            }

            function B(t, e) {
                for (var n = -1, i = e.length, r = -1, o = []; ++n < i;) {
                    var a = e[n];
                    ie(t[a]) && (o[++r] = a)
                }
                return o
            }

            function N(t, e, n) {
                if (null != t) {
                    t = Rt(t), n !== ye && n in t && (e = [n]);
                    for (var i = 0, r = e.length; null != t && i < r;) t = Rt(t)[e[i++]];
                    return i && i == r ? t : ye
                }
            }

            function F(t, e, n, i, o, a) {
                return t === e || (null == t || null == e || !re(t) && !r(e) ? t !== t && e !== e : G(t, e, F, n, i, o, a))
            }

            function G(t, e, n, i, r, o, a) {
                var s = ui(t),
                    l = ui(e),
                    u = Le,
                    c = Le;
                s || (u = Sn.call(t), u == ke ? u = Ue : u != Ue && (s = le(t))), l || (c = Sn.call(e), c == ke ? c = Ue : c != Ue && (l = le(e)));
                var h = u == Ue && !_n(t),
                    p = c == Ue && !_n(e),
                    f = u == c;
                if (f && !s && !h) return ct(t, e, u);
                if (!r) {
                    var d = h && wn.call(t, "__wrapped__"),
                        m = p && wn.call(e, "__wrapped__");
                    if (d || m) return n(d ? t.value() : t, m ? e.value() : e, i, r, o, a)
                }
                if (!f) return !1;
                o || (o = []), a || (a = []);
                for (var g = o.length; g--;)
                    if (o[g] == t) return a[g] == e;
                o.push(t), a.push(e);
                var _ = (s ? ut : ht)(t, e, n, i, r, o, a);
                return o.pop(), a.pop(), _
            }

            function U(t, e, n) {
                var i = e.length,
                    r = i,
                    o = !n;
                if (null == t) return !r;
                for (t = Rt(t); i--;) {
                    var a = e[i];
                    if (o && a[2] ? a[1] !== t[a[0]] : !(a[0] in t)) return !1
                }
                for (; ++i < r;) {
                    a = e[i];
                    var s = a[0],
                        l = t[s],
                        u = a[1];
                    if (o && a[2]) {
                        if (l === ye && !(s in t)) return !1
                    } else {
                        var c = n ? n(l, u, s) : ye;
                        if (!(c === ye ? F(u, l, n, !0) : c)) return !1
                    }
                }
                return !0
            }

            function j(t, e) {
                var n = -1,
                    i = xt(t) ? Array(t.length) : [];
                return Kn(t, function(t, r, o) {
                    i[++n] = e(t, r, o)
                }), i
            }

            function W(t) {
                var e = mt(t);
                if (1 == e.length && e[0][2]) {
                    var n = e[0][0],
                        i = e[0][1];
                    return function(t) {
                        return null != t && (t = Rt(t), t[n] === i && (i !== ye || n in t))
                    }
                }
                return function(t) {
                    return U(t, e)
                }
            }

            function X(t, e) {
                var n = ui(t),
                    i = St(t) && Ct(e),
                    r = t + "";
                return t = At(t),
                    function(o) {
                        if (null == o) return !1;
                        var a = r;
                        if (o = Rt(o), (n || !i) && !(a in o)) {
                            if (null == (o = 1 == t.length ? o : N(o, Y(t, 0, -1)))) return !1;
                            a = Dt(t), o = Rt(o)
                        }
                        return o[a] === e ? e !== ye || a in o : F(e, o[a], ye, !0)
                    }
            }

            function V(t) {
                return function(e) {
                    return null == e ? ye : Rt(e)[t]
                }
            }

            function H(t) {
                var e = t + "";
                return t = At(t),
                    function(n) {
                        return N(n, t, e)
                    }
            }

            function z(t, e, n, i, r) {
                return r(t, function(t, r, o) {
                    n = i ? (i = !1, t) : e(n, t, r, o)
                }), n
            }

            function Y(t, e, n) {
                var i = -1,
                    r = t.length;
                e = null == e ? 0 : +e || 0, e < 0 && (e = -e > r ? 0 : r + e), n = n === ye || n > r ? r : +n || 0, n < 0 && (n += r), r = e > n ? 0 : n - e >>> 0, e >>>= 0;
                for (var o = Array(r); ++i < r;) o[i] = t[i + e];
                return o
            }

            function q(t, e) {
                var n;
                return Kn(t, function(t, i, r) {
                    return !(n = e(t, i, r))
                }), !!n
            }

            function J(t, e) {
                for (var n = -1, i = e.length, r = Array(i); ++n < i;) r[n] = t[e[n]];
                return r
            }

            function K(t, e) {
                var n = t;
                n instanceof u && (n = n.value());
                for (var i = -1, r = e.length; ++i < r;) {
                    var o = e[i];
                    n = o.func.apply(o.thisArg, x([n], o.args))
                }
                return n
            }

            function $(t, e, n) {
                var i = 0,
                    r = t ? t.length : i;
                if ("number" == typeof e && e === e && r <= Wn) {
                    for (; i < r;) {
                        var o = i + r >>> 1,
                            a = t[o];
                        (n ? a <= e : a < e) && null !== a ? i = o + 1 : r = o
                    }
                    return r
                }
                return Z(t, e, fe, n)
            }

            function Z(t, e, n, i) {
                e = n(e);
                for (var r = 0, o = t ? t.length : 0, a = e !== e, s = null === e, l = e === ye; r < o;) {
                    var u = kn((r + o) / 2),
                        c = n(t[u]),
                        h = c !== ye,
                        p = c === c;
                    if (a) var f = p || i;
                    else f = s ? p && h && (i || null != c) : l ? p && (i || h) : null != c && (i ? c <= e : c < e);
                    f ? r = u + 1 : o = u
                }
                return Fn(o, jn)
            }

            function Q(t, e, n) {
                if ("function" != typeof t) return fe;
                if (e === ye) return t;
                switch (n) {
                    case 1:
                        return function(n) {
                            return t.call(e, n)
                        };
                    case 3:
                        return function(n, i, r) {
                            return t.call(e, n, i, r)
                        };
                    case 4:
                        return function(n, i, r, o) {
                            return t.call(e, n, i, r, o)
                        };
                    case 5:
                        return function(n, i, r, o, a) {
                            return t.call(e, n, i, r, o, a)
                        }
                }
                return function() {
                    return t.apply(e, arguments)
                }
            }

            function tt(t) {
                var e = new Mn(t.byteLength);
                return new In(e).set(new In(t)), e
            }

            function et(t, e, n) {
                for (var i = n.length, r = -1, o = Nn(t.length - i, 0), a = -1, s = e.length, l = Array(s + o); ++a < s;) l[a] = e[a];
                for (; ++r < i;) l[n[r]] = t[r];
                for (; o--;) l[a++] = t[r++];
                return l
            }

            function nt(t, e, n) {
                for (var i = -1, r = n.length, o = -1, a = Nn(t.length - r, 0), s = -1, l = e.length, u = Array(a + l); ++o < a;) u[o] = t[o];
                for (var c = o; ++s < l;) u[c + s] = e[s];
                for (; ++i < r;) u[c + n[i]] = t[o++];
                return u
            }

            function it(t, e) {
                function n() {
                    return (this && this !== gn && this instanceof n ? i : t).apply(e, arguments)
                }
                var i = ot(t);
                return n
            }

            function rt(t) {
                return An && En ? new f(t) : null
            }

            function ot(t) {
                return function() {
                    var e = arguments;
                    switch (e.length) {
                        case 0:
                            return new t;
                        case 1:
                            return new t(e[0]);
                        case 2:
                            return new t(e[0], e[1]);
                        case 3:
                            return new t(e[0], e[1], e[2]);
                        case 4:
                            return new t(e[0], e[1], e[2], e[3]);
                        case 5:
                            return new t(e[0], e[1], e[2], e[3], e[4]);
                        case 6:
                            return new t(e[0], e[1], e[2], e[3], e[4], e[5]);
                        case 7:
                            return new t(e[0], e[1], e[2], e[3], e[4], e[5], e[6])
                    }
                    var n = Jn(t.prototype),
                        i = t.apply(n, e);
                    return re(i) ? i : n
                }
            }

            function at(t, e, n, i, r, a, s, l, u, c) {
                function h() {
                    for (var b = arguments.length, x = b, T = Array(b); x--;) T[x] = arguments[x];
                    if (i && (T = et(T, i, r)), a && (T = nt(T, a, s)), m || y) {
                        var w = h.placeholder,
                            S = o(T, w);
                        if ((b -= S.length) < c) {
                            var P = l ? _(l) : ye,
                                M = Nn(c - b, 0),
                                C = m ? S : ye,
                                E = m ? ye : S,
                                O = m ? T : ye,
                                I = m ? ye : T;
                            e |= m ? Se : Pe, e &= ~(m ? Pe : Se), g || (e &= ~(ve | be));
                            var R = [t, e, n, O, C, I, E, P, u, M],
                                A = at.apply(ye, R);
                            return Pt(t) && ei(A, R), A.placeholder = w, A
                        }
                    }
                    var k = f ? n : this,
                        L = d ? k[t] : t;
                    return l && (T = Ot(T, l)), p && u < T.length && (T.length = u), this && this !== gn && this instanceof h && (L = v || ot(t)), L.apply(k, T)
                }
                var p = e & Me,
                    f = e & ve,
                    d = e & be,
                    m = e & Te,
                    g = e & xe,
                    y = e & we,
                    v = d ? ye : ot(t);
                return h
            }

            function st(t, e, n, i) {
                function r() {
                    for (var e = -1, s = arguments.length, l = -1, u = i.length, c = Array(u + s); ++l < u;) c[l] = i[l];
                    for (; s--;) c[l++] = arguments[++e];
                    return (this && this !== gn && this instanceof r ? a : t).apply(o ? n : this, c)
                }
                var o = e & ve,
                    a = ot(t);
                return r
            }

            function lt(t, e, n, i, r, o, a, s) {
                var l = e & be;
                if (!l && "function" != typeof t) throw new TypeError(Re);
                var u = i ? i.length : 0;
                if (u || (e &= ~(Se | Pe), i = r = ye), u -= r ? r.length : 0, e & Pe) {
                    var c = i,
                        h = r;
                    i = r = ye
                }
                var p = l ? ye : Qn(t),
                    f = [t, e, n, i, r, c, h, o, a, s];
                if (p && (Et(f, p), e = f[1], s = f[9]), f[9] = null == s ? l ? 0 : t.length : Nn(s - u, 0) || 0, e == ve) var d = it(f[0], f[2]);
                else d = e != Se && e != (ve | Se) || f[4].length ? at.apply(ye, f) : st.apply(ye, f);
                return (p ? Zn : ei)(d, f)
            }

            function ut(t, e, n, i, r, o, a) {
                var s = -1,
                    l = t.length,
                    u = e.length;
                if (l != u && !(r && u > l)) return !1;
                for (; ++s < l;) {
                    var c = t[s],
                        h = e[s],
                        p = i ? i(r ? h : c, r ? c : h, s) : ye;
                    if (p !== ye) {
                        if (p) continue;
                        return !1
                    }
                    if (r) {
                        if (!w(e, function(t) {
                                return c === t || n(c, t, i, r, o, a)
                            })) return !1
                    } else if (c !== h && !n(c, h, i, r, o, a)) return !1
                }
                return !0
            }

            function ct(t, e, n) {
                switch (n) {
                    case De:
                    case Be:
                        return +t == +e;
                    case Ne:
                        return t.name == e.name && t.message == e.message;
                    case Ge:
                        return t != +t ? e != +e : t == +e;
                    case je:
                    case We:
                        return t == e + ""
                }
                return !1
            }

            function ht(t, e, n, i, r, o, a) {
                var s = pi(t),
                    l = s.length;
                if (l != pi(e).length && !r) return !1;
                for (var u = l; u--;) {
                    var c = s[u];
                    if (!(r ? c in e : wn.call(e, c))) return !1
                }
                for (var h = r; ++u < l;) {
                    c = s[u];
                    var p = t[c],
                        f = e[c],
                        d = i ? i(r ? f : p, r ? p : f, c) : ye;
                    if (!(d === ye ? n(p, f, i, r, o, a) : d)) return !1;
                    h || (h = "constructor" == c)
                }
                if (!h) {
                    var m = t.constructor,
                        g = e.constructor;
                    if (m != g && "constructor" in t && "constructor" in e && !("function" == typeof m && m instanceof m && "function" == typeof g && g instanceof g)) return !1
                }
                return !0
            }

            function pt(t, e, n) {
                var i = a.callback || pe;
                return i = i === pe ? E : i, n ? i(t, e, n) : i
            }

            function ft(t) {
                for (var e = t.name + "", n = Hn[e], i = n ? n.length : 0; i--;) {
                    var r = n[i],
                        o = r.func;
                    if (null == o || o == t) return r.name
                }
                return e
            }

            function dt(t, n, i) {
                var r = a.indexOf || Lt;
                return r = r === Lt ? e : r, t ? r(t, n, i) : r
            }

            function mt(t) {
                for (var e = ce(t), n = e.length; n--;) e[n][2] = Ct(e[n][1]);
                return e
            }

            function gt(t, e) {
                var n = null == t ? ye : t[e];
                return oe(n) ? n : ye
            }

            function _t(t, e, n) {
                for (var i = -1, r = n.length; ++i < r;) {
                    var o = n[i],
                        a = o.size;
                    switch (o.type) {
                        case "drop":
                            t += a;
                            break;
                        case "dropRight":
                            e -= a;
                            break;
                        case "take":
                            e = Fn(e, t + a);
                            break;
                        case "takeRight":
                            t = Nn(t, e - a)
                    }
                }
                return {
                    start: t,
                    end: e
                }
            }

            function yt(t) {
                var e = t.length,
                    n = new t.constructor(e);
                return e && "string" == typeof t[0] && wn.call(t, "index") && (n.index = t.index, n.input = t.input), n
            }

            function vt(t) {
                var e = t.constructor;
                return "function" == typeof e && e instanceof e || (e = Object), new e
            }

            function bt(t, e, n) {
                var i = t.constructor;
                switch (e) {
                    case Xe:
                        return tt(t);
                    case De:
                    case Be:
                        return new i(+t);
                    case Ve:
                    case He:
                    case ze:
                    case Ye:
                    case qe:
                    case Je:
                    case Ke:
                    case $e:
                    case Ze:
                        i instanceof i && (i = zn[e]);
                        var r = t.buffer;
                        return new i(n ? tt(r) : r, t.byteOffset, t.length);
                    case Ge:
                    case We:
                        return new i(t);
                    case je:
                        var o = new i(t.source, rn.exec(t));
                        o.lastIndex = t.lastIndex
                }
                return o
            }

            function xt(t) {
                return null != t && Mt(ti(t))
            }

            function Tt(t, e) {
                return t = "number" == typeof t || an.test(t) ? +t : -1, e = null == e ? Xn : e, t > -1 && t % 1 == 0 && t < e
            }

            function wt(t, e, n) {
                if (!re(n)) return !1;
                var i = typeof e;
                if ("number" == i ? xt(n) && Tt(e, n.length) : "string" == i && e in n) {
                    var r = n[e];
                    return t === t ? t === r : r !== r
                }
                return !1
            }

            function St(t, e) {
                var n = typeof t;
                return !!("string" == n && tn.test(t) || "number" == n) || !ui(t) && (!Qe.test(t) || null != e && t in Rt(e))
            }

            function Pt(t) {
                var e = ft(t),
                    n = a[e];
                if ("function" != typeof n || !(e in u.prototype)) return !1;
                if (t === n) return !0;
                var i = Qn(n);
                return !!i && t === i[0]
            }

            function Mt(t) {
                return "number" == typeof t && t > -1 && t % 1 == 0 && t <= Xn
            }

            function Ct(t) {
                return t === t && !re(t)
            }

            function Et(t, e) {
                var n = t[1],
                    i = e[1],
                    r = n | i,
                    a = r < Me,
                    s = i == Me && n == Te || i == Me && n == Ce && t[7].length <= e[8] || i == (Me | Ce) && n == Te;
                if (!a && !s) return t;
                i & ve && (t[2] = e[2], r |= n & ve ? 0 : xe);
                var l = e[3];
                if (l) {
                    var u = t[3];
                    t[3] = u ? et(u, l, e[4]) : _(l), t[4] = u ? o(t[3], Ae) : _(e[4])
                }
                return l = e[5], l && (u = t[5], t[5] = u ? nt(u, l, e[6]) : _(l), t[6] = u ? o(t[5], Ae) : _(e[6])), l = e[7], l && (t[7] = _(l)), i & Me && (t[8] = null == t[8] ? e[8] : Fn(t[8], e[8])), null == t[9] && (t[9] = e[9]), t[0] = e[0], t[1] = r, t
            }

            function Ot(t, e) {
                for (var n = t.length, i = Fn(e.length, n), r = _(t); i--;) {
                    var o = e[i];
                    t[i] = Tt(o, n) ? r[o] : ye
                }
                return t
            }

            function It(t) {
                for (var e = ue(t), n = e.length, i = n && t.length, r = !!i && Mt(i) && (ui(t) || ee(t) || se(t)), o = -1, a = []; ++o < n;) {
                    var s = e[o];
                    (r && Tt(s, i) || wn.call(t, s)) && a.push(s)
                }
                return a
            }

            function Rt(t) {
                if (a.support.unindexedChars && se(t)) {
                    for (var e = -1, n = t.length, i = Object(t); ++e < n;) i[e] = t.charAt(e);
                    return i
                }
                return re(t) ? t : Object(t)
            }

            function At(t) {
                if (ui(t)) return t;
                var e = [];
                return n(t).replace(en, function(t, n, i, r) {
                    e.push(i ? r.replace(nn, "$1") : n || t)
                }), e
            }

            function kt(t) {
                return t instanceof u ? t.clone() : new l(t.__wrapped__, t.__chain__, _(t.__actions__))
            }

            function Lt(t, n, i) {
                var r = t ? t.length : 0;
                if (!r) return -1;
                if ("number" == typeof i) i = i < 0 ? Nn(r + i, 0) : i;
                else if (i) {
                    var o = $(t, n);
                    return o < r && (n === n ? n === t[o] : t[o] !== t[o]) ? o : -1
                }
                return e(t, n, i || 0)
            }

            function Dt(t) {
                var e = t ? t.length : 0;
                return e ? t[e - 1] : ye
            }

            function Bt(t) {
                var e = a(t);
                return e.__chain__ = !0, e
            }

            function Nt(t, e, n) {
                return e.call(n, t), t
            }

            function Ft(t, e, n) {
                return e.call(n, t)
            }

            function Gt() {
                return Bt(this)
            }

            function Ut() {
                return new l(this.value(), this.__chain__)
            }

            function jt(t) {
                for (var e, n = this; n instanceof s;) {
                    var i = kt(n);
                    e ? r.__wrapped__ = i : e = i;
                    var r = i;
                    n = n.__wrapped__
                }
                return r.__wrapped__ = t, e
            }

            function Wt() {
                var t = this.__wrapped__,
                    e = function(t) {
                        return t.reverse()
                    };
                if (t instanceof u) {
                    var n = t;
                    return this.__actions__.length && (n = new u(this)), n = n.reverse(), n.__actions__.push({
                        func: Ft,
                        args: [e],
                        thisArg: ye
                    }), new l(n, this.__chain__)
                }
                return this.thru(e)
            }

            function Xt() {
                return this.value() + ""
            }

            function Vt() {
                return K(this.__wrapped__, this.__actions__)
            }

            function Ht(t, e, n) {
                var i = ui(t) ? v : R;
                return e = pt(e, n, 3), i(t, e)
            }

            function zt(t, e, n, i) {
                var r = t ? ti(t) : 0;
                return Mt(r) || (t = he(t), r = t.length), n = "number" != typeof n || i && wt(e, n, i) ? 0 : n < 0 ? Nn(r + n, 0) : n || 0, "string" == typeof t || !ui(t) && se(t) ? n <= r && t.indexOf(e, n) > -1 : !!r && dt(t, e, n) > -1
            }

            function Yt(t, e, n) {
                var i = ui(t) ? b : j;
                return e = pt(e, n, 3), i(t, e)
            }

            function qt(t, e, n) {
                var i = ui(t) ? w : q;
                return n && wt(t, e, n) && (e = ye), "function" == typeof e && n === ye || (e = pt(e, n, 3)), i(t, e)
            }

            function Jt(t, e) {
                if ("function" != typeof e) {
                    if ("function" != typeof t) throw new TypeError(Re);
                    var n = t;
                    t = e, e = n
                }
                return t = Dn(t = +t) ? t : 0,
                    function() {
                        if (--t < 1) return e.apply(this, arguments)
                    }
            }

            function Kt(t, e, n) {
                function i() {
                    f && clearTimeout(f), u && clearTimeout(u), m = 0, u = f = d = ye
                }

                function r(e, n) {
                    n && clearTimeout(n), u = f = d = ye, e && (m = si(), c = t.apply(p, l), f || u || (l = p = ye))
                }

                function o() {
                    var t = e - (si() - h);
                    t <= 0 || t > e ? r(d, u) : f = setTimeout(o, t)
                }

                function a() {
                    r(_, f)
                }

                function s() {
                    if (l = arguments, h = si(), p = this, d = _ && (f || !y), !1 === g) var n = y && !f;
                    else {
                        u || y || (m = h);
                        var i = g - (h - m),
                            r = i <= 0 || i > g;
                        r ? (u && (u = clearTimeout(u)), m = h, c = t.apply(p, l)) : u || (u = setTimeout(a, i))
                    }
                    return r && f ? f = clearTimeout(f) : f || e === g || (f = setTimeout(o, e)), n && (r = !0, c = t.apply(p, l)), !r || f || u || (l = p = ye), c
                }
                var l, u, c, h, p, f, d, m = 0,
                    g = !1,
                    _ = !0;
                if ("function" != typeof t) throw new TypeError(Re);
                if (e = e < 0 ? 0 : +e || 0, !0 === n) {
                    var y = !0;
                    _ = !1
                } else re(n) && (y = !!n.leading, g = "maxWait" in n && Nn(+n.maxWait || 0, e), _ = "trailing" in n ? !!n.trailing : _);
                return s.cancel = i, s
            }

            function $t(t, e) {
                if ("function" != typeof t) throw new TypeError(Re);
                return e = Nn(e === ye ? t.length - 1 : +e || 0, 0),
                    function() {
                        for (var n = arguments, i = -1, r = Nn(n.length - e, 0), o = Array(r); ++i < r;) o[i] = n[e + i];
                        switch (e) {
                            case 0:
                                return t.call(this, o);
                            case 1:
                                return t.call(this, n[0], o);
                            case 2:
                                return t.call(this, n[0], n[1], o)
                        }
                        var a = Array(e + 1);
                        for (i = -1; ++i < e;) a[i] = n[i];
                        return a[e] = o, t.apply(this, a)
                    }
            }

            function Zt(t, e, n) {
                var i = !0,
                    r = !0;
                if ("function" != typeof t) throw new TypeError(Re);
                return !1 === n ? i = !1 : re(n) && (i = "leading" in n ? !!n.leading : i, r = "trailing" in n ? !!n.trailing : r), Kt(t, e, {
                    leading: i,
                    maxWait: +e,
                    trailing: r
                })
            }

            function Qt(t, e, n, i) {
                return e && "boolean" != typeof e && wt(t, e, n) ? e = !1 : "function" == typeof e && (i = n, n = e, e = !1), "function" == typeof n ? O(t, e, Q(n, i, 3)) : O(t, e)
            }

            function te(t, e, n) {
                return "function" == typeof e ? O(t, !0, Q(e, n, 3)) : O(t, !0)
            }

            function ee(t) {
                return r(t) && xt(t) && wn.call(t, "callee") && !Cn.call(t, "callee")
            }

            function ne(t, e, n, i) {
                n = "function" == typeof n ? Q(n, i, 3) : ye;
                var r = n ? n(t, e) : ye;
                return r === ye ? F(t, e, n) : !!r
            }

            function ie(t) {
                return re(t) && Sn.call(t) == Fe
            }

            function re(t) {
                var e = typeof t;
                return !!t && ("object" == e || "function" == e)
            }

            function oe(t) {
                return null != t && (ie(t) ? Pn.test(Tn.call(t)) : r(t) && (_n(t) ? Pn : on).test(t))
            }

            function ae(t) {
                var e;
                if (!r(t) || Sn.call(t) != Ue || _n(t) || ee(t) || !wn.call(t, "constructor") && "function" == typeof(e = t.constructor) && !(e instanceof e)) return !1;
                var n;
                return a.support.ownLast ? (L(t, function(t, e, i) {
                    return n = wn.call(i, e), !1
                }), !1 !== n) : (L(t, function(t, e) {
                    n = e
                }), n === ye || wn.call(t, n))
            }

            function se(t) {
                return "string" == typeof t || r(t) && Sn.call(t) == We
            }

            function le(t) {
                return r(t) && Mt(t.length) && !!ln[Sn.call(t)]
            }

            function ue(t) {
                if (null == t) return [];
                re(t) || (t = Object(t));
                var e = t.length,
                    n = a.support;
                e = e && Mt(e) && (ui(t) || ee(t) || se(t)) && e || 0;
                for (var i = t.constructor, r = -1, o = ie(i) && i.prototype || bn, s = o === t, l = Array(e), u = e > 0, c = n.enumErrorProps && (t === vn || t instanceof Error), h = n.enumPrototypes && ie(t); ++r < e;) l[r] = r + "";
                for (var p in t) h && "prototype" == p || c && ("message" == p || "name" == p) || u && Tt(p, e) || "constructor" == p && (s || !wn.call(t, p)) || l.push(p);
                if (n.nonEnumShadows && t !== bn) {
                    var f = t === xn ? We : t === vn ? Ne : Sn.call(t),
                        d = Yn[f] || Yn[Ue];
                    for (f == Ue && (o = bn), e = sn.length; e--;) {
                        p = sn[e];
                        var m = d[p];
                        s && m || (m ? !wn.call(t, p) : t[p] === o[p]) || l.push(p)
                    }
                }
                return l
            }

            function ce(t) {
                t = Rt(t);
                for (var e = -1, n = pi(t), i = n.length, r = Array(i); ++e < i;) {
                    var o = n[e];
                    r[e] = [o, t[o]]
                }
                return r
            }

            function he(t) {
                return J(t, pi(t))
            }

            function pe(t, e, n) {
                return n && wt(t, e, n) && (e = ye), r(t) ? de(t) : E(t, e)
            }

            function fe(t) {
                return t
            }

            function de(t) {
                return W(O(t, !0))
            }

            function me(t, e, n) {
                if (null == n) {
                    var i = re(e),
                        r = i ? pi(e) : ye,
                        o = r && r.length ? B(e, r) : ye;
                    (o ? o.length : i) || (o = !1, n = e, e = t, t = this)
                }
                o || (o = B(e, pi(e)));
                var a = !0,
                    s = -1,
                    l = ie(t),
                    u = o.length;
                !1 === n ? a = !1 : re(n) && "chain" in n && (a = n.chain);
                for (; ++s < u;) {
                    var c = o[s],
                        h = e[c];
                    t[c] = h, l && (t.prototype[c] = function(e) {
                        return function() {
                            var n = this.__chain__;
                            if (a || n) {
                                var i = t(this.__wrapped__);
                                return (i.__actions__ = _(this.__actions__)).push({
                                    func: e,
                                    args: arguments,
                                    thisArg: t
                                }), i.__chain__ = n, i
                            }
                            return e.apply(t, x([this.value()], arguments))
                        }
                    }(h))
                }
                return t
            }

            function ge() {}

            function _e(t) {
                return St(t) ? V(t) : H(t)
            }
            var ye, ve = 1,
                be = 2,
                xe = 4,
                Te = 8,
                we = 16,
                Se = 32,
                Pe = 64,
                Me = 128,
                Ce = 256,
                Ee = 200,
                Oe = 1,
                Ie = 2,
                Re = "Expected a function",
                Ae = "__lodash_placeholder__",
                ke = "[object Arguments]",
                Le = "[object Array]",
                De = "[object Boolean]",
                Be = "[object Date]",
                Ne = "[object Error]",
                Fe = "[object Function]",
                Ge = "[object Number]",
                Ue = "[object Object]",
                je = "[object RegExp]",
                We = "[object String]",
                Xe = "[object ArrayBuffer]",
                Ve = "[object Float32Array]",
                He = "[object Float64Array]",
                ze = "[object Int8Array]",
                Ye = "[object Int16Array]",
                qe = "[object Int32Array]",
                Je = "[object Uint8Array]",
                Ke = "[object Uint8ClampedArray]",
                $e = "[object Uint16Array]",
                Ze = "[object Uint32Array]",
                Qe = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,
                tn = /^\w*$/,
                en = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,
                nn = /\\(\\)?/g,
                rn = /\w*$/,
                on = /^\[object .+?Constructor\]$/,
                an = /^\d+$/,
                sn = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"],
                ln = {};
            ln[Ve] = ln[He] = ln[ze] = ln[Ye] = ln[qe] = ln[Je] = ln[Ke] = ln[$e] = ln[Ze] = !0, ln[ke] = ln[Le] = ln[Xe] = ln[De] = ln[Be] = ln[Ne] = ln[Fe] = ln["[object Map]"] = ln[Ge] = ln[Ue] = ln[je] = ln["[object Set]"] = ln[We] = ln["[object WeakMap]"] = !1;
            var un = {};
            un[ke] = un[Le] = un[Xe] = un[De] = un[Be] = un[Ve] = un[He] = un[ze] = un[Ye] = un[qe] = un[Ge] = un[Ue] = un[je] = un[We] = un[Je] = un[Ke] = un[$e] = un[Ze] = !0, un[Ne] = un[Fe] = un["[object Map]"] = un["[object Set]"] = un["[object WeakMap]"] = !1;
            var cn = {
                    function: !0,
                    object: !0
                },
                hn = cn[typeof exports] && exports && !exports.nodeType && exports,
                pn = cn[typeof module] && module && !module.nodeType && module,
                fn = hn && pn && "object" == typeof global && global && global.Object && global,
                dn = cn[typeof self] && self && self.Object && self,
                mn = cn[typeof window] && window && window.Object && window,
                gn = fn || mn !== (this && this.window) && mn || dn || this,
                _n = function() {
                    try {
                        Object({
                            toString: 0
                        } + "")
                    } catch (t) {
                        return function() {
                            return !1
                        }
                    }
                    return function(t) {
                        return "function" != typeof t.toString && "string" == typeof(t + "")
                    }
                }(),
                yn = Array.prototype,
                vn = Error.prototype,
                bn = Object.prototype,
                xn = String.prototype,
                Tn = Function.prototype.toString,
                wn = bn.hasOwnProperty,
                Sn = bn.toString,
                Pn = RegExp("^" + Tn.call(wn).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"),
                Mn = gn.ArrayBuffer,
                Cn = bn.propertyIsEnumerable,
                En = gt(gn, "Set"),
                On = yn.splice,
                In = gn.Uint8Array,
                Rn = gt(gn, "WeakMap"),
                An = gt(Object, "create"),
                kn = Math.floor,
                Ln = gt(Array, "isArray"),
                Dn = gn.isFinite,
                Bn = gt(Object, "keys"),
                Nn = Math.max,
                Fn = Math.min,
                Gn = gt(Date, "now"),
                Un = Number.POSITIVE_INFINITY,
                jn = 4294967294,
                Wn = 2147483647,
                Xn = 9007199254740991,
                Vn = Rn && new Rn,
                Hn = {},
                zn = {};
            zn[Ve] = gn.Float32Array, zn[He] = gn.Float64Array, zn[ze] = gn.Int8Array, zn[Ye] = gn.Int16Array, zn[qe] = gn.Int32Array, zn[Je] = In, zn[Ke] = gn.Uint8ClampedArray, zn[$e] = gn.Uint16Array, zn[Ze] = gn.Uint32Array;
            var Yn = {};
            Yn[Le] = Yn[Be] = Yn[Ge] = {
                constructor: !0,
                toLocaleString: !0,
                toString: !0,
                valueOf: !0
            }, Yn[De] = Yn[We] = {
                constructor: !0,
                toString: !0,
                valueOf: !0
            }, Yn[Ne] = Yn[Fe] = Yn[je] = {
                constructor: !0,
                toString: !0
            }, Yn[Ue] = {
                constructor: !0
            }, y(sn, function(t) {
                for (var e in Yn)
                    if (wn.call(Yn, e)) {
                        var n = Yn[e];
                        n[t] = wn.call(n, t)
                    }
            });
            var qn = a.support = {};
            ! function(t) {
                var e = function() {
                        this.x = 1
                    },
                    n = {
                        0: 1,
                        length: 1
                    },
                    i = [];
                e.prototype = {
                    valueOf: 1,
                    y: 1
                };
                for (var r in new e) i.push(r);
                qn.enumErrorProps = Cn.call(vn, "message") || Cn.call(vn, "name"), qn.enumPrototypes = Cn.call(e, "prototype"), qn.nonEnumShadows = !/valueOf/.test(i), qn.ownLast = "x" != i[0], qn.spliceObjects = (On.call(n, 0, 1), !n[0]), qn.unindexedChars = "x" [0] + Object("x")[0] != "xx"
            }();
            var Jn = function() {
                    function t() {}
                    return function(e) {
                        if (re(e)) {
                            t.prototype = e;
                            var n = new t;
                            t.prototype = ye
                        }
                        return n || {}
                    }
                }(),
                Kn = function(t, e) {
                    return function(n, i) {
                        var r = n ? ti(n) : 0;
                        if (!Mt(r)) return t(n, i);
                        for (var o = e ? r : -1, a = Rt(n);
                            (e ? o-- : ++o < r) && !1 !== i(a[o], o, a););
                        return n
                    }
                }(D),
                $n = function(t) {
                    return function(e, n, i) {
                        for (var r = Rt(e), o = i(e), a = o.length, s = t ? a : -1; t ? s-- : ++s < a;) {
                            var l = o[s];
                            if (!1 === n(r[l], l, r)) break
                        }
                        return e
                    }
                }(),
                Zn = Vn ? function(t, e) {
                    return Vn.set(t, e), t
                } : fe,
                Qn = Vn ? function(t) {
                    return Vn.get(t)
                } : ge,
                ti = V("length"),
                ei = function() {
                    var t = 0,
                        e = 0;
                    return function(n, i) {
                        var r = si(),
                            o = 16 - (r - e);
                        if (e = r, o > 0) {
                            if (++t >= 150) return n
                        } else t = 0;
                        return Zn(n, i)
                    }
                }(),
                ni = $t(function(t, e) {
                    return xt(t) ? I(t, e) : []
                }),
                ii = $t(function(t) {
                    return t = k(t), this.thru(function(e) {
                        return g(ui(e) ? e : [Rt(e)], t)
                    })
                }),
                ri = function(e, n) {
                    return function(i, r, o) {
                        if (r = pt(r, o, 3), ui(i)) {
                            var a = t(i, r, n);
                            return a > -1 ? i[a] : ye
                        }
                        return A(i, r, e)
                    }
                }(Kn),
                oi = function(t, e) {
                    return function(n, i, r) {
                        return "function" == typeof i && r === ye && ui(n) ? t(n, i) : e(n, Q(i, r, 3))
                    }
                }(y, Kn),
                ai = function(t, e) {
                    return function(n, i, r, o) {
                        var a = arguments.length < 3;
                        return "function" == typeof i && o === ye && ui(n) ? t(n, i, r, a) : z(n, pt(i, o, 4), r, a, e)
                    }
                }(T, Kn),
                si = Gn || function() {
                    return (new Date).getTime()
                },
                li = $t(function(t, e, n) {
                    var i = ve;
                    if (n.length) {
                        var r = o(n, li.placeholder);
                        i |= Se
                    }
                    return lt(t, i, e, n, r)
                }),
                ui = Ln || function(t) {
                    return r(t) && Mt(t.length) && Sn.call(t) == Le
                },
                ci = function(t) {
                    return $t(function(e, n) {
                        var i = -1,
                            r = null == e ? 0 : n.length,
                            o = r > 2 ? n[r - 2] : ye,
                            a = r > 2 ? n[2] : ye,
                            s = r > 1 ? n[r - 1] : ye;
                        for ("function" == typeof o ? (o = Q(o, s, 5), r -= 2) : (o = "function" == typeof s ? s : ye, r -= o ? 1 : 0), a && wt(n[0], n[1], a) && (o = r < 3 ? ye : o, r = 1); ++i < r;) {
                            var l = n[i];
                            l && t(e, l, o)
                        }
                        return e
                    })
                }(function(t, e, n) {
                    return n ? P(t, e, n) : M(t, e)
                }),
                hi = function(t, e) {
                    return $t(function(n) {
                        var i = n[0];
                        return null == i ? i : (n.push(e), t.apply(ye, n))
                    })
                }(ci, S),
                pi = Bn ? function(t) {
                    var e = null == t ? ye : t.constructor;
                    return "function" == typeof e && e.prototype === t || ("function" == typeof t ? a.support.enumPrototypes : xt(t)) ? It(t) : re(t) ? Bn(t) : []
                } : It;
            a.prototype = s.prototype, l.prototype = Jn(s.prototype), l.prototype.constructor = l, u.prototype = Jn(s.prototype), u.prototype.constructor = u, f.prototype.push = m, a.after = Jt, a.assign = ci, a.bind = li, a.callback = pe, a.chain = Bt, a.debounce = Kt, a.defaults = hi, a.filter = Ht, a.forEach = oi, a.keys = pi, a.keysIn = ue, a.map = Yt, a.matches = de, a.mixin = me, a.pairs = ce, a.property = _e, a.restParam = $t, a.tap = Nt, a.throttle = Zt, a.thru = Ft, a.values = he, a.without = ni, a.collect = Yt, a.each = oi, a.extend = ci, a.iteratee = pe, a.select = Ht, me(a, a), a.clone = Qt, a.cloneDeep = te, a.find = ri, a.identity = fe, a.includes = zt, a.indexOf = Lt, a.isArguments = ee, a.isArray = ui, a.isEqual = ne, a.isFunction = ie, a.isNative = oe, a.isObject = re, a.isPlainObject = ae, a.isString = se, a.isTypedArray = le, a.last = Dt, a.noop = ge, a.now = si, a.reduce = ai, a.some = qt, a.any = qt, a.contains = zt, a.eq = ne, a.detect = ri, a.foldl = ai, a.include = zt, a.inject = ai, me(a, function() {
                var t = {};
                return D(a, function(e, n) {
                    a.prototype[n] || (t[n] = e)
                }), t
            }(), !1), a.prototype.sample = function(t) {
                return this.__chain__ || null != t ? this.thru(function(e) {
                    return sample(e, t)
                }) : sample(this.value())
            }, a.VERSION = "3.10.1", li.placeholder = a, y(["drop", "take"], function(t, e) {
                u.prototype[t] = function(n) {
                    var i = this.__filtered__;
                    if (i && !e) return new u(this);
                    n = null == n ? 1 : Nn(kn(n) || 0, 0);
                    var r = this.clone();
                    return i ? r.__takeCount__ = Fn(r.__takeCount__, n) : r.__views__.push({
                        size: n,
                        type: t + (r.__dir__ < 0 ? "Right" : "")
                    }), r
                }, u.prototype[t + "Right"] = function(e) {
                    return this.reverse()[t](e).reverse()
                }
            }), y(["filter", "map", "takeWhile"], function(t, e) {
                var n = e + 1,
                    i = n != Ie;
                u.prototype[t] = function(t, e) {
                    var r = this.clone();
                    return r.__iteratees__.push({
                        iteratee: pt(t, e, 1),
                        type: n
                    }), r.__filtered__ = r.__filtered__ || i, r
                }
            }), y(["first", "last"], function(t, e) {
                var n = "take" + (e ? "Right" : "");
                u.prototype[t] = function() {
                    return this[n](1).value()[0]
                }
            }), y(["initial", "rest"], function(t, e) {
                var n = "drop" + (e ? "" : "Right");
                u.prototype[t] = function() {
                    return this.__filtered__ ? new u(this) : this[n](1)
                }
            }), y(["pluck", "where"], function(t, e) {
                var n = e ? "filter" : "map",
                    i = e ? W : _e;
                u.prototype[t] = function(t) {
                    return this[n](i(t))
                }
            }), u.prototype.compact = function() {
                return this.filter(fe)
            }, u.prototype.reject = function(t, e) {
                return t = pt(t, e, 1), this.filter(function(e) {
                    return !t(e)
                })
            }, u.prototype.slice = function(t, e) {
                t = null == t ? 0 : +t || 0;
                var n = this;
                return n.__filtered__ && (t > 0 || e < 0) ? new u(n) : (t < 0 ? n = n.takeRight(-t) : t && (n = n.drop(t)), e !== ye && (e = +e || 0, n = e < 0 ? n.dropRight(-e) : n.take(e - t)), n)
            }, u.prototype.takeRightWhile = function(t, e) {
                return this.reverse().takeWhile(t, e).reverse()
            }, u.prototype.toArray = function() {
                return this.take(Un)
            }, D(u.prototype, function(t, e) {
                var n = /^(?:filter|map|reject)|While$/.test(e),
                    i = /^(?:first|last)$/.test(e),
                    r = a[i ? "take" + ("last" == e ? "Right" : "") : e];
                r && (a.prototype[e] = function() {
                    var e = i ? [1] : arguments,
                        o = this.__chain__,
                        a = this.__wrapped__,
                        s = !!this.__actions__.length,
                        c = a instanceof u,
                        h = e[0],
                        p = c || ui(a);
                    p && n && "function" == typeof h && 1 != h.length && (c = p = !1);
                    var f = function(t) {
                            return i && o ? r(t, 1)[0] : r.apply(ye, x([t], e))
                        },
                        d = {
                            func: Ft,
                            args: [f],
                            thisArg: ye
                        },
                        m = c && !s;
                    if (i && !o) return m ? (a = a.clone(), a.__actions__.push(d), t.call(a)) : r.call(ye, this.value())[0];
                    if (!i && p) {
                        a = m ? a : new u(this);
                        var g = t.apply(a, e);
                        return g.__actions__.push(d), new l(g, o)
                    }
                    return this.thru(f)
                })
            }), y(["join", "pop", "push", "replace", "shift", "sort", "splice", "split", "unshift"], function(t) {
                var e = (/^(?:replace|split)$/.test(t) ? xn : yn)[t],
                    n = /^(?:push|sort|unshift)$/.test(t) ? "tap" : "thru",
                    i = !qn.spliceObjects && /^(?:pop|shift|splice)$/.test(t),
                    r = /^(?:join|pop|replace|shift)$/.test(t),
                    o = i ? function() {
                        var t = e.apply(this, arguments);
                        return 0 === this.length && delete this[0], t
                    } : e;
                a.prototype[t] = function() {
                    var t = arguments;
                    return r && !this.__chain__ ? o.apply(this.value(), t) : this[n](function(e) {
                        return o.apply(e, t)
                    })
                }
            }), D(u.prototype, function(t, e) {
                var n = a[e];
                if (n) {
                    var i = n.name + "";
                    (Hn[i] || (Hn[i] = [])).push({
                        name: e,
                        func: n
                    })
                }
            }), Hn[at(ye, be).name] = [{
                name: "wrapper",
                func: ye
            }], u.prototype.clone = c, u.prototype.reverse = h, u.prototype.value = p, a.prototype.chain = Gt, a.prototype.commit = Ut, a.prototype.concat = ii, a.prototype.plant = jt, a.prototype.reverse = Wt, a.prototype.toString = Xt, a.prototype.run = a.prototype.toJSON = a.prototype.valueOf = a.prototype.value = Vt, a.prototype.collect = a.prototype.map, a.prototype.head = a.prototype.first, a.prototype.select = a.prototype.filter, a.prototype.tail = a.prototype.rest, "function" == typeof define && "object" == typeof define.amd && define.amd && define("lodash", [], function() {
                return a
            })
        }.call(this),
        function(t, e) {
            "function" == typeof define && define.amd ? define("postal", ["lodash"], function(n) {
                return e(n, t)
            }) : "object" == typeof module && module.exports ? module.exports = e(require("lodash"), this) : t.postal = e(t._, t)
        }(this, function(t, e, n) {
            function i() {
                for (; x.length;) c.unsubscribe(x.shift())
            }

            function r(t, e, n) {
                return function(i, r, o) {
                    i === t && o.splice(r, 1), 0 === o.length && delete n[e]
                }
            }

            function o(t, e, n, i, r) {
                var o = r && r.headers || {};
                return function(r) {
                    var a;
                    h.resolver.compare(r.topic, t, o) && (o.resolverNoCache || (a = e[n] = e[n] || [], a.push(r)), r.cacheKeys.push(n), i && i(r))
                }
            }

            function a(t, e) {
                return {
                    channel: h.SYSTEM_CHANNEL,
                    topic: "subscription." + t,
                    data: {
                        event: "subscription." + t,
                        channel: e.channel,
                        topic: e.topic
                    }
                }
            }

            function s(e, n) {
                return "function" == typeof e ? e : e ? function(i) {
                    var r = 0,
                        o = 0;
                    return t.each(e, function(t, a) {
                        r += 1, ("topic" === a && n.compare(i.topic, e.topic, {
                            resolverNoCache: !0
                        }) || "context" === a && e.context === i._context || i[a] === e[a]) && (o += 1)
                    }), r === o
                } : function() {
                    return !0
                }
            }
            var l = e.postal,
                u = {
                    DEFAULT_CHANNEL: "/",
                    SYSTEM_CHANNEL: "postal",
                    enableSystemMessages: !0,
                    cacheKeyDelimiter: "|",
                    autoCompactResolver: !1
                },
                c = {
                    configuration: t.extend({}, u)
                },
                h = c.configuration,
                p = function(t, e) {
                    this.bus = e, this.channel = t || h.DEFAULT_CHANNEL
                };
            p.prototype.subscribe = function() {
                return this.bus.subscribe({
                    channel: this.channel,
                    topic: 1 === arguments.length ? arguments[0].topic : arguments[0],
                    callback: 1 === arguments.length ? arguments[0].callback : arguments[1]
                })
            }, p.prototype.publish = function() {
                var t, e = {};
                if ("string" == typeof arguments[0] ? (e.topic = arguments[0], e.data = arguments[1], t = arguments[2]) : (e = arguments[0], t = arguments[1]), "object" != typeof e) throw new Error("The first argument to ChannelDefinition.publish should be either an envelope object or a string topic.");
                e.channel = this.channel, this.bus.publish(e, t)
            };
            var f = function(t, e, i) {
                    if (3 !== arguments.length) throw new Error("You must provide a channel, topic and callback when creating a SubscriptionDefinition instance.");
                    if (0 === e.length) throw new Error("Topics cannot be empty");
                    this.channel = t, this.topic = e, this.callback = i, this.pipeline = [], this.cacheKeys = [], this._context = n
                },
                d = function() {
                    var e;
                    return function(n) {
                        var i = !1;
                        return "string" == typeof n ? (i = n === e, e = n) : (i = t.isEqual(n, e), e = t.extend({}, n)), !i
                    }
                },
                m = function() {
                    var e = [];
                    return function(n) {
                        var i = !t.any(e, function(e) {
                            return t.isEqual(n, e)
                        });
                        return i && e.push(n), i
                    }
                };
            f.prototype = {
                catch: function(t) {
                    var e = this.callback,
                        n = function() {
                            try {
                                e.apply(this, arguments)
                            } catch (e) {
                                t(e, arguments[0])
                            }
                        };
                    return this.callback = n, this
                },
                defer: function() {
                    return this.delay(0)
                },
                disposeAfter: function(e) {
                    if ("number" != typeof e || e <= 0) throw new Error("The value provided to disposeAfter (maxCalls) must be a number greater than zero.");
                    var n = this,
                        i = t.after(e, t.bind(function() {
                            n.unsubscribe()
                        }));
                    return n.pipeline.push(function(t, e, n) {
                        n(t, e), i()
                    }), n
                },
                distinct: function() {
                    return this.constraint(new m)
                },
                distinctUntilChanged: function() {
                    return this.constraint(new d)
                },
                invokeSubscriber: function(t, e) {
                    if (!this.inactive) {
                        var n = this,
                            i = n.pipeline,
                            r = i.length,
                            o = n._context,
                            a = -1,
                            s = !1;
                        if (r) {
                            i = i.concat([n.callback]);
                            ! function t(e, l) {
                                a += 1, a < r ? i[a].call(o, e, l, t) : (n.callback.call(o, e, l), s = !0)
                            }(t, e)
                        } else n.callback.call(o, t, e), s = !0;
                        return s
                    }
                },
                logError: function() {
                    if (console) {
                        var t;
                        t = console.warn ? console.warn : console.log, this.catch(t)
                    }
                    return this
                },
                once: function() {
                    return this.disposeAfter(1)
                },
                subscribe: function(t) {
                    return this.callback = t, this
                },
                unsubscribe: function() {
                    this.inactive || c.unsubscribe(this)
                },
                constraint: function(t) {
                    if ("function" != typeof t) throw new Error("Predicate constraint must be a function");
                    return this.pipeline.push(function(e, n, i) {
                        t.call(this, e, n) && i(e, n)
                    }), this
                },
                constraints: function(e) {
                    var n = this;
                    return t.each(e, function(t) {
                        n.constraint(t)
                    }), n
                },
                context: function(t) {
                    return this._context = t, this
                },
                debounce: function(e, n) {
                    if ("number" != typeof e) throw new Error("Milliseconds must be a number");
                    return this.pipeline.push(t.debounce(function(t, e, n) {
                        n(t, e)
                    }, e, !!n)), this
                },
                delay: function(t) {
                    if ("number" != typeof t) throw new Error("Milliseconds must be a number");
                    return this.pipeline.push(function(e, n, i) {
                        setTimeout(function() {
                            i(e, n)
                        }, t)
                    }), this
                },
                throttle: function(e) {
                    if ("number" != typeof e) throw new Error("Milliseconds must be a number");
                    var n = function(t, e, n) {
                        n(t, e)
                    };
                    return this.pipeline.push(t.throttle(n, e)), this
                }
            };
            for (var g = ["withConstraint", "withConstraints", "withContext", "withDebounce", "withDelay", "withThrottle"], _ = ["constraint", "constraints", "context", "debounce", "delay", "throttle"], y = 0; y < 6; y++) {
                var v = g[y];
                f.prototype[v] = function(t, e) {
                    return function() {
                        if (console.warn || console.log) {
                            console.warn
                        }
                        return f.prototype[e].apply(this, arguments)
                    }
                }(v, _[y])
            }
            var b = (h.resolver = {
                    cache: {},
                    regex: {},
                    enableCache: !0,
                    compare: function(e, n, i) {
                        var r, o, a, s = n + h.cacheKeyDelimiter + e,
                            l = this.cache[s],
                            u = i || {},
                            c = this.enableCache && !u.resolverNoCache;
                        return !0 === l ? l : -1 === e.indexOf("#") && -1 === e.indexOf("*") ? (l = n === e, c && (this.cache[s] = l), l) : ((o = this.regex[e]) || (r = "^" + t.map(e.split("."), function(t) {
                            var e = "";
                            return a && (e = "#" !== a ? "\\.\\b" : "\\b"), e += "#" === t ? "[\\s\\S]*" : "*" === t ? "[^.]+" : t, a = t, e
                        }).join("") + "$", o = this.regex[e] = new RegExp(r)), l = o.test(n), c && (this.cache[s] = l), l)
                    },
                    reset: function() {
                        this.cache = {}, this.regex = {}
                    },
                    purge: function(e) {
                        var n = this,
                            i = h.cacheKeyDelimiter,
                            r = function(t, r) {
                                var o = r.split(i),
                                    a = o[0],
                                    s = o[1];
                                void 0 !== e.topic && e.topic !== a || void 0 !== e.binding && e.binding !== s || delete n.cache[r]
                            },
                            o = function(t, e) {
                                var r = e.split(i);
                                0 === c.getSubscribersFor({
                                    topic: r[0]
                                }).length && delete n.cache[e]
                            };
                        if (void 0 === e) this.reset();
                        else {
                            var a = !0 === e.compact ? o : r;
                            t.each(this.cache, a)
                        }
                    }
                }, 0),
                x = [],
                T = 0,
                w = t.bind(a, this, "created"),
                S = t.bind(a, this, "removed");
            if (t.extend(c, {
                    cache: {},
                    subscriptions: {},
                    wireTaps: [],
                    ChannelDefinition: p,
                    SubscriptionDefinition: f,
                    channel: function(t) {
                        return new p(t, this)
                    },
                    addWireTap: function(t) {
                        var e = this;
                        return e.wireTaps.push(t),
                            function() {
                                var n = e.wireTaps.indexOf(t); - 1 !== n && e.wireTaps.splice(n, 1)
                            }
                    },
                    noConflict: function() {
                        if ("undefined" == typeof window || "undefined" != typeof window && "function" == typeof define && define.amd) throw new Error("noConflict can only be used in browser clients which aren't using AMD modules");
                        return e.postal = l, this
                    },
                    getSubscribersFor: function(e) {
                        var n = [],
                            i = this;
                        return t.each(i.subscriptions, function(i) {
                            t.each(i, function(i) {
                                n = n.concat(t.filter(i, s(e, h.resolver)))
                            })
                        }), n
                    },
                    publish: function(e, n) {
                        ++b;
                        var r = e.channel = e.channel || h.DEFAULT_CHANNEL,
                            a = e.topic;
                        e.timeStamp = new Date, this.wireTaps.length && t.each(this.wireTaps, function(t) {
                            t(e.data, e, b)
                        });
                        var s = r + h.cacheKeyDelimiter + a,
                            l = this.cache[s],
                            u = 0,
                            c = 0;
                        if (l) t.each(l, function(t) {
                            t.invokeSubscriber(e.data, e) ? c++ : u++
                        });
                        else {
                            var p = o(a, this.cache, s, function(t) {
                                t.invokeSubscriber(e.data, e) ? c++ : u++
                            }, e);
                            t.each(this.subscriptions[r], function(e) {
                                t.each(e, p)
                            })
                        }
                        0 == --b && i(), n && n({
                            activated: c,
                            skipped: u
                        })
                    },
                    reset: function() {
                        this.unsubscribeFor(), h.resolver.reset(), this.subscriptions = {}, this.cache = {}
                    },
                    subscribe: function(e) {
                        var n, i = this.subscriptions,
                            r = new f(e.channel || h.DEFAULT_CHANNEL, e.topic, e.callback),
                            a = i[r.channel],
                            s = r.channel.length;
                        return a || (a = i[r.channel] = {}), n = i[r.channel][r.topic], n || (n = i[r.channel][r.topic] = []), n.push(r), t.each(t.keys(this.cache), function(t) {
                            t.substr(0, s) === r.channel && o(t.split(h.cacheKeyDelimiter)[1], this.cache, t)(r)
                        }, this), h.enableSystemMessages && this.publish(w(r)), r
                    },
                    unsubscribe: function() {
                        for (var e, n, i, o, a = arguments.length, s = 0; s < a; s++) {
                            if (e = arguments[s], e.inactive = !0, b) return void x.push(e);
                            if (n = this.subscriptions[e.channel], i = n && n[e.topic]) {
                                var l = i.length;
                                for (o = 0; o < l;) {
                                    if (i[o] === e) {
                                        i.splice(o, 1);
                                        break
                                    }
                                    o += 1
                                }
                                if (0 === i.length && (delete n[e.topic], t.keys(n).length || delete this.subscriptions[e.channel]), e.cacheKeys && e.cacheKeys.length)
                                    for (var u; u = e.cacheKeys.pop();) t.each(this.cache[u], r(e, u, this.cache));
                                if ("function" == typeof h.resolver.purge) {
                                    var c = !0 === h.autoCompactResolver ? 0 : "number" == typeof h.autoCompactResolver && h.autoCompactResolver - 1;
                                    c >= 0 && T === c ? (h.resolver.purge({
                                        compact: !0
                                    }), T = 0) : c >= 0 && T < c && (T += 1)
                                }
                            }
                            h.enableSystemMessages && this.publish(S(e))
                        }
                    },
                    unsubscribeFor: function(t) {
                        var e = [];
                        this.subscriptions && (e = this.getSubscribersFor(t), this.unsubscribe.apply(this, e))
                    }
                }), e && Object.prototype.hasOwnProperty.call(e, "__postalReady__") && t.isArray(e.__postalReady__))
                for (; e.__postalReady__.length;) e.__postalReady__.shift().onReady(c);
            return c
        }),
        function(t) {
            "use strict";
            if ("function" == typeof bootstrap) bootstrap("promise", t);
            else if ("object" == typeof exports && "object" == typeof module) module.exports = t();
            else if ("function" == typeof define && define.amd) define("promise", t);
            else if ("undefined" != typeof ses) {
                if (!ses.ok()) return;
                ses.makeQ = t
            } else {
                if ("undefined" == typeof window && "undefined" == typeof self) throw new Error("This environment was not anticipated by Q. Please file a bug.");
                var e = "undefined" != typeof window ? window : self,
                    n = e.Q;
                e.Q = t(), e.Q.noConflict = function() {
                    return e.Q = n, this
                }
            }
        }(function() {
            "use strict";

            function t(t) {
                return function() {
                    return z.apply(t, arguments)
                }
            }

            function e(t) {
                return t === Object(t)
            }

            function n(t) {
                return "[object StopIteration]" === tt(t) || t instanceof W
            }

            function i(t, e) {
                if (U && e.stack && "object" == typeof t && null !== t && t.stack && -1 === t.stack.indexOf(et)) {
                    for (var n = [], i = e; i; i = i.source) i.stack && n.unshift(i.stack);
                    n.unshift(t.stack);
                    var o = n.join("\n" + et + "\n");
                    t.stack = r(o)
                }
            }

            function r(t) {
                for (var e = t.split("\n"), n = [], i = 0; i < e.length; ++i) {
                    var r = e[i];
                    s(r) || o(r) || !r || n.push(r)
                }
                return n.join("\n")
            }

            function o(t) {
                return -1 !== t.indexOf("(module.js:") || -1 !== t.indexOf("(node.js:")
            }

            function a(t) {
                var e = /at .+ \((.+):(\d+):(?:\d+)\)$/.exec(t);
                if (e) return [e[1], Number(e[2])];
                var n = /at ([^ ]+):(\d+):(?:\d+)$/.exec(t);
                if (n) return [n[1], Number(n[2])];
                var i = /.*@(.+):(\d+)$/.exec(t);
                return i ? [i[1], Number(i[2])] : void 0
            }

            function s(t) {
                var e = a(t);
                if (!e) return !1;
                var n = e[0],
                    i = e[1];
                return n === j && i >= X && i <= at
            }

            function l() {
                if (U) try {
                    throw new Error
                } catch (i) {
                    var t = i.stack.split("\n"),
                        e = t[0].indexOf("@") > 0 ? t[1] : t[2],
                        n = a(e);
                    if (!n) return;
                    return j = n[0], n[1]
                }
            }

            function u(t) {
                return t instanceof f ? t : _(t) ? M(t) : P(t)
            }

            function c() {
                function t(t) {
                    e = t, o.source = t, q(n, function(e, n) {
                        u.nextTick(function() {
                            t.promiseDispatch.apply(t, n)
                        })
                    }, void 0), n = void 0, i = void 0
                }
                var e, n = [],
                    i = [],
                    r = $(c.prototype),
                    o = $(f.prototype);
                if (o.promiseDispatch = function(t, r, o) {
                        var a = Y(arguments);
                        n ? (n.push(a), "when" === r && o[1] && i.push(o[1])) : u.nextTick(function() {
                            e.promiseDispatch.apply(e, a)
                        })
                    }, o.valueOf = function() {
                        if (n) return o;
                        var t = m(e);
                        return g(t) && (e = t), t
                    }, o.inspect = function() {
                        return e ? e.inspect() : {
                            state: "pending"
                        }
                    }, u.longStackSupport && U) try {
                    throw new Error
                } catch (t) {
                    o.stack = t.stack.substring(t.stack.indexOf("\n") + 1)
                }
                return r.promise = o, r.resolve = function(n) {
                    e || t(u(n))
                }, r.fulfill = function(n) {
                    e || t(P(n))
                }, r.reject = function(n) {
                    e || t(S(n))
                }, r.notify = function(t) {
                    e || q(i, function(e, n) {
                        u.nextTick(function() {
                            n(t)
                        })
                    }, void 0)
                }, r
            }

            function h(t) {
                if ("function" != typeof t) throw new TypeError("resolver must be a function.");
                var e = c();
                try {
                    t(e.resolve, e.reject, e.notify)
                } catch (t) {
                    e.reject(t)
                }
                return e.promise
            }

            function p(t) {
                return h(function(e, n) {
                    for (var i = 0, r = t.length; i < r; i++) u(t[i]).then(e, n)
                })
            }

            function f(t, e, n) {
                void 0 === e && (e = function(t) {
                    return S(new Error("Promise does not support operation: " + t))
                }), void 0 === n && (n = function() {
                    return {
                        state: "unknown"
                    }
                });
                var i = $(f.prototype);
                if (i.promiseDispatch = function(n, r, o) {
                        var a;
                        try {
                            a = t[r] ? t[r].apply(i, o) : e.call(i, r, o)
                        } catch (t) {
                            a = S(t)
                        }
                        n && n(a)
                    }, i.inspect = n, n) {
                    var r = n();
                    "rejected" === r.state && (i.exception = r.reason), i.valueOf = function() {
                        var t = n();
                        return "pending" === t.state || "rejected" === t.state ? i : t.value
                    }
                }
                return i
            }

            function d(t, e, n, i) {
                return u(t).then(e, n, i)
            }

            function m(t) {
                if (g(t)) {
                    var e = t.inspect();
                    if ("fulfilled" === e.state) return e.value
                }
                return t
            }

            function g(t) {
                return t instanceof f
            }

            function _(t) {
                return e(t) && "function" == typeof t.then
            }

            function y(t) {
                return g(t) && "pending" === t.inspect().state
            }

            function v(t) {
                return !g(t) || "fulfilled" === t.inspect().state
            }

            function b(t) {
                return g(t) && "rejected" === t.inspect().state
            }

            function x() {
                nt.length = 0, it.length = 0, ot || (ot = !0)
            }

            function T(t, e) {
                ot && ("object" == typeof process && "function" == typeof process.emit && u.nextTick.runAfter(function() {
                    -1 !== J(it, t) && (process.emit("unhandledRejection", e, t), rt.push(t))
                }), it.push(t), e && void 0 !== e.stack ? nt.push(e.stack) : nt.push("(no stack) " + e))
            }

            function w(t) {
                if (ot) {
                    var e = J(it, t); - 1 !== e && ("object" == typeof process && "function" == typeof process.emit && u.nextTick.runAfter(function() {
                        var n = J(rt, t); - 1 !== n && (process.emit("rejectionHandled", nt[e], t), rt.splice(n, 1))
                    }), it.splice(e, 1), nt.splice(e, 1))
                }
            }

            function S(t) {
                var e = f({
                    when: function(e) {
                        return e && w(this), e ? e(t) : this
                    }
                }, function() {
                    return this
                }, function() {
                    return {
                        state: "rejected",
                        reason: t
                    }
                });
                return T(e, t), e
            }

            function P(t) {
                return f({
                    when: function() {
                        return t
                    },
                    get: function(e) {
                        return t[e]
                    },
                    set: function(e, n) {
                        t[e] = n
                    },
                    delete: function(e) {
                        delete t[e]
                    },
                    post: function(e, n) {
                        return null === e || void 0 === e ? t.apply(void 0, n) : t[e].apply(t, n)
                    },
                    apply: function(e, n) {
                        return t.apply(e, n)
                    },
                    keys: function() {
                        return Q(t)
                    }
                }, void 0, function() {
                    return {
                        state: "fulfilled",
                        value: t
                    }
                })
            }

            function M(t) {
                var e = c();
                return u.nextTick(function() {
                    try {
                        t.then(e.resolve, e.reject, e.notify)
                    } catch (t) {
                        e.reject(t)
                    }
                }), e.promise
            }

            function C(t) {
                return f({
                    isDef: function() {}
                }, function(e, n) {
                    return k(t, e, n)
                }, function() {
                    return u(t).inspect()
                })
            }

            function E(t, e, n) {
                return u(t).spread(e, n)
            }

            function O(t) {
                return function() {
                    function e(t, e) {
                        var a;
                        if ("undefined" == typeof StopIteration) {
                            try {
                                a = i[t](e)
                            } catch (t) {
                                return S(t)
                            }
                            return a.done ? u(a.value) : d(a.value, r, o)
                        }
                        try {
                            a = i[t](e)
                        } catch (t) {
                            return n(t) ? u(t.value) : S(t)
                        }
                        return d(a, r, o)
                    }
                    var i = t.apply(this, arguments),
                        r = e.bind(e, "next"),
                        o = e.bind(e, "throw");
                    return r()
                }
            }

            function I(t) {
                u.done(u.async(t)())
            }

            function R(t) {
                throw new W(t)
            }

            function A(t) {
                return function() {
                    return E([this, L(arguments)], function(e, n) {
                        return t.apply(e, n)
                    })
                }
            }

            function k(t, e, n) {
                return u(t).dispatch(e, n)
            }

            function L(t) {
                return d(t, function(t) {
                    var e = 0,
                        n = c();
                    return q(t, function(i, r, o) {
                        var a;
                        g(r) && "fulfilled" === (a = r.inspect()).state ? t[o] = a.value : (++e, d(r, function(i) {
                            t[o] = i, 0 == --e && n.resolve(t)
                        }, n.reject, function(t) {
                            n.notify({
                                index: o,
                                value: t
                            })
                        }))
                    }, void 0), 0 === e && n.resolve(t), n.promise
                })
            }

            function D(t) {
                if (0 === t.length) return u.resolve();
                var e = u.defer(),
                    n = 0;
                return q(t, function(i, r, o) {
                    function a(t) {
                        e.resolve(t)
                    }

                    function s() {
                        0 === --n && e.reject(new Error("Q can't get fulfillment value from any promise, all promises were rejected."))
                    }

                    function l(t) {
                        e.notify({
                            index: o,
                            value: t
                        })
                    }
                    var u = t[o];
                    n++, d(u, a, s, l)
                }, void 0), e.promise
            }

            function B(t) {
                return d(t, function(t) {
                    return t = K(t, u), d(L(K(t, function(t) {
                        return d(t, V, V)
                    })), function() {
                        return t
                    })
                })
            }

            function N(t) {
                return u(t).allSettled()
            }

            function F(t, e) {
                return u(t).then(void 0, void 0, e)
            }

            function G(t, e) {
                return u(t).nodeify(e)
            }
            var U = !1;
            try {
                throw new Error
            } catch (t) {
                U = !!t.stack
            }
            var j, W, X = l(),
                V = function() {},
                H = function() {
                    function t() {
                        for (var t, i; n.next;) n = n.next, t = n.task, n.task = void 0, i = n.domain, i && (n.domain = void 0, i.enter()), e(t, i);
                        for (; s.length;) t = s.pop(), e(t);
                        r = !1
                    }

                    function e(e, n) {
                        try {
                            e()
                        } catch (e) {
                            if (a) throw n && n.exit(), setTimeout(t, 0), n && n.enter(), e;
                            setTimeout(function() {
                                throw e
                            }, 0)
                        }
                        n && n.exit()
                    }
                    var n = {
                            task: void 0,
                            next: null
                        },
                        i = n,
                        r = !1,
                        o = void 0,
                        a = !1,
                        s = [];
                    if (H = function(t) {
                            i = i.next = {
                                task: t,
                                domain: a && process.domain,
                                next: null
                            }, r || (r = !0, o())
                        }, "object" == typeof process && "[object process]" === process.toString() && process.nextTick) a = !0, o = function() {
                        process.nextTick(t)
                    };
                    else if ("function" == typeof setImmediate) o = "undefined" != typeof window ? setImmediate.bind(window, t) : function() {
                        setImmediate(t)
                    };
                    else if ("undefined" != typeof MessageChannel) {
                        var l = new MessageChannel;
                        l.port1.onmessage = function() {
                            o = u, l.port1.onmessage = t, t()
                        };
                        var u = function() {
                            l.port2.postMessage(0)
                        };
                        o = function() {
                            setTimeout(t, 0), u()
                        }
                    } else o = function() {
                        setTimeout(t, 0)
                    };
                    return H.runAfter = function(t) {
                        s.push(t), r || (r = !0, o())
                    }, H
                }(),
                z = Function.call,
                Y = t(Array.prototype.slice),
                q = t(Array.prototype.reduce || function(t, e) {
                    var n = 0,
                        i = this.length;
                    if (1 === arguments.length)
                        for (;;) {
                            if (n in this) {
                                e = this[n++];
                                break
                            }
                            if (++n >= i) throw new TypeError
                        }
                    for (; n < i; n++) n in this && (e = t(e, this[n], n));
                    return e
                }),
                J = t(Array.prototype.indexOf || function(t) {
                    for (var e = 0; e < this.length; e++)
                        if (this[e] === t) return e;
                    return -1
                }),
                K = t(Array.prototype.map || function(t, e) {
                    var n = this,
                        i = [];
                    return q(n, function(r, o, a) {
                        i.push(t.call(e, o, a, n))
                    }, void 0), i
                }),
                $ = Object.create || function(t) {
                    function e() {}
                    return e.prototype = t, new e
                },
                Z = t(Object.prototype.hasOwnProperty),
                Q = Object.keys || function(t) {
                    var e = [];
                    for (var n in t) Z(t, n) && e.push(n);
                    return e
                },
                tt = t(Object.prototype.toString);
            W = "undefined" != typeof ReturnValue ? ReturnValue : function(t) {
                this.value = t
            };
            var et = "From previous event:";
            u.resolve = u, u.nextTick = H, u.longStackSupport = !1, "object" == typeof process && process && process.env && process.env.Q_DEBUG && (u.longStackSupport = !0), u.defer = c, c.prototype.makeNodeResolver = function() {
                var t = this;
                return function(e, n) {
                    e ? t.reject(e) : arguments.length > 2 ? t.resolve(Y(arguments, 1)) : t.resolve(n)
                }
            }, u.Promise = h, u.promise = h, h.race = p, h.all = L, h.reject = S, h.resolve = u, u.passByCopy = function(t) {
                return t
            }, f.prototype.passByCopy = function() {
                return this
            }, u.join = function(t, e) {
                return u(t).join(e)
            }, f.prototype.join = function(t) {
                return u([this, t]).spread(function(t, e) {
                    if (t === e) return t;
                    throw new Error("Q can't join: not the same: " + t + " " + e)
                })
            }, u.race = p, f.prototype.race = function() {
                return this.then(u.race)
            }, u.makePromise = f, f.prototype.toString = function() {
                return "[object Promise]"
            }, f.prototype.then = function(t, e, n) {
                function r(e) {
                    try {
                        return "function" == typeof t ? t(e) : e
                    } catch (t) {
                        return S(t)
                    }
                }

                function o(t) {
                    if ("function" == typeof e) {
                        i(t, s);
                        try {
                            return e(t)
                        } catch (t) {
                            return S(t)
                        }
                    }
                    return S(t)
                }

                function a(t) {
                    return "function" == typeof n ? n(t) : t
                }
                var s = this,
                    l = c(),
                    h = !1;
                return u.nextTick(function() {
                    s.promiseDispatch(function(t) {
                        h || (h = !0, l.resolve(r(t)))
                    }, "when", [function(t) {
                        h || (h = !0, l.resolve(o(t)))
                    }])
                }), s.promiseDispatch(void 0, "when", [void 0, function(t) {
                    var e, n = !1;
                    try {
                        e = a(t)
                    } catch (t) {
                        if (n = !0, !u.onerror) throw t;
                        u.onerror(t)
                    }
                    n || l.notify(e)
                }]), l.promise
            }, u.tap = function(t, e) {
                return u(t).tap(e)
            }, f.prototype.tap = function(t) {
                return t = u(t), this.then(function(e) {
                    return t.fcall(e).thenResolve(e)
                })
            }, u.when = d, f.prototype.thenResolve = function(t) {
                return this.then(function() {
                    return t
                })
            }, u.thenResolve = function(t, e) {
                return u(t).thenResolve(e)
            }, f.prototype.thenReject = function(t) {
                return this.then(function() {
                    throw t
                })
            }, u.thenReject = function(t, e) {
                return u(t).thenReject(e)
            }, u.nearer = m, u.isPromise = g, u.isPromiseAlike = _, u.isPending = y, f.prototype.isPending = function() {
                return "pending" === this.inspect().state
            }, u.isFulfilled = v, f.prototype.isFulfilled = function() {
                return "fulfilled" === this.inspect().state
            }, u.isRejected = b, f.prototype.isRejected = function() {
                return "rejected" === this.inspect().state
            };
            var nt = [],
                it = [],
                rt = [],
                ot = !0;
            u.resetUnhandledRejections = x, u.getUnhandledReasons = function() {
                return nt.slice()
            }, u.stopUnhandledRejectionTracking = function() {
                x(), ot = !1
            }, x(), u.reject = S, u.fulfill = P, u.master = C, u.spread = E, f.prototype.spread = function(t, e) {
                return this.all().then(function(e) {
                    return t.apply(void 0, e)
                }, e)
            }, u.async = O, u.spawn = I, u.return = R, u.promised = A, u.dispatch = k, f.prototype.dispatch = function(t, e) {
                var n = this,
                    i = c();
                return u.nextTick(function() {
                    n.promiseDispatch(i.resolve, t, e)
                }), i.promise
            }, u.get = function(t, e) {
                return u(t).dispatch("get", [e])
            }, f.prototype.get = function(t) {
                return this.dispatch("get", [t])
            }, u.set = function(t, e, n) {
                return u(t).dispatch("set", [e, n])
            }, f.prototype.set = function(t, e) {
                return this.dispatch("set", [t, e])
            }, u.del = u.delete = function(t, e) {
                return u(t).dispatch("delete", [e])
            }, f.prototype.del = f.prototype.delete = function(t) {
                return this.dispatch("delete", [t])
            }, u.mapply = u.post = function(t, e, n) {
                return u(t).dispatch("post", [e, n])
            }, f.prototype.mapply = f.prototype.post = function(t, e) {
                return this.dispatch("post", [t, e])
            }, u.send = u.mcall = u.invoke = function(t, e) {
                return u(t).dispatch("post", [e, Y(arguments, 2)])
            }, f.prototype.send = f.prototype.mcall = f.prototype.invoke = function(t) {
                return this.dispatch("post", [t, Y(arguments, 1)])
            }, u.fapply = function(t, e) {
                return u(t).dispatch("apply", [void 0, e])
            }, f.prototype.fapply = function(t) {
                return this.dispatch("apply", [void 0, t])
            }, u.try = u.fcall = function(t) {
                return u(t).dispatch("apply", [void 0, Y(arguments, 1)])
            }, f.prototype.fcall = function() {
                return this.dispatch("apply", [void 0, Y(arguments)])
            }, u.fbind = function(t) {
                var e = u(t),
                    n = Y(arguments, 1);
                return function() {
                    return e.dispatch("apply", [this, n.concat(Y(arguments))])
                }
            }, f.prototype.fbind = function() {
                var t = this,
                    e = Y(arguments);
                return function() {
                    return t.dispatch("apply", [this, e.concat(Y(arguments))])
                }
            }, u.keys = function(t) {
                return u(t).dispatch("keys", [])
            }, f.prototype.keys = function() {
                return this.dispatch("keys", [])
            }, u.all = L, f.prototype.all = function() {
                return L(this)
            }, u.any = D, f.prototype.any = function() {
                return D(this)
            }, u.allResolved = function(t, e, n) {
                return function() {
                    return "undefined" != typeof console && console.warn, t.apply(t, arguments)
                }
            }(B, "allResolved", "allSettled"), f.prototype.allResolved = function() {
                return B(this)
            }, u.allSettled = N, f.prototype.allSettled = function() {
                return this.then(function(t) {
                    return L(K(t, function(t) {
                        function e() {
                            return t.inspect()
                        }
                        return t = u(t), t.then(e, e)
                    }))
                })
            }, u.fail = u.catch = function(t, e) {
                return u(t).then(void 0, e)
            }, f.prototype.fail = f.prototype.catch = function(t) {
                return this.then(void 0, t)
            }, u.progress = F, f.prototype.progress = function(t) {
                return this.then(void 0, void 0, t)
            }, u.fin = u.finally = function(t, e) {
                return u(t).finally(e)
            }, f.prototype.fin = f.prototype.finally = function(t) {
                if (!t || "function" != typeof t.apply) throw new Error("Q can't apply finally callback");
                return t = u(t), this.then(function(e) {
                    return t.fcall().then(function() {
                        return e
                    })
                }, function(e) {
                    return t.fcall().then(function() {
                        throw e
                    })
                })
            }, u.done = function(t, e, n, i) {
                return u(t).done(e, n, i)
            }, f.prototype.done = function(t, e, n) {
                var r = function(t) {
                        u.nextTick(function() {
                            if (i(t, o), !u.onerror) throw t;
                            u.onerror(t)
                        })
                    },
                    o = t || e || n ? this.then(t, e, n) : this;
                "object" == typeof process && process && process.domain && (r = process.domain.bind(r)), o.then(void 0, r)
            }, u.timeout = function(t, e, n) {
                return u(t).timeout(e, n)
            }, f.prototype.timeout = function(t, e) {
                var n = c(),
                    i = setTimeout(function() {
                        e && "string" != typeof e || (e = new Error(e || "Timed out after " + t + " ms"), e.code = "ETIMEDOUT"), n.reject(e)
                    }, t);
                return this.then(function(t) {
                    clearTimeout(i), n.resolve(t)
                }, function(t) {
                    clearTimeout(i), n.reject(t)
                }, n.notify), n.promise
            }, u.delay = function(t, e) {
                return void 0 === e && (e = t, t = void 0), u(t).delay(e)
            }, f.prototype.delay = function(t) {
                return this.then(function(e) {
                    var n = c();
                    return setTimeout(function() {
                        n.resolve(e)
                    }, t), n.promise
                })
            }, u.nfapply = function(t, e) {
                return u(t).nfapply(e)
            }, f.prototype.nfapply = function(t) {
                var e = c(),
                    n = Y(t);
                return n.push(e.makeNodeResolver()), this.fapply(n).fail(e.reject), e.promise
            }, u.nfcall = function(t) {
                var e = Y(arguments, 1);
                return u(t).nfapply(e)
            }, f.prototype.nfcall = function() {
                var t = Y(arguments),
                    e = c();
                return t.push(e.makeNodeResolver()), this.fapply(t).fail(e.reject), e.promise
            }, u.nfbind = u.denodeify = function(t) {
                if (void 0 === t) throw new Error("Q can't wrap an undefined function");
                var e = Y(arguments, 1);
                return function() {
                    var n = e.concat(Y(arguments)),
                        i = c();
                    return n.push(i.makeNodeResolver()), u(t).fapply(n).fail(i.reject), i.promise
                }
            }, f.prototype.nfbind = f.prototype.denodeify = function() {
                var t = Y(arguments);
                return t.unshift(this), u.denodeify.apply(void 0, t)
            }, u.nbind = function(t, e) {
                var n = Y(arguments, 2);
                return function() {
                    function i() {
                        return t.apply(e, arguments)
                    }
                    var r = n.concat(Y(arguments)),
                        o = c();
                    return r.push(o.makeNodeResolver()), u(i).fapply(r).fail(o.reject), o.promise
                }
            }, f.prototype.nbind = function() {
                var t = Y(arguments, 0);
                return t.unshift(this), u.nbind.apply(void 0, t)
            }, u.nmapply = u.npost = function(t, e, n) {
                return u(t).npost(e, n)
            }, f.prototype.nmapply = f.prototype.npost = function(t, e) {
                var n = Y(e || []),
                    i = c();
                return n.push(i.makeNodeResolver()), this.dispatch("post", [t, n]).fail(i.reject), i.promise
            }, u.nsend = u.nmcall = u.ninvoke = function(t, e) {
                var n = Y(arguments, 2),
                    i = c();
                return n.push(i.makeNodeResolver()), u(t).dispatch("post", [e, n]).fail(i.reject), i.promise
            }, f.prototype.nsend = f.prototype.nmcall = f.prototype.ninvoke = function(t) {
                var e = Y(arguments, 1),
                    n = c();
                return e.push(n.makeNodeResolver()), this.dispatch("post", [t, e]).fail(n.reject), n.promise
            }, u.nodeify = G, f.prototype.nodeify = function(t) {
                if (!t) return this;
                this.then(function(e) {
                    u.nextTick(function() {
                        t(null, e)
                    })
                }, function(e) {
                    u.nextTick(function() {
                        t(e)
                    })
                })
            }, u.noConflict = function() {
                throw new Error("Q.noConflict only works when Q is used as a global")
            };
            var at = l();
            return u
        }),
        function() {
            function t(t) {
                function e(e, n, i, r, o, a) {
                    for (; o >= 0 && a > o; o += t) {
                        var s = r ? r[o] : o;
                        i = n(i, e[s], s, e)
                    }
                    return i
                }
                return function(n, i, r, o) {
                    i = v(i, o, 4);
                    var a = !M(n) && y.keys(n),
                        s = (a || n).length,
                        l = t > 0 ? 0 : s - 1;
                    return arguments.length < 3 && (r = n[a ? a[l] : l], l += t), e(n, i, r, a, l, s)
                }
            }

            function e(t) {
                return function(e, n, i) {
                    n = b(n, i);
                    for (var r = P(e), o = t > 0 ? 0 : r - 1; o >= 0 && r > o; o += t)
                        if (n(e[o], o, e)) return o;
                    return -1
                }
            }

            function n(t, e, n) {
                return function(i, r, o) {
                    var a = 0,
                        s = P(i);
                    if ("number" == typeof o) t > 0 ? a = o >= 0 ? o : Math.max(o + s, a) : s = o >= 0 ? Math.min(o + 1, s) : o + s + 1;
                    else if (n && o && s) return o = n(i, r), i[o] === r ? o : -1;
                    if (r !== r) return o = e(c.call(i, a, s), y.isNaN), o >= 0 ? o + a : -1;
                    for (o = t > 0 ? a : s - 1; o >= 0 && s > o; o += t)
                        if (i[o] === r) return o;
                    return -1
                }
            }

            function i(t, e) {
                var n = R.length,
                    i = t.constructor,
                    r = y.isFunction(i) && i.prototype || s,
                    o = "constructor";
                for (y.has(t, o) && !y.contains(e, o) && e.push(o); n--;)(o = R[n]) in t && t[o] !== r[o] && !y.contains(e, o) && e.push(o)
            }
            var r = this,
                o = r._,
                a = Array.prototype,
                s = Object.prototype,
                l = Function.prototype,
                u = a.push,
                c = a.slice,
                h = s.toString,
                p = s.hasOwnProperty,
                f = Array.isArray,
                d = Object.keys,
                m = l.bind,
                g = Object.create,
                _ = function() {},
                y = function(t) {
                    return t instanceof y ? t : this instanceof y ? void(this._wrapped = t) : new y(t)
                };
            "undefined" != typeof exports ? ("undefined" != typeof module && module.exports && (exports = module.exports = y), exports._ = y) : r._ = y, y.VERSION = "1.8.3";
            var v = function(t, e, n) {
                    if (void 0 === e) return t;
                    switch (null == n ? 3 : n) {
                        case 1:
                            return function(n) {
                                return t.call(e, n)
                            };
                        case 2:
                            return function(n, i) {
                                return t.call(e, n, i)
                            };
                        case 3:
                            return function(n, i, r) {
                                return t.call(e, n, i, r)
                            };
                        case 4:
                            return function(n, i, r, o) {
                                return t.call(e, n, i, r, o)
                            }
                    }
                    return function() {
                        return t.apply(e, arguments)
                    }
                },
                b = function(t, e, n) {
                    return null == t ? y.identity : y.isFunction(t) ? v(t, e, n) : y.isObject(t) ? y.matcher(t) : y.property(t)
                };
            y.iteratee = function(t, e) {
                return b(t, e, 1 / 0)
            };
            var x = function(t, e) {
                    return function(n) {
                        var i = arguments.length;
                        if (2 > i || null == n) return n;
                        for (var r = 1; i > r; r++)
                            for (var o = arguments[r], a = t(o), s = a.length, l = 0; s > l; l++) {
                                var u = a[l];
                                e && void 0 !== n[u] || (n[u] = o[u])
                            }
                        return n
                    }
                },
                T = function(t) {
                    if (!y.isObject(t)) return {};
                    if (g) return g(t);
                    _.prototype = t;
                    var e = new _;
                    return _.prototype = null, e
                },
                w = function(t) {
                    return function(e) {
                        return null == e ? void 0 : e[t]
                    }
                },
                S = Math.pow(2, 53) - 1,
                P = w("length"),
                M = function(t) {
                    var e = P(t);
                    return "number" == typeof e && e >= 0 && S >= e
                };
            y.each = y.forEach = function(t, e, n) {
                e = v(e, n);
                var i, r;
                if (M(t))
                    for (i = 0, r = t.length; r > i; i++) e(t[i], i, t);
                else {
                    var o = y.keys(t);
                    for (i = 0, r = o.length; r > i; i++) e(t[o[i]], o[i], t)
                }
                return t
            }, y.map = y.collect = function(t, e, n) {
                e = b(e, n);
                for (var i = !M(t) && y.keys(t), r = (i || t).length, o = Array(r), a = 0; r > a; a++) {
                    var s = i ? i[a] : a;
                    o[a] = e(t[s], s, t)
                }
                return o
            }, y.reduce = y.foldl = y.inject = t(1), y.reduceRight = y.foldr = t(-1), y.find = y.detect = function(t, e, n) {
                var i;
                return i = M(t) ? y.findIndex(t, e, n) : y.findKey(t, e, n), void 0 !== i && -1 !== i ? t[i] : void 0
            }, y.filter = y.select = function(t, e, n) {
                var i = [];
                return e = b(e, n), y.each(t, function(t, n, r) {
                    e(t, n, r) && i.push(t)
                }), i
            }, y.reject = function(t, e, n) {
                return y.filter(t, y.negate(b(e)), n)
            }, y.every = y.all = function(t, e, n) {
                e = b(e, n);
                for (var i = !M(t) && y.keys(t), r = (i || t).length, o = 0; r > o; o++) {
                    var a = i ? i[o] : o;
                    if (!e(t[a], a, t)) return !1
                }
                return !0
            }, y.some = y.any = function(t, e, n) {
                e = b(e, n);
                for (var i = !M(t) && y.keys(t), r = (i || t).length, o = 0; r > o; o++) {
                    var a = i ? i[o] : o;
                    if (e(t[a], a, t)) return !0
                }
                return !1
            }, y.contains = y.includes = y.include = function(t, e, n, i) {
                return M(t) || (t = y.values(t)), ("number" != typeof n || i) && (n = 0), y.indexOf(t, e, n) >= 0
            }, y.invoke = function(t, e) {
                var n = c.call(arguments, 2),
                    i = y.isFunction(e);
                return y.map(t, function(t) {
                    var r = i ? e : t[e];
                    return null == r ? r : r.apply(t, n)
                })
            }, y.pluck = function(t, e) {
                return y.map(t, y.property(e))
            }, y.where = function(t, e) {
                return y.filter(t, y.matcher(e))
            }, y.findWhere = function(t, e) {
                return y.find(t, y.matcher(e))
            }, y.max = function(t, e, n) {
                var i, r, o = -1 / 0,
                    a = -1 / 0;
                if (null == e && null != t) {
                    t = M(t) ? t : y.values(t);
                    for (var s = 0, l = t.length; l > s; s++)(i = t[s]) > o && (o = i)
                } else e = b(e, n), y.each(t, function(t, n, i) {
                    ((r = e(t, n, i)) > a || r === -1 / 0 && o === -1 / 0) && (o = t, a = r)
                });
                return o
            }, y.min = function(t, e, n) {
                var i, r, o = 1 / 0,
                    a = 1 / 0;
                if (null == e && null != t) {
                    t = M(t) ? t : y.values(t);
                    for (var s = 0, l = t.length; l > s; s++) i = t[s], o > i && (o = i)
                } else e = b(e, n), y.each(t, function(t, n, i) {
                    r = e(t, n, i), (a > r || 1 / 0 === r && 1 / 0 === o) && (o = t, a = r)
                });
                return o
            }, y.shuffle = function(t) {
                for (var e, n = M(t) ? t : y.values(t), i = n.length, r = Array(i), o = 0; i > o; o++) e = y.random(0, o), e !== o && (r[o] = r[e]), r[e] = n[o];
                return r
            }, y.sample = function(t, e, n) {
                return null == e || n ? (M(t) || (t = y.values(t)), t[y.random(t.length - 1)]) : y.shuffle(t).slice(0, Math.max(0, e))
            }, y.sortBy = function(t, e, n) {
                return e = b(e, n), y.pluck(y.map(t, function(t, n, i) {
                    return {
                        value: t,
                        index: n,
                        criteria: e(t, n, i)
                    }
                }).sort(function(t, e) {
                    var n = t.criteria,
                        i = e.criteria;
                    if (n !== i) {
                        if (n > i || void 0 === n) return 1;
                        if (i > n || void 0 === i) return -1
                    }
                    return t.index - e.index
                }), "value")
            };
            var C = function(t) {
                return function(e, n, i) {
                    var r = {};
                    return n = b(n, i), y.each(e, function(i, o) {
                        var a = n(i, o, e);
                        t(r, i, a)
                    }), r
                }
            };
            y.groupBy = C(function(t, e, n) {
                y.has(t, n) ? t[n].push(e) : t[n] = [e]
            }), y.indexBy = C(function(t, e, n) {
                t[n] = e
            }), y.countBy = C(function(t, e, n) {
                y.has(t, n) ? t[n]++ : t[n] = 1
            }), y.toArray = function(t) {
                return t ? y.isArray(t) ? c.call(t) : M(t) ? y.map(t, y.identity) : y.values(t) : []
            }, y.size = function(t) {
                return null == t ? 0 : M(t) ? t.length : y.keys(t).length
            }, y.partition = function(t, e, n) {
                e = b(e, n);
                var i = [],
                    r = [];
                return y.each(t, function(t, n, o) {
                    (e(t, n, o) ? i : r).push(t)
                }), [i, r]
            }, y.first = y.head = y.take = function(t, e, n) {
                return null == t ? void 0 : null == e || n ? t[0] : y.initial(t, t.length - e)
            }, y.initial = function(t, e, n) {
                return c.call(t, 0, Math.max(0, t.length - (null == e || n ? 1 : e)))
            }, y.last = function(t, e, n) {
                return null == t ? void 0 : null == e || n ? t[t.length - 1] : y.rest(t, Math.max(0, t.length - e))
            }, y.rest = y.tail = y.drop = function(t, e, n) {
                return c.call(t, null == e || n ? 1 : e)
            }, y.compact = function(t) {
                return y.filter(t, y.identity)
            };
            var E = function(t, e, n, i) {
                for (var r = [], o = 0, a = i || 0, s = P(t); s > a; a++) {
                    var l = t[a];
                    if (M(l) && (y.isArray(l) || y.isArguments(l))) {
                        e || (l = E(l, e, n));
                        var u = 0,
                            c = l.length;
                        for (r.length += c; c > u;) r[o++] = l[u++]
                    } else n || (r[o++] = l)
                }
                return r
            };
            y.flatten = function(t, e) {
                return E(t, e, !1)
            }, y.without = function(t) {
                return y.difference(t, c.call(arguments, 1))
            }, y.uniq = y.unique = function(t, e, n, i) {
                y.isBoolean(e) || (i = n, n = e, e = !1), null != n && (n = b(n, i));
                for (var r = [], o = [], a = 0, s = P(t); s > a; a++) {
                    var l = t[a],
                        u = n ? n(l, a, t) : l;
                    e ? (a && o === u || r.push(l), o = u) : n ? y.contains(o, u) || (o.push(u), r.push(l)) : y.contains(r, l) || r.push(l)
                }
                return r
            }, y.union = function() {
                return y.uniq(E(arguments, !0, !0))
            }, y.intersection = function(t) {
                for (var e = [], n = arguments.length, i = 0, r = P(t); r > i; i++) {
                    var o = t[i];
                    if (!y.contains(e, o)) {
                        for (var a = 1; n > a && y.contains(arguments[a], o); a++);
                        a === n && e.push(o)
                    }
                }
                return e
            }, y.difference = function(t) {
                var e = E(arguments, !0, !0, 1);
                return y.filter(t, function(t) {
                    return !y.contains(e, t)
                })
            }, y.zip = function() {
                return y.unzip(arguments)
            }, y.unzip = function(t) {
                for (var e = t && y.max(t, P).length || 0, n = Array(e), i = 0; e > i; i++) n[i] = y.pluck(t, i);
                return n
            }, y.object = function(t, e) {
                for (var n = {}, i = 0, r = P(t); r > i; i++) e ? n[t[i]] = e[i] : n[t[i][0]] = t[i][1];
                return n
            }, y.findIndex = e(1), y.findLastIndex = e(-1), y.sortedIndex = function(t, e, n, i) {
                n = b(n, i, 1);
                for (var r = n(e), o = 0, a = P(t); a > o;) {
                    var s = Math.floor((o + a) / 2);
                    n(t[s]) < r ? o = s + 1 : a = s
                }
                return o
            }, y.indexOf = n(1, y.findIndex, y.sortedIndex), y.lastIndexOf = n(-1, y.findLastIndex), y.range = function(t, e, n) {
                null == e && (e = t || 0, t = 0), n = n || 1;
                for (var i = Math.max(Math.ceil((e - t) / n), 0), r = Array(i), o = 0; i > o; o++, t += n) r[o] = t;
                return r
            };
            var O = function(t, e, n, i, r) {
                if (!(i instanceof e)) return t.apply(n, r);
                var o = T(t.prototype),
                    a = t.apply(o, r);
                return y.isObject(a) ? a : o
            };
            y.bind = function(t, e) {
                if (m && t.bind === m) return m.apply(t, c.call(arguments, 1));
                if (!y.isFunction(t)) throw new TypeError("Bind must be called on a function");
                var n = c.call(arguments, 2),
                    i = function() {
                        return O(t, i, e, this, n.concat(c.call(arguments)))
                    };
                return i
            }, y.partial = function(t) {
                var e = c.call(arguments, 1),
                    n = function() {
                        for (var i = 0, r = e.length, o = Array(r), a = 0; r > a; a++) o[a] = e[a] === y ? arguments[i++] : e[a];
                        for (; i < arguments.length;) o.push(arguments[i++]);
                        return O(t, n, this, this, o)
                    };
                return n
            }, y.bindAll = function(t) {
                var e, n, i = arguments.length;
                if (1 >= i) throw new Error("bindAll must be passed function names");
                for (e = 1; i > e; e++) n = arguments[e], t[n] = y.bind(t[n], t);
                return t
            }, y.memoize = function(t, e) {
                var n = function(i) {
                    var r = n.cache,
                        o = "" + (e ? e.apply(this, arguments) : i);
                    return y.has(r, o) || (r[o] = t.apply(this, arguments)), r[o]
                };
                return n.cache = {}, n
            }, y.delay = function(t, e) {
                var n = c.call(arguments, 2);
                return setTimeout(function() {
                    return t.apply(null, n)
                }, e)
            }, y.defer = y.partial(y.delay, y, 1), y.throttle = function(t, e, n) {
                var i, r, o, a = null,
                    s = 0;
                n || (n = {});
                var l = function() {
                    s = !1 === n.leading ? 0 : y.now(), a = null, o = t.apply(i, r), a || (i = r = null)
                };
                return function() {
                    var u = y.now();
                    s || !1 !== n.leading || (s = u);
                    var c = e - (u - s);
                    return i = this, r = arguments, 0 >= c || c > e ? (a && (clearTimeout(a), a = null), s = u, o = t.apply(i, r), a || (i = r = null)) : a || !1 === n.trailing || (a = setTimeout(l, c)), o
                }
            }, y.debounce = function(t, e, n) {
                var i, r, o, a, s, l = function() {
                    var u = y.now() - a;
                    e > u && u >= 0 ? i = setTimeout(l, e - u) : (i = null, n || (s = t.apply(o, r), i || (o = r = null)))
                };
                return function() {
                    o = this, r = arguments, a = y.now();
                    var u = n && !i;
                    return i || (i = setTimeout(l, e)), u && (s = t.apply(o, r), o = r = null), s
                }
            }, y.wrap = function(t, e) {
                return y.partial(e, t)
            }, y.negate = function(t) {
                return function() {
                    return !t.apply(this, arguments)
                }
            }, y.compose = function() {
                var t = arguments,
                    e = t.length - 1;
                return function() {
                    for (var n = e, i = t[e].apply(this, arguments); n--;) i = t[n].call(this, i);
                    return i
                }
            }, y.after = function(t, e) {
                return function() {
                    return --t < 1 ? e.apply(this, arguments) : void 0
                }
            }, y.before = function(t, e) {
                var n;
                return function() {
                    return --t > 0 && (n = e.apply(this, arguments)), 1 >= t && (e = null), n
                }
            }, y.once = y.partial(y.before, 2);
            var I = !{
                    toString: null
                }.propertyIsEnumerable("toString"),
                R = ["valueOf", "isPrototypeOf", "toString", "propertyIsEnumerable", "hasOwnProperty", "toLocaleString"];
            y.keys = function(t) {
                if (!y.isObject(t)) return [];
                if (d) return d(t);
                var e = [];
                for (var n in t) y.has(t, n) && e.push(n);
                return I && i(t, e), e
            }, y.allKeys = function(t) {
                if (!y.isObject(t)) return [];
                var e = [];
                for (var n in t) e.push(n);
                return I && i(t, e), e
            }, y.values = function(t) {
                for (var e = y.keys(t), n = e.length, i = Array(n), r = 0; n > r; r++) i[r] = t[e[r]];
                return i
            }, y.mapObject = function(t, e, n) {
                e = b(e, n);
                for (var i, r = y.keys(t), o = r.length, a = {}, s = 0; o > s; s++) i = r[s], a[i] = e(t[i], i, t);
                return a
            }, y.pairs = function(t) {
                for (var e = y.keys(t), n = e.length, i = Array(n), r = 0; n > r; r++) i[r] = [e[r], t[e[r]]];
                return i
            }, y.invert = function(t) {
                for (var e = {}, n = y.keys(t), i = 0, r = n.length; r > i; i++) e[t[n[i]]] = n[i];
                return e
            }, y.functions = y.methods = function(t) {
                var e = [];
                for (var n in t) y.isFunction(t[n]) && e.push(n);
                return e.sort()
            }, y.extend = x(y.allKeys), y.extendOwn = y.assign = x(y.keys), y.findKey = function(t, e, n) {
                e = b(e, n);
                for (var i, r = y.keys(t), o = 0, a = r.length; a > o; o++)
                    if (i = r[o], e(t[i], i, t)) return i
            }, y.pick = function(t, e, n) {
                var i, r, o = {},
                    a = t;
                if (null == a) return o;
                y.isFunction(e) ? (r = y.allKeys(a), i = v(e, n)) : (r = E(arguments, !1, !1, 1), i = function(t, e, n) {
                    return e in n
                }, a = Object(a));
                for (var s = 0, l = r.length; l > s; s++) {
                    var u = r[s],
                        c = a[u];
                    i(c, u, a) && (o[u] = c)
                }
                return o
            }, y.omit = function(t, e, n) {
                if (y.isFunction(e)) e = y.negate(e);
                else {
                    var i = y.map(E(arguments, !1, !1, 1), String);
                    e = function(t, e) {
                        return !y.contains(i, e)
                    }
                }
                return y.pick(t, e, n)
            }, y.defaults = x(y.allKeys, !0), y.create = function(t, e) {
                var n = T(t);
                return e && y.extendOwn(n, e), n
            }, y.clone = function(t) {
                return y.isObject(t) ? y.isArray(t) ? t.slice() : y.extend({}, t) : t
            }, y.tap = function(t, e) {
                return e(t), t
            }, y.isMatch = function(t, e) {
                var n = y.keys(e),
                    i = n.length;
                if (null == t) return !i;
                for (var r = Object(t), o = 0; i > o; o++) {
                    var a = n[o];
                    if (e[a] !== r[a] || !(a in r)) return !1
                }
                return !0
            };
            var A = function(t, e, n, i) {
                if (t === e) return 0 !== t || 1 / t == 1 / e;
                if (null == t || null == e) return t === e;
                t instanceof y && (t = t._wrapped), e instanceof y && (e = e._wrapped);
                var r = h.call(t);
                if (r !== h.call(e)) return !1;
                switch (r) {
                    case "[object RegExp]":
                    case "[object String]":
                        return "" + t == "" + e;
                    case "[object Number]":
                        return +t != +t ? +e != +e : 0 == +t ? 1 / +t == 1 / e : +t == +e;
                    case "[object Date]":
                    case "[object Boolean]":
                        return +t == +e
                }
                var o = "[object Array]" === r;
                if (!o) {
                    if ("object" != typeof t || "object" != typeof e) return !1;
                    var a = t.constructor,
                        s = e.constructor;
                    if (a !== s && !(y.isFunction(a) && a instanceof a && y.isFunction(s) && s instanceof s) && "constructor" in t && "constructor" in e) return !1
                }
                n = n || [], i = i || [];
                for (var l = n.length; l--;)
                    if (n[l] === t) return i[l] === e;
                if (n.push(t), i.push(e), o) {
                    if ((l = t.length) !== e.length) return !1;
                    for (; l--;)
                        if (!A(t[l], e[l], n, i)) return !1
                } else {
                    var u, c = y.keys(t);
                    if (l = c.length, y.keys(e).length !== l) return !1;
                    for (; l--;)
                        if (u = c[l], !y.has(e, u) || !A(t[u], e[u], n, i)) return !1
                }
                return n.pop(), i.pop(), !0
            };
            y.isEqual = function(t, e) {
                return A(t, e)
            }, y.isEmpty = function(t) {
                return null == t || (M(t) && (y.isArray(t) || y.isString(t) || y.isArguments(t)) ? 0 === t.length : 0 === y.keys(t).length)
            }, y.isElement = function(t) {
                return !(!t || 1 !== t.nodeType)
            }, y.isArray = f || function(t) {
                return "[object Array]" === h.call(t)
            }, y.isObject = function(t) {
                var e = typeof t;
                return "function" === e || "object" === e && !!t
            }, y.each(["Arguments", "Function", "String", "Number", "Date", "RegExp", "Error"], function(t) {
                y["is" + t] = function(e) {
                    return h.call(e) === "[object " + t + "]"
                }
            }), y.isArguments(arguments) || (y.isArguments = function(t) {
                return y.has(t, "callee")
            }), "function" != typeof /./ && "object" != typeof Int8Array && (y.isFunction = function(t) {
                return "function" == typeof t || !1
            }), y.isFinite = function(t) {
                return isFinite(t) && !isNaN(parseFloat(t))
            }, y.isNaN = function(t) {
                return y.isNumber(t) && t !== +t
            }, y.isBoolean = function(t) {
                return !0 === t || !1 === t || "[object Boolean]" === h.call(t)
            }, y.isNull = function(t) {
                return null === t
            }, y.isUndefined = function(t) {
                return void 0 === t
            }, y.has = function(t, e) {
                return null != t && p.call(t, e)
            }, y.noConflict = function() {
                return r._ = o, this
            }, y.identity = function(t) {
                return t
            }, y.constant = function(t) {
                return function() {
                    return t
                }
            }, y.noop = function() {}, y.property = w, y.propertyOf = function(t) {
                return null == t ? function() {} : function(e) {
                    return t[e]
                }
            }, y.matcher = y.matches = function(t) {
                return t = y.extendOwn({}, t),
                    function(e) {
                        return y.isMatch(e, t)
                    }
            }, y.times = function(t, e, n) {
                var i = Array(Math.max(0, t));
                e = v(e, n, 1);
                for (var r = 0; t > r; r++) i[r] = e(r);
                return i
            }, y.random = function(t, e) {
                return null == e && (e = t, t = 0), t + Math.floor(Math.random() * (e - t + 1))
            }, y.now = Date.now || function() {
                return (new Date).getTime()
            };
            var k = {
                    "&": "&amp;",
                    "<": "&lt;",
                    ">": "&gt;",
                    '"': "&quot;",
                    "'": "&#x27;",
                    "`": "&#x60;"
                },
                L = y.invert(k),
                D = function(t) {
                    var e = function(e) {
                            return t[e]
                        },
                        n = "(?:" + y.keys(t).join("|") + ")",
                        i = RegExp(n),
                        r = RegExp(n, "g");
                    return function(t) {
                        return t = null == t ? "" : "" + t, i.test(t) ? t.replace(r, e) : t
                    }
                };
            y.escape = D(k), y.unescape = D(L), y.result = function(t, e, n) {
                var i = null == t ? void 0 : t[e];
                return void 0 === i && (i = n), y.isFunction(i) ? i.call(t) : i
            };
            var B = 0;
            y.uniqueId = function(t) {
                var e = ++B + "";
                return t ? t + e : e
            }, y.templateSettings = {
                evaluate: /<%([\s\S]+?)%>/g,
                interpolate: /<%=([\s\S]+?)%>/g,
                escape: /<%-([\s\S]+?)%>/g
            };
            var N = /(.)^/,
                F = {
                    "'": "'",
                    "\\": "\\",
                    "\r": "r",
                    "\n": "n",
                    "\u2028": "u2028",
                    "\u2029": "u2029"
                },
                G = /\\|'|\r|\n|\u2028|\u2029/g,
                U = function(t) {
                    return "\\" + F[t]
                };
            y.template = function(t, e, n) {
                !e && n && (e = n), e = y.defaults({}, e, y.templateSettings);
                var i = RegExp([(e.escape || N).source, (e.interpolate || N).source, (e.evaluate || N).source].join("|") + "|$", "g"),
                    r = 0,
                    o = "__p+='";
                t.replace(i, function(e, n, i, a, s) {
                    return o += t.slice(r, s).replace(G, U), r = s + e.length, n ? o += "'+\n((__t=(" + n + "))==null?'':_.escape(__t))+\n'" : i ? o += "'+\n((__t=(" + i + "))==null?'':__t)+\n'" : a && (o += "';\n" + a + "\n__p+='"), e
                }), o += "';\n", e.variable || (o = "with(obj||{}){\n" + o + "}\n"), o = "var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n" + o + "return __p;\n";
                try {
                    var a = new Function(e.variable || "obj", "_", o)
                } catch (t) {
                    throw t.source = o, t
                }
                var s = function(t) {
                    return a.call(this, t, y)
                };
                return s.source = "function(" + (e.variable || "obj") + "){\n" + o + "}", s
            }, y.chain = function(t) {
                var e = y(t);
                return e._chain = !0, e
            };
            var j = function(t, e) {
                return t._chain ? y(e).chain() : e
            };
            y.mixin = function(t) {
                y.each(y.functions(t), function(e) {
                    var n = y[e] = t[e];
                    y.prototype[e] = function() {
                        var t = [this._wrapped];
                        return u.apply(t, arguments), j(this, n.apply(y, t))
                    }
                })
            }, y.mixin(y), y.each(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"], function(t) {
                var e = a[t];
                y.prototype[t] = function() {
                    var n = this._wrapped;
                    return e.apply(n, arguments), "shift" !== t && "splice" !== t || 0 !== n.length || delete n[0], j(this, n)
                }
            }), y.each(["concat", "join", "slice"], function(t) {
                var e = a[t];
                y.prototype[t] = function() {
                    return j(this, e.apply(this._wrapped, arguments))
                }
            }), y.prototype.value = function() {
                return this._wrapped
            }, y.prototype.valueOf = y.prototype.toJSON = y.prototype.value, y.prototype.toString = function() {
                return "" + this._wrapped
            }, "function" == typeof define && define.amd && define("underscore", [], function() {
                return y
            })
        }.call(this),
        function(t, e) {
            "object" == typeof module && module.exports ? module.exports = e(require("underscore")) : "function" == typeof define && define.amd ? define("riveter", ["underscore"], function(n) {
                return e(n, t)
            }) : t.riveter = e(t._, t)
        }(this, function(t, e, n) {
            var i = Array.prototype.slice,
                r = function() {
                    for (var t = i.call(arguments, 0); t.length;) r.rivet(t.shift())
                };
            return r.rivet = function(t) {
                t.hasOwnProperty("extend") || (t.extend = function(e, n) {
                    return r.extend(t, e, n)
                }), t.hasOwnProperty("compose") || (t.compose = function() {
                    return r.compose.apply(this, [t].concat(i.call(arguments, 0)))
                }), t.hasOwnProperty("inherits") || (t.inherits = function(e, n) {
                    r.inherits(t, e, n)
                }), t.hasOwnProperty("mixin") || (t.mixin = function() {
                    r.mixin.apply(this, [t].concat(i.call(arguments, 0)))
                })
            }, r.inherits = function(e, n, i) {
                var o, a = function() {},
                    s = function() {
                        n.apply(this, arguments)
                    };
                return "object" == typeof e ? (e.hasOwnProperty("constructor") && (s = e.constructor), o = e) : (s = e, o = e.prototype), r.rivet(s), t.defaults(s, n, i), a.prototype = n.prototype, s.prototype = new a, t.extend(s.prototype, o, {
                    constructor: s
                }), s.__super = n, s.__super__ = n.prototype, s
            }, r.extend = function(t, e, n) {
                return r.inherits(e, t, n)
            }, r.compose = function() {
                var e = i.call(arguments, 0),
                    n = e.shift();
                r.rivet(n);
                var o = t.reduce(e, function(t, e) {
                        return e.hasOwnProperty("_preInit") && t.preInit.push(e._preInit), e.hasOwnProperty("_postInit") && t.postInit.push(e._postInit), e = e.mixin || e, t.items.push(e), t
                    }, {
                        items: [],
                        preInit: [],
                        postInit: []
                    }),
                    a = n.extend({
                        constructor: function() {
                            var e = i.call(arguments, 0);
                            t.each(o.preInit, function(t) {
                                t.apply(this, e)
                            }, this), n.prototype.constructor.apply(this, e), t.each(o.postInit, function(t) {
                                t.apply(this, e)
                            }, this)
                        }
                    });
                return r.rivet(a), t.defaults(a.prototype, t.extend.apply(null, [{}].concat(o.items))), a
            }, r.mixin = function() {
                var e = i.call(arguments, 0),
                    n = e.shift();
                r.rivet(n), t.defaults(n.prototype, t.extend.apply(null, [{}].concat(e)))
            }, r
        }),
        function(t, e) {
            "object" == typeof module && module.exports ? module.exports = function(t) {
                return e(require("lodash"), t, require("riveter"))
            } : "function" == typeof define && define.amd ? define("postal.federation", ["lodash", "postal", "riveter"], function(n, i, r) {
                return e(n, i, r, t)
            }) : t.postal = e(t._, t.postal, t.riveter, t)
        }(this, function(t, e, n, i, r) {
            function o(t) {
                e.fedx.signalReady.apply(this, t)
            }

            function a(t) {
                e.fedx.send.apply(this, t)
            }

            function s(t) {
                e.fedx.onFederatedMsg.call(this, t)
            }
            e.createUUID || (e.createUUID = function() {
                for (var t = [], e = "0123456789abcdef", n = 0; n < 36; n++) t[n] = e.substr(Math.floor(16 * Math.random()), 1);
                return t[14] = "4", t[19] = e.substr(3 & t[19] | 8, 1), t[8] = t[13] = t[18] = t[23] = "-", t.join("")
            }), e.instanceId || (e.instanceId = function() {
                var t, n;
                return function(i) {
                    return i && (n = t, t = i, e.publish({
                        channel: e.configuration.SYSTEM_CHANNEL,
                        topic: "instanceId.changed",
                        data: {
                            oldId: n,
                            newId: t
                        }
                    })), t
                }
            }());
            var l = function() {},
                u = !1,
                c = [],
                h = [],
                p = [],
                f = {
                    enabled: !0,
                    filterMode: "whitelist",
                    filterDirection: "both"
                },
                d = f,
                m = function(n, i, r) {
                    var o = Object.prototype.hasOwnProperty.call(e.fedx.filters[r], n),
                        a = o && t.any(e.fedx.filters[r][n], function(t) {
                            return e.configuration.resolver.compare(t, i)
                        }),
                        s = "blacklist" === d.filterMode;
                    return d.enabled && (s && (!o || o && !a) || !s && o && a)
                },
                g = {
                    ping: function() {
                        return {
                            type: "federation.ping",
                            instanceId: e.instanceId(),
                            timeStamp: new Date,
                            ticket: e.createUUID()
                        }
                    },
                    pong: function(t) {
                        return {
                            type: "federation.pong",
                            instanceId: e.instanceId(),
                            timeStamp: new Date,
                            pingData: {
                                instanceId: t.instanceId,
                                timeStamp: t.timeStamp,
                                ticket: t.ticket
                            }
                        }
                    },
                    message: function(t) {
                        return {
                            type: "federation.message",
                            instanceId: e.instanceId(),
                            timeStamp: new Date,
                            envelope: t
                        }
                    },
                    disconnect: function() {
                        return {
                            type: "federation.disconnect",
                            instanceId: e.instanceId(),
                            timeStamp: new Date
                        }
                    },
                    bundle: function(t) {
                        return {
                            type: "federation.bundle",
                            instanceId: e.instanceId(),
                            timeStamp: new Date,
                            packingSlips: t
                        }
                    }
                },
                _ = {
                    "federation.ping": function(t) {
                        t.source.setInstanceId(t.packingSlip.instanceId), t.source.handshakeComplete ? t.source.sendPong(t.packingSlip) : t.source.sendBundle([e.fedx.getPackingSlip("pong", t.packingSlip), e.fedx.getPackingSlip("ping")])
                    },
                    "federation.pong": function(n) {
                        n.source.handshakeComplete = !0, n.source.setInstanceId(n.packingSlip.instanceId), n.source.pings[n.packingSlip.pingData.ticket] && (n.source.pings[n.packingSlip.pingData.ticket].callback({
                            ticket: n.packingSlip.pingData.ticket,
                            instanceId: n.packingSlip.instanceId,
                            source: n.source
                        }), n.source.pings[n.packingSlip.pingData.ticket] = r), t.contains(e.fedx.clients, n.packingSlip.instanceId) || e.fedx.clients.push(n.packingSlip.instanceId), e.publish({
                            channel: "postal.federation",
                            topic: "client.federated",
                            data: {
                                remoteId: n.source.instanceId,
                                localId: e.instanceId(),
                                transport: n.transport
                            }
                        })
                    },
                    "federation.disconnect": function(n) {
                        e.fedx.clients = t.without(e.fedx.clients, n.source.instanceId), e.fedx.disconnect({
                            transport: n.source.transportName,
                            instanceId: n.source.instanceId,
                            doNotNotify: !0
                        })
                    },
                    "federation.message": function(t) {
                        var n = t.packingSlip.envelope;
                        m(n.channel, n.topic, "in") && (n.lastSender = t.packingSlip.instanceId, e.publish(n))
                    },
                    "federation.bundle": function(n) {
                        t.each(n.packingSlip.packingSlips, function(i) {
                            e.fedx.onFederatedMsg(t.extend({}, n, {
                                packingSlip: i
                            }))
                        })
                    }
                },
                y = function(t, e, n) {
                    this.target = t, this.options = e || {}, this.pings = {}, this.instanceId = n, this.handshakeComplete = !1
                };
            return y.prototype.sendPing = function(t) {
                var n = e.fedx.getPackingSlip("ping");
                this.pings[n.ticket] = {
                    ticket: n.ticket,
                    callback: t || l
                }, this.send(n)
            }, y.prototype.sendPong = function(t) {
                this.send(e.fedx.getPackingSlip("pong", t))
            }, y.prototype.sendBundle = function(t) {
                this.send(e.fedx.getPackingSlip("bundle", t))
            }, y.prototype.sendMessage = function(n) {
                if (this.handshakeComplete) {
                    n.originId = n.originId || e.instanceId();
                    var i = t.clone(n);
                    !this.instanceId || this.instanceId === i.lastSender || i.knownIds && i.knownIds.length && (!i.knownIds || t.include(i.knownIds, this.instanceId)) || (i.knownIds = (i.knownIds || []).concat(t.without(e.fedx.clients, this.instanceId)), this.send(e.fedx.getPackingSlip("message", i)))
                }
            }, y.prototype.disconnect = function() {
                this.send(e.fedx.getPackingSlip("disconnect"))
            }, y.prototype.onMessage = function(t) {
                this.shouldProcess() && e.fedx.onFederatedMsg({
                    transport: this.transportName,
                    packingSlip: t,
                    source: this
                })
            }, y.prototype.shouldProcess = function() {
                return !0
            }, y.prototype.send = function() {
                throw new Error("An object deriving from FederationClient must provide an implementation for 'send'.")
            }, y.prototype.setInstanceId = function(t) {
                this.instanceId = t
            }, n(y), e.fedx = t.extend({
                FederationClient: y,
                packingSlips: g,
                handlers: _,
                clients: [],
                transports: {},
                filters: { in: {},
                    out: {}
                },
                addFilter: function(e) {
                    e = t.isArray(e) ? e : [e], t.each(e, function(e) {
                        e.direction = e.direction || d.filterDirection, t.each("both" === e.direction ? ["in", "out"] : [e.direction], function(n) {
                            this.filters[n][e.channel] ? t.include(this.filters[n][e.channel], e.topic) || this.filters[n][e.channel].push(e.topic) : this.filters[n][e.channel] = [e.topic]
                        }, this)
                    }, this)
                },
                removeFilter: function(e) {
                    e = t.isArray(e) ? e : [e], t.each(e, function(e) {
                        e.direction = e.direction || d.filterDirection, t.each("both" === e.direction ? ["in", "out"] : [e.direction], function(n) {
                            this.filters[n][e.channel] && t.include(this.filters[n][e.channel], e.topic) && (this.filters[n][e.channel] = t.without(this.filters[n][e.channel], e.topic))
                        }, this)
                    }, this)
                },
                canSendRemote: function(t, e) {
                    return m(t, e, "out")
                },
                configure: function(e) {
                    if (e && e.filterMode && "blacklist" !== e.filterMode && "whitelist" !== e.filterMode) throw new Error("postal.fedx filterMode must be 'blacklist' or 'whitelist'.");
                    return e && (d = t.defaults(e, f)), d
                },
                getPackingSlip: function(t) {
                    if (Object.prototype.hasOwnProperty.call(g, t)) return g[t].apply(this, Array.prototype.slice.call(arguments, 1))
                },
                onFederatedMsg: function(t) {
                    if (!u) return void c.push(t);
                    if (!Object.prototype.hasOwnProperty.call(_, t.packingSlip.type)) throw new Error("postal.federation does not have a message handler for '" + t.packingSlip.type + "'.");
                    _[t.packingSlip.type](t)
                },
                sendMessage: function(e) {
                    if (!u) return void h.push(arguments);
                    t.each(this.transports, function(t) {
                        t.sendMessage(e)
                    })
                },
                disconnect: function(e) {
                    e = e || {};
                    var n = this.transports;
                    e.transport && (n = {}, n[e.transport] = this.transports[e.transport]), t.each(n, function(t) {
                        t.disconnect({
                            target: e.target,
                            instanceId: e.instanceId,
                            doNotNotify: !!e.doNotNotify
                        })
                    }, this)
                },
                _getTransports: function() {
                    return t.reduce(this.transports, function(t, e, n) {
                        return t[n] = !0, t
                    }, {})
                },
                signalReady: function(e, n, i) {
                    if (!u) return void p.push(arguments);
                    var r = this._getTransports();
                    switch (arguments.length) {
                        case 1:
                            "function" == typeof e ? i = e : "string" == typeof e && (r = {}, r[e] = this.transports[e], i = l);
                            break;
                        case 2:
                            "string" == typeof e ? (r = {}, r[e] = this.transports[e]) : r = e, i = n || l;
                            break;
                        case 3:
                            r = {}, r[e] = [n]
                    }
                    t.each(r, function(t, e) {
                        t = "boolean" == typeof t ? [] : t, this.transports[e].signalReady(t, i)
                    }, this)
                }
            }, e.fedx), e.addWireTap(function(t, n) {
                e.fedx.canSendRemote(n.channel, n.topic) && e.fedx.sendMessage(n)
            }), e.subscribe({
                channel: e.configuration.SYSTEM_CHANNEL,
                topic: "instanceId.changed",
                callback: function() {
                    for (u = !0; p.length;) o(p.shift());
                    for (; h.length;) a(h.shift());
                    for (; c.length;) s(c.shift())
                }
            }), e.instanceId() !== r && (u = !0), e
        }),
        function(t, e) {
            "function" == typeof define && define.amd ? define("xframe", ["lodash", "postal.federation"], function(n, i) {
                return e(n, i, t)
            }) : "object" == typeof module && module.exports ? module.exports = function(t) {
                return e(require("lodash"), t)
            } : t.postal = e(t._, t.postal, t)
        }(this, function(t, e, n, i) {
            function r() {
                _.routeMessage.apply(_, arguments)
            }

            function o(e) {
                for (var n in e) e.hasOwnProperty(n) && ("function" == typeof e[n] && delete e[n], t.isPlainObject(e[n]) && o(e[n]), t.isArray(e[n]) && t.each(e[n], o));
                return e
            }
            var a = location.origin || location.protocol + "//" + location.host,
                s = /MSIE [8,9]/.test(navigator.userAgent),
                l = function(e, n) {
                    var i = t.find(this.remotes, function(t) {
                        return t.instanceId === n
                    });
                    return i && e.push(i), e
                },
                u = function(e, n) {
                    var i = t.find(this.remotes, function(t) {
                        return t.target === n
                    });
                    return i && e.push(i), e
                },
                c = function(t) {
                    t.disconnect()
                },
                h = "undefined" == typeof window && postMessage && location,
                p = [],
                f = function() {},
                d = {
                    allowedOrigins: [a],
                    enabled: !0,
                    defaultOriginUrl: "*",
                    safeSerialize: !1
                },
                m = t.extend({}, d),
                g = e.fedx.FederationClient.extend({
                    transportName: "xframe",
                    shouldProcess: function() {
                        var e = !!m.allowedOrigins.length;
                        return m.enabled && ("*" === this.options.origin || e && t.contains(m.allowedOrigins, this.options.origin) || !e || this.options.isWorker && t.contains(p, this.target) || h)
                    },
                    send: function(t) {
                        var n, i;
                        this.shouldProcess() && (i = h ? null : this.target, n = [e.fedx.transports.xframe.wrapForTransport(t)], this.options.isWorker || h || n.push(this.options.origin), h ? this.target.postMessage.apply(i, n) : 1 === n.length ? this.target.postMessage(n[0]) : this.target.postMessage(n[0], n[1]))
                    }
                }, {
                    getInstance: function(t, e, n) {
                        var i = new g(t, {
                            origin: e,
                            isWorker: "undefined" != typeof Worker && t instanceof Worker
                        }, n);
                        return i.options.isWorker && _.listenToWorker(i.target), i
                    }
                }),
                _ = e.fedx.transports.xframe = {
                    eagerSerialize: s,
                    XFrameClient: g,
                    configure: function(e) {
                        return e && (m = t.defaults(t.extend(m, e), d)), m
                    },
                    clearConfiguration: function() {
                        m = t.extend({}, d)
                    },
                    getTargets: h ? function() {
                        return [{
                            target: {
                                postMessage: postMessage
                            }
                        }]
                    } : function() {
                        var e = t.map(document.getElementsByTagName("iframe"), function(t) {
                            var e = document.createElement("a");
                            e.href = t.src;
                            var n = e.protocol + "//" + e.host;
                            return "//" === n && (n = null), {
                                target: t.contentWindow,
                                origin: n || m.defaultOriginUrl
                            }
                        });
                        return window.parent && window.parent !== window && e.push({
                            target: window.parent,
                            origin: "*"
                        }), e.concat(p)
                    },
                    remotes: [],
                    wrapForTransport: s ? function(t) {
                        return JSON.stringify({
                            postal: !0,
                            packingSlip: t
                        })
                    } : function(t) {
                        return {
                            postal: !0,
                            packingSlip: t
                        }
                    },
                    unwrapFromTransport: function(t) {
                        if ("string" != typeof t || !s && -1 === t.indexOf('"postal":true')) return t;
                        try {
                            return JSON.parse(t)
                        } catch (t) {
                            return {}
                        }
                    },
                    routeMessage: function(n) {
                        var i = n.source || n.currentTarget,
                            r = this.unwrapFromTransport(n.data);
                        if (r.postal) {
                            e.instanceId();
                            var o = t.find(this.remotes, function(t) {
                                return t.target === i
                            });
                            o || (o = g.getInstance(i, n.origin, r.packingSlip.instanceId), this.remotes.push(o)), o.onMessage(r.packingSlip)
                        }
                    },
                    sendMessage: function(e) {
                        var n = e;
                        m.safeSerialize && (n = o(t.cloneDeep(e))), t.each(this.remotes, function(t) {
                            t.sendMessage(n)
                        })
                    },
                    disconnect: function(e) {
                        e = e || {};
                        var n = e.instanceId ? t.reduce(t.isArray(e.instanceId) ? e.instanceId : [e.instanceId], l, [], this) : e.target ? t.reduce(t.isArray(e.target) ? e.target : [e.target], u, [], this) : this.remotes;
                        e.doNotNotify || t.each(n, c, this), this.remotes = t.without.apply(null, [this.remotes].concat(n))
                    },
                    signalReady: function(e, n) {
                        e = t.isArray(e) ? e : [e], e = e.length ? e : this.getTargets(), n = n || f, t.each(e, function(e) {
                            if (e.target) {
                                e.origin = e.origin || m.defaultOriginUrl;
                                var i = t.find(this.remotes, function(t) {
                                    return t.target === e.target
                                });
                                i || (i = g.getInstance(e.target, e.origin), this.remotes.push(i)), i.sendPing(n)
                            }
                        }, this)
                    },
                    addEventListener: h ? function() {
                        addEventListener("message", r)
                    } : function(t, e, n, i) {
                        "undefined" != typeof window && ("addEventListener" in t ? t.addEventListener(e, n, i) : t.attachEvent("on" + e, n))
                    },
                    listenToWorker: function(e) {
                        t.include(p, e) || (e.addEventListener("message", r), p.push(e))
                    },
                    stopListeningToWorker: function(e) {
                        if (e) e.removeEventListener("message", r), p = t.without(p, e);
                        else
                            for (; p.length;) p.pop().removeEventListener("message", r)
                    }
                };
            return _.addEventListener(this, "message", r, !1), e
        }),
        function(t, e) {
            "function" == typeof define && define.amd ? define("request-response", ["lodash", "postal"], function(n, i) {
                return e(n, i, t)
            }) : "object" == typeof module && module.exports ? module.exports = function(t) {
                return e(require("lodash"), t, this)
            } : t.postal = e(t._, t.postal, t)
        }(this, function(t, e, n, i) {
            e.configuration.promise = {
                createDeferred: function() {
                    throw new Error("You need to provide an implementation for postal.configuration.promise.createDeferred that returns a deferred/promise instance.")
                },
                getPromise: function() {
                    throw new Error("You need to provide an implementation for postal.configuration.promise.getPromise that returns a promise safe for consuming APIs to use.")
                },
                fulfill: "resolve",
                fail: "reject"
            };
            var r = function() {
                for (var t = {}, e = [], n = 0; n < 256; n++) e[n] = (n < 16 ? "0" : "") + n.toString(16);
                return t.create = function() {
                    var t = 4294967295 * Math.random() | 0,
                        n = 4294967295 * Math.random() | 0,
                        i = 4294967295 * Math.random() | 0,
                        r = 4294967295 * Math.random() | 0;
                    return e[255 & t] + e[t >> 8 & 255] + e[t >> 16 & 255] + e[t >> 24 & 255] + "-" + e[255 & n] + e[n >> 8 & 255] + "-" + e[n >> 16 & 15 | 64] + e[n >> 24 & 255] + "-" + e[63 & i | 128] + e[i >> 8 & 255] + "-" + e[i >> 16 & 255] + e[i >> 24 & 255] + e[255 & r] + e[r >> 8 & 255] + e[r >> 16 & 255] + e[r >> 24 & 255]
                }, t
            }();
            e.ChannelDefinition.prototype.request = function(t) {
                var n = t.envelope ? t.envelope : {
                        topic: t.topic,
                        data: t.data,
                        headers: t.headers
                    },
                    i = r.create(),
                    o = t.replyTopic || i,
                    a = t.replyChannel || "postal.request-response",
                    s = e.configuration.promise.createDeferred();
                n.headers = n.headers || {}, n.headers.replyable = !0, n.headers.requestId = i, n.headers.replyTopic = o, n.headers.replyChannel = a;
                e.subscribe({
                    channel: a,
                    topic: o,
                    callback: function(t, n) {
                        n.headers && n.headers.isError ? s[e.configuration.promise.fail](t) : s[e.configuration.promise.fulfill](t)
                    }
                }).once();
                return t.timeout && setTimeout(function() {
                    s[e.configuration.promise.fail](new Error("Timeout limit exceeded for request."))
                }, t.timeout), this.publish(n), e.configuration.promise.getPromise(s)
            };
            var o = e.publish;
            return e.publish = function(t) {
                t.headers && t.headers.replyable && (t.reply = function(n, i) {
                    e.publish({
                        channel: t.headers.replyChannel,
                        topic: t.headers.replyTopic,
                        headers: {
                            isReply: !0,
                            isError: !!n,
                            requestId: t.headers.requestId,
                            resolverNoCache: !0
                        },
                        data: n || i
                    })
                }), o.call(this, t)
            }, e
        }), define("skbJet/component/gameMsgBus/PlatformMessageBus", ["postal", "promise", "postal.federation", "xframe", "request-response"], function(t, e) {
            "use strict";

            function n(n) {
                if (0 === arguments.length) throw new Error("Message Bus Configuration Payload cannot be empty, malformed or undefined");
                return s = n, t.instanceId("Game"), t.fedx.configure({
                    filterMode: "blacklist"
                }), t.fedx.transports.xframe.configure({
                    filterMode: "blacklist",
                    safeSerialize: !0
                }), t.configuration.promise.createDeferred = function() {
                    return e.defer()
                }, t.configuration.promise.getPromise = function(t) {
                    return t.promise
                }, t.addWireTap(function() {}), t.fedx.signalReady(function() {}), !0
            }

            function i(e) {
                t.publish(e)
            }

            function r(e, n, i) {
                t.channel(e.channel).request(e).then(n, i)
            }

            function o(e) {
                t.subscribe(e)
            }

            function a(e) {
                t.unsubscribe(e)
            }
            var s;
            return function() {
                return Object.freeze({
                    init: n,
                    publish: i,
                    subscribe: o,
                    unsubscribe: a,
                    getPostal: t,
                    request: r
                })
            }
        }), define("skbJet/component/gameMsgBus/PlatformMsgBusAdapter", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gameMsgBus/PlatformMessageBus"], function(t, e) {
            var n = e();
            n.init({
                allowedDomains: ["*"],
                defaultOrigin: "http://localhost:8080",
                channels: [{
                    channel: "Kernel",
                    topic: "#",
                    direction: "both"
                }, {
                    channel: "ClientService",
                    topic: "#",
                    direction: "both"
                }, {
                    channel: "ConsoleService",
                    topic: "#",
                    direction: "both"
                }, {
                    channel: "Game",
                    topic: "#",
                    direction: "both"
                }, {
                    channel: "postal.request-response",
                    topic: "#",
                    direction: "both"
                }]
            }), n.getPostal.addWireTap(function(e, n) {
                "postal" !== n.channel && "postal.federation" !== n.channel && t.publish("platformMsg/" + n.channel + "/" + n.topic, n.data)
            }), t.subscribe("toPlatform", function(t) {
                n.publish(t)
            }), t.subscribe("toPlatformRequest", function(t) {
                n.request({
                    channel: t.channel,
                    topic: t.topic,
                    data: t.data
                }, t.successCallback, t.failCallback)
            }), t.subscribe("error", function(t) {
                var e = t;
                t.errorCode || (e = {
                    errorCode: "GM-001",
                    message: "" + t
                }), n.publish({
                    channel: "Game",
                    topic: "ErrorHandler.Throw",
                    data: e
                })
            });
            var i = null;
            return n.getPostal.channel("ClientService").subscribe("StateChange", function(e, n) {
                i = function() {
                    n.reply(null, {
                        state: e.state
                    })
                }, t.publish(e.state, e)
            }), t.subscribe("nextState", function() {
                i && i()
            }), {}
        }), define("skbJet/component/utils/Interface", [], function() {
            function t(t, e) {
                if (this.functions = t || [], e)
                    for (var n = 0; n < e.functions.length; n++) this.functions.indexOf(e.functions[n]) < 0 && this.functions.push(e.functions[n])
            }

            function e() {
                throw "Not implemented yet."
            }
            return t.prototype.implementedBy = function(t) {
                for (var n = 0; n < this.functions.length; n++) t[this.functions[n]] || (t[this.functions[n]] = e)
            }, t.prototype.isImplementedBy = function(t) {
                for (var e = 0; e < this.functions.length; e++) {
                    var n = t[this.functions[e]];
                    if (!n || "function" != typeof n) return !1
                }
                return !0
            }, t
        }), define("skbJet/component/gladRenderer/IgladRenderer", ["skbJet/component/utils/Interface"], function(t) {
            return new t(["init", "showScene", "fitSize", "getSize", "setSize", "getTicker", "forceRender", "getSprite", "getAnimation"])
        }), define("skbJet/component/gladRenderer/gladUtil", [], function() {
            function t(t, e) {
                function n(t) {
                    var e = t._style;
                    if (e && (e._width && (e._width = Number(e._width) * i), e._height && (e._height = Number(e._height) * i), e._top && (e._top = Number(e._top) * i), e._left && (e._left = Number(e._left) * i), e._background && e._background._position && (e._background._position._x && (e._background._position._x = Number(e._background._position._x) * i), e._background._position._y && (e._background._position._y = Number(e._background._position._y) * i)), e._font && e._font._size && (e._font._size = Number(e._font._size) * i), e._text && e._text._lineHeight && (e._text._lineHeight = Number(e._text._lineHeight) * i), e._text && e._text._strokeWidth && (e._text._strokeWidth = Number(e._text._strokeWidth) * i)), t._SPRITES)
                        for (var r = 0; r < t._SPRITES.length; r++) n(t._SPRITES[r])
                }
                var i = e || 2;
                t._width && (t._width = Number(t._width) * i), t._height && (t._height = Number(t._height) * i);
                for (var r = 0; r < t._SCENES.length; r++) {
                    for (var o = 0; o < t._SCENES[r]._LAYERS.length; o++) n(t._SCENES[r]._LAYERS[o]);
                    for (var a = 0; a < t._SCENES[r]._ANIMATIONS.length; a++) {
                        var s = t._SCENES[r]._ANIMATIONS[a];
                        if ("_KEY_FRAME_ANIMATION" !== s._type) throw "Other animation type not support conver sprite pixel rate yet.";
                        for (var l = 0; l < s._keyFrames.length; l++)
                            for (var u = 0; u < s._keyFrames[l]._SPRITES.length; u++) n(s._keyFrames[l]._SPRITES[u])
                    }
                }
            }

            function e(t) {
                function e(t) {
                    if (t && t._style && t._style._text && t._style._text._token && (t._style._text._token = " "), t && t._SPRITES)
                        for (var n = 0; n < t._SPRITES.length; n++) e(t._SPRITES[n])
                }
                for (var n = 0; n < t._SCENES.length; n++)
                    for (var i = 0; i < t._SCENES[n]._LAYERS.length; i++) e(t._SCENES[n]._LAYERS[i])
            }

            function n(t, e) {
                if (t[e])
                    for (var n in t) e === n ? t[n].show(!0) : t[n].show(!1)
            }

            function i(t, e) {
                var n = t - e;
                return (n = n > 0 ? n : -n) <= 1
            }

            function r(t, e, n, r, a) {
                if (!(0 === n || 0 === r || 0 === t || 0 === e || i(t, o.w) && i(e, o.h))) {
                    o.w = t, o.h = e;
                    var s, l, u = r / n;
                    e / t > u ? (s = Math.round(t), l = Math.round(t * u), a.style.transform = "translate(0px," + (e - l) / 2 + "px)") : (l = Math.round(e), s = Math.round(e / u), a.style.transform = "translate(" + (t - s) / 2 + "px,0px)"), a.style.width = s + "px", a.style.height = l + "px"
                }
            }
            var o = {
                w: -1,
                h: -1
            };
            return {
                convertPixelRate: t,
                clearGladDataText: e,
                showScene: n,
                fitSize: r
            }
        }), define("skbJet/component/gladPixiRenderer/globalStore", [], function() {
            return {
                lib: {},
                animMap: {},
                gameConfigOption: {}
            }
        }), define("skbJet/component/utils/PauseTimer", [], function() {
            function t(e, n) {
                this.index = t.index++, t.map[this.index] = this, this.callBack = e, this.delay = n, this.startTime = Date.now(), this.pauseTime = null;
                var i = this;
                this._innerIndex = window.setTimeout(function() {
                    delete t.map[i.index], i.callBack()
                }, n)
            }

            function e(t, n) {
                this.index = e.index++, e.map[this.index] = this, this.callBack = t, this.delay = n, this.startTime = Date.now(), this.pauseTime = null, this._innerTimeoutIndex = null;
                var i = this;
                this._innerIndex = window.setInterval(i.callBack, n)
            }

            function n(e, n) {
                return new t(e, n).index
            }

            function i(e) {
                t.map[e] && t.map[e].clear()
            }

            function r(t, n) {
                return new e(t, n).index
            }

            function o(t) {
                e.map[t] && e.map[t].clear()
            }

            function a() {
                e.pause(), t.pause()
            }

            function s() {
                e.resume(), t.resume()
            }
            t.index = 1, t.map = {}, t.pause = function() {
                for (var e in t.map) t.map[e] && t.map[e].pause()
            }, t.resume = function() {
                for (var e in t.map) t.map[e] && t.map[e].resume()
            }, t.prototype.pause = function() {
                var t = this;
                t._innerIndex && (window.clearTimeout(t._innerIndex), t.pauseTime = Date.now() - t.startTime, t._innerIndex = null)
            }, t.prototype.resume = function() {
                var e = this;
                !e._innerIndex && e.pauseTime && (this._innerIndex = window.setTimeout(function() {
                    delete t.map[e.index], e.callBack()
                }, e.delay - e.pauseTime), e.startTime = Date.now() - e.pauseTime, this.pauseTime = null)
            }, t.prototype.clear = function() {
                var e = this;
                e._innerIndex && (window.clearTimeout(e._innerIndex), e._innerIndex = null), delete t.map[e.index]
            }, e.index = 1, e.map = {}, e.pause = function() {
                for (var t in e.map) e.map[t] && e.map[t].pause()
            }, e.resume = function() {
                for (var t in e.map) e.map[t] && e.map[t].resume()
            }, e.prototype.pause = function() {
                var t = this;
                t._innerIndex ? (window.clearInterval(t._innerIndex), t.pauseTime = (Date.now() - t.startTime) % t.delay, t._innerIndex = null, t._innerTimeoutIndex = null) : t._innerTimeoutIndex && (window.clearTimeout(t._innerTimeoutIndex), t.pauseTime = Date.now() - t.startTime, t._innerIndex = null, t._innerTimeoutIndex = null)
            }, e.prototype.resume = function() {
                var t = this;
                t._innerIndex || t._innerTimeoutIndex || !t.pauseTime || (t._innerTimeoutIndex = window.setTimeout(function() {
                    t._innerIndex = window.setInterval(t.callBack, t.delay), t._innerTimeoutIndex = null, t.callBack()
                }, t.delay - t.pauseTime), t.startTime = Date.now() - t.pauseTime, this.pauseTime = null)
            }, e.prototype.clear = function() {
                var t = this;
                t._innerIndex ? (window.clearInterval(t._innerIndex), t._innerIndex = null, t._innerTimeoutIndex = null) : t._innerTimeoutIndex && (window.clearTimeout(t._innerTimeoutIndex), t._innerIndex = null, t._innerTimeoutIndex = null), delete e.map[t.index]
            };
            var l = {
                setTimeout: n,
                clearTimeout: i,
                setInterval: r,
                clearInterval: o,
                pause: a,
                resume: s
            };
            return document.addEventListener("visibilitychange", function() {
                "hidden" === document.visibilityState ? l.pause() : l.resume()
            }), l
        }), define("skbJet/component/gladRenderer/view/IViewObject", ["skbJet/component/utils/Interface"], function(t) {
            return new t(["getChildren", "getParent", "getData", "show"])
        }), define("skbJet/component/gladRenderer/view/ISprite", ["skbJet/component/utils/Interface", "skbJet/component/gladRenderer/view/IViewObject"], function(t, e) {
            return new t(["getCurrentStyle", "draw", "addChildFromData", "getText", "setText", "getTextWidth", "setImage", "getImage", "on", "off", "getName", "getParent", "setTextAutoFit", "updateCurrentStyle", "toLocal", "toGlobal"], e)
        }), define("skbJet/component/gladRenderer/view/spriteUtil", [], function() {
            function t(t) {
                return t.match(/^_/) ? t.substring(1) : t
            }

            function e() {
                return {
                    _width: 0,
                    _height: 0,
                    _top: 0,
                    _left: 0,
                    _opacity: 1,
                    _background: {
                        _color: null,
                        _imagePlate: null,
                        _position: {
                            _x: 0,
                            _y: 0
                        }
                    },
                    _transform: {
                        _scale: {
                            _x: 1,
                            _y: 1
                        },
                        _rotate: 0
                    },
                    _text: {
                        _align: "center",
                        _color: "000000",
                        _token: "",
                        _lineHeight: 12,
                        _strokeWidth: 0,
                        _strokeColor: "",
                        _gradient: {
                            _color: ["000000", "000000"],
                            _stop: [0, 1],
                            _orientation: "vertical"
                        }
                    },
                    _font: {
                        _size: 12,
                        _weight: "normal"
                    },
                    _display: "block"
                }
            }

            function n(t, e) {
                if (!e) return t;
                if (null != e._width && "" !== e._width && (t._width = Number(e._width)), null != e._height && "" !== e._height && (t._height = Number(e._height)), null != e._left && "" !== e._left && (t._left = Number(e._left)), null != e._top && "" !== e._top && (t._top = Number(e._top)), null != e._opacity && ("string" == typeof e._opacity && "" === e._opacity || (t._opacity = Number(e._opacity))), e._background ? (e._background._color && (t._background._color = e._background._color), e._background._imagePlate && t._background._imagePlate !== e._background._imagePlate ? (t._background._imagePlate = e._background._imagePlate, t._background._imagePlateUpdateFlag = !0) : t._background._imagePlateUpdateFlag = !1, e._background._position && (null != e._background._position._x && "" !== e._background._position._x && (t._background._position._x = Number(e._background._position._x)), null != e._background._position._y && "" !== e._background._position._y && (t._background._position._y = Number(e._background._position._y)))) : t._background._imagePlateUpdateFlag = !1, e._transform) {
                    if (e._transform._scale) {
                        if (null != e._transform._scale._x && ("string" != typeof e._transform._scale._x || "" !== e._transform._scale._x)) {
                            var n = Number(e._transform._scale._x);
                            t._transform._scale._x = n
                        }
                        if (null != e._transform._scale._y && ("string" != typeof e._transform._scale._y || "" !== e._transform._scale._y)) {
                            var n = Number(e._transform._scale._y);
                            t._transform._scale._y = n
                        }
                    }
                    null != e._transform._rotate && "" !== e._transform._rotate && (t._transform._rotate = Number(e._transform._rotate))
                }
                return e._text && (e._text._align && (t._text._align = e._text._align), e._text._color && (t._text._color = e._text._color), null != e._text._token && (t._text._token = e._text._token), null != e._text._strokeWidth && (t._text._strokeWidth = e._text._strokeWidth), null != e._text._strokeColor && (t._text._strokeColor = e._text._strokeColor), e._text._gradient && (null != e._text._gradient._color && (t._text._gradient._color = e._text._gradient._color), null != e._text._gradient._stop && (t._text._gradient._stop = e._text._gradient._stop), null != e._text._gradient._orientation && (t._text._gradient._orientation = e._text._gradient._orientation)), null != e._text._lineHeight ? t._text._lineHeight = e._text._lineHeight : e._font && e._font._size && (t._text._gradient && (t._text._gradient._color.length > 2 || t._text._gradient._stop[0] !== t._text._gradient._stop[1]) ? t._text._lineHeight = 1.2 * e._font._size : t._text._lineHeight = e._font._size)), e._font && (e._font._size && (t._font._size = e._font._size), e._font._weight && (t._font._weight = e._font._weight), e._font._family && (t._font._family = e._font._family)), e._display && (t._display = e._display), e._overflow && (t._overflow = e._overflow), t
            }

            function i(t) {
                return !(null === t || void 0 === t || "" === t)
            }

            function r(t, e) {
                var i = t.getCurrentStyle();
                if (!i) throw "Sprite style not init yet.";
                n(i, e), t.draw()
            }

            function o(t, e) {
                var n = t.getCurrentStyle(),
                    i = n._width,
                    r = n._height,
                    o = n._top,
                    a = n._left,
                    s = n._transform._scale._x,
                    l = n._transform._scale._y,
                    u = n._transform._rotate * Math.PI / 180,
                    c = e.x,
                    h = e.y;
                c = c - a - i / 2, h = h - o - r / 2;
                var p = c * Math.cos(u) + h * Math.sin(u),
                    f = h * Math.cos(u) - c * Math.sin(u);
                return c = p / s, h = f / l, c += i / 2, h += r / 2, {
                    x: c,
                    y: h
                }
            }

            function a(t, e) {
                for (var n = [], i = e; t._currentStyle && (n.push(t), t.parent);) t = t.parent;
                for (var r = n.length - 1; r >= 0; r--) t = n[r], i = o(t, i);
                return i
            }

            function s(t, e) {
                var n = t.getCurrentStyle(),
                    i = n._width,
                    r = n._height,
                    o = n._top,
                    a = n._left,
                    s = n._transform._scale._x,
                    l = n._transform._scale._y,
                    u = n._transform._rotate * Math.PI / 180,
                    c = e.x,
                    h = e.y;
                c -= i / 2, h -= r / 2, c *= s, h *= l;
                var p = c * Math.cos(u) - h * Math.sin(u),
                    f = h * Math.cos(u) + c * Math.sin(u);
                return c = p + a + i / 2, h = f + o + r / 2, {
                    x: c,
                    y: h
                }
            }

            function l(t, e) {
                for (var n = e; t._currentStyle && n && (n = s(t, n), t.parent);) t = t.parent;
                return n
            }
            return {
                removeUnderLinePrefix: t,
                getDefaultStyle: e,
                updateStyle: n,
                updateCurrentStyle: r,
                isNotEmpty: i,
                toLocal: a,
                toGlobal: l
            }
        }), define("skbJet/component/gladPixiRenderer/Sprite", ["com/pixijs/pixi", "skbJet/component/gladRenderer/view/ISprite", "skbJet/component/gladRenderer/view/spriteUtil", "skbJet/component/gladPixiRenderer/globalStore"], function(t, e, n, i) {
            function r(t) {
                this.sprites = {}, this.data = t, i.lib[t._name] = this, this._currentStyle = s(), this.updateCurrentStyle(this.data._style);
                for (var e = 0; e < t._SPRITES.length; e++) this.addChildFromData(t._SPRITES[e])
            }

            function o() {
                var e = {};
                for (var n in t.utils.TextureCache) {
                    var i = n.match(/^(\w+)_\d+$/);
                    if (i) {
                        var r = i[1];
                        e[r] || (e[r] = []), e[r].push(n)
                    }
                }
                for (var o in e) e[o].sort(function(t, e) {
                    return parseInt(t.match(/\d+$/)[0]) - parseInt(e.match(/\d+$/)[0])
                });
                return e
            }
            var a = n.removeUnderLinePrefix,
                s = n.getDefaultStyle,
                l = n.updateStyle,
                u = n.isNotEmpty;
            e.implementedBy(r.prototype), r.prototype.getChildren = function() {
                return this.sprites
            }, r.prototype.getData = function() {
                return this.data
            }, r.prototype.getCurrentStyle = function() {
                return this._currentStyle
            }, r.prototype.draw = function() {
                var e = this;
                e.pixiContainer || (e.pixiContainer = new t.Container, e.pixiContainer.name = e.data._name);
                var n = e._currentStyle,
                    r = e.pixiContainer,
                    o = Number(n._width),
                    s = Number(n._height);
                if (r.pivot.x = o / 2, r.pivot.y = s / 2, r.x = Number(n._left) + r.pivot.x, r.y = Number(n._top) + r.pivot.y, u(n._background)) {
                    if (u(n._background._color)) {
                        var l = n._background._color + "";
                        if ("#" === l.charAt(0) && (l = l.substring(1)), l = l.toUpperCase(), r.$bgColor && r.$bgColor._color !== l) {
                            var c = r.$bgColor;
                            r.removeChild(c), c.destroy(), r.$bgColor = null
                        }
                        r.$bgColor || (r.$bgColor = new t.Graphics, r.addChild(r.$bgColor), r.$bgColor.width = o, r.$bgColor.height = s, r.$bgColor._color = l, r.$bgColor.beginFill(Number("0x" + l), 1), "circle" === n._background._shape ? r.$bgColor.drawCircle(o / 2, s / 2, o / 2) : r.$bgColor.drawRect(0, 0, o, s), r.$bgColor.endFill()), r.$bgColor.width = o, r.$bgColor.height = s
                    }
                    if (r.$sprite || (r.$sprite = new t.Sprite, r.addChildAt(r.$sprite, 0)), r.$sprite.width = o, r.$sprite.height = s,
                        u(n._background._imagePlate) && n._background._imagePlateUpdateFlag) {
                        var h = a(n._background._imagePlate);
                        r.$sprite.texture = t.Texture.fromFrame(h)
                    }
                }
                var p, f;
                if (u(n._text) && u(n._text._token)) {
                    r.$text || (u(n._font) && (u(n._font._family) && (p = n._font._family.split(",")[0]), u(n._font._size) && (f = n._font._size)), /^BMFont-/.test(p) ? (e.isBMFont = !0, p = p.substring(7), r.$text = new t.extras.BitmapText(" ", {
                        font: f + "px " + p
                    })) : (e.isBMFont = !1, r.$text = new t.Text), r.$text.anchor.set(.5), r.addChild(r.$text));
                    var d = r.$text;
                    if (e.isBMFont) {
                        u(n._text._align) && (d.font.align = n._text._align), u(n._font) && (u(n._font._family) && (p = n._font._family.split(",")[0], p = /^BMFont-/.test(p) ? p.substring(7) : p, d.font.name = p), u(n._font._size) && (d.font.size = n._font._size)), d.text = n._text._token.replace(/[\u202F\u00A0\u2000\u2001\u2003]/g, " "), d.scale.set(1), d.width > o && d.scale.set(o / d.width), d.y = Math.floor(s / 2);
                        var m = d.font.align;
                        d.x = "right" === m ? o - Math.floor(d.width / 2) : "center" === m ? o / 2 : Math.floor(d.width / 2), d.dirty = !0
                    } else {
                        if (u(n._text._align) && (d.style.align = n._text._align), u(n._text._color) && (d.style.fill = "#" + n._text._color), u(n._text._strokeWidth) && (d.style.strokeThickness = n._text._strokeWidth, d.style.miterLimit = 2.6), u(n._text._strokeColor) && (d.style.stroke = "#" + n._text._strokeColor), 2 !== n._text._gradient._color.length || n._text._gradient._color[1] !== n._text._gradient._color[0]) {
                            for (var g = [], _ = 0; _ < n._text._gradient._color.length; _++) g[_] = "#" + n._text._gradient._color[_];
                            d.style.fill = g, d.style.fillGradientStops = n._text._gradient._stop, "horizontal" === n._text._gradient._orientation ? d.style.fillGradientType = t.TEXT_GRADIENT.LINEAR_HORIZONTAL : d.style.fillGradientType = t.TEXT_GRADIENT.LINEAR_VERTICAL
                        }
                        u(n._font) && (u(n._font._family) && (d.style.fontFamily = n._font._family.split(",")[0]), u(n._font._size) && (d.style.fontSize = n._font._size), u(n._font._weight) && (d.style.fontWeight = "" + n._font._weight)), u(n._text._lineHeight) && (d.style.lineHeight = Number(n._text._lineHeight)), u(n._width) && (d.style.wordWrapWidth = Number(n._width), d.style.wordWrap = !0), u(n._height) && (e.padding > 0 ? d.style.padding = e.padding : i.gameConfigOption.defaultPadding ? d.style.padding = i.gameConfigOption.defaultPadding : 0 === d.style.padding && (d.style.padding = 1)), d.text = n._text._token, d.anchor.set(.5), u(n._font) && u(n._font._size) && e.autoFontFitText && (d.style.wordWrap = !1, d.scale.set(1), d.width > o && d.scale.set(o / d.width)), d.y = Math.floor(s / 2);
                        var m = d.style.align;
                        d.x = "right" === m ? o - Math.floor(d.width / 2) : "center" === m ? o / 2 : Math.floor(d.width / 2)
                    }
                } else r.$text && (r.$text.text = "");
                u(n._transform) && u(n._transform._scale) && (u(n._transform._scale._x) && (r.scale.x = Number(n._transform._scale._x)), u(n._transform._scale._y) && (r.scale.y = Number(n._transform._scale._y))), u(n._transform) && u(n._transform._rotate) && (r.rotation = Number(n._transform._rotate) * Math.PI / 180), u(n._opacity) && (r.alpha = Number(n._opacity))
            }, r.prototype.updateCurrentStyle = function(t) {
                n.updateCurrentStyle(this, t)
            }, r.prototype.addChildFromData = function(t) {
                var e = new r(t);
                return this.sprites[t._name] = e, e.parent = this, this.pixiContainer.addChild(e.pixiContainer), e
            }, r.prototype.setText = function(t) {
                this.updateCurrentStyle({
                    _text: {
                        _token: t
                    }
                })
            }, r.prototype.getText = function() {
                return this.pixiContainer.$text.text
            }, r.prototype.getTextWidth = function() {
                return this.pixiContainer.$text.width
            }, r.prototype.setImage = function(e) {
                t.utils.TextureCache[e] && (l(this._currentStyle, {
                    _background: {
                        _imagePlate: e
                    }
                }), this.pixiContainer.$sprite.texture = t.Texture.fromFrame(e))
            }, r.prototype.getImage = function() {
                return this._currentStyle && this._currentStyle._background ? this._currentStyle._background._imagePlate : null
            }, r.prototype.on = function(t, e) {
                if (this.pixiContainer.interactive = !0, "click" === t) this.pixiContainer.on("touchend", e), this.pixiContainer.on("click", e);
                else if ("mouseover" === t) this.pixiContainer.on(t, e);
                else if ("mouseout" === t) this.pixiContainer.on("mouseout", e), "ontouchend" in window && this.pixiContainer.on("touchendoutside", e);
                else if ("mousedown" === t) "ontouchstart" in window ? this.pixiContainer.on("touchstart", e) : this.pixiContainer.on("mousedown", e);
                else if ("mouseup" === t) this.pixiContainer.on("mouseup", e), "ontouchend" in window && this.pixiContainer.on("touchend", e);
                else if ("mouseupoutside" === t) "ontouchend" in window ? this.pixiContainer.on("touchendoutside", e) : this.pixiContainer.on("mouseupoutside", e);
                else {
                    if ("mousemove" !== t) throw "Not supported event!";
                    "ontouchmove" in window ? this.pixiContainer.on("touchmove", e) : this.pixiContainer.on("mousemove", e)
                }
            }, r.prototype.off = function(t, e) {
                if ("click" === t) this.pixiContainer.off("touchstart", e), this.pixiContainer.off("click", e);
                else if ("mouseover" === t) this.pixiContainer.off("mouseover", e);
                else if ("mouseout" === t) this.pixiContainer.off("mouseout", e), "ontouchend" in window && this.pixiContainer.off("touchendoutside", e);
                else if ("mousedown" === t) "ontouchstart" in window ? this.pixiContainer.off("touchstart", e) : this.pixiContainer.off("mousedown", e);
                else if ("mouseup" === t) this.pixiContainer.off("mouseup", e), "ontouchend" in window && this.pixiContainer.off("touchend", e);
                else if ("mouseupoutside" === t) "ontouchend" in window ? this.pixiContainer.off("touchendoutside", e) : this.pixiContainer.off("mouseupoutside", e);
                else {
                    if ("mousemove" !== t) throw "Not supported event!";
                    "ontouchmove" in window ? this.pixiContainer.off("touchmove", e) : this.pixiContainer.off("mousemove", e)
                }
            }, r.prototype.toLocal = function(t) {
                return n.toLocal(this, t)
            }, r.prototype.toGlobal = function(t) {
                return n.toGlobal(this, t)
            }, r.prototype.getName = function() {
                return this.data._name
            }, r.prototype.getParent = function() {
                return this.parent
            }, r.prototype.show = function(t) {
                this.pixiContainer.visible = !!t
            };
            var c = null;
            return r.addSpriteSheetAnimation = function(t, e) {
                c || (c = o()), c[t] = e
            }, r.getSpriteSheetAnimationFrameArray = function(t) {
                return c || (c = o()), c[t]
            }, r.prototype.gotoAndPlay = function(e, n, i, r) {
                if (c || (c = o()), !c[e]) throw "Cannot find sprite animation " + e;
                this.pixiContainer.$sprite ? this.pixiContainer.$sprite.animName !== e && (this.pixiContainer.removeChild(this.pixiContainer.$sprite).destroy(), this.pixiContainer.$sprite = t.extras.AnimatedSprite.fromFrames(c[e]), this.pixiContainer.addChildAt(this.pixiContainer.$sprite, this.data._style._background && this.data._style._background._color ? 1 : 0), this.pixiContainer.$sprite.width = Number(this._currentStyle._width), this.pixiContainer.$sprite.height = Number(this._currentStyle._height)) : (this.pixiContainer.$sprite = t.extras.AnimatedSprite.fromFrames(c[e]), this.pixiContainer.addChildAt(this.pixiContainer.$sprite, this.data._style._background._color ? 1 : 0)), this.pixiContainer.$sprite.animName = e, this.pixiContainer.$sprite.animationSpeed = n || 1, this.pixiContainer.$sprite.loop = !!i;
                var a = this;
                this.pixiContainer.$sprite.onComplete = function() {
                    "function" == typeof a.onComplete && a.onComplete()
                }, (!r || r < 0) && (r = 0), this.pixiContainer.$sprite.gotoAndPlay(r)
            }, r.prototype.stopPlay = function() {
                this.pixiContainer.$sprite && this.pixiContainer.$sprite.stop && this.pixiContainer.$sprite.stop()
            }, r.prototype.gotoAndStop = function(t) {
                this.pixiContainer.$sprite && this.pixiContainer.$sprite.gotoAndStop && this.pixiContainer.$sprite.gotoAndStop(t)
            }, r.prototype.onComplete = null, r.prototype.autoFontFitText = !1, r.prototype.setTextAutoFit = function(t) {
                this.autoFontFitText = t
            }, r
        }), define("skbJet/component/gladPixiRenderer/Layer", ["com/pixijs/pixi", "skbJet/component/gladPixiRenderer/Sprite", "skbJet/component/gladRenderer/view/IViewObject", "skbJet/component/gladPixiRenderer/globalStore"], function(t, e, n, i) {
            function r(n) {
                this.sprites = {}, this.data = n, i.lib[n._name] = this, this.pixiContainer = new t.Container, this.pixiContainer.name = n._name;
                for (var r = 0; r < n._SPRITES.length; r++) {
                    var o = n._SPRITES[r];
                    this.sprites[o._name] = new e(o), this.sprites[o._name].parent = this, this.pixiContainer.addChild(this.sprites[o._name].pixiContainer)
                }
            }
            return n.implementedBy(r.prototype), r.prototype.getChildren = function() {
                return this.sprites
            }, r.prototype.getParent = function() {
                return null
            }, r.prototype.getData = function() {
                return this.data
            }, r.prototype.show = function(t) {
                this.pixiContainer.visible = !!t
            }, r
        }), define("skbJet/component/gladRenderer/animation/IAnimation", ["skbJet/component/utils/Interface"], function(t) {
            return new t(["isPlaying", "onTick"])
        }), define("skbJet/component/gladRenderer/animation/KeyFrameAnimation", ["skbJet/component/gladRenderer/animation/IAnimation"], function(t) {
            function e() {}

            function n(t, e, n, i, r, o) {
                if (t.animData = e, o || (o = t.animData._name), e._keyFrames && e._keyFrames.length > 0) {
                    var a = e._keyFrames[e._keyFrames.length - 1];
                    t.maxTime = Number(a._time), t._spritesNameList = [];
                    for (var s = 0; s < a._SPRITES.length; s++) t._spritesNameList.push(a._SPRITES[s]._name);
                    if (r)
                        for (var s = 0; s < r.length && s < a._SPRITES.length; s++) t._spritesNameList[s] = r[s]
                }
                t._name = o, t._gladObjLib = i, t._gladAnimMap = n, n[o] = t
            }

            function i(t) {
                t.pause(), t.timeCount = 0, t.loopCount = 0, t.loopNumber = 1, t._frameIndex = 0
            }

            function r(t, e, n) {
                var i = Number(t);
                return (Number(e) - i) * n + i
            }

            function o(t, e, n) {
                if (e = Number(e), t.animData._keyFrames.length <= 1 || e <= 0) return 0;
                n || (n = 0);
                for (var i = n; i < t.animData._keyFrames.length; i++)
                    if (e <= Number(t.animData._keyFrames[i]._time) && e > Number(t.animData._keyFrames[i - 1]._time)) return i;
                return t.animData._keyFrames.length
            }

            function a(t) {
                return !(null === t || void 0 === t || "" === t)
            }

            function s(t, e, n, i) {
                if (n._style) {
                    var o = t._style,
                        s = e._style,
                        l = n._style;
                    a(l._width) && (s._width = r(o._width, l._width, i)), a(l._height) && (s._height = r(o._height, l._height, i)), a(l._top) && (s._top = r(o._top, l._top, i)), a(l._left) && (s._left = r(o._left, l._left, i)), a(l._opacity) && (s._opacity = r(o._opacity, l._opacity, i)), a(l._background) && (s._background = {}, a(l._background._position) && (s._background._position = {}, a(l._background._position._x) && (s._background._position._x = r(o._background._position._x, l._background._position._x, i)), a(l._background._position._y) && (s._background._position._y = r(o._background._position._y, l._background._position._y, i)))), a(l._transform) && (s._transform = {}, a(l._transform._rotate) && (s._transform._rotate = r(o._transform._rotate, l._transform._rotate, i)), a(l._transform._scale) && (s._transform._scale = {}, a(l._transform._scale._x) && (s._transform._scale._x = r(o._transform._scale._x, l._transform._scale._x, i)), a(l._transform._scale._y) && (s._transform._scale._y = r(o._transform._scale._y, l._transform._scale._y, i))), a(l._transform._skew) && (s._transform._skew = {}, a(l._transform._skew._x) && (s._transform._skew._x = r(o._transform._skew._x, l._transform._skew._x, i)), a(l._transform._skew._y) && (s._transform._skew._y = r(o._transform._skew._y, l._transform._skew._y, i))))
                }
            }
            return t.implementedBy(e.prototype), e.prototype._isPlaying = !1, e.prototype.animData = null, e.prototype.maxTime = 0, e.prototype.timeCount = 0, e.prototype.loopCount = 0, e.prototype.loopNumber = 1, e.prototype._frameIndex = 0, e.prototype._onStart = null, e.prototype._onEnd = null, e.prototype._onComplete = null, e.prototype._onLoop = null, e.prototype._onFrame = null, e.prototype._onResume = null, e.prototype._gladObjLib = null, e.prototype._gladAnimMap = null, e.prototype.isPlaying = function() {
                return this._isPlaying
            }, e.prototype.init = function(t, e, i) {
                n(this, t, e, i)
            }, e.prototype.onTick = function(t) {
                if (this._isPlaying) {
                    if (0 === this.timeCount && 0 === this.loopCount && this._onStart ? this._onStart() : (this.timeCount > 0 || this.loopCount > 0) && this._onResume && this._onResume(), this.timeCount += t, this.timeCount >= this.maxTime) {
                        if (++this.loopCount >= this.loopNumber) return this.updateStyleToTime(this.maxTime), i(this), void(this._onComplete && this._onComplete());
                        this.timeCount = 0, this._frameIndex = 0, this._onLoop && this._onLoop()
                    }
                    this.updateStyleToTime(this.timeCount)
                }
            }, e.prototype.updateStyleToTime = function(t) {
                if (!(t < 0 || t > this.maxTime)) {
                    var e = this.getFrameAtTime(t);
                    if (e._SPRITES)
                        for (var n = 0; n < this._spritesNameList.length; n++) {
                            var i = this._gladObjLib[this._spritesNameList[n]];
                            i.updateCurrentStyle(e._SPRITES[n]._style)
                        }
                }
            }, e.prototype.play = function(t) {
                this.maxTime <= 0 || !0 !== this._isPlaying && ("number" == typeof t && (t = {
                    loopNumber: t
                }), t || (t = {}), t.loopNumber ? this.loopNumber = t.loopNumber : this.loopNumber = 1, t.startTime ? this.timeCount = t.startTime : this.timeCount = 0, this._isPlaying = !0)
            }, e.prototype.stop = function() {
                i(this), this._onEnd && this._onEnd()
            }, e.prototype.pause = function() {
                this._isPlaying = !1
            }, e.prototype.clone = function(t, i) {
                var r = new e;
                return n(r, this.animData, this._gladAnimMap, this._gladObjLib, t, i), r
            }, e.prototype.getFrameAtTime = function(t) {
                var e = this;
                if (t = Number(t), 1 === e.animData._keyFrames.length) return t === Number(e.animData._keyFrames[0]._time) ? e.animData._keyFrames[0] : null;
                e._frameIndex = o(e, t, e._frameIndex);
                var n = e.animData._keyFrames[e._frameIndex];
                if (null == n) return null;
                if (n && n._time === t) return n;
                var i = e.animData._keyFrames[e._frameIndex - 1],
                    r = {
                        _time: t,
                        _SPRITES: []
                    },
                    a = r._time;
                e.animData._step && (a = e.animData._step * Math.floor(r._time / e.animData._step));
                for (var l = (a - i._time) / (n._time - i._time), u = 0; u < n._SPRITES.length; u++) {
                    var c = n._SPRITES[u],
                        h = i._SPRITES[u];
                    if (h._id !== c._id) throw "Error: sprite list dismatch in animation frames";
                    var p = {
                        _id: c._id,
                        _name: c._name,
                        _style: {}
                    };
                    s(h, p, c, l), r._SPRITES.push(p)
                }
                return r
            }, e
        }), define("skbJet/component/gladPixiRenderer/KeyFrameAnimation", ["skbJet/component/gladRenderer/animation/KeyFrameAnimation", "skbJet/component/gladPixiRenderer/globalStore"], function(t, e) {
            function n(t) {
                this.init(t, e.animMap, e.lib), this.updateStyleIfPlaying = this.onTick
            }
            return n.prototype = new t, n
        }), define("skbJet/component/gladPixiRenderer/Scene", ["com/pixijs/pixi", "skbJet/component/gladPixiRenderer/Layer", "skbJet/component/gladPixiRenderer/KeyFrameAnimation", "skbJet/component/gladRenderer/view/IViewObject", "skbJet/component/gladRenderer/view/spriteUtil", "skbJet/component/gladPixiRenderer/globalStore"], function(t, e, n, i, r, o) {
            function a(i) {
                this.layers = {}, this.data = i, o.lib[i._name] = this, this.pixiContainer = new t.Container, this.pixiContainer.name = i._name;
                for (var r = 0; r < i._LAYERS.length; r++) {
                    var a = i._LAYERS[r];
                    this.layers[a._name] = new e(a), this.layers[a._name].parent = this, this.pixiContainer.addChild(this.layers[a._name].pixiContainer)
                }
                this._animations = [], this.show = function(t) {
                    this.pixiContainer.visible = t
                };
                for (var r = 0; r < i._ANIMATIONS.length; r++) {
                    "_KEY_FRAME_ANIMATION" === i._ANIMATIONS[r]._type && new n(i._ANIMATIONS[r])
                }
            }
            var s;
            i.implementedBy(a.prototype), a.prototype.getChildren = function() {
                return this.layers
            }, a.prototype.getParent = function() {
                return null
            }, a.prototype.getData = function() {
                return this.data
            };
            var l = r.isNotEmpty;
            return a.prototype.updateCurrentStyle = function(t) {
                var e = this.pixiContainer,
                    n = t,
                    i = Number(n._width),
                    r = Number(n._height);
                i || (s || (s = require("skbJet/component/gladPixiRenderer/gladPixiRenderer")), i = s.getSize().width), r || (s || (s = require("skbJet/component/gladPixiRenderer/gladPixiRenderer")), r = s.getSize().height), e.pivot.x = i / 2, e.pivot.y = r / 2, e.x = Number(n._left) + e.pivot.x, e.y = Number(n._top) + e.pivot.y, l(n._transform) && l(n._transform._scale) && (l(n._transform._scale._x) && (e.scale.x = Number(n._transform._scale._x)), l(n._transform._scale._y) && (e.scale.y = Number(n._transform._scale._y))), l(n._transform) && l(n._transform._rotate) && (e.rotation = Number(n._transform._rotate) * Math.PI / 180), l(n._opacity) && (e.alpha = Number(n._opacity))
            }, a
        }), define("skbJet/component/gladPixiRenderer/gladPixiRenderer", ["com/pixijs/pixi", "skbJet/component/gladRenderer/IgladRenderer", "skbJet/component/gladRenderer/gladUtil", "skbJet/component/gladPixiRenderer/globalStore", "skbJet/component/utils/PauseTimer", "skbJet/component/gladPixiRenderer/Scene"], function(t, e, n, i, r, o) {
            function a(t, e) {
                t === b.width && e === b.height || (b.width = t, b.height = e, h.resize(b.width, b.height), c(x.width, x.height))
            }

            function s(e, i, r) {
                p = e, p || (p = window._gladData), n.convertPixelRate(p, 2), n.clearGladDataText(p), i || (i = document.getElementById("game")), m = i;
                var s = navigator.userAgent.includes("Safari") && navigator.userAgent.includes("Version/15.4") && navigator.userAgent.includes("15_4");
                !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform) && !window.MSStream && (t.settings.PRECISION_FRAGMENT = t.PRECISION.HIGH), h = "webgl" === r ? new t.WebGLRenderer(p._width, p._height, {
                    transparent: !0,
                    resolution: 1,
                    antialias: !s
                }) : "2d" === r ? new t.CanvasRenderer(p._width, p._height, {
                    transparent: !0,
                    resolution: 1,
                    antialias: !s
                }) : t.autoDetectRenderer(p._width, p._height, {
                    transparent: !0,
                    resolution: 1,
                    antialias: !s
                }), m.appendChild(h.view), x.width = p._width, x.height = p._height, a(p._width, p._height), h.view.style.position = "absolute", h.view.style.zIndex = 3, d = new t.Container;
                for (var u = 0; u < p._SCENES.length; u++) {
                    var c = p._SCENES[u];
                    _[c._name] = new o(c), d.addChild(_[c._name].pixiContainer)
                }
                f = new t.ticker.Ticker, f.add(function() {
                    for (var t in y) y[t].updateStyleIfPlaying ? y[t].updateStyleIfPlaying(f.elapsedMS) : y[t].onTick(f.elapsedMS);
                    h.render(d)
                }), f.start(), document.addEventListener("visibilitychange", function() {
                    "hidden" === document.visibilityState ? f.stop() : f.start()
                }), l(i)
            }

            function l(t) {
                var e, n = !!window.PointerEvent;
                e = n ? "pointerdown" : "mousedown", t.addEventListener(e, function(t) {
                    t && 1 === t.button && t.stopPropagation()
                }, !0)
            }

            function u(t) {
                n.showScene(_, t)
            }

            function c(t, e) {
                var i = Number(h.view.width),
                    r = Number(h.view.height);
                x.width = t, x.height = e, n.fitSize(t, e, i, r, h.view)
            }
            var h, p, f, d, m, g = i.lib,
                _ = {},
                y = i.animMap,
                v = i.gameConfigOption,
                b = {
                    width: 0,
                    height: 0
                },
                x = {
                    width: 0,
                    height: 0
                },
                T = {
                    init: s,
                    lib: g,
                    fitSize: c,
                    showScene: u,
                    animMap: y,
                    gameConfigOption: v,
                    setSize: a,
                    getSize: function() {
                        return {
                            width: b.width,
                            height: b.height
                        }
                    },
                    getPixiRenderer: function() {
                        return h
                    },
                    getTicker: function() {
                        return f
                    },
                    getTimer: function() {
                        return r
                    },
                    forceRender: function() {
                        h.render(d)
                    },
                    getSprite: function(t) {
                        return g[t]
                    },
                    getAnimation: function(t) {
                        return y[t]
                    }
                };
            return e.implementedBy(T), T
        }), define("game/GameSizeController", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer"], function(t, e) {
            function n(t) {
                u = t.serverConfig.channel
            }

            function i() {
                var n = Number(window.innerWidth),
                    i = Number(window.innerHeight);
                document.documentElement.style.width = n + "px", document.documentElement.style.height = i + "px", document.body.style.width = n + "px", document.body.style.height = i + "px", a.style.width = n + "px", a.style.height = i + "px";
                var r = e.animMap._landscape2portrait;
                n < i && "portrait" !== o && "INT" !== u ? (o = "portrait", t.publish("Orientation.BeforeChange", {
                    orientation: o
                }), e.setSize(s[0], s[1]), r.updateStyleToTime(r.maxTime), t.publish("Orientation.AfterChange", {
                    orientation: o
                })) : n >= i && "landscape" !== o && (o = "landscape", t.publish("Orientation.BeforeChange", {
                    orientation: o
                }), e.setSize(l[0], l[1]), r.updateStyleToTime(0), t.publish("Orientation.AfterChange", {
                    orientation: o
                })), e.fitSize(n, i)
            }

            function r() {
                for (var t = [], n = e.animMap._landscape2portraitTemplate._spritesNameList, r = 0; r < n.length; r++) {
                    var o = n[r].match(/^_portrait_(.*)$/);
                    o ? t.push("_" + o[1]) : t.push(n[r])
                }
                e.animMap._landscape2portraitTemplate.clone(t, "_landscape2portrait"), a.width = 2 * window._gladData._width, a.height = 2 * window._gladData._height, window.addEventListener("resize", i), i()
            }
            var o, a = document.getElementById("game"),
                s = [1080, 1637],
                l = [1920, 1080],
                u = "INT";
            return t.subscribe("platformMsg/Kernel/System.Init", n), t.subscribe("onBeforeShowStage", r), {}
        }),
        function() {
            "use strict";
            var t = function() {
                this.init()
            };
            t.prototype = {
                init: function() {
                    var t = this || e;
                    return t._counter = 1e3, t._codecs = {}, t._howls = [], t._muted = !1, t._volume = 1, t._canPlayEvent = "canplaythrough", t._navigator = "undefined" != typeof window && window.navigator ? window.navigator : null, t.masterGain = null, t.noAudio = !1, t.usingWebAudio = !0, t.autoSuspend = !0, t.ctx = null, t.mobileAutoEnable = !0, t._setup(), t
                },
                volume: function(t) {
                    var n = this || e;
                    if (t = parseFloat(t), n.ctx || u(), void 0 !== t && t >= 0 && t <= 1) {
                        if (n._volume = t, n._muted) return n;
                        n.usingWebAudio && n.masterGain.gain.setValueAtTime(t, e.ctx.currentTime);
                        for (var i = 0; i < n._howls.length; i++)
                            if (!n._howls[i]._webAudio)
                                for (var r = n._howls[i]._getSoundIds(), o = 0; o < r.length; o++) {
                                    var a = n._howls[i]._soundById(r[o]);
                                    a && a._node && (a._node.volume = a._volume * t)
                                }
                        return n
                    }
                    return n._volume
                },
                mute: function(t) {
                    var n = this || e;
                    n.ctx || u(), n._muted = t, n.usingWebAudio && n.masterGain.gain.setValueAtTime(t ? 0 : n._volume, e.ctx.currentTime);
                    for (var i = 0; i < n._howls.length; i++)
                        if (!n._howls[i]._webAudio)
                            for (var r = n._howls[i]._getSoundIds(), o = 0; o < r.length; o++) {
                                var a = n._howls[i]._soundById(r[o]);
                                a && a._node && (a._node.muted = !!t || a._muted)
                            }
                    return n
                },
                unload: function() {
                    for (var t = this || e, n = t._howls.length - 1; n >= 0; n--) t._howls[n].unload();
                    return t.usingWebAudio && t.ctx && void 0 !== t.ctx.close && (t.ctx.close(), t.ctx = null, u()), t
                },
                codecs: function(t) {
                    return (this || e)._codecs[t.replace(/^x-/, "")]
                },
                _setup: function() {
                    var t = this || e;
                    if (t.state = t.ctx ? t.ctx.state || "running" : "running", t._autoSuspend(), !t.usingWebAudio)
                        if ("undefined" != typeof Audio) try {
                            var n = new Audio;
                            void 0 === n.oncanplaythrough && (t._canPlayEvent = "canplay")
                        } catch (e) {
                            t.noAudio = !0
                        } else t.noAudio = !0;
                    try {
                        var n = new Audio;
                        n.muted && (t.noAudio = !0)
                    } catch (t) {}
                    return t.noAudio || t._setupCodecs(), t
                },
                _setupCodecs: function() {
                    var t = this || e,
                        n = null;
                    try {
                        n = "undefined" != typeof Audio ? new Audio : null
                    } catch (e) {
                        return t
                    }
                    if (!n || "function" != typeof n.canPlayType) return t;
                    var i = n.canPlayType("audio/mpeg;").replace(/^no$/, ""),
                        r = t._navigator && t._navigator.userAgent.match(/OPR\/([0-6].)/g),
                        o = r && parseInt(r[0].split("/")[1], 10) < 33;
                    return t._codecs = {
                        mp3: !(o || !i && !n.canPlayType("audio/mp3;").replace(/^no$/, "")),
                        mpeg: !!i,
                        opus: !!n.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/, ""),
                        ogg: !!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""),
                        oga: !!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""),
                        wav: !!n.canPlayType('audio/wav; codecs="1"').replace(/^no$/, ""),
                        aac: !!n.canPlayType("audio/aac;").replace(/^no$/, ""),
                        caf: !!n.canPlayType("audio/x-caf;").replace(/^no$/, ""),
                        m4a: !!(n.canPlayType("audio/x-m4a;") || n.canPlayType("audio/m4a;") || n.canPlayType("audio/aac;")).replace(/^no$/, ""),
                        mp4: !!(n.canPlayType("audio/x-mp4;") || n.canPlayType("audio/mp4;") || n.canPlayType("audio/aac;")).replace(/^no$/, ""),
                        weba: !!n.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/, ""),
                        webm: !!n.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/, ""),
                        dolby: !!n.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/, ""),
                        flac: !!(n.canPlayType("audio/x-flac;") || n.canPlayType("audio/flac;")).replace(/^no$/, "")
                    }, t
                },
                _enableMobileAudio: function() {
                    var t = this || e,
                        n = /iPhone|iPad|iPod|Android|BlackBerry|BB10|Silk|Mobi/i.test(t._navigator && t._navigator.userAgent),
                        i = !!("ontouchend" in window || t._navigator && t._navigator.maxTouchPoints > 0 || t._navigator && t._navigator.msMaxTouchPoints > 0);
                    if (!t._mobileEnabled && t.ctx && (n || i)) {
                        t._mobileEnabled = !1, t._mobileUnloaded || 44100 === t.ctx.sampleRate || (t._mobileUnloaded = !0, t.unload()), t._scratchBuffer = t.ctx.createBuffer(1, 1, 22050);
                        var r = function() {
                            e._autoResume();
                            var n = t.ctx.createBufferSource();
                            n.buffer = t._scratchBuffer, n.connect(t.ctx.destination), void 0 === n.start ? n.noteOn(0) : n.start(0), "function" == typeof t.ctx.resume && t.ctx.resume(), n.onended = function() {
                                n.disconnect(0), t._mobileEnabled = !0, t.mobileAutoEnable = !1, document.removeEventListener("touchstart", r, !0), document.removeEventListener("touchend", r, !0)
                            }
                        };
                        return document.addEventListener("touchstart", r, !0), document.addEventListener("touchend", r, !0), t
                    }
                },
                _autoSuspend: function() {
                    var t = this;
                    if (t.autoSuspend && t.ctx && void 0 !== t.ctx.suspend && e.usingWebAudio) {
                        for (var n = 0; n < t._howls.length; n++)
                            if (t._howls[n]._webAudio)
                                for (var i = 0; i < t._howls[n]._sounds.length; i++)
                                    if (!t._howls[n]._sounds[i]._paused) return t;
                        return t._suspendTimer && clearTimeout(t._suspendTimer), t._suspendTimer = setTimeout(function() {
                            t.autoSuspend && (t._suspendTimer = null, t.state = "suspending", t.ctx.suspend().then(function() {
                                t.state = "suspended", t._resumeAfterSuspend && (delete t._resumeAfterSuspend, t._autoResume())
                            }))
                        }, 3e4), t
                    }
                },
                _autoResume: function() {
                    var t = this;
                    if (t.ctx && void 0 !== t.ctx.resume && e.usingWebAudio) return "running" === t.state && t._suspendTimer ? (clearTimeout(t._suspendTimer), t._suspendTimer = null) : "suspended" === t.state ? (t.ctx.resume().then(function() {
                        t.state = "running";
                        for (var e = 0; e < t._howls.length; e++) t._howls[e]._emit("resume")
                    }), t._suspendTimer && (clearTimeout(t._suspendTimer), t._suspendTimer = null)) : "suspending" === t.state && (t._resumeAfterSuspend = !0), t
                }
            };
            var e = new t,
                n = function(t) {
                    var e = this;
                    t.src && 0 !== t.src.length && e.init(t)
                };
            n.prototype = {
                init: function(t) {
                    var n = this;
                    return e.ctx || u(), n._autoplay = t.autoplay || !1, n._format = "string" != typeof t.format ? t.format : [t.format], n._html5 = t.html5 || !1, n._muted = t.mute || !1, n._loop = t.loop || !1, n._pool = t.pool || 5, n._preload = "boolean" != typeof t.preload || t.preload, n._rate = t.rate || 1, n._sprite = t.sprite || {}, n._src = "string" != typeof t.src ? t.src : [t.src], n._volume = void 0 !== t.volume ? t.volume : 1, n._xhrWithCredentials = t.xhrWithCredentials || !1, n._duration = 0, n._state = "unloaded", n._sounds = [], n._endTimers = {}, n._queue = [], n._playLock = !1, n._onend = t.onend ? [{
                        fn: t.onend
                    }] : [], n._onfade = t.onfade ? [{
                        fn: t.onfade
                    }] : [], n._onload = t.onload ? [{
                        fn: t.onload
                    }] : [], n._onloaderror = t.onloaderror ? [{
                        fn: t.onloaderror
                    }] : [], n._onplayerror = t.onplayerror ? [{
                        fn: t.onplayerror
                    }] : [], n._onpause = t.onpause ? [{
                        fn: t.onpause
                    }] : [], n._onplay = t.onplay ? [{
                        fn: t.onplay
                    }] : [], n._onstop = t.onstop ? [{
                        fn: t.onstop
                    }] : [], n._onmute = t.onmute ? [{
                        fn: t.onmute
                    }] : [], n._onvolume = t.onvolume ? [{
                        fn: t.onvolume
                    }] : [], n._onrate = t.onrate ? [{
                        fn: t.onrate
                    }] : [], n._onseek = t.onseek ? [{
                        fn: t.onseek
                    }] : [], n._onresume = [], n._webAudio = e.usingWebAudio && !n._html5, void 0 !== e.ctx && e.ctx && e.mobileAutoEnable && e._enableMobileAudio(), e._howls.push(n), n._autoplay && n._queue.push({
                        event: "play",
                        action: function() {
                            n.play()
                        }
                    }), n._preload && n.load(), n
                },
                load: function() {
                    var t = this,
                        n = null;
                    if (e.noAudio) return void t._emit("loaderror", null, "No audio support.");
                    "string" == typeof t._src && (t._src = [t._src]);
                    for (var r = 0; r < t._src.length; r++) {
                        var a, s;
                        if (t._format && t._format[r]) a = t._format[r];
                        else {
                            if ("string" != typeof(s = t._src[r])) {
                                t._emit("loaderror", null, "Non-string found in selected audio sources - ignoring.");
                                continue
                            }
                            a = /^data:audio\/([^;,]+);/i.exec(s), a || (a = /\.([^.]+)$/.exec(s.split("?", 1)[0])), a && (a = a[1].toLowerCase())
                        }
                        if (a && e.codecs(a)) {
                            n = t._src[r];
                            break
                        }
                    }
                    return n ? (t._src = n, t._state = "loading", "https:" === window.location.protocol && "http:" === n.slice(0, 5) && (t._html5 = !0, t._webAudio = !1), new i(t), t._webAudio && o(t), t) : void t._emit("loaderror", null, "No codec support for selected audio sources.")
                },
                play: function(t, n) {
                    var i = this,
                        r = null;
                    if ("number" == typeof t) r = t, t = null;
                    else {
                        if ("string" == typeof t && "loaded" === i._state && !i._sprite[t]) return null;
                        if (void 0 === t) {
                            t = "__default";
                            for (var o = 0, a = 0; a < i._sounds.length; a++) i._sounds[a]._paused && !i._sounds[a]._ended && (o++, r = i._sounds[a]._id);
                            1 === o ? t = null : r = null
                        }
                    }
                    var s = r ? i._soundById(r) : i._inactiveSound();
                    if (!s) return null;
                    if (r && !t && (t = s._sprite || "__default"), "loaded" !== i._state) {
                        s._sprite = t, s._ended = !1;
                        var l = s._id;
                        return i._queue.push({
                            event: "play",
                            action: function() {
                                i.play(l)
                            }
                        }), l
                    }
                    if (r && !s._paused) return n || setTimeout(function() {
                        i._emit("play", s._id)
                    }, 0), s._id;
                    i._webAudio && e._autoResume();
                    var u = Math.max(0, s._seek > 0 ? s._seek : i._sprite[t][0] / 1e3),
                        c = Math.max(0, (i._sprite[t][0] + i._sprite[t][1]) / 1e3 - u),
                        h = 1e3 * c / Math.abs(s._rate);
                    s._paused = !1, s._ended = !1, s._sprite = t, s._seek = u, s._start = i._sprite[t][0] / 1e3, s._stop = (i._sprite[t][0] + i._sprite[t][1]) / 1e3, s._loop = !(!s._loop && !i._sprite[t][2]);
                    var p = s._node;
                    if (i._webAudio) {
                        var f = function() {
                            i._refreshBuffer(s);
                            var t = s._muted || i._muted ? 0 : s._volume;
                            p.gain.setValueAtTime(t, e.ctx.currentTime), s._playStart = e.ctx.currentTime, void 0 === p.bufferSource.start ? s._loop ? p.bufferSource.noteGrainOn(0, u, 86400) : p.bufferSource.noteGrainOn(0, u, c) : s._loop ? p.bufferSource.start(0, u, 86400) : p.bufferSource.start(0, u, c), h !== 1 / 0 && (i._endTimers[s._id] = setTimeout(i._ended.bind(i, s), h)), n || setTimeout(function() {
                                i._emit("play", s._id)
                            }, 0)
                        };
                        "running" === e.state ? f() : (i.once("resume", f), i._clearTimer(s._id))
                    } else {
                        var d = function() {
                                p.currentTime = u, p.muted = s._muted || i._muted || e._muted || p.muted, p.volume = s._volume * e.volume(), p.playbackRate = s._rate;
                                try {
                                    var t = p.play();
                                    if ("undefined" != typeof Promise && t instanceof Promise && (i._playLock = !0, t.then(function() {
                                            i._playLock = !1, i._loadQueue()
                                        })), p.paused) return void i._emit("playerror", s._id, "Playback was unable to start. This is most commonly an issue on mobile devices where playback was not within a user interaction.");
                                    h !== 1 / 0 && (i._endTimers[s._id] = setTimeout(i._ended.bind(i, s), h)), n || i._emit("play", s._id)
                                } catch (t) {
                                    i._emit("playerror", s._id, t)
                                }
                            },
                            m = window && window.ejecta || !p.readyState && e._navigator.isCocoonJS;
                        if (4 === p.readyState || m) d();
                        else {
                            var g = function() {
                                d(), p.removeEventListener(e._canPlayEvent, g, !1)
                            };
                            p.addEventListener(e._canPlayEvent, g, !1), i._clearTimer(s._id)
                        }
                    }
                    return s._id
                },
                pause: function(t) {
                    var e = this;
                    if ("loaded" !== e._state || e._playLock) return e._queue.push({
                        event: "pause",
                        action: function() {
                            e.pause(t)
                        }
                    }), e;
                    for (var n = e._getSoundIds(t), i = 0; i < n.length; i++) {
                        e._clearTimer(n[i]);
                        var r = e._soundById(n[i]);
                        if (r && !r._paused && (r._seek = e.seek(n[i]), r._rateSeek = 0, r._paused = !0, e._stopFade(n[i]), r._node))
                            if (e._webAudio) {
                                if (!r._node.bufferSource) continue;
                                void 0 === r._node.bufferSource.stop ? r._node.bufferSource.noteOff(0) : r._node.bufferSource.stop(0), e._cleanBuffer(r._node)
                            } else isNaN(r._node.duration) && r._node.duration !== 1 / 0 || r._node.pause();
                        arguments[1] || e._emit("pause", r ? r._id : null)
                    }
                    return e
                },
                stop: function(t, e) {
                    var n = this;
                    if ("loaded" !== n._state) return n._queue.push({
                        event: "stop",
                        action: function() {
                            n.stop(t)
                        }
                    }), n;
                    for (var i = n._getSoundIds(t), r = 0; r < i.length; r++) {
                        n._clearTimer(i[r]);
                        var o = n._soundById(i[r]);
                        o && (o._seek = o._start || 0, o._rateSeek = 0, o._paused = !0, o._ended = !0, n._stopFade(i[r]), o._node && (n._webAudio ? o._node.bufferSource && (void 0 === o._node.bufferSource.stop ? o._node.bufferSource.noteOff(0) : o._node.bufferSource.stop(0), n._cleanBuffer(o._node)) : isNaN(o._node.duration) && o._node.duration !== 1 / 0 || (o._node.currentTime = o._start || 0, o._node.pause())), e || n._emit("stop", o._id))
                    }
                    return n
                },
                mute: function(t, n) {
                    var i = this;
                    if ("loaded" !== i._state) return i._queue.push({
                        event: "mute",
                        action: function() {
                            i.mute(t, n)
                        }
                    }), i;
                    if (void 0 === n) {
                        if ("boolean" != typeof t) return i._muted;
                        i._muted = t
                    }
                    for (var r = i._getSoundIds(n), o = 0; o < r.length; o++) {
                        var a = i._soundById(r[o]);
                        a && (a._muted = t, a._interval && i._stopFade(a._id), i._webAudio && a._node ? a._node.gain.setValueAtTime(t ? 0 : a._volume, e.ctx.currentTime) : a._node && (a._node.muted = !!e._muted || t), i._emit("mute", a._id))
                    }
                    return i
                },
                volume: function() {
                    var t, n, i = this,
                        r = arguments;
                    if (0 === r.length) return i._volume;
                    1 === r.length || 2 === r.length && void 0 === r[1] ? i._getSoundIds().indexOf(r[0]) >= 0 ? n = parseInt(r[0], 10) : t = parseFloat(r[0]) : r.length >= 2 && (t = parseFloat(r[0]), n = parseInt(r[1], 10));
                    var o;
                    if (!(void 0 !== t && t >= 0 && t <= 1)) return o = n ? i._soundById(n) : i._sounds[0], o ? o._volume : 0;
                    if ("loaded" !== i._state) return i._queue.push({
                        event: "volume",
                        action: function() {
                            i.volume.apply(i, r)
                        }
                    }), i;
                    void 0 === n && (i._volume = t), n = i._getSoundIds(n);
                    for (var a = 0; a < n.length; a++)(o = i._soundById(n[a])) && (o._volume = t, r[2] || i._stopFade(n[a]), i._webAudio && o._node && !o._muted ? o._node.gain.setValueAtTime(t, e.ctx.currentTime) : o._node && !o._muted && (o._node.volume = t * e.volume()), i._emit("volume", o._id));
                    return i
                },
                fade: function(t, n, i, r) {
                    var o = this;
                    if ("loaded" !== o._state) return o._queue.push({
                        event: "fade",
                        action: function() {
                            o.fade(t, n, i, r)
                        }
                    }), o;
                    o.volume(t, r);
                    for (var a = o._getSoundIds(r), s = 0; s < a.length; s++) {
                        var l = o._soundById(a[s]);
                        if (l) {
                            if (r || o._stopFade(a[s]), o._webAudio && !l._muted) {
                                var u = e.ctx.currentTime,
                                    c = u + i / 1e3;
                                l._volume = t, l._node.gain.setValueAtTime(t, u), l._node.gain.linearRampToValueAtTime(n, c)
                            }
                            o._startFadeInterval(l, t, n, i, a[s], void 0 === r)
                        }
                    }
                    return o
                },
                _startFadeInterval: function(t, e, n, i, r, o) {
                    var a = this,
                        s = e,
                        l = e > n ? "out" : "in",
                        u = Math.abs(e - n),
                        c = u / .01,
                        h = c > 0 ? i / c : i;
                    h < 4 && (c = Math.ceil(c / (4 / h)), h = 4), t._fadeTo = n, t._interval = setInterval(function() {
                        c > 0 && (s += "in" === l ? .01 : -.01), s = Math.max(0, s), s = Math.min(1, s), s = Math.round(100 * s) / 100, a._webAudio ? t._volume = s : a.volume(s, t._id, !0), o && (a._volume = s), (n < e && s <= n || n > e && s >= n) && (clearInterval(t._interval), t._interval = null, t._fadeTo = null, a.volume(n, t._id), a._emit("fade", t._id))
                    }, h)
                },
                _stopFade: function(t) {
                    var n = this,
                        i = n._soundById(t);
                    return i && i._interval && (n._webAudio && i._node.gain.cancelScheduledValues(e.ctx.currentTime), clearInterval(i._interval), i._interval = null, n.volume(i._fadeTo, t), i._fadeTo = null, n._emit("fade", t)), n
                },
                loop: function() {
                    var t, e, n, i = this,
                        r = arguments;
                    if (0 === r.length) return i._loop;
                    if (1 === r.length) {
                        if ("boolean" != typeof r[0]) return !!(n = i._soundById(parseInt(r[0], 10))) && n._loop;
                        t = r[0], i._loop = t
                    } else 2 === r.length && (t = r[0], e = parseInt(r[1], 10));
                    for (var o = i._getSoundIds(e), a = 0; a < o.length; a++)(n = i._soundById(o[a])) && (n._loop = t,
                        i._webAudio && n._node && n._node.bufferSource && (n._node.bufferSource.loop = t, t && (n._node.bufferSource.loopStart = n._start || 0, n._node.bufferSource.loopEnd = n._stop)));
                    return i
                },
                rate: function() {
                    var t, n, i = this,
                        r = arguments;
                    if (0 === r.length) n = i._sounds[0]._id;
                    else if (1 === r.length) {
                        var o = i._getSoundIds(),
                            a = o.indexOf(r[0]);
                        a >= 0 ? n = parseInt(r[0], 10) : t = parseFloat(r[0])
                    } else 2 === r.length && (t = parseFloat(r[0]), n = parseInt(r[1], 10));
                    var s;
                    if ("number" != typeof t) return s = i._soundById(n), s ? s._rate : i._rate;
                    if ("loaded" !== i._state) return i._queue.push({
                        event: "rate",
                        action: function() {
                            i.rate.apply(i, r)
                        }
                    }), i;
                    void 0 === n && (i._rate = t), n = i._getSoundIds(n);
                    for (var l = 0; l < n.length; l++)
                        if (s = i._soundById(n[l])) {
                            s._rateSeek = i.seek(n[l]), s._playStart = i._webAudio ? e.ctx.currentTime : s._playStart, s._rate = t, i._webAudio && s._node && s._node.bufferSource ? s._node.bufferSource.playbackRate.value = t : s._node && (s._node.playbackRate = t);
                            var u = i.seek(n[l]),
                                c = (i._sprite[s._sprite][0] + i._sprite[s._sprite][1]) / 1e3 - u,
                                h = 1e3 * c / Math.abs(s._rate);
                            !i._endTimers[n[l]] && s._paused || (i._clearTimer(n[l]), i._endTimers[n[l]] = setTimeout(i._ended.bind(i, s), h)), i._emit("rate", s._id)
                        }
                    return i
                },
                seek: function() {
                    var t, n, i = this,
                        r = arguments;
                    if (0 === r.length) n = i._sounds[0]._id;
                    else if (1 === r.length) {
                        var o = i._getSoundIds(),
                            a = o.indexOf(r[0]);
                        a >= 0 ? n = parseInt(r[0], 10) : i._sounds.length && (n = i._sounds[0]._id, t = parseFloat(r[0]))
                    } else 2 === r.length && (t = parseFloat(r[0]), n = parseInt(r[1], 10));
                    if (void 0 === n) return i;
                    if ("loaded" !== i._state) return i._queue.push({
                        event: "seek",
                        action: function() {
                            i.seek.apply(i, r)
                        }
                    }), i;
                    var s = i._soundById(n);
                    if (s) {
                        if (!("number" == typeof t && t >= 0)) {
                            if (i._webAudio) {
                                var l = i.playing(n) ? e.ctx.currentTime - s._playStart : 0,
                                    u = s._rateSeek ? s._rateSeek - s._seek : 0;
                                return s._seek + (u + l * Math.abs(s._rate))
                            }
                            return s._node.currentTime
                        }
                        var c = i.playing(n);
                        c && i.pause(n, !0), s._seek = t, s._ended = !1, i._clearTimer(n), c && i.play(n, !0), !i._webAudio && s._node && (s._node.currentTime = t), i._emit("seek", n)
                    }
                    return i
                },
                playing: function(t) {
                    var e = this;
                    if ("number" == typeof t) {
                        var n = e._soundById(t);
                        return !!n && !n._paused
                    }
                    for (var i = 0; i < e._sounds.length; i++)
                        if (!e._sounds[i]._paused) return !0;
                    return !1
                },
                duration: function(t) {
                    var e = this,
                        n = e._duration,
                        i = e._soundById(t);
                    return i && (n = e._sprite[i._sprite][1] / 1e3), n
                },
                state: function() {
                    return this._state
                },
                unload: function() {
                    for (var t = this, n = t._sounds, i = 0; i < n.length; i++) {
                        n[i]._paused || t.stop(n[i]._id), t._webAudio || (/MSIE |Trident\//.test(e._navigator && e._navigator.userAgent) || (n[i]._node.src = "data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"), n[i]._node.removeEventListener("error", n[i]._errorFn, !1), n[i]._node.removeEventListener(e._canPlayEvent, n[i]._loadFn, !1)), delete n[i]._node, t._clearTimer(n[i]._id);
                        var o = e._howls.indexOf(t);
                        o >= 0 && e._howls.splice(o, 1)
                    }
                    var a = !0;
                    for (i = 0; i < e._howls.length; i++)
                        if (e._howls[i]._src === t._src) {
                            a = !1;
                            break
                        }
                    return r && a && delete r[t._src], e.noAudio = !1, t._state = "unloaded", t._sounds = [], t = null, null
                },
                on: function(t, e, n, i) {
                    var r = this,
                        o = r["_on" + t];
                    return "function" == typeof e && o.push(i ? {
                        id: n,
                        fn: e,
                        once: i
                    } : {
                        id: n,
                        fn: e
                    }), r
                },
                off: function(t, e, n) {
                    var i = this,
                        r = i["_on" + t],
                        o = 0;
                    if ("number" == typeof e && (n = e, e = null), e || n)
                        for (o = 0; o < r.length; o++) {
                            var a = n === r[o].id;
                            if (e === r[o].fn && a || !e && a) {
                                r.splice(o, 1);
                                break
                            }
                        } else if (t) i["_on" + t] = [];
                        else {
                            var s = Object.keys(i);
                            for (o = 0; o < s.length; o++) 0 === s[o].indexOf("_on") && Array.isArray(i[s[o]]) && (i[s[o]] = [])
                        }
                    return i
                },
                once: function(t, e, n) {
                    var i = this;
                    return i.on(t, e, n, 1), i
                },
                _emit: function(t, e, n) {
                    for (var i = this, r = i["_on" + t], o = r.length - 1; o >= 0; o--) r[o].id && r[o].id !== e && "load" !== t || (setTimeout(function(t) {
                        t.call(this, e, n)
                    }.bind(i, r[o].fn), 0), r[o].once && i.off(t, r[o].fn, r[o].id));
                    return i
                },
                _loadQueue: function() {
                    var t = this;
                    if (t._queue.length > 0) {
                        var e = t._queue[0];
                        t.once(e.event, function() {
                            t._queue.shift(), t._loadQueue()
                        }), e.action()
                    }
                    return t
                },
                _ended: function(t) {
                    var n = this,
                        i = t._sprite;
                    if (!n._webAudio && t._node && !t._node.paused && !t._node.ended && t._node.currentTime < t._stop) return setTimeout(n._ended.bind(n, t), 100), n;
                    var r = !(!t._loop && !n._sprite[i][2]);
                    if (n._emit("end", t._id), !n._webAudio && r && n.stop(t._id, !0).play(t._id), n._webAudio && r) {
                        n._emit("play", t._id), t._seek = t._start || 0, t._rateSeek = 0, t._playStart = e.ctx.currentTime;
                        var o = 1e3 * (t._stop - t._start) / Math.abs(t._rate);
                        n._endTimers[t._id] = setTimeout(n._ended.bind(n, t), o)
                    }
                    return n._webAudio && !r && (t._paused = !0, t._ended = !0, t._seek = t._start || 0, t._rateSeek = 0, n._clearTimer(t._id), n._cleanBuffer(t._node), e._autoSuspend()), n._webAudio || r || n.stop(t._id), n
                },
                _clearTimer: function(t) {
                    var e = this;
                    return e._endTimers[t] && (clearTimeout(e._endTimers[t]), delete e._endTimers[t]), e
                },
                _soundById: function(t) {
                    for (var e = this, n = 0; n < e._sounds.length; n++)
                        if (t === e._sounds[n]._id) return e._sounds[n];
                    return null
                },
                _inactiveSound: function() {
                    var t = this;
                    t._drain();
                    for (var e = 0; e < t._sounds.length; e++)
                        if (t._sounds[e]._ended) return t._sounds[e].reset();
                    return new i(t)
                },
                _drain: function() {
                    var t = this,
                        e = t._pool,
                        n = 0,
                        i = 0;
                    if (!(t._sounds.length < e)) {
                        for (i = 0; i < t._sounds.length; i++) t._sounds[i]._ended && n++;
                        for (i = t._sounds.length - 1; i >= 0; i--) {
                            if (n <= e) return;
                            t._sounds[i]._ended && (t._webAudio && t._sounds[i]._node && t._sounds[i]._node.disconnect(0), t._sounds.splice(i, 1), n--)
                        }
                    }
                },
                _getSoundIds: function(t) {
                    var e = this;
                    if (void 0 === t) {
                        for (var n = [], i = 0; i < e._sounds.length; i++) n.push(e._sounds[i]._id);
                        return n
                    }
                    return [t]
                },
                _refreshBuffer: function(t) {
                    var n = this;
                    return t._node.bufferSource = e.ctx.createBufferSource(), t._node.bufferSource.buffer = r[n._src], t._panner ? t._node.bufferSource.connect(t._panner) : t._node.bufferSource.connect(t._node), t._node.bufferSource.loop = t._loop, t._loop && (t._node.bufferSource.loopStart = t._start || 0, t._node.bufferSource.loopEnd = t._stop), t._node.bufferSource.playbackRate.value = t._rate, n
                },
                _cleanBuffer: function(t) {
                    var n = this;
                    if (e._scratchBuffer) {
                        t.bufferSource.onended = null, t.bufferSource.disconnect(0);
                        try {
                            t.bufferSource.buffer = e._scratchBuffer
                        } catch (t) {}
                    }
                    return t.bufferSource = null, n
                }
            };
            var i = function(t) {
                this._parent = t, this.init()
            };
            i.prototype = {
                init: function() {
                    var t = this,
                        n = t._parent;
                    return t._muted = n._muted, t._loop = n._loop, t._volume = n._volume, t._rate = n._rate, t._seek = 0, t._paused = !0, t._ended = !0, t._sprite = "__default", t._id = ++e._counter, n._sounds.push(t), t.create(), t
                },
                create: function() {
                    var t = this,
                        n = t._parent,
                        i = e._muted || t._muted || t._parent._muted ? 0 : t._volume;
                    return n._webAudio ? (t._node = void 0 === e.ctx.createGain ? e.ctx.createGainNode() : e.ctx.createGain(), t._node.gain.setValueAtTime(i, e.ctx.currentTime), t._node.paused = !0, t._node.connect(e.masterGain)) : (t._node = new Audio, t._errorFn = t._errorListener.bind(t), t._node.addEventListener("error", t._errorFn, !1), t._loadFn = t._loadListener.bind(t), t._node.addEventListener(e._canPlayEvent, t._loadFn, !1), t._node.src = n._src, t._node.preload = "auto", t._node.volume = i * e.volume(), t._node.load()), t
                },
                reset: function() {
                    var t = this,
                        n = t._parent;
                    return t._muted = n._muted, t._loop = n._loop, t._volume = n._volume, t._rate = n._rate, t._seek = 0, t._rateSeek = 0, t._paused = !0, t._ended = !0, t._sprite = "__default", t._id = ++e._counter, t
                },
                _errorListener: function() {
                    var t = this;
                    t._parent._emit("loaderror", t._id, t._node.error ? t._node.error.code : 0), t._node.removeEventListener("error", t._errorFn, !1)
                },
                _loadListener: function() {
                    var t = this,
                        n = t._parent;
                    n._duration = Math.ceil(10 * t._node.duration) / 10, 0 === Object.keys(n._sprite).length && (n._sprite = {
                        __default: [0, 1e3 * n._duration]
                    }), "loaded" !== n._state && (n._state = "loaded", n._emit("load"), n._loadQueue()), t._node.removeEventListener(e._canPlayEvent, t._loadFn, !1)
                }
            };
            var r = {},
                o = function(t) {
                    var e = t._src;
                    if (r[e]) return t._duration = r[e].duration, void l(t);
                    if (/^data:[^;]+;base64,/.test(e)) {
                        for (var n = atob(e.split(",")[1]), i = new Uint8Array(n.length), o = 0; o < n.length; ++o) i[o] = n.charCodeAt(o);
                        s(i.buffer, t)
                    } else {
                        var u = new XMLHttpRequest;
                        u.open("GET", e, !0), u.withCredentials = t._xhrWithCredentials, u.responseType = "arraybuffer", u.onload = function() {
                            var e = (u.status + "")[0];
                            if ("0" !== e && "2" !== e && "3" !== e) return void t._emit("loaderror", null, "Failed loading audio file with status: " + u.status + ".");
                            s(u.response, t)
                        }, u.onerror = function() {
                            t._webAudio && (t._html5 = !0, t._webAudio = !1, t._sounds = [], delete r[e], t.load())
                        }, a(u)
                    }
                },
                a = function(t) {
                    try {
                        t.send()
                    } catch (e) {
                        t.onerror()
                    }
                },
                s = function(t, n) {
                    e.ctx.decodeAudioData(t, function(t) {
                        t && n._sounds.length > 0 && (r[n._src] = t, l(n, t))
                    }, function() {
                        n._emit("loaderror", null, "Decoding audio data failed.")
                    })
                },
                l = function(t, e) {
                    e && !t._duration && (t._duration = e.duration), 0 === Object.keys(t._sprite).length && (t._sprite = {
                        __default: [0, 1e3 * t._duration]
                    }), "loaded" !== t._state && (t._state = "loaded", t._emit("load"), t._loadQueue())
                },
                u = function() {
                    try {
                        "undefined" != typeof AudioContext ? e.ctx = new AudioContext : "undefined" != typeof webkitAudioContext ? e.ctx = new webkitAudioContext : e.usingWebAudio = !1
                    } catch (t) {
                        e.usingWebAudio = !1
                    }
                    var t = /iP(hone|od|ad)/.test(e._navigator && e._navigator.platform),
                        n = e._navigator && e._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),
                        i = n ? parseInt(n[1], 10) : null;
                    if (t && i && i < 9) {
                        var r = /safari/.test(e._navigator && e._navigator.userAgent.toLowerCase());
                        (e._navigator && e._navigator.standalone && !r || e._navigator && !e._navigator.standalone && !r) && (e.usingWebAudio = !1)
                    }
                    e.usingWebAudio && (e.masterGain = void 0 === e.ctx.createGain ? e.ctx.createGainNode() : e.ctx.createGain(), e.masterGain.gain.setValueAtTime(e._muted ? 0 : 1, e.ctx.currentTime), e.masterGain.connect(e.ctx.destination)), e._setup()
                };
            "function" == typeof define && define.amd && define("com/howlerjs/howler", [], function() {
                return {
                    Howler: e,
                    Howl: n
                }
            }), "undefined" != typeof exports && (exports.Howler = e, exports.Howl = n), "undefined" != typeof window ? (window.HowlerGlobal = t, window.Howler = e, window.Howl = n, window.Sound = i) : "undefined" != typeof global && (global.HowlerGlobal = t, global.Howler = e, global.Howl = n, global.Sound = i)
        }(),
        function() {
            "use strict";
            HowlerGlobal.prototype._pos = [0, 0, 0], HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0], HowlerGlobal.prototype.stereo = function(t) {
                var e = this;
                if (!e.ctx || !e.ctx.listener) return e;
                for (var n = e._howls.length - 1; n >= 0; n--) e._howls[n].stereo(t);
                return e
            }, HowlerGlobal.prototype.pos = function(t, e, n) {
                var i = this;
                return i.ctx && i.ctx.listener ? (e = "number" != typeof e ? i._pos[1] : e, n = "number" != typeof n ? i._pos[2] : n, "number" != typeof t ? i._pos : (i._pos = [t, e, n], i.ctx.listener.setPosition(i._pos[0], i._pos[1], i._pos[2]), i)) : i
            }, HowlerGlobal.prototype.orientation = function(t, e, n, i, r, o) {
                var a = this;
                if (!a.ctx || !a.ctx.listener) return a;
                var s = a._orientation;
                return e = "number" != typeof e ? s[1] : e, n = "number" != typeof n ? s[2] : n, i = "number" != typeof i ? s[3] : i, r = "number" != typeof r ? s[4] : r, o = "number" != typeof o ? s[5] : o, "number" != typeof t ? s : (a._orientation = [t, e, n, i, r, o], a.ctx.listener.setOrientation(t, e, n, i, r, o), a)
            }, Howl.prototype.init = function(t) {
                return function(e) {
                    var n = this;
                    return n._orientation = e.orientation || [1, 0, 0], n._stereo = e.stereo || null, n._pos = e.pos || null, n._pannerAttr = {
                        coneInnerAngle: void 0 !== e.coneInnerAngle ? e.coneInnerAngle : 360,
                        coneOuterAngle: void 0 !== e.coneOuterAngle ? e.coneOuterAngle : 360,
                        coneOuterGain: void 0 !== e.coneOuterGain ? e.coneOuterGain : 0,
                        distanceModel: void 0 !== e.distanceModel ? e.distanceModel : "inverse",
                        maxDistance: void 0 !== e.maxDistance ? e.maxDistance : 1e4,
                        panningModel: void 0 !== e.panningModel ? e.panningModel : "HRTF",
                        refDistance: void 0 !== e.refDistance ? e.refDistance : 1,
                        rolloffFactor: void 0 !== e.rolloffFactor ? e.rolloffFactor : 1
                    }, n._onstereo = e.onstereo ? [{
                        fn: e.onstereo
                    }] : [], n._onpos = e.onpos ? [{
                        fn: e.onpos
                    }] : [], n._onorientation = e.onorientation ? [{
                        fn: e.onorientation
                    }] : [], t.call(this, e)
                }
            }(Howl.prototype.init), Howl.prototype.stereo = function(e, n) {
                var i = this;
                if (!i._webAudio) return i;
                if ("loaded" !== i._state) return i._queue.push({
                    event: "stereo",
                    action: function() {
                        i.stereo(e, n)
                    }
                }), i;
                var r = void 0 === Howler.ctx.createStereoPanner ? "spatial" : "stereo";
                if (void 0 === n) {
                    if ("number" != typeof e) return i._stereo;
                    i._stereo = e, i._pos = [e, 0, 0]
                }
                for (var o = i._getSoundIds(n), a = 0; a < o.length; a++) {
                    var s = i._soundById(o[a]);
                    if (s) {
                        if ("number" != typeof e) return s._stereo;
                        s._stereo = e, s._pos = [e, 0, 0], s._node && (s._pannerAttr.panningModel = "equalpower", s._panner && s._panner.pan || t(s, r), "spatial" === r ? s._panner.setPosition(e, 0, 0) : s._panner.pan.setValueAtTime(e, Howler.ctx.currentTime)), i._emit("stereo", s._id)
                    }
                }
                return i
            }, Howl.prototype.pos = function(e, n, i, r) {
                var o = this;
                if (!o._webAudio) return o;
                if ("loaded" !== o._state) return o._queue.push({
                    event: "pos",
                    action: function() {
                        o.pos(e, n, i, r)
                    }
                }), o;
                if (n = "number" != typeof n ? 0 : n, i = "number" != typeof i ? -.5 : i, void 0 === r) {
                    if ("number" != typeof e) return o._pos;
                    o._pos = [e, n, i]
                }
                for (var a = o._getSoundIds(r), s = 0; s < a.length; s++) {
                    var l = o._soundById(a[s]);
                    if (l) {
                        if ("number" != typeof e) return l._pos;
                        l._pos = [e, n, i], l._node && (l._panner && !l._panner.pan || t(l, "spatial"), l._panner.setPosition(e, n, i)), o._emit("pos", l._id)
                    }
                }
                return o
            }, Howl.prototype.orientation = function(e, n, i, r) {
                var o = this;
                if (!o._webAudio) return o;
                if ("loaded" !== o._state) return o._queue.push({
                    event: "orientation",
                    action: function() {
                        o.orientation(e, n, i, r)
                    }
                }), o;
                if (n = "number" != typeof n ? o._orientation[1] : n, i = "number" != typeof i ? o._orientation[2] : i, void 0 === r) {
                    if ("number" != typeof e) return o._orientation;
                    o._orientation = [e, n, i]
                }
                for (var a = o._getSoundIds(r), s = 0; s < a.length; s++) {
                    var l = o._soundById(a[s]);
                    if (l) {
                        if ("number" != typeof e) return l._orientation;
                        l._orientation = [e, n, i], l._node && (l._panner || (l._pos || (l._pos = o._pos || [0, 0, -.5]), t(l, "spatial")), l._panner.setOrientation(e, n, i)), o._emit("orientation", l._id)
                    }
                }
                return o
            }, Howl.prototype.pannerAttr = function() {
                var e, n, i, r = this,
                    o = arguments;
                if (!r._webAudio) return r;
                if (0 === o.length) return r._pannerAttr;
                if (1 === o.length) {
                    if ("object" != typeof o[0]) return i = r._soundById(parseInt(o[0], 10)), i ? i._pannerAttr : r._pannerAttr;
                    e = o[0], void 0 === n && (e.pannerAttr || (e.pannerAttr = {
                        coneInnerAngle: e.coneInnerAngle,
                        coneOuterAngle: e.coneOuterAngle,
                        coneOuterGain: e.coneOuterGain,
                        distanceModel: e.distanceModel,
                        maxDistance: e.maxDistance,
                        refDistance: e.refDistance,
                        rolloffFactor: e.rolloffFactor,
                        panningModel: e.panningModel
                    }), r._pannerAttr = {
                        coneInnerAngle: void 0 !== e.pannerAttr.coneInnerAngle ? e.pannerAttr.coneInnerAngle : r._coneInnerAngle,
                        coneOuterAngle: void 0 !== e.pannerAttr.coneOuterAngle ? e.pannerAttr.coneOuterAngle : r._coneOuterAngle,
                        coneOuterGain: void 0 !== e.pannerAttr.coneOuterGain ? e.pannerAttr.coneOuterGain : r._coneOuterGain,
                        distanceModel: void 0 !== e.pannerAttr.distanceModel ? e.pannerAttr.distanceModel : r._distanceModel,
                        maxDistance: void 0 !== e.pannerAttr.maxDistance ? e.pannerAttr.maxDistance : r._maxDistance,
                        refDistance: void 0 !== e.pannerAttr.refDistance ? e.pannerAttr.refDistance : r._refDistance,
                        rolloffFactor: void 0 !== e.pannerAttr.rolloffFactor ? e.pannerAttr.rolloffFactor : r._rolloffFactor,
                        panningModel: void 0 !== e.pannerAttr.panningModel ? e.pannerAttr.panningModel : r._panningModel
                    })
                } else 2 === o.length && (e = o[0], n = parseInt(o[1], 10));
                for (var a = r._getSoundIds(n), s = 0; s < a.length; s++)
                    if (i = r._soundById(a[s])) {
                        var l = i._pannerAttr;
                        l = {
                            coneInnerAngle: void 0 !== e.coneInnerAngle ? e.coneInnerAngle : l.coneInnerAngle,
                            coneOuterAngle: void 0 !== e.coneOuterAngle ? e.coneOuterAngle : l.coneOuterAngle,
                            coneOuterGain: void 0 !== e.coneOuterGain ? e.coneOuterGain : l.coneOuterGain,
                            distanceModel: void 0 !== e.distanceModel ? e.distanceModel : l.distanceModel,
                            maxDistance: void 0 !== e.maxDistance ? e.maxDistance : l.maxDistance,
                            refDistance: void 0 !== e.refDistance ? e.refDistance : l.refDistance,
                            rolloffFactor: void 0 !== e.rolloffFactor ? e.rolloffFactor : l.rolloffFactor,
                            panningModel: void 0 !== e.panningModel ? e.panningModel : l.panningModel
                        };
                        var u = i._panner;
                        u ? (u.coneInnerAngle = l.coneInnerAngle, u.coneOuterAngle = l.coneOuterAngle, u.coneOuterGain = l.coneOuterGain, u.distanceModel = l.distanceModel, u.maxDistance = l.maxDistance, u.refDistance = l.refDistance, u.rolloffFactor = l.rolloffFactor, u.panningModel = l.panningModel) : (i._pos || (i._pos = r._pos || [0, 0, -.5]), t(i, "spatial"))
                    }
                return r
            }, Sound.prototype.init = function(t) {
                return function() {
                    var e = this,
                        n = e._parent;
                    e._orientation = n._orientation, e._stereo = n._stereo, e._pos = n._pos, e._pannerAttr = n._pannerAttr, t.call(this), e._stereo ? n.stereo(e._stereo) : e._pos && n.pos(e._pos[0], e._pos[1], e._pos[2], e._id)
                }
            }(Sound.prototype.init), Sound.prototype.reset = function(t) {
                return function() {
                    var e = this,
                        n = e._parent;
                    return e._orientation = n._orientation, e._pos = n._pos, e._pannerAttr = n._pannerAttr, t.call(this)
                }
            }(Sound.prototype.reset);
            var t = function(t, e) {
                e = e || "spatial", "spatial" === e ? (t._panner = Howler.ctx.createPanner(), t._panner.coneInnerAngle = t._pannerAttr.coneInnerAngle, t._panner.coneOuterAngle = t._pannerAttr.coneOuterAngle, t._panner.coneOuterGain = t._pannerAttr.coneOuterGain, t._panner.distanceModel = t._pannerAttr.distanceModel, t._panner.maxDistance = t._pannerAttr.maxDistance, t._panner.refDistance = t._pannerAttr.refDistance, t._panner.rolloffFactor = t._pannerAttr.rolloffFactor, t._panner.panningModel = t._pannerAttr.panningModel, t._panner.setPosition(t._pos[0], t._pos[1], t._pos[2]), t._panner.setOrientation(t._orientation[0], t._orientation[1], t._orientation[2])) : (t._panner = Howler.ctx.createStereoPanner(), t._panner.pan.setValueAtTime(t._stereo, Howler.ctx.currentTime)), t._panner.connect(t._node), t._paused || t._parent.pause(t._id, !0).play(t._id)
            }
        }(), define("game/component/howlerAudioPlayer/HowlerChannel", ["com/howlerjs/howler", "skbJet/component/utils/PauseTimer"], function(t, e) {
            function n() {}

            function i(t, e) {
                t._loaded || (t._loaded = !0, e())
            }

            function r(t) {
                t._fadeInterval && (e.clearInterval(t._fadeInterval), t._fadeInterval = null)
            }
            return n.prototype._muteFlag = !1, n.prototype._curSound = null, n.prototype._howl = null, n.prototype._loaded = !1, n.prototype._currentVolume = 1, n.prototype._fadeOutEndPause = !1, n.prototype.load = function(t, e, n) {
                this._howl = new window.Howl({
                    src: t.urls,
                    sprite: t.sprite
                });
                var r = this;
                this._howl.once("load", function() {
                    i(r, e)
                }), setTimeout(function() {
                    i(r, e)
                }, 14e3), this._howl.once("loaderror", n)
            }, n.prototype.currentPlaying = function() {
                return this._curSound ? this._curSound.name : null
            }, n.prototype._onVolumeUpdated = function() {
                this._muteFlag ? (this._howl._soundById(this._howl._getSoundIds()[0])._node.gain.value = 0, this._howl._soundById(this._howl._getSoundIds()[0])._volume = 0) : this._curSound && this._curSound.id && this._howl.volume(this._howl._volume, this._curSound.id)
            }, n.prototype.play = function(t, e, n) {
                var i = this;
                this.stop(), this._callback = n, this._curSound = {
                    name: null,
                    id: null
                };
                for (var r = this._howl._sounds || [], o = 0; o < r.length; o++) "suspended" !== r[o]._node.context.state && "interrupted" !== r[o]._node.context.state || r[o]._node.context.resume();
                this._curSound.id = this._howl.play(t), this._howl.loop(!!e, this._curSound.id), this._howl.mute(this._muteFlag), e || this._howl.once("end", function() {
                    i._curSound = null, i._callback && (i._callback.call(), i._callback = null)
                }, i._curSound.id), this._curSound.name = t
            }, n.prototype.stop = function() {
                this._howl.stop(), this._fadeOutEndPause = !1, this._curSound = null
            }, n.prototype.pause = function() {
                this._howl.pause()
            }, n.prototype.resume = function() {
                this._fadeOutEndPause || this._curSound && (this._howl.play(this._curSound.id), this._howl.mute(this._muteFlag, this._curSound.id), this._onVolumeUpdated())
            }, n.prototype.volume = function(t) {
                this._howl._volume = t, this._currentVolume = t, this._curSound && this._curSound.id && this._howl.volume(t, this._curSound.id)
            }, n.prototype.fadeOut = function(t, n) {
                n = n || {}, t = t || 1500;
                var i = this._howl._volume / 20,
                    o = this;
                r(this), o._fadeInterval = e.setInterval(function() {
                    o._howl._volume - i <= 0 ? (o._howl._volume = 0, o._onVolumeUpdated(), o.pause(), o._fadeOutEndPause = !0, e.clearInterval(o._fadeInterval), n.completeCallback && n.completeCallback()) : (o._howl._volume -= i, o._onVolumeUpdated())
                }, t / 20)
            }, n.prototype.playAndFadeIn = function(t, n, i, o) {
                o = o || {};
                var a = this._currentVolume;
                n = n || !1, i = i || 2e3, this.play(t, n), this._howl._volume = 0;
                var s = a / 20,
                    l = this;
                r(this), l._fadeInterval = e.setInterval(function() {
                    l._howl._volume + s >= a ? (l._howl._volume = a, l._onVolumeUpdated(), e.clearInterval(l._fadeInterval), o.completeCallback && o.completeCallback()) : (l._howl._volume += s, l._onVolumeUpdated())
                }, i / 20)
            }, n.prototype.cancelFade = function() {
                r(this), this._howl._volume = this._currentVolume, this._onVolumeUpdated(), this._fadeOutEndPause = !1, this.resume()
            }, n.mute = function(t) {
                window.Howler.mute(t)
            }, n
        }), define("game/component/howlerAudioPlayer/Html5Channel", ["skbJet/component/utils/PauseTimer"], function(t) {
            function e() {}

            function n(t) {
                try {
                    t.loop ? (clearTimeout(t._endTimerId), t.audioTag.currentTime = t.spriteMap[t._currentPlaying][0] / 1e3, t._endTimerId = setTimeout(function() {
                        n(t)
                    }, t.spriteMap[t._currentPlaying][1])) : t.stop()
                } catch (t) {
                    return
                }
            }

            function i(e) {
                e._fadeInterval && (t.clearInterval(e._fadeInterval), e._fadeInterval = null)
            }
            var r = [],
                o = !1;
            return e.STATUS = {
                Loading: "Loading",
                Playing: "Playing",
                Paused: "Paused",
                Stopped: "Stopped"
            }, e.prototype._currentVolume = 1, e.prototype._fadeOutEndPause = !1, e.prototype.load = function(t, n) {
                this.spriteMap = t.sprite, this.audioTag = new Audio, this.audioTag.muted = !0, this.audioTag.volume = 0, this.status = e.STATUS.Loading;
                var i = this;
                i.audioTag.oncanplaythrough = function() {
                    i.audioTag.onplay = function() {
                        i.audioTag.onplay = null, i.audioTag.pause(), i.status = e.STATUS.Stopped, r.push(i)
                    }, i.audioTag.play()
                };
                for (var o = null, a = document.createElement("audio"), s = 0; s < t.urls.length; s++) {
                    var l = t.urls[s].split(".")[1];
                    if (null !== a.canPlayType("audio/" + l)) {
                        o = t.urls[s];
                        break
                    }
                }
                i.audioTag.src = o, i.audioTag.load(), setTimeout(n, 500)
            }, e.prototype.play = function(t, i) {
                if (this.status !== e.STATUS.Loading) try {
                    if (!this.spriteMap[t]) return;
                    var r = this;
                    this.audioTag.currentTime = this.spriteMap[t][0] / 1e3, this._endTimerId && clearTimeout(this._endTimerId), this.status !== e.STATUS.Stopped && this.status !== e.STATUS.Paused || (this.audioTag.muted = this.audioTag.muted || o, this.audioTag.play()), this.status = e.STATUS.Playing, this._currentPlaying = t, this.loop = !!i, this._endTimerId = setTimeout(function() {
                        n(r)
                    }, this.spriteMap[t][1])
                } catch (t) {
                    return
                }
            }, e.prototype.pause = function() {
                this.status === e.STATUS.Playing && (this.audioTag.pause(), clearTimeout(this._endTimerId), this._endTimerId = null, this.status = e.STATUS.Paused)
            }, e.prototype.resume = function() {
                if (!this._fadeOutEndPause && this.status === e.STATUS.Paused) {
                    this.audioTag.play(), this.status = e.STATUS.Playing;
                    var t = this,
                        i = t.spriteMap[t._currentPlaying][1] - (1e3 * t.audioTag.currentTime - t.spriteMap[t._currentPlaying][0]);
                    t._endTimerId = setTimeout(function() {
                        n(t)
                    }, i)
                }
            }, e.prototype.stop = function() {
                this.audioTag.pause(), this._fadeOutEndPause = !1, clearTimeout(this._endTimerId), this._endTimerId = null, this.status = e.STATUS.Stopped, this._currentPlaying = null, this.loop = !1
            }, e.prototype.currentPlaying = function() {
                return this._currentPlaying
            }, e.mute = function(t) {
                o = t;
                for (var e = 0; e < r.length; e++) r[e].audioTag.muted = t
            }, e.prototype.volume = function(t) {
                this.audioTag.volume = t, this._currentVolume = t
            }, e.prototype.fadeOut = function(e, n) {
                n = n || {}, e = e || 1500;
                var r = this;
                0 === r.audioTag.volume && (r.audioTag.volume = r._currentVolume);
                var o = r.audioTag.volume / 20;
                i(r), r._fadeInterval = t.setInterval(function() {
                    r.audioTag.volume - o <= 0 ? (r.audioTag.volume = 0, r.pause(), r._fadeOutEndPause = !0, t.clearInterval(r._fadeInterval), n.completeCallback && n.completeCallback()) : r.audioTag.volume -= o
                }, e / 20)
            }, e.prototype.playAndFadeIn = function(e, n, r, o) {
                o = o || {}, r = r || 2e3;
                var a = this,
                    s = a._currentVolume;
                n = n || !1, a.play(e, n), a.audioTag.volume = 0;
                var l = s / 20;
                i(a), a._fadeInterval = t.setInterval(function() {
                    a.audioTag.volume + l >= s ? (a.audioTag.volume = s, t.clearInterval(a._fadeInterval), o.completeCallback && o.completeCallback()) : a.audioTag.volume += l
                }, r / 20)
            }, e.prototype.cancelFade = function() {
                i(this), this.audioTag.volume = this._currentVolume, this._fadeOutEndPause = !1, this.resume()
            }, e
        }), define("skbJet/component/channelAudioPlayer/IChannelAudioPlayer", ["skbJet/component/utils/Interface"], function(t) {
            return new t(["play", "stopChannel", "stopAll", "pauseChannel", "pauseAll", "resumeChannel", "resumeAll", "muteChannel", "muteAll", "volume", "fadeOut", "playAndFadeIn", "cancelFade", "gameAudioControlChanged", "consoleAudioControlChanged"])
        }), define("skbJet/component/channelAudioPlayer/channelAudioPlayerHelper", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/resourceLoader/resourceLib"], function(t, e) {
            function n() {}

            function i(t) {
                p = t
            }

            function r(t) {
                h = t
            }

            function o(e) {
                function n() {
                    var t = Number(window.innerWidth),
                        e = Number(window.innerHeight);
                    o.style.top = (e - 100) / 2 + "px", o.style.left = (t - 240) / 2 + "px";
                    var n = t > e ? e : t,
                        i = n > 600 ? n / 600 : 1;
                    o.style.transform = "scale(" + i + ")"
                }

                function i(e) {
                    var i = e || window.event;
                    i.stopPropagation(), i.cancelBubble = !0, document.body.removeChild(r);
                    var o = !1;
                    "audio_btn_YES" === this.id && (o = !0), h && h(o), setTimeout(function() {
                        p.muteAll(!o), s(o), t.publish("audioPlayer.playerSelectedWhenGameLaunch", o)
                    }, 110), window.removeEventListener("resize", n)
                }
                var r = document.createElement("div");
                r.style.width = "100%", r.style.height = "100%", r.style.backgroundColor = "rgba(0,0,0,.9)", r.style.position = "absolute", r.style.zIndex = 8, r.style.top = "0", r.style.left = "0", document.body.appendChild(r);
                var o = document.createElement("div");
                o.style.width = "240px", o.style.height = "100px", o.style.backgroundColor = "black", o.style.border = "2px solid white", o.style.borderRadius = "14px", o.style.position = "absolute", o.style.zIndex = 10, n(), window.addEventListener("resize", n), r.appendChild(o);
                var a = document.createElement("p");
                a.style.width = "220px", a.style.height = "40px", a.style.margin = "10px", a.style.color = "white", a.style.font = "normal 20px Arial", a.style.textAlign = "center", a.innerHTML = e.query, o.appendChild(a);
                var l = document.createElement("button");
                l.style.width = "60px", l.style.height = "26px", l.style.backgroundColor = "#DDDDDD", l.style.border = "2px solid white", l.style.borderRadius = "5px", l.style.float = "left", l.style.marginLeft = "33px", l.style.color = "balck", l.innerHTML = e.yes, l.id = "audio_btn_YES", o.appendChild(l);
                var u = document.createElement("button");
                u.style.width = "60px", u.style.height = "26px", u.style.backgroundColor = "#DDDDDD", u.style.border = "2px solid white", u.style.borderRadius = "5px", u.style.float = "right", u.style.marginRight = "33px", u.style.color = "balck", u.innerHTML = e.no, u.id = "audio_btn_NO", o.appendChild(u), l.addEventListener("click", i), u.addEventListener("click", i)
            }

            function a(n) {
                if (!m)
                    if ("INT" !== f) {
                        var i = {
                            query: e.i18n.game.audioLoader.confirm,
                            yes: e.i18n.game.audioLoader.yes,
                            no: e.i18n.game.audioLoader.no
                        };
                        o(i)
                    } else {
                        var r;
                        "STD" === d ? r = !0 : "BaseGame" === n.response.OutcomeDetail.NextStage ? (r = !1, localStorage.setItem("audioDefaultSwitchForDesktopmini" + g, r)) : r = null !== localStorage.getItem("audioDefaultSwitchForDesktopmini" + g) && "true" === localStorage.getItem("audioDefaultSwitchForDesktopmini" + g), s(r), setTimeout(function() {
                            p.muteAll(!r), t.publish("audioPlayer.playerSelectedWhenGameLaunch", r)
                        }, 20)
                    }
            }

            function s(n) {
                var i = "Sound",
                    r = "On",
                    o = "Off";
                m = !0, e.i18n.game.MenuCommand.audio && (i = e.i18n.game.MenuCommand.audio.sound, r = e.i18n.game.MenuCommand.audio.on, o = e.i18n.game.MenuCommand.audio.off), t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Register",
                    data: {
                        options: [{
                            name: "sound",
                            text: i,
                            type: "list",
                            enabled: 1,
                            value: n ? 0 : 1,
                            values: ["0", "1"],
                            valueText: [r, o]
                        }]
                    }
                })
            }

            function l(t) {
                "sound" === t.option && p.muteAll("1" === t.value), "INT" === f && "STD" !== d && localStorage.setItem("audioDefaultSwitchForDesktopmini" + g, "1" !== t.value)
            }

            function u(t) {
                f = t.serverConfig.channel, d = t.serverConfig.presenttype, g = t.serverConfig.softwareid
            }

            function c() {
                function n() {
                    if ("device" === i.config.screenEnvironment) {
                        o({
                            query: e.i18n.game.audioLoader.confirm,
                            yes: e.i18n.game.audioLoader.yes,
                            no: e.i18n.game.audioLoader.no
                        })
                    }
                    t.unsubscribe("SKBeInstant.gameParametersUpdated", n)
                }
                var i = require("skbJet/component/SKBeInstant/SKBeInstant");
                i.isSKB() || t.subscribe("SKBeInstant.gameParametersUpdated", n)
            }
            var h, p = {
                    muteAll: n,
                    pauseAll: n,
                    resumeAll: n
                },
                f = null,
                d = null,
                m = !1,
                g = null;
            return document.addEventListener("visibilitychange", function() {
                "hidden" === document.visibilityState ? p.pauseAll() : p.resumeAll()
            }), t.subscribe("platformMsg/Kernel/System.Init", u), t.subscribe("platformMsg/ConsoleService/Game.Control", l), t.subscribe("onBeforeShowStage", a), t.subscribe("jLotteryGame.assetsLoadedAndGameReady", c), {
                setChannelAudioPlayer: i,
                setPlayerAudioChoiceCallBack: r,
                gameAudioControlChanged: function(e) {
                    var n = 0;
                    e && (n = 1), t.publish("toPlatform", {
                        channel: "Game",
                        topic: "Game.Control",
                        data: {
                            name: "sound",
                            event: "change",
                            params: [n]
                        }
                    })
                },
                consoleAudioControlChanged: function(t) {
                    var e = !1;
                    return "sound" === t.option && "1" === t.value && (e = !0), e
                }
            }
        }), define("game/component/howlerAudioPlayer/howlerAudioSpritePlayer", ["skbJet/component/utils/Interface", "skbJet/component/channelAudioPlayer/IChannelAudioPlayer", "skbJet/component/channelAudioPlayer/channelAudioPlayerHelper", "game/component/howlerAudioPlayer/HowlerChannel", "game/component/howlerAudioPlayer/Html5Channel"], function(t, e, n, i, r) {
            function o(t) {
                r.mute(t), i.mute(t)
            }

            function a() {
                for (var t in c) c[t] && c[t].pause()
            }

            function s() {
                for (var t in c) c[t] && c[t].resume()
            }

            function l() {
                o(!0);
                for (var t in c) {
                    var e = c[t];
                    if (e) {
                        var n = e._howl ? e._howl._sprite : null;
                        if (n) {
                            for (var i in n) {
                                e.play(i), setTimeout(function() {
                                    e.stop()
                                }, 100);
                                break
                            }
                            break
                        }
                    }
                }
            }

            function u() {
                for (var t in c) c[t] && c[t].stop()
            }
            var c = [],
                h = {
                    gameAudioControlChanged: n.gameAudioControlChanged,
                    consoleAudioControlChanged: n.consoleAudioControlChanged,
                    play: function(t, e, n, i) {
                        t && (e || (e = 0), n || (n = !1), c[e] && (c[e].play(t, n, i), c[e].volume(1)))
                    },
                    currentPlaying: function(t) {
                        return c[t] ? c[t].currentPlaying() : null
                    },
                    stopChannel: function(t) {
                        c[t] && c[t].stop()
                    },
                    stopAllChannel: u,
                    stopAll: u,
                    pauseChannel: function(t) {
                        c[t] && c[t].pause()
                    },
                    pauseAll: a,
                    resumeChannel: function(t) {
                        c[t] && c[t].resume()
                    },
                    resumeAll: s,
                    muteAll: o,
                    _addChannel: function(t, e) {
                        c[e] = t
                    },
                    volume: function(t, e) {
                        c[t] && c[t].volume(e)
                    },
                    fadeOut: function(t, e, n) {
                        c[t] && c[t].fadeOut(e, n)
                    },
                    playAndFadeIn: function(t, e, n, i, r) {
                        e && (t || (t = 0), c[t] && c[t].playAndFadeIn(e, n, i, r))
                    },
                    cancelFade: function(t) {
                        c[t] && c[t].cancelFade()
                    },
                    enableAudioDialog: function(t) {
                        n.enableAudioDialog(t)
                    }
                };
            return e.implementedBy(h), n.setChannelAudioPlayer(h), n.setPlayerAudioChoiceCallBack(l), h
        }), define("game/component/howlerAudioPlayer/HowlerAudioSubLoader", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/AbstractSubLoader", "skbJet/component/resourceLoader/resourceLib", "skbJet/component/gameMsgBus/GameMsgBus", "game/component/howlerAudioPlayer/HowlerChannel", "game/component/howlerAudioPlayer/Html5Channel", "game/component/howlerAudioPlayer/howlerAudioSpritePlayer"], function(t, e, n, i, r, o, a) {
            function s(t) {
                t = t || {}, t.fileExtFilterList = ["json"], this._initOptions("sounds", t)
            }
            return s.prototype = new e, s.prototype._doLoadFile = function(e, n, i) {
                var s = this.options.queryStr;
                t.httpGetJson(e, function(l) {
                    var u = null;
                    u = window.AudioContext || window.webkitAudioContext ? new r : new o;
                    for (var c = t.getFileNameWithoutExt(e), h = t.getParentFolder(e), p = 0; p < l.urls.length; p++) l.urls[p] = h + l.urls[p] + s;
                    u.load(l, n, i);
                    var f = c.match(/\d+$/);
                    f && f[0] && a._addChannel(u, parseInt(f[0]))
                }, i)
            }, s
        }), define("game/Audio", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/resourceLoader/resourceLib", "game/component/howlerAudioPlayer/howlerAudioSpritePlayer"], function(t, e, n, i, r, o) {
            function a() {
                return {
                    volume: 1,
                    callback: null,
                    queue: [],
                    loop: !1
                }
            }

            function s(t) {
                u()
            }

            function l() {}

            function u() {
                for (var t = 0; t < _; t++) y[t] = a()
            }

            function c() {
                o.stopAllChannel(), u()
            }

            function h(t) {
                o.stopChannel(t)
            }

            function p(t) {
                if (y[t].queue.length > 0) {
                    var e = y[t].queue.pop(),
                        n = null,
                        i = y[t].loop;
                    y[t].queue.length > 0 ? (n = function() {
                        p(t)
                    }, i = !1) : void 0 == y[t].callback && null == y[t].callback || (n = y[t].callback), o.play(e, t, i, n), o.volume(t, y[t].volume)
                }
            }

            function f(t, e, n, i, r) {
                0 == Array.isArray(t) && (t = [t]), y[e].queue = t.reverse(), y[e].loop = n || !1, y[e].callback = i || null, y[e].volume = r || 1, p(e)
            }

            function d(t, e) {}

            function m(t, e, n) {
                var i = n ? {
                    completeCallback: n
                } : {};
                o.fadeOut(t, e, i)
            }

            function g(t) {
                return o.currentPlaying(t)
            }
            var _ = 20,
                y = {};
            return e.subscribe("platformMsg/ClientService/Game.Init", s), e.subscribe("audioPlayer.playerSelectedWhenGameLaunch", l), {
                stopAll: c,
                stopChannel: h,
                play: f,
                fadeIn: d,
                fadeOut: m,
                currentPlaying: g
            }
        }), define("skbJet/componentManchester/webfontLoader/FontSubLoader", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/AbstractSubLoader"], function(t, e) {
            function n(t) {
                t = t || {}, t.fileExtFilterList = ["json"], t.checkInterval = t.checkInterval || 250, t.timeout = t.timeout || 3e4, t.testString = t.testString || "abcdefghijklmnopqrstuvwxyz 1234567890_-", this._initOptions("fonts", t), this._testCanvas = document.createElement("canvas"), this._testCtx = this._testCanvas.getContext("2d")
            }
            return n.prototype = new e, n.prototype._doLoadFile = function(e, n, i) {
                var r = {
                        woff: "woff",
                        woff2: "woff2",
                        ttf: "truetype"
                    },
                    o = ["woff2", "woff", "ttf"],
                    a = this._testCtx,
                    s = this.options;
                t.httpGetJson(e, function(l) {
                    function u() {
                        _ += 1, a.font = d + l.family + ", sans-serif", a.measureText(s.testString).width !== m ? n() : _ > s.timeout / s.checkInterval ? i() : setTimeout(u, s.checkInterval)
                    }
                    var c = t.getParentFolder(e);
                    "string" == typeof l.files && (l.files = [l.files]), l.files.sort(function(e, n) {
                        return o.indexOf(t.getFileExt(e, !0)) > o.indexOf(t.getFileExt(n, !0))
                    });
                    var h = l.files.map(function(e) {
                        var n = "url(" + c + e + ") ",
                            i = t.getFileExt(e, !0);
                        return n += 'format("' + r[i] + '")'
                    });
                    if ("FontFace" in window) {
                        var p = new window.FontFace(l.family, h[0], l);
                        document.fonts.add(p), p.load().then(function() {
                            n()
                        }).catch(function() {
                            i()
                        })
                    } else {
                        var f = "@font-face {";
                        f += 'font-family: "' + l.family + '";', f += "src: " + h.join(", ") + ";", f += "font-weight: " + (l.weight || "normal") + ";", f += "font-style: " + (l.style || "normal") + ";", f += "font-display: block; }";
                        var d = (l.style || "normal") + " " + (l.weight || "normal") + " 30px ";
                        a.font = d + "sans-serif";
                        var m = a.measureText(s.testString).width,
                            g = document.createElement("style");
                        document.head.appendChild(g), g.sheet.insertRule(f, 0);
                        var _ = 0;
                        u()
                    }
                }, i)
            }, n
        }), define("com/pixijs/pixi-spine", ["com/pixijs/pixi"], function(t) {
            var e, n = this && this.__extends || function() {
                var t = Object.setPrototypeOf || {
                    __proto__: []
                }
                instanceof Array && function(t, e) {
                    t.__proto__ = e
                } || function(t, e) {
                    for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
                };
                return function(e, n) {
                    function i() {
                        this.constructor = e
                    }
                    t(e, n), e.prototype = null === n ? Object.create(n) : (i.prototype = n.prototype, new i)
                }
            }();
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function t(t, e, n) {
                            if (null == t) throw new Error("name cannot be null.");
                            if (null == e) throw new Error("timelines cannot be null.");
                            this.name = t, this.timelines = e, this.duration = n
                        }
                        return t.prototype.apply = function(t, e, n, i, r, o, a, s) {
                            if (null == t) throw new Error("skeleton cannot be null.");
                            i && 0 != this.duration && (n %= this.duration, e > 0 && (e %= this.duration));
                            for (var l = this.timelines, u = 0, c = l.length; u < c; u++) l[u].apply(t, e, n, r, o, a, s)
                        }, t.binarySearch = function(t, e, n) {
                            void 0 === n && (n = 1);
                            var i = 0,
                                r = t.length / n - 2;
                            if (0 == r) return n;
                            for (var o = r >>> 1;;) {
                                if (t[(o + 1) * n] <= e ? i = o + 1 : r = o, i == r) return (i + 1) * n;
                                o = i + r >>> 1
                            }
                        }, t.linearSearch = function(t, e, n) {
                            for (var i = 0, r = t.length - n; i <= r; i += n)
                                if (t[i] > e) return i;
                            return -1
                        }, t
                    }();
                    t.Animation = e;
                    var i;
                    ! function(t) {
                        t[t.setup = 0] = "setup", t[t.current = 1] = "current", t[t.currentLayered = 2] = "currentLayered"
                    }(i = t.MixPose || (t.MixPose = {}));
                    var r;
                    ! function(t) {
                        t[t.in = 0] = "in", t[t.out = 1] = "out"
                    }(r = t.MixDirection || (t.MixDirection = {}));
                    var o;
                    ! function(t) {
                        t[t.rotate = 0] = "rotate", t[t.translate = 1] = "translate", t[t.scale = 2] = "scale", t[t.shear = 3] = "shear", t[t.attachment = 4] = "attachment", t[t.color = 5] = "color", t[t.deform = 6] = "deform", t[t.event = 7] = "event", t[t.drawOrder = 8] = "drawOrder", t[t.ikConstraint = 9] = "ikConstraint", t[t.transformConstraint = 10] = "transformConstraint", t[t.pathConstraintPosition = 11] = "pathConstraintPosition", t[t.pathConstraintSpacing = 12] = "pathConstraintSpacing", t[t.pathConstraintMix = 13] = "pathConstraintMix", t[t.twoColor = 14] = "twoColor"
                    }(o = t.TimelineType || (t.TimelineType = {}));
                    var a = function() {
                        function e(n) {
                            if (n <= 0) throw new Error("frameCount must be > 0: " + n);
                            this.curves = t.Utils.newFloatArray((n - 1) * e.BEZIER_SIZE)
                        }
                        return e.prototype.getFrameCount = function() {
                            return this.curves.length / e.BEZIER_SIZE + 1
                        }, e.prototype.setLinear = function(t) {
                            this.curves[t * e.BEZIER_SIZE] = e.LINEAR
                        }, e.prototype.setStepped = function(t) {
                            this.curves[t * e.BEZIER_SIZE] = e.STEPPED
                        }, e.prototype.getCurveType = function(t) {
                            var n = t * e.BEZIER_SIZE;
                            if (n == this.curves.length) return e.LINEAR;
                            var i = this.curves[n];
                            return i == e.LINEAR ? e.LINEAR : i == e.STEPPED ? e.STEPPED : e.BEZIER
                        }, e.prototype.setCurve = function(t, n, i, r, o) {
                            var a = .03 * (2 * -n + r),
                                s = .03 * (2 * -i + o),
                                l = .006 * (3 * (n - r) + 1),
                                u = .006 * (3 * (i - o) + 1),
                                c = 2 * a + l,
                                h = 2 * s + u,
                                p = .3 * n + a + .16666667 * l,
                                f = .3 * i + s + .16666667 * u,
                                d = t * e.BEZIER_SIZE,
                                m = this.curves;
                            m[d++] = e.BEZIER;
                            for (var g = p, _ = f, y = d + e.BEZIER_SIZE - 1; d < y; d += 2) m[d] = g, m[d + 1] = _, p += c, f += h, c += l, h += u, g += p, _ += f
                        }, e.prototype.getCurvePercent = function(n, i) {
                            i = t.MathUtils.clamp(i, 0, 1);
                            var r = this.curves,
                                o = n * e.BEZIER_SIZE,
                                a = r[o];
                            if (a == e.LINEAR) return i;
                            if (a == e.STEPPED) return 0;
                            o++;
                            for (var s = 0, l = o, u = o + e.BEZIER_SIZE - 1; o < u; o += 2)
                                if ((s = r[o]) >= i) {
                                    var c = void 0,
                                        h = void 0;
                                    return o == l ? (c = 0, h = 0) : (c = r[o - 2], h = r[o - 1]), h + (r[o + 1] - h) * (i - c) / (s - c)
                                }
                            var p = r[o - 1];
                            return p + (1 - p) * (i - s) / (1 - s)
                        }, e.LINEAR = 0, e.STEPPED = 1, e.BEZIER = 2, e.BEZIER_SIZE = 19, e
                    }();
                    t.CurveTimeline = a;
                    var s = function(r) {
                        function a(e) {
                            var n = r.call(this, e) || this;
                            return n.frames = t.Utils.newFloatArray(e << 1), n
                        }
                        return n(a, r), a.prototype.getPropertyId = function() {
                            return (o.rotate << 24) + this.boneIndex
                        }, a.prototype.setFrame = function(t, e, n) {
                            t <<= 1, this.frames[t] = e, this.frames[t + a.ROTATION] = n
                        }, a.prototype.apply = function(t, n, r, o, s, l, u) {
                            var c = this.frames,
                                h = t.bones[this.boneIndex];
                            if (r < c[0]) switch (l) {
                                case i.setup:
                                    return void(h.rotation = h.data.rotation);
                                case i.current:
                                    var p = h.data.rotation - h.rotation;
                                    p -= 360 * (16384 - (16384.499999999996 - p / 360 | 0)), h.rotation += p * s
                            } else if (r >= c[c.length - a.ENTRIES])
                                if (l == i.setup) h.rotation = h.data.rotation + c[c.length + a.PREV_ROTATION] * s;
                                else {
                                    var f = h.data.rotation + c[c.length + a.PREV_ROTATION] - h.rotation;
                                    f -= 360 * (16384 - (16384.499999999996 - f / 360 | 0)), h.rotation += f * s
                                }
                            else {
                                var d = e.binarySearch(c, r, a.ENTRIES),
                                    m = c[d + a.PREV_ROTATION],
                                    g = c[d],
                                    _ = this.getCurvePercent((d >> 1) - 1, 1 - (r - g) / (c[d + a.PREV_TIME] - g)),
                                    y = c[d + a.ROTATION] - m;
                                y -= 360 * (16384 - (16384.499999999996 - y / 360 | 0)), y = m + y * _, l == i.setup ? (y -= 360 * (16384 - (16384.499999999996 - y / 360 | 0)), h.rotation = h.data.rotation + y * s) : (y = h.data.rotation + y - h.rotation, y -= 360 * (16384 - (16384.499999999996 - y / 360 | 0)), h.rotation += y * s)
                            }
                        }, a.ENTRIES = 2, a.PREV_TIME = -2, a.PREV_ROTATION = -1, a.ROTATION = 1, a
                    }(a);
                    t.RotateTimeline = s;
                    var l = function(r) {
                        function a(e) {
                            var n = r.call(this, e) || this;
                            return n.frames = t.Utils.newFloatArray(e * a.ENTRIES), n
                        }
                        return n(a, r), a.prototype.getPropertyId = function() {
                            return (o.translate << 24) + this.boneIndex
                        }, a.prototype.setFrame = function(t, e, n, i) {
                            t *= a.ENTRIES, this.frames[t] = e, this.frames[t + a.X] = n, this.frames[t + a.Y] = i
                        }, a.prototype.apply = function(t, n, r, o, s, l, u) {
                            var c = this.frames,
                                h = t.bones[this.boneIndex];
                            if (r < c[0]) switch (l) {
                                case i.setup:
                                    return h.x = h.data.x, void(h.y = h.data.y);
                                case i.current:
                                    h.x += (h.data.x - h.x) * s, h.y += (h.data.y - h.y) * s
                            } else {
                                var p = 0,
                                    f = 0;
                                if (r >= c[c.length - a.ENTRIES]) p = c[c.length + a.PREV_X], f = c[c.length + a.PREV_Y];
                                else {
                                    var d = e.binarySearch(c, r, a.ENTRIES);
                                    p = c[d + a.PREV_X], f = c[d + a.PREV_Y];
                                    var m = c[d],
                                        g = this.getCurvePercent(d / a.ENTRIES - 1, 1 - (r - m) / (c[d + a.PREV_TIME] - m));
                                    p += (c[d + a.X] - p) * g, f += (c[d + a.Y] - f) * g
                                }
                                l == i.setup ? (h.x = h.data.x + p * s, h.y = h.data.y + f * s) : (h.x += (h.data.x + p - h.x) * s, h.y += (h.data.y + f - h.y) * s)
                            }
                        }, a.ENTRIES = 3, a.PREV_TIME = -3, a.PREV_X = -2, a.PREV_Y = -1, a.X = 1, a.Y = 2, a
                    }(a);
                    t.TranslateTimeline = l;
                    var u = function(a) {
                        function s(t) {
                            return a.call(this, t) || this
                        }
                        return n(s, a), s.prototype.getPropertyId = function() {
                            return (o.scale << 24) + this.boneIndex
                        }, s.prototype.apply = function(n, o, a, l, u, c, h) {
                            var p = this.frames,
                                f = n.bones[this.boneIndex];
                            if (a < p[0]) switch (c) {
                                case i.setup:
                                    return f.scaleX = f.data.scaleX, void(f.scaleY = f.data.scaleY);
                                case i.current:
                                    f.scaleX += (f.data.scaleX - f.scaleX) * u, f.scaleY += (f.data.scaleY - f.scaleY) * u
                            } else {
                                var d = 0,
                                    m = 0;
                                if (a >= p[p.length - s.ENTRIES]) d = p[p.length + s.PREV_X] * f.data.scaleX, m = p[p.length + s.PREV_Y] * f.data.scaleY;
                                else {
                                    var g = e.binarySearch(p, a, s.ENTRIES);
                                    d = p[g + s.PREV_X], m = p[g + s.PREV_Y];
                                    var _ = p[g],
                                        y = this.getCurvePercent(g / s.ENTRIES - 1, 1 - (a - _) / (p[g + s.PREV_TIME] - _));
                                    d = (d + (p[g + s.X] - d) * y) * f.data.scaleX, m = (m + (p[g + s.Y] - m) * y) * f.data.scaleY
                                }
                                if (1 == u) f.scaleX = d, f.scaleY = m;
                                else {
                                    var v = 0,
                                        b = 0;
                                    c == i.setup ? (v = f.data.scaleX, b = f.data.scaleY) : (v = f.scaleX, b = f.scaleY), h == r.out ? (d = Math.abs(d) * t.MathUtils.signum(v), m = Math.abs(m) * t.MathUtils.signum(b)) : (v = Math.abs(v) * t.MathUtils.signum(d), b = Math.abs(b) * t.MathUtils.signum(m)), f.scaleX = v + (d - v) * u, f.scaleY = b + (m - b) * u
                                }
                            }
                        }, s
                    }(l);
                    t.ScaleTimeline = u;
                    var c = function(t) {
                        function r(e) {
                            return t.call(this, e) || this
                        }
                        return n(r, t), r.prototype.getPropertyId = function() {
                            return (o.shear << 24) + this.boneIndex
                        }, r.prototype.apply = function(t, n, o, a, s, l, u) {
                            var c = this.frames,
                                h = t.bones[this.boneIndex];
                            if (o < c[0]) switch (l) {
                                case i.setup:
                                    return h.shearX = h.data.shearX, void(h.shearY = h.data.shearY);
                                case i.current:
                                    h.shearX += (h.data.shearX - h.shearX) * s, h.shearY += (h.data.shearY - h.shearY) * s
                            } else {
                                var p = 0,
                                    f = 0;
                                if (o >= c[c.length - r.ENTRIES]) p = c[c.length + r.PREV_X], f = c[c.length + r.PREV_Y];
                                else {
                                    var d = e.binarySearch(c, o, r.ENTRIES);
                                    p = c[d + r.PREV_X], f = c[d + r.PREV_Y];
                                    var m = c[d],
                                        g = this.getCurvePercent(d / r.ENTRIES - 1, 1 - (o - m) / (c[d + r.PREV_TIME] - m));
                                    p += (c[d + r.X] - p) * g, f += (c[d + r.Y] - f) * g
                                }
                                l == i.setup ? (h.shearX = h.data.shearX + p * s, h.shearY = h.data.shearY + f * s) : (h.shearX += (h.data.shearX + p - h.shearX) * s, h.shearY += (h.data.shearY + f - h.shearY) * s)
                            }
                        }, r
                    }(l);
                    t.ShearTimeline = c;
                    var h = function(r) {
                        function a(e) {
                            var n = r.call(this, e) || this;
                            return n.frames = t.Utils.newFloatArray(e * a.ENTRIES), n
                        }
                        return n(a, r), a.prototype.getPropertyId = function() {
                            return (o.color << 24) + this.slotIndex
                        }, a.prototype.setFrame = function(t, e, n, i, r, o) {
                            t *= a.ENTRIES, this.frames[t] = e, this.frames[t + a.R] = n, this.frames[t + a.G] = i, this.frames[t + a.B] = r, this.frames[t + a.A] = o
                        }, a.prototype.apply = function(t, n, r, o, s, l, u) {
                            var c = t.slots[this.slotIndex],
                                h = this.frames;
                            if (r < h[0]) switch (l) {
                                case i.setup:
                                    return void c.color.setFromColor(c.data.color);
                                case i.current:
                                    var p = c.color,
                                        f = c.data.color;
                                    p.add((f.r - p.r) * s, (f.g - p.g) * s, (f.b - p.b) * s, (f.a - p.a) * s)
                            } else {
                                var d = 0,
                                    m = 0,
                                    g = 0,
                                    _ = 0;
                                if (r >= h[h.length - a.ENTRIES]) {
                                    var y = h.length;
                                    d = h[y + a.PREV_R], m = h[y + a.PREV_G], g = h[y + a.PREV_B], _ = h[y + a.PREV_A]
                                } else {
                                    var v = e.binarySearch(h, r, a.ENTRIES);
                                    d = h[v + a.PREV_R], m = h[v + a.PREV_G], g = h[v + a.PREV_B], _ = h[v + a.PREV_A];
                                    var b = h[v],
                                        x = this.getCurvePercent(v / a.ENTRIES - 1, 1 - (r - b) / (h[v + a.PREV_TIME] - b));
                                    d += (h[v + a.R] - d) * x, m += (h[v + a.G] - m) * x, g += (h[v + a.B] - g) * x, _ += (h[v + a.A] - _) * x
                                }
                                if (1 == s) c.color.set(d, m, g, _);
                                else {
                                    var p = c.color;
                                    l == i.setup && p.setFromColor(c.data.color), p.add((d - p.r) * s, (m - p.g) * s, (g - p.b) * s, (_ - p.a) * s)
                                }
                            }
                        }, a.ENTRIES = 5, a.PREV_TIME = -5, a.PREV_R = -4, a.PREV_G = -3, a.PREV_B = -2, a.PREV_A = -1, a.R = 1, a.G = 2, a.B = 3, a.A = 4, a
                    }(a);
                    t.ColorTimeline = h;
                    var p = function(r) {
                        function a(e) {
                            var n = r.call(this, e) || this;
                            return n.frames = t.Utils.newFloatArray(e * a.ENTRIES), n
                        }
                        return n(a, r), a.prototype.getPropertyId = function() {
                            return (o.twoColor << 24) + this.slotIndex
                        }, a.prototype.setFrame = function(t, e, n, i, r, o, s, l, u) {
                            t *= a.ENTRIES, this.frames[t] = e, this.frames[t + a.R] = n, this.frames[t + a.G] = i, this.frames[t + a.B] = r, this.frames[t + a.A] = o, this.frames[t + a.R2] = s, this.frames[t + a.G2] = l, this.frames[t + a.B2] = u
                        }, a.prototype.apply = function(t, n, r, o, s, l, u) {
                            var c = t.slots[this.slotIndex],
                                h = this.frames;
                            if (r < h[0]) switch (l) {
                                case i.setup:
                                    return c.color.setFromColor(c.data.color), void c.darkColor.setFromColor(c.data.darkColor);
                                case i.current:
                                    var p = c.color,
                                        f = c.darkColor,
                                        d = c.data.color,
                                        m = c.data.darkColor;
                                    p.add((d.r - p.r) * s, (d.g - p.g) * s, (d.b - p.b) * s, (d.a - p.a) * s), f.add((m.r - f.r) * s, (m.g - f.g) * s, (m.b - f.b) * s, 0)
                            } else {
                                var g = 0,
                                    _ = 0,
                                    y = 0,
                                    v = 0,
                                    b = 0,
                                    x = 0,
                                    T = 0;
                                if (r >= h[h.length - a.ENTRIES]) {
                                    var w = h.length;
                                    g = h[w + a.PREV_R], _ = h[w + a.PREV_G], y = h[w + a.PREV_B], v = h[w + a.PREV_A], b = h[w + a.PREV_R2], x = h[w + a.PREV_G2], T = h[w + a.PREV_B2]
                                } else {
                                    var S = e.binarySearch(h, r, a.ENTRIES);
                                    g = h[S + a.PREV_R], _ = h[S + a.PREV_G], y = h[S + a.PREV_B], v = h[S + a.PREV_A], b = h[S + a.PREV_R2], x = h[S + a.PREV_G2], T = h[S + a.PREV_B2];
                                    var P = h[S],
                                        M = this.getCurvePercent(S / a.ENTRIES - 1, 1 - (r - P) / (h[S + a.PREV_TIME] - P));
                                    g += (h[S + a.R] - g) * M, _ += (h[S + a.G] - _) * M, y += (h[S + a.B] - y) * M, v += (h[S + a.A] - v) * M, b += (h[S + a.R2] - b) * M, x += (h[S + a.G2] - x) * M, T += (h[S + a.B2] - T) * M
                                }
                                if (1 == s) c.color.set(g, _, y, v), c.darkColor.set(b, x, T, 1);
                                else {
                                    var p = c.color,
                                        f = c.darkColor;
                                    l == i.setup && (p.setFromColor(c.data.color), f.setFromColor(c.data.darkColor)), p.add((g - p.r) * s, (_ - p.g) * s, (y - p.b) * s, (v - p.a) * s), f.add((b - f.r) * s, (x - f.g) * s, (T - f.b) * s, 0)
                                }
                            }
                        }, a.ENTRIES = 8, a.PREV_TIME = -8, a.PREV_R = -7, a.PREV_G = -6, a.PREV_B = -5, a.PREV_A = -4, a.PREV_R2 = -3, a.PREV_G2 = -2, a.PREV_B2 = -1, a.R = 1, a.G = 2, a.B = 3, a.A = 4, a.R2 = 5, a.G2 = 6, a.B2 = 7, a
                    }(a);
                    t.TwoColorTimeline = p;
                    var f = function() {
                        function n(e) {
                            this.frames = t.Utils.newFloatArray(e), this.attachmentNames = new Array(e)
                        }
                        return n.prototype.getPropertyId = function() {
                            return (o.attachment << 24) + this.slotIndex
                        }, n.prototype.getFrameCount = function() {
                            return this.frames.length
                        }, n.prototype.setFrame = function(t, e, n) {
                            this.frames[t] = e, this.attachmentNames[t] = n
                        }, n.prototype.apply = function(t, n, o, a, s, l, u) {
                            var c = t.slots[this.slotIndex];
                            if (u == r.out && l == i.setup) {
                                var h = c.data.attachmentName;
                                return void c.setAttachment(null == h ? null : t.getAttachment(this.slotIndex, h))
                            }
                            var p = this.frames;
                            if (o < p[0]) {
                                if (l == i.setup) {
                                    var f = c.data.attachmentName;
                                    c.setAttachment(null == f ? null : t.getAttachment(this.slotIndex, f))
                                }
                            } else {
                                var d = 0;
                                d = o >= p[p.length - 1] ? p.length - 1 : e.binarySearch(p, o, 1) - 1;
                                var m = this.attachmentNames[d];
                                t.slots[this.slotIndex].setAttachment(null == m ? null : t.getAttachment(this.slotIndex, m))
                            }
                        }, n
                    }();
                    t.AttachmentTimeline = f;
                    var d = null,
                        m = function(r) {
                            function a(e) {
                                var n = r.call(this, e) || this;
                                return n.frames = t.Utils.newFloatArray(e), n.frameVertices = new Array(e), null == d && (d = t.Utils.newFloatArray(64)), n
                            }
                            return n(a, r), a.prototype.getPropertyId = function() {
                                return (o.deform << 27) + +this.attachment.id + this.slotIndex
                            }, a.prototype.setFrame = function(t, e, n) {
                                this.frames[t] = e, this.frameVertices[t] = n
                            }, a.prototype.apply = function(n, r, o, a, s, l, u) {
                                var c = n.slots[this.slotIndex],
                                    h = c.getAttachment();
                                if (h instanceof t.VertexAttachment && h.applyDeform(this.attachment)) {
                                    var p = c.attachmentVertices;
                                    0 == p.length && (s = 1);
                                    var f = this.frameVertices,
                                        d = f[0].length,
                                        m = this.frames;
                                    if (o < m[0]) {
                                        var g = h;
                                        switch (l) {
                                            case i.setup:
                                                return void(p.length = 0);
                                            case i.current:
                                                if (1 == s) {
                                                    p.length = 0;
                                                    break
                                                }
                                                var _ = t.Utils.setArraySize(p, d);
                                                if (null == g.bones)
                                                    for (var y = g.vertices, v = 0; v < d; v++) _[v] += (y[v] - _[v]) * s;
                                                else {
                                                    s = 1 - s;
                                                    for (var v = 0; v < d; v++) _[v] *= s
                                                }
                                        }
                                    } else {
                                        var b = t.Utils.setArraySize(p, d);
                                        if (o >= m[m.length - 1]) {
                                            var x = f[m.length - 1];
                                            if (1 == s) t.Utils.arrayCopy(x, 0, b, 0, d);
                                            else if (l == i.setup) {
                                                var g = h;
                                                if (null == g.bones)
                                                    for (var y = g.vertices, v = 0; v < d; v++) {
                                                        var T = y[v];
                                                        b[v] = T + (x[v] - T) * s
                                                    } else
                                                        for (var v = 0; v < d; v++) b[v] = x[v] * s
                                            } else
                                                for (var v = 0; v < d; v++) b[v] += (x[v] - b[v]) * s
                                        } else {
                                            var w = e.binarySearch(m, o),
                                                S = f[w - 1],
                                                P = f[w],
                                                M = m[w],
                                                C = this.getCurvePercent(w - 1, 1 - (o - M) / (m[w - 1] - M));
                                            if (1 == s)
                                                for (var v = 0; v < d; v++) {
                                                    var E = S[v];
                                                    b[v] = E + (P[v] - E) * C
                                                } else if (l == i.setup) {
                                                    var g = h;
                                                    if (null == g.bones)
                                                        for (var y = g.vertices, v = 0; v < d; v++) {
                                                            var E = S[v],
                                                                T = y[v];
                                                            b[v] = T + (E + (P[v] - E) * C - T) * s
                                                        } else
                                                            for (var v = 0; v < d; v++) {
                                                                var E = S[v];
                                                                b[v] = (E + (P[v] - E) * C) * s
                                                            }
                                                } else
                                                    for (var v = 0; v < d; v++) {
                                                        var E = S[v];
                                                        b[v] += (E + (P[v] - E) * C - b[v]) * s
                                                    }
                                        }
                                    }
                                }
                            }, a
                        }(a);
                    t.DeformTimeline = m;
                    var g = function() {
                        function n(e) {
                            this.frames = t.Utils.newFloatArray(e), this.events = new Array(e)
                        }
                        return n.prototype.getPropertyId = function() {
                            return o.event << 24
                        }, n.prototype.getFrameCount = function() {
                            return this.frames.length
                        }, n.prototype.setFrame = function(t, e) {
                            this.frames[t] = e.time, this.events[t] = e
                        }, n.prototype.apply = function(t, n, i, r, o, a, s) {
                            if (null != r) {
                                var l = this.frames,
                                    u = this.frames.length;
                                if (n > i) this.apply(t, n, Number.MAX_VALUE, r, o, a, s), n = -1;
                                else if (n >= l[u - 1]) return;
                                if (!(i < l[0])) {
                                    var c = 0;
                                    if (n < l[0]) c = 0;
                                    else {
                                        c = e.binarySearch(l, n);
                                        for (var h = l[c]; c > 0 && l[c - 1] == h;) c--
                                    }
                                    for (; c < u && i >= l[c]; c++) r.push(this.events[c])
                                }
                            }
                        }, n
                    }();
                    t.EventTimeline = g;
                    var _ = function() {
                        function n(e) {
                            this.frames = t.Utils.newFloatArray(e), this.drawOrders = new Array(e)
                        }
                        return n.prototype.getPropertyId = function() {
                            return o.drawOrder << 24
                        }, n.prototype.getFrameCount = function() {
                            return this.frames.length
                        }, n.prototype.setFrame = function(t, e, n) {
                            this.frames[t] = e, this.drawOrders[t] = n
                        }, n.prototype.apply = function(n, o, a, s, l, u, c) {
                            var h = n.drawOrder,
                                p = n.slots;
                            if (c == r.out && u == i.setup) return void t.Utils.arrayCopy(n.slots, 0, n.drawOrder, 0, n.slots.length);
                            var f = this.frames;
                            if (a < f[0]) return void(u == i.setup && t.Utils.arrayCopy(n.slots, 0, n.drawOrder, 0, n.slots.length));
                            var d = 0;
                            d = a >= f[f.length - 1] ? f.length - 1 : e.binarySearch(f, a) - 1;
                            var m = this.drawOrders[d];
                            if (null == m) t.Utils.arrayCopy(p, 0, h, 0, p.length);
                            else
                                for (var g = 0, _ = m.length; g < _; g++) h[g] = p[m[g]]
                        }, n
                    }();
                    t.DrawOrderTimeline = _;
                    var y = function(a) {
                        function s(e) {
                            var n = a.call(this, e) || this;
                            return n.frames = t.Utils.newFloatArray(e * s.ENTRIES), n
                        }
                        return n(s, a), s.prototype.getPropertyId = function() {
                            return (o.ikConstraint << 24) + this.ikConstraintIndex
                        }, s.prototype.setFrame = function(t, e, n, i) {
                            t *= s.ENTRIES, this.frames[t] = e, this.frames[t + s.MIX] = n, this.frames[t + s.BEND_DIRECTION] = i
                        }, s.prototype.apply = function(t, n, o, a, l, u, c) {
                            var h = this.frames,
                                p = t.ikConstraints[this.ikConstraintIndex];
                            if (o < h[0]) switch (u) {
                                case i.setup:
                                    return p.mix = p.data.mix, void(p.bendDirection = p.data.bendDirection);
                                case i.current:
                                    p.mix += (p.data.mix - p.mix) * l, p.bendDirection = p.data.bendDirection
                            } else {
                                if (o >= h[h.length - s.ENTRIES]) return void(u == i.setup ? (p.mix = p.data.mix + (h[h.length + s.PREV_MIX] - p.data.mix) * l, p.bendDirection = c == r.out ? p.data.bendDirection : h[h.length + s.PREV_BEND_DIRECTION]) : (p.mix += (h[h.length + s.PREV_MIX] - p.mix) * l, c == r.in && (p.bendDirection = h[h.length + s.PREV_BEND_DIRECTION])));
                                var f = e.binarySearch(h, o, s.ENTRIES),
                                    d = h[f + s.PREV_MIX],
                                    m = h[f],
                                    g = this.getCurvePercent(f / s.ENTRIES - 1, 1 - (o - m) / (h[f + s.PREV_TIME] - m));
                                u == i.setup ? (p.mix = p.data.mix + (d + (h[f + s.MIX] - d) * g - p.data.mix) * l, p.bendDirection = c == r.out ? p.data.bendDirection : h[f + s.PREV_BEND_DIRECTION]) : (p.mix += (d + (h[f + s.MIX] - d) * g - p.mix) * l, c == r.in && (p.bendDirection = h[f + s.PREV_BEND_DIRECTION]))
                            }
                        }, s.ENTRIES = 3, s.PREV_TIME = -3, s.PREV_MIX = -2, s.PREV_BEND_DIRECTION = -1, s.MIX = 1, s.BEND_DIRECTION = 2, s
                    }(a);
                    t.IkConstraintTimeline = y;
                    var v = function(r) {
                        function a(e) {
                            var n = r.call(this, e) || this;
                            return n.frames = t.Utils.newFloatArray(e * a.ENTRIES), n
                        }
                        return n(a, r), a.prototype.getPropertyId = function() {
                            return (o.transformConstraint << 24) + this.transformConstraintIndex
                        }, a.prototype.setFrame = function(t, e, n, i, r, o) {
                            t *= a.ENTRIES, this.frames[t] = e, this.frames[t + a.ROTATE] = n, this.frames[t + a.TRANSLATE] = i, this.frames[t + a.SCALE] = r, this.frames[t + a.SHEAR] = o
                        }, a.prototype.apply = function(t, n, r, o, s, l, u) {
                            var c = this.frames,
                                h = t.transformConstraints[this.transformConstraintIndex];
                            if (r < c[0]) {
                                var p = h.data;
                                switch (l) {
                                    case i.setup:
                                        return h.rotateMix = p.rotateMix, h.translateMix = p.translateMix, h.scaleMix = p.scaleMix, void(h.shearMix = p.shearMix);
                                    case i.current:
                                        h.rotateMix += (p.rotateMix - h.rotateMix) * s, h.translateMix += (p.translateMix - h.translateMix) * s, h.scaleMix += (p.scaleMix - h.scaleMix) * s, h.shearMix += (p.shearMix - h.shearMix) * s
                                }
                            } else {
                                var f = 0,
                                    d = 0,
                                    m = 0,
                                    g = 0;
                                if (r >= c[c.length - a.ENTRIES]) {
                                    var _ = c.length;
                                    f = c[_ + a.PREV_ROTATE], d = c[_ + a.PREV_TRANSLATE], m = c[_ + a.PREV_SCALE], g = c[_ + a.PREV_SHEAR]
                                } else {
                                    var y = e.binarySearch(c, r, a.ENTRIES);
                                    f = c[y + a.PREV_ROTATE], d = c[y + a.PREV_TRANSLATE], m = c[y + a.PREV_SCALE], g = c[y + a.PREV_SHEAR];
                                    var v = c[y],
                                        b = this.getCurvePercent(y / a.ENTRIES - 1, 1 - (r - v) / (c[y + a.PREV_TIME] - v));
                                    f += (c[y + a.ROTATE] - f) * b, d += (c[y + a.TRANSLATE] - d) * b, m += (c[y + a.SCALE] - m) * b, g += (c[y + a.SHEAR] - g) * b
                                }
                                if (l == i.setup) {
                                    var p = h.data;
                                    h.rotateMix = p.rotateMix + (f - p.rotateMix) * s, h.translateMix = p.translateMix + (d - p.translateMix) * s, h.scaleMix = p.scaleMix + (m - p.scaleMix) * s, h.shearMix = p.shearMix + (g - p.shearMix) * s
                                } else h.rotateMix += (f - h.rotateMix) * s, h.translateMix += (d - h.translateMix) * s, h.scaleMix += (m - h.scaleMix) * s, h.shearMix += (g - h.shearMix) * s
                            }
                        }, a.ENTRIES = 5, a.PREV_TIME = -5, a.PREV_ROTATE = -4, a.PREV_TRANSLATE = -3, a.PREV_SCALE = -2, a.PREV_SHEAR = -1, a.ROTATE = 1, a.TRANSLATE = 2, a.SCALE = 3, a.SHEAR = 4, a
                    }(a);
                    t.TransformConstraintTimeline = v;
                    var b = function(r) {
                        function a(e) {
                            var n = r.call(this, e) || this;
                            return n.frames = t.Utils.newFloatArray(e * a.ENTRIES), n
                        }
                        return n(a, r), a.prototype.getPropertyId = function() {
                            return (o.pathConstraintPosition << 24) + this.pathConstraintIndex
                        }, a.prototype.setFrame = function(t, e, n) {
                            t *= a.ENTRIES, this.frames[t] = e, this.frames[t + a.VALUE] = n
                        }, a.prototype.apply = function(t, n, r, o, s, l, u) {
                            var c = this.frames,
                                h = t.pathConstraints[this.pathConstraintIndex];
                            if (r < c[0]) switch (l) {
                                case i.setup:
                                    return void(h.position = h.data.position);
                                case i.current:
                                    h.position += (h.data.position - h.position) * s
                            } else {
                                var p = 0;
                                if (r >= c[c.length - a.ENTRIES]) p = c[c.length + a.PREV_VALUE];
                                else {
                                    var f = e.binarySearch(c, r, a.ENTRIES);
                                    p = c[f + a.PREV_VALUE];
                                    var d = c[f],
                                        m = this.getCurvePercent(f / a.ENTRIES - 1, 1 - (r - d) / (c[f + a.PREV_TIME] - d));
                                    p += (c[f + a.VALUE] - p) * m
                                }
                                l == i.setup ? h.position = h.data.position + (p - h.data.position) * s : h.position += (p - h.position) * s
                            }
                        }, a.ENTRIES = 2, a.PREV_TIME = -2, a.PREV_VALUE = -1, a.VALUE = 1, a
                    }(a);
                    t.PathConstraintPositionTimeline = b;
                    var x = function(t) {
                        function r(e) {
                            return t.call(this, e) || this
                        }
                        return n(r, t), r.prototype.getPropertyId = function() {
                            return (o.pathConstraintSpacing << 24) + this.pathConstraintIndex
                        }, r.prototype.apply = function(t, n, o, a, s, l, u) {
                            var c = this.frames,
                                h = t.pathConstraints[this.pathConstraintIndex];
                            if (o < c[0]) switch (l) {
                                case i.setup:
                                    return void(h.spacing = h.data.spacing);
                                case i.current:
                                    h.spacing += (h.data.spacing - h.spacing) * s
                            } else {
                                var p = 0;
                                if (o >= c[c.length - r.ENTRIES]) p = c[c.length + r.PREV_VALUE];
                                else {
                                    var f = e.binarySearch(c, o, r.ENTRIES);
                                    p = c[f + r.PREV_VALUE];
                                    var d = c[f],
                                        m = this.getCurvePercent(f / r.ENTRIES - 1, 1 - (o - d) / (c[f + r.PREV_TIME] - d));
                                    p += (c[f + r.VALUE] - p) * m
                                }
                                l == i.setup ? h.spacing = h.data.spacing + (p - h.data.spacing) * s : h.spacing += (p - h.spacing) * s
                            }
                        }, r
                    }(b);
                    t.PathConstraintSpacingTimeline = x;
                    var T = function(r) {
                        function a(e) {
                            var n = r.call(this, e) || this;
                            return n.frames = t.Utils.newFloatArray(e * a.ENTRIES), n
                        }
                        return n(a, r), a.prototype.getPropertyId = function() {
                            return (o.pathConstraintMix << 24) + this.pathConstraintIndex
                        }, a.prototype.setFrame = function(t, e, n, i) {
                            t *= a.ENTRIES, this.frames[t] = e, this.frames[t + a.ROTATE] = n, this.frames[t + a.TRANSLATE] = i
                        }, a.prototype.apply = function(t, n, r, o, s, l, u) {
                            var c = this.frames,
                                h = t.pathConstraints[this.pathConstraintIndex];
                            if (r < c[0]) switch (l) {
                                case i.setup:
                                    return h.rotateMix = h.data.rotateMix, void(h.translateMix = h.data.translateMix);
                                case i.current:
                                    h.rotateMix += (h.data.rotateMix - h.rotateMix) * s, h.translateMix += (h.data.translateMix - h.translateMix) * s
                            } else {
                                var p = 0,
                                    f = 0;
                                if (r >= c[c.length - a.ENTRIES]) p = c[c.length + a.PREV_ROTATE], f = c[c.length + a.PREV_TRANSLATE];
                                else {
                                    var d = e.binarySearch(c, r, a.ENTRIES);
                                    p = c[d + a.PREV_ROTATE], f = c[d + a.PREV_TRANSLATE];
                                    var m = c[d],
                                        g = this.getCurvePercent(d / a.ENTRIES - 1, 1 - (r - m) / (c[d + a.PREV_TIME] - m));
                                    p += (c[d + a.ROTATE] - p) * g, f += (c[d + a.TRANSLATE] - f) * g
                                }
                                l == i.setup ? (h.rotateMix = h.data.rotateMix + (p - h.data.rotateMix) * s, h.translateMix = h.data.translateMix + (f - h.data.translateMix) * s) : (h.rotateMix += (p - h.rotateMix) * s, h.translateMix += (f - h.translateMix) * s)
                            }
                        }, a.ENTRIES = 3, a.PREV_TIME = -3, a.PREV_ROTATE = -2, a.PREV_TRANSLATE = -1, a.ROTATE = 1, a.TRANSLATE = 2, a
                    }(a);
                    t.PathConstraintMixTimeline = T
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function e(e) {
                            this.tracks = new Array, this.events = new Array, this.listeners = new Array, this.queue = new i(this), this.propertyIDs = new t.IntSet, this.mixingTo = new Array, this.animationsChanged = !1, this.timeScale = 1, this.trackEntryPool = new t.Pool(function() {
                                return new n
                            }), this.data = e
                        }
                        return e.prototype.update = function(t) {
                            t *= this.timeScale;
                            for (var e = this.tracks, n = 0, i = e.length; n < i; n++) {
                                var r = e[n];
                                if (null != r) {
                                    r.animationLast = r.nextAnimationLast, r.trackLast = r.nextTrackLast;
                                    var o = t * r.timeScale;
                                    if (r.delay > 0) {
                                        if (r.delay -= o, r.delay > 0) continue;
                                        o = -r.delay, r.delay = 0
                                    }
                                    var a = r.next;
                                    if (null != a) {
                                        var s = r.trackLast - a.delay;
                                        if (s >= 0) {
                                            for (a.delay = 0, a.trackTime = s + t * a.timeScale, r.trackTime += o, this.setCurrent(n, a, !0); null != a.mixingFrom;) a.mixTime += o, a = a.mixingFrom;
                                            continue
                                        }
                                    } else if (r.trackLast >= r.trackEnd && null == r.mixingFrom) {
                                        e[n] = null, this.queue.end(r), this.disposeNext(r);
                                        continue
                                    }
                                    if (null != r.mixingFrom && this.updateMixingFrom(r, t)) {
                                        var l = r.mixingFrom;
                                        for (r.mixingFrom = null; null != l;) this.queue.end(l), l = l.mixingFrom
                                    }
                                    r.trackTime += o
                                }
                            }
                            this.queue.drain()
                        }, e.prototype.updateMixingFrom = function(t, e) {
                            var n = t.mixingFrom;
                            if (null == n) return !0;
                            var i = this.updateMixingFrom(n, e);
                            return n.animationLast = n.nextAnimationLast, n.trackLast = n.nextTrackLast, t.mixTime > 0 && (t.mixTime >= t.mixDuration || 0 == t.timeScale) ? (0 == n.totalAlpha && (t.mixingFrom = n.mixingFrom, t.interruptAlpha = n.interruptAlpha, this.queue.end(n)), i) : (n.trackTime += e * n.timeScale, t.mixTime += e * t.timeScale, !1)
                        }, e.prototype.apply = function(n) {
                            if (null == n) throw new Error("skeleton cannot be null.");
                            this.animationsChanged && this._animationsChanged();
                            for (var i = this.events, r = this.tracks, o = !1, a = 0, s = r.length; a < s; a++) {
                                var l = r[a];
                                if (!(null == l || l.delay > 0)) {
                                    o = !0;
                                    var u = 0 == a ? t.MixPose.current : t.MixPose.currentLayered,
                                        c = l.alpha;
                                    null != l.mixingFrom ? c *= this.applyMixingFrom(l, n, u) : l.trackTime >= l.trackEnd && null == l.next && (c = 0);
                                    var h = l.animationLast,
                                        p = l.getAnimationTime(),
                                        f = l.animation.timelines.length,
                                        d = l.animation.timelines;
                                    if (1 == c)
                                        for (var m = 0; m < f; m++) d[m].apply(n, h, p, i, 1, t.MixPose.setup, t.MixDirection.in);
                                    else {
                                        var g = l.timelineData,
                                            _ = 0 == l.timelinesRotation.length;
                                        _ && t.Utils.setArraySize(l.timelinesRotation, f << 1, null);
                                        for (var y = l.timelinesRotation, m = 0; m < f; m++) {
                                            var v = d[m],
                                                b = g[m] >= e.FIRST ? t.MixPose.setup : u;
                                            v instanceof t.RotateTimeline ? this.applyRotateTimeline(v, n, p, c, b, y, m << 1, _) : (t.Utils.webkit602BugfixHelper(c, b), v.apply(n, h, p, i, c, b, t.MixDirection.in))
                                        }
                                    }
                                    this.queueEvents(l, p), i.length = 0, l.nextAnimationLast = p, l.nextTrackLast = l.trackTime
                                }
                            }
                            return this.queue.drain(), o
                        }, e.prototype.applyMixingFrom = function(n, i, r) {
                            var o = n.mixingFrom;
                            null != o.mixingFrom && this.applyMixingFrom(o, i, r);
                            var a = 0;
                            0 == n.mixDuration ? (a = 1, r = t.MixPose.setup) : (a = n.mixTime / n.mixDuration) > 1 && (a = 1);
                            var s = a < o.eventThreshold ? this.events : null,
                                l = a < o.attachmentThreshold,
                                u = a < o.drawOrderThreshold,
                                c = o.animationLast,
                                h = o.getAnimationTime(),
                                p = o.animation.timelines.length,
                                f = o.animation.timelines,
                                d = o.timelineData,
                                m = o.timelineDipMix,
                                g = 0 == o.timelinesRotation.length;
                            g && t.Utils.setArraySize(o.timelinesRotation, p << 1, null);
                            var _, y = o.timelinesRotation,
                                v = o.alpha * n.interruptAlpha,
                                b = v * (1 - a),
                                x = 0;
                            o.totalAlpha = 0;
                            for (var T = 0; T < p; T++) {
                                var w = f[T];
                                switch (d[T]) {
                                    case e.SUBSEQUENT:
                                        if (!l && w instanceof t.AttachmentTimeline) continue;
                                        if (!u && w instanceof t.DrawOrderTimeline) continue;
                                        _ = r, x = b;
                                        break;
                                    case e.FIRST:
                                        _ = t.MixPose.setup, x = b;
                                        break;
                                    case e.DIP:
                                        _ = t.MixPose.setup, x = v;
                                        break;
                                    default:
                                        _ = t.MixPose.setup, x = v;
                                        var S = m[T];
                                        x *= Math.max(0, 1 - S.mixTime / S.mixDuration)
                                }
                                o.totalAlpha += x, w instanceof t.RotateTimeline ? this.applyRotateTimeline(w, i, h, x, _, y, T << 1, g) : w.apply(i, c, h, s, x, _, t.MixDirection.out)
                            }
                            return n.mixDuration > 0 && this.queueEvents(o, h), this.events.length = 0, o.nextAnimationLast = h, o.nextTrackLast = o.trackTime, a
                        }, e.prototype.applyRotateTimeline = function(e, n, i, r, o, a, s, l) {
                            if (l && (a[s] = 0), 1 == r) return void e.apply(n, 0, i, null, 1, o, t.MixDirection.in);
                            var u = e,
                                c = u.frames,
                                h = n.bones[u.boneIndex];
                            if (i < c[0]) return void(o == t.MixPose.setup && (h.rotation = h.data.rotation));
                            var p = 0;
                            if (i >= c[c.length - t.RotateTimeline.ENTRIES]) p = h.data.rotation + c[c.length + t.RotateTimeline.PREV_ROTATION];
                            else {
                                var f = t.Animation.binarySearch(c, i, t.RotateTimeline.ENTRIES),
                                    d = c[f + t.RotateTimeline.PREV_ROTATION],
                                    m = c[f],
                                    g = u.getCurvePercent((f >> 1) - 1, 1 - (i - m) / (c[f + t.RotateTimeline.PREV_TIME] - m));
                                p = c[f + t.RotateTimeline.ROTATION] - d, p -= 360 * (16384 - (16384.499999999996 - p / 360 | 0)), p = d + p * g + h.data.rotation, p -= 360 * (16384 - (16384.499999999996 - p / 360 | 0))
                            }
                            var _ = o == t.MixPose.setup ? h.data.rotation : h.rotation,
                                y = 0,
                                v = p - _;
                            if (0 == v) y = a[s];
                            else {
                                v -= 360 * (16384 - (16384.499999999996 - v / 360 | 0));
                                var b = 0,
                                    x = 0;
                                l ? (b = 0, x = v) : (b = a[s], x = a[s + 1]);
                                var T = v > 0,
                                    w = b >= 0;
                                t.MathUtils.signum(x) != t.MathUtils.signum(v) && Math.abs(x) <= 90 && (Math.abs(b) > 180 && (b += 360 * t.MathUtils.signum(b)), w = T), y = v + b - b % 360, w != T && (y += 360 * t.MathUtils.signum(b)), a[s] = y
                            }
                            a[s + 1] = v, _ += y * r, h.rotation = _ - 360 * (16384 - (16384.499999999996 - _ / 360 | 0))
                        }, e.prototype.queueEvents = function(t, e) {
                            for (var n = t.animationStart, i = t.animationEnd, r = i - n, o = t.trackLast % r, a = this.events, s = 0, l = a.length; s < l; s++) {
                                var u = a[s];
                                if (u.time < o) break;
                                u.time > i || this.queue.event(t, u)
                            }
                            for ((t.loop ? o > t.trackTime % r : e >= i && t.animationLast < i) && this.queue.complete(t); s < l; s++) {
                                a[s].time < n || this.queue.event(t, a[s])
                            }
                        }, e.prototype.clearTracks = function() {
                            var t = this.queue.drainDisabled;
                            this.queue.drainDisabled = !0;
                            for (var e = 0, n = this.tracks.length; e < n; e++) this.clearTrack(e);
                            this.tracks.length = 0, this.queue.drainDisabled = t, this.queue.drain()
                        }, e.prototype.clearTrack = function(t) {
                            if (!(t >= this.tracks.length)) {
                                var e = this.tracks[t];
                                if (null != e) {
                                    this.queue.end(e), this.disposeNext(e);
                                    for (var n = e;;) {
                                        var i = n.mixingFrom;
                                        if (null == i) break;
                                        this.queue.end(i), n.mixingFrom = null, n = i
                                    }
                                    this.tracks[e.trackIndex] = null, this.queue.drain()
                                }
                            }
                        }, e.prototype.setCurrent = function(t, e, n) {
                            var i = this.expandToIndex(t);
                            this.tracks[t] = e, null != i && (n && this.queue.interrupt(i), e.mixingFrom = i, e.mixTime = 0, null != i.mixingFrom && i.mixDuration > 0 && (e.interruptAlpha *= Math.min(1, i.mixTime / i.mixDuration)), i.timelinesRotation.length = 0), this.queue.start(e)
                        }, e.prototype.setAnimation = function(t, e, n) {
                            var i = this.data.skeletonData.findAnimation(e);
                            if (null == i) throw new Error("Animation not found: " + e);
                            return this.setAnimationWith(t, i, n)
                        }, e.prototype.setAnimationWith = function(t, e, n) {
                            if (null == e) throw new Error("animation cannot be null.");
                            var i = !0,
                                r = this.expandToIndex(t);
                            null != r && (-1 == r.nextTrackLast ? (this.tracks[t] = r.mixingFrom, this.queue.interrupt(r), this.queue.end(r), this.disposeNext(r), r = r.mixingFrom, i = !1) : this.disposeNext(r));
                            var o = this.trackEntry(t, e, n, r);
                            return this.setCurrent(t, o, i), this.queue.drain(), o
                        }, e.prototype.addAnimation = function(t, e, n, i) {
                            void 0 === i && (i = 0);
                            var r = this.data.skeletonData.findAnimation(e);
                            if (null == r) throw new Error("Animation not found: " + e);
                            return this.addAnimationWith(t, r, n, i)
                        }, e.prototype.addAnimationWith = function(t, e, n, i) {
                            if (void 0 === i && (i = 0), null == e) throw new Error("animation cannot be null.");
                            var r = this.expandToIndex(t);
                            if (null != r)
                                for (; null != r.next;) r = r.next;
                            var o = this.trackEntry(t, e, n, r);
                            if (null == r) this.setCurrent(t, o, !0), this.queue.drain();
                            else if (r.next = o, i <= 0) {
                                var a = r.animationEnd - r.animationStart;
                                0 != a ? (r.loop ? i += a * (1 + (r.trackTime / a | 0)) : i += a, i -= this.data.getMix(r.animation, e)) : i = 0
                            }
                            return o.delay = i, o
                        }, e.prototype.setEmptyAnimation = function(t, n) {
                            var i = this.setAnimationWith(t, e.emptyAnimation, !1);
                            return i.mixDuration = n, i.trackEnd = n, i
                        }, e.prototype.addEmptyAnimation = function(t, n, i) {
                            i <= 0 && (i -= n);
                            var r = this.addAnimationWith(t, e.emptyAnimation, !1, i);
                            return r.mixDuration = n, r.trackEnd = n, r
                        }, e.prototype.setEmptyAnimations = function(t) {
                            var e = this.queue.drainDisabled;
                            this.queue.drainDisabled = !0;
                            for (var n = 0, i = this.tracks.length; n < i; n++) {
                                var r = this.tracks[n];
                                null != r && this.setEmptyAnimation(r.trackIndex, t)
                            }
                            this.queue.drainDisabled = e, this.queue.drain()
                        }, e.prototype.expandToIndex = function(e) {
                            return e < this.tracks.length ? this.tracks[e] : (t.Utils.ensureArrayCapacity(this.tracks, e - this.tracks.length + 1, null), this.tracks.length = e + 1, null)
                        }, e.prototype.trackEntry = function(t, e, n, i) {
                            var r = this.trackEntryPool.obtain();
                            return r.trackIndex = t, r.animation = e, r.loop = n, r.eventThreshold = 0, r.attachmentThreshold = 0, r.drawOrderThreshold = 0, r.animationStart = 0, r.animationEnd = e.duration, r.animationLast = -1, r.nextAnimationLast = -1, r.delay = 0, r.trackTime = 0, r.trackLast = -1, r.nextTrackLast = -1, r.trackEnd = Number.MAX_VALUE, r.timeScale = 1, r.alpha = 1, r.interruptAlpha = 1, r.mixTime = 0, r.mixDuration = null == i ? 0 : this.data.getMix(i.animation, e), r
                        }, e.prototype.disposeNext = function(t) {
                            for (var e = t.next; null != e;) this.queue.dispose(e), e = e.next;
                            t.next = null
                        }, e.prototype._animationsChanged = function() {
                            this.animationsChanged = !1;
                            var t = this.propertyIDs;
                            t.clear();
                            for (var e = this.mixingTo, n = 0, i = this.tracks.length; n < i; n++) {
                                var r = this.tracks[n];
                                null != r && r.setTimelineData(null, e, t)
                            }
                        }, e.prototype.getCurrent = function(t) {
                            return t >= this.tracks.length ? null : this.tracks[t]
                        }, e.prototype.addListener = function(t) {
                            if (null == t) throw new Error("listener cannot be null."); - 1 == this.listeners.indexOf(t) && this.listeners.push(t)
                        }, e.prototype.removeListener = function(t) {
                            var e = this.listeners.indexOf(t);
                            e >= 0 && this.listeners.splice(e, 1)
                        }, e.prototype.clearListeners = function() {
                            this.listeners.length = 0
                        }, e.prototype.clearListenerNotifications = function() {
                            this.queue.clear()
                        }, e.prototype.setAnimationByName = function(t, n, i) {
                            e.deprecatedWarning1 || (e.deprecatedWarning1 = !0), this.setAnimation(t, n, i)
                        }, e.prototype.addAnimationByName = function(t, n, i, r) {
                            e.deprecatedWarning2 || (e.deprecatedWarning2 = !0), this.addAnimation(t, n, i, r)
                        }, e.prototype.hasAnimation = function(t) {
                            return null !== this.data.skeletonData.findAnimation(t)
                        }, e.prototype.hasAnimationByName = function(t) {
                            return e.deprecatedWarning3 || (e.deprecatedWarning3 = !0), this.hasAnimation(t)
                        }, e.emptyAnimation = new t.Animation("<empty>", [], 0), e.SUBSEQUENT = 0, e.FIRST = 1, e.DIP = 2, e.DIP_MIX = 3, e.deprecatedWarning1 = !1, e.deprecatedWarning2 = !1, e.deprecatedWarning3 = !1, e
                    }();
                    t.AnimationState = e;
                    var n = function() {
                        function n() {
                            this.timelineData = new Array, this.timelineDipMix = new Array, this.timelinesRotation = new Array
                        }
                        return n.prototype.reset = function() {
                            this.next = null, this.mixingFrom = null, this.animation = null, this.listener = null, this.timelineData.length = 0, this.timelineDipMix.length = 0, this.timelinesRotation.length = 0
                        }, n.prototype.setTimelineData = function(n, i, r) {
                            null != n && i.push(n);
                            var o = null != this.mixingFrom ? this.mixingFrom.setTimelineData(this, i, r) : this;
                            null != n && i.pop();
                            var a = i,
                                s = i.length - 1,
                                l = this.animation.timelines,
                                u = this.animation.timelines.length,
                                c = t.Utils.setArraySize(this.timelineData, u);
                            this.timelineDipMix.length = 0;
                            var h = t.Utils.setArraySize(this.timelineDipMix, u);
                            t: for (var p = 0; p < u; p++) {
                                var f = l[p].getPropertyId();
                                if (r.add(f))
                                    if (null != n && n.hasTimeline(f)) {
                                        for (var d = s; d >= 0; d--) {
                                            var m = a[d];
                                            if (!m.hasTimeline(f) && m.mixDuration > 0) {
                                                c[p] = e.DIP_MIX, h[p] = m;
                                                continue t
                                            }
                                        }
                                        c[p] = e.DIP
                                    } else c[p] = e.FIRST;
                                else c[p] = e.SUBSEQUENT
                            }
                            return o
                        }, n.prototype.hasTimeline = function(t) {
                            for (var e = this.animation.timelines, n = 0, i = e.length; n < i; n++)
                                if (e[n].getPropertyId() == t) return !0;
                            return !1
                        }, n.prototype.getAnimationTime = function() {
                            if (this.loop) {
                                var t = this.animationEnd - this.animationStart;
                                return 0 == t ? this.animationStart : this.trackTime % t + this.animationStart
                            }
                            return Math.min(this.trackTime + this.animationStart, this.animationEnd)
                        }, n.prototype.setAnimationLast = function(t) {
                            this.animationLast = t, this.nextAnimationLast = t
                        }, n.prototype.isComplete = function() {
                            return this.trackTime >= this.animationEnd - this.animationStart
                        }, n.prototype.resetRotationDirections = function() {
                            this.timelinesRotation.length = 0
                        }, Object.defineProperty(n.prototype, "time", {
                            get: function() {
                                return n.deprecatedWarning1 || (n.deprecatedWarning1 = !0), this.trackTime
                            },
                            set: function(t) {
                                n.deprecatedWarning1 || (n.deprecatedWarning1 = !0), this.trackTime = t
                            },
                            enumerable: !0,
                            configurable: !0
                        }), Object.defineProperty(n.prototype, "endTime", {
                            get: function() {
                                return n.deprecatedWarning2 || (n.deprecatedWarning2 = !0), this.trackTime
                            },
                            set: function(t) {
                                n.deprecatedWarning2 || (n.deprecatedWarning2 = !0), this.trackTime = t
                            },
                            enumerable: !0,
                            configurable: !0
                        }), n.prototype.loopsCount = function() {
                            return Math.floor(this.trackTime / this.trackEnd)
                        }, n.deprecatedWarning1 = !1, n.deprecatedWarning2 = !1, n
                    }();
                    t.TrackEntry = n;
                    var i = function() {
                        function e(t) {
                            this.objects = [], this.drainDisabled = !1, this.animState = t
                        }
                        return e.prototype.start = function(t) {
                            this.objects.push(r.start), this.objects.push(t), this.animState.animationsChanged = !0
                        }, e.prototype.interrupt = function(t) {
                            this.objects.push(r.interrupt), this.objects.push(t)
                        }, e.prototype.end = function(t) {
                            this.objects.push(r.end), this.objects.push(t), this.animState.animationsChanged = !0
                        }, e.prototype.dispose = function(t) {
                            this.objects.push(r.dispose), this.objects.push(t)
                        }, e.prototype.complete = function(t) {
                            this.objects.push(r.complete), this.objects.push(t)
                        }, e.prototype.event = function(t, e) {
                            this.objects.push(r.event), this.objects.push(t), this.objects.push(e)
                        }, e.prototype.deprecateStuff = function() {
                            return e.deprecatedWarning1 || (e.deprecatedWarning1 = !0), !0
                        }, e.prototype.drain = function() {
                            if (!this.drainDisabled) {
                                this.drainDisabled = !0;
                                for (var e = this.objects, n = this.animState.listeners, i = 0; i < e.length; i += 2) {
                                    var o = e[i],
                                        a = e[i + 1];
                                    switch (o) {
                                        case r.start:
                                            null != a.listener && a.listener.start && a.listener.start(a);
                                            for (var s = 0; s < n.length; s++) n[s].start && n[s].start(a);
                                            a.onStart && this.deprecateStuff() && a.onStart(a.trackIndex), this.animState.onStart && this.deprecateStuff() && this.deprecateStuff && this.animState.onStart(a.trackIndex);
                                            break;
                                        case r.interrupt:
                                            null != a.listener && a.listener.interrupt && a.listener.interrupt(a);
                                            for (var s = 0; s < n.length; s++) n[s].interrupt && n[s].interrupt(a);
                                            break;
                                        case r.end:
                                            null != a.listener && a.listener.end && a.listener.end(a);
                                            for (var s = 0; s < n.length; s++) n[s].end && n[s].end(a);
                                            a.onEnd && this.deprecateStuff() && a.onEnd(a.trackIndex), this.animState.onEnd && this.deprecateStuff() && this.animState.onEnd(a.trackIndex);
                                        case r.dispose:
                                            null != a.listener && a.listener.dispose && a.listener.dispose(a);
                                            for (var s = 0; s < n.length; s++) n[s].dispose && n[s].dispose(a);
                                            this.animState.trackEntryPool.free(a);
                                            break;
                                        case r.complete:
                                            null != a.listener && a.listener.complete && a.listener.complete(a);
                                            for (var s = 0; s < n.length; s++) n[s].complete && n[s].complete(a);
                                            var l = t.MathUtils.toInt(a.loopsCount());
                                            a.onComplete && this.deprecateStuff() && a.onComplete(a.trackIndex, l), this.animState.onComplete && this.deprecateStuff() && this.animState.onComplete(a.trackIndex, l);
                                            break;
                                        case r.event:
                                            var u = e[2 + i++];
                                            null != a.listener && a.listener.event && a.listener.event(a, u);
                                            for (var s = 0; s < n.length; s++) n[s].event && n[s].event(a, u);
                                            a.onEvent && this.deprecateStuff() && a.onEvent(a.trackIndex, u), this.animState.onEvent && this.deprecateStuff() && this.animState.onEvent(a.trackIndex, u)
                                    }
                                }
                                this.clear(), this.drainDisabled = !1
                            }
                        }, e.prototype.clear = function() {
                            this.objects.length = 0
                        }, e.deprecatedWarning1 = !1, e
                    }();
                    t.EventQueue = i;
                    var r;
                    ! function(t) {
                        t[t.start = 0] = "start", t[t.interrupt = 1] = "interrupt", t[t.end = 2] = "end", t[t.dispose = 3] = "dispose", t[t.complete = 4] = "complete", t[t.event = 5] = "event"
                    }(r = t.EventType || (t.EventType = {}));
                    var o = function() {
                        function t() {}
                        return t.prototype.start = function(t) {}, t.prototype.interrupt = function(t) {}, t.prototype.end = function(t) {}, t.prototype.dispose = function(t) {}, t.prototype.complete = function(t) {}, t.prototype.event = function(t, e) {}, t
                    }();
                    t.AnimationStateAdapter2 = o
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function t(t) {
                            if (this.animationToMixTime = {}, this.defaultMix = 0, null == t) throw new Error("skeletonData cannot be null.");
                            this.skeletonData = t
                        }
                        return t.prototype.setMix = function(t, e, n) {
                            var i = this.skeletonData.findAnimation(t);
                            if (null == i) throw new Error("Animation not found: " + t);
                            var r = this.skeletonData.findAnimation(e);
                            if (null == r) throw new Error("Animation not found: " + e);
                            this.setMixWith(i, r, n)
                        }, t.prototype.setMixByName = function(e, n, i) {
                            t.deprecatedWarning1 || (t.deprecatedWarning1 = !0), this.setMix(e, n, i)
                        }, t.prototype.setMixWith = function(t, e, n) {
                            if (null == t) throw new Error("from cannot be null.");
                            if (null == e) throw new Error("to cannot be null.");
                            var i = t.name + "." + e.name;
                            this.animationToMixTime[i] = n
                        }, t.prototype.getMix = function(t, e) {
                            var n = t.name + "." + e.name,
                                i = this.animationToMixTime[n];
                            return void 0 === i ? this.defaultMix : i
                        }, t.deprecatedWarning1 = !1, t
                    }();
                    t.AnimationStateData = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function e(t) {
                            this.atlas = t
                        }
                        return e.prototype.newRegionAttachment = function(e, n, i) {
                            var r = this.atlas.findRegion(i);
                            if (null == r) throw new Error("Region not found in atlas: " + i + " (region attachment: " + n + ")");
                            var o = new t.RegionAttachment(n);
                            return o.region = r, o
                        }, e.prototype.newMeshAttachment = function(e, n, i) {
                            var r = this.atlas.findRegion(i);
                            if (null == r) throw new Error("Region not found in atlas: " + i + " (mesh attachment: " + n + ")");
                            var o = new t.MeshAttachment(n);
                            return o.region = r, o
                        }, e.prototype.newBoundingBoxAttachment = function(e, n) {
                            return new t.BoundingBoxAttachment(n)
                        }, e.prototype.newPathAttachment = function(e, n) {
                            return new t.PathAttachment(n)
                        }, e.prototype.newPointAttachment = function(e, n) {
                            return new t.PointAttachment(n)
                        }, e.prototype.newClippingAttachment = function(e, n) {
                            return new t.ClippingAttachment(n)
                        }, e
                    }();
                    t.AtlasAttachmentLoader = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    ! function(t) {
                        t[t.Normal = 0] = "Normal", t[t.Additive = 1] = "Additive", t[t.Multiply = 2] = "Multiply", t[t.Screen = 3] = "Screen"
                    }(t.BlendMode || (t.BlendMode = {}))
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(e) {
                ! function(e) {
                    var n = function() {
                        function n(e, n, i) {
                            if (this.matrix = new t.Matrix, this.children = new Array, this.x = 0, this.y = 0, this.rotation = 0, this.scaleX = 0, this.scaleY = 0, this.shearX = 0, this.shearY = 0, this.ax = 0, this.ay = 0, this.arotation = 0, this.ascaleX = 0, this.ascaleY = 0, this.ashearX = 0, this.ashearY = 0, this.appliedValid = !1, this.sorted = !1, null == e) throw new Error("data cannot be null.");
                            if (null == n) throw new Error("skeleton cannot be null.");
                            this.data = e, this.skeleton = n, this.parent = i, this.setToSetupPose()
                        }
                        return Object.defineProperty(n.prototype, "worldX", {
                            get: function() {
                                return this.matrix.tx
                            },
                            enumerable: !0,
                            configurable: !0
                        }), Object.defineProperty(n.prototype, "worldY", {
                            get: function() {
                                return this.matrix.ty
                            },
                            enumerable: !0,
                            configurable: !0
                        }), n.prototype.update = function() {
                            this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY)
                        }, n.prototype.updateWorldTransform = function() {
                            this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY)
                        }, n.prototype.updateWorldTransformWith = function(t, i, r, o, a, s, l) {
                            this.ax = t, this.ay = i, this.arotation = r, this.ascaleX = o, this.ascaleY = a, this.ashearX = s, this.ashearY = l, this.appliedValid = !0;
                            var u = this.parent,
                                c = this.matrix;
                            if (null == u) {
                                var h = r + 90 + l,
                                    p = e.MathUtils.cosDeg(r + s) * o,
                                    f = e.MathUtils.cosDeg(h) * a,
                                    d = e.MathUtils.sinDeg(r + s) * o,
                                    m = e.MathUtils.sinDeg(h) * a,
                                    g = this.skeleton;
                                return g.flipX && (t = -t, p = -p, f = -f), g.flipY !== n.yDown && (i = -i, d = -d, m = -m), c.a = p, c.c = f, c.b = d, c.d = m, c.tx = t + g.x, void(c.ty = i + g.y)
                            }
                            var _ = u.matrix.a,
                                y = u.matrix.c,
                                v = u.matrix.b,
                                b = u.matrix.d;
                            switch (c.tx = _ * t + y * i + u.matrix.tx, c.ty = v * t + b * i + u.matrix.ty, this.data.transformMode) {
                                case e.TransformMode.Normal:
                                    var h = r + 90 + l,
                                        p = e.MathUtils.cosDeg(r + s) * o,
                                        f = e.MathUtils.cosDeg(h) * a,
                                        d = e.MathUtils.sinDeg(r + s) * o,
                                        m = e.MathUtils.sinDeg(h) * a;
                                    return c.a = _ * p + y * d, c.c = _ * f + y * m, c.b = v * p + b * d, void(c.d = v * f + b * m);
                                case e.TransformMode.OnlyTranslation:
                                    var h = r + 90 + l;
                                    c.a = e.MathUtils.cosDeg(r + s) * o, c.c = e.MathUtils.cosDeg(h) * a, c.b = e.MathUtils.sinDeg(r + s) * o, c.d = e.MathUtils.sinDeg(h) * a;
                                    break;
                                case e.TransformMode.NoRotationOrReflection:
                                    var x = _ * _ + v * v,
                                        T = 0;
                                    x > 1e-4 ? (x = Math.abs(_ * b - y * v) / x, y = v * x, b = _ * x, T = Math.atan2(v, _) * e.MathUtils.radDeg) : (_ = 0, v = 0, T = 90 - Math.atan2(b, y) * e.MathUtils.radDeg);
                                    var w = r + s - T,
                                        S = r + l - T + 90,
                                        p = e.MathUtils.cosDeg(w) * o,
                                        f = e.MathUtils.cosDeg(S) * a,
                                        d = e.MathUtils.sinDeg(w) * o,
                                        m = e.MathUtils.sinDeg(S) * a;
                                    c.a = _ * p - y * d, c.c = _ * f - y * m, c.b = v * p + b * d, c.d = v * f + b * m;
                                    break;
                                case e.TransformMode.NoScale:
                                case e.TransformMode.NoScaleOrReflection:
                                    var P = e.MathUtils.cosDeg(r),
                                        M = e.MathUtils.sinDeg(r),
                                        C = _ * P + y * M,
                                        E = v * P + b * M,
                                        x = Math.sqrt(C * C + E * E);
                                    x > 1e-5 && (x = 1 / x), C *= x, E *= x, x = Math.sqrt(C * C + E * E);
                                    var O = Math.PI / 2 + Math.atan2(E, C),
                                        I = Math.cos(O) * x,
                                        R = Math.sin(O) * x,
                                        p = e.MathUtils.cosDeg(s) * o,
                                        f = e.MathUtils.cosDeg(90 + l) * a,
                                        d = e.MathUtils.sinDeg(s) * o,
                                        m = e.MathUtils.sinDeg(90 + l) * a;
                                    return (this.data.transformMode != e.TransformMode.NoScaleOrReflection ? _ * b - y * v < 0 : this.skeleton.flipX != this.skeleton.flipY != n.yDown) && (I = -I, R = -R), c.a = C * p + I * d, c.c = C * f + I * m, c.b = E * p + R * d, void(c.d = E * f + R * m)
                            }
                            this.skeleton.flipX && (c.a = -c.a, c.c = -c.c), this.skeleton.flipY != n.yDown && (c.b = -c.b, c.d = -c.d)
                        }, n.prototype.setToSetupPose = function() {
                            var t = this.data;
                            this.x = t.x, this.y = t.y, this.rotation = t.rotation, this.scaleX = t.scaleX, this.scaleY = t.scaleY, this.shearX = t.shearX, this.shearY = t.shearY
                        }, n.prototype.getWorldRotationX = function() {
                            return Math.atan2(this.matrix.b, this.matrix.a) * e.MathUtils.radDeg
                        }, n.prototype.getWorldRotationY = function() {
                            return Math.atan2(this.matrix.d, this.matrix.c) * e.MathUtils.radDeg
                        }, n.prototype.getWorldScaleX = function() {
                            var t = this.matrix;
                            return Math.sqrt(t.a * t.a + t.c * t.c)
                        }, n.prototype.getWorldScaleY = function() {
                            var t = this.matrix;
                            return Math.sqrt(t.b * t.b + t.d * t.d)
                        }, n.prototype.updateAppliedTransform = function() {
                            this.appliedValid = !0;
                            var t = this.parent,
                                n = this.matrix;
                            if (null == t) return this.ax = n.tx, this.ay = n.ty, this.arotation = Math.atan2(n.b, n.a) * e.MathUtils.radDeg, this.ascaleX = Math.sqrt(n.a * n.a + n.b * n.b), this.ascaleY = Math.sqrt(n.c * n.c + n.d * n.d), this.ashearX = 0, void(this.ashearY = Math.atan2(n.a * n.c + n.b * n.d, n.a * n.d - n.b * n.c) * e.MathUtils.radDeg);
                            var i = t.matrix,
                                r = 1 / (i.a * i.d - i.b * i.c),
                                o = n.tx - i.tx,
                                a = n.ty - i.ty;
                            this.ax = o * i.d * r - a * i.c * r, this.ay = a * i.a * r - o * i.b * r;
                            var s = r * i.d,
                                l = r * i.a,
                                u = r * i.c,
                                c = r * i.b,
                                h = s * n.a - u * n.b,
                                p = s * n.c - u * n.d,
                                f = l * n.b - c * n.a,
                                d = l * n.d - c * n.c;
                            if (this.ashearX = 0, this.ascaleX = Math.sqrt(h * h + f * f), this.ascaleX > 1e-4) {
                                var m = h * d - p * f;
                                this.ascaleY = m / this.ascaleX, this.ashearY = Math.atan2(h * p + f * d, m) * e.MathUtils.radDeg, this.arotation = Math.atan2(f, h) * e.MathUtils.radDeg
                            } else this.ascaleX = 0, this.ascaleY = Math.sqrt(p * p + d * d), this.ashearY = 0, this.arotation = 90 - Math.atan2(d, p) * e.MathUtils.radDeg
                        }, n.prototype.worldToLocal = function(t) {
                            var e = this.matrix,
                                n = e.a,
                                i = e.c,
                                r = e.b,
                                o = e.d,
                                a = 1 / (n * o - i * r),
                                s = t.x - e.tx,
                                l = t.y - e.ty;
                            return t.x = s * o * a - l * i * a, t.y = l * n * a - s * r * a, t
                        }, n.prototype.localToWorld = function(t) {
                            var e = this.matrix,
                                n = t.x,
                                i = t.y;
                            return t.x = n * e.a + i * e.c + e.tx, t.y = n * e.b + i * e.d + e.ty, t
                        }, n.prototype.worldToLocalRotation = function(t) {
                            var n = e.MathUtils.sinDeg(t),
                                i = e.MathUtils.cosDeg(t),
                                r = this.matrix;
                            return Math.atan2(r.a * n - r.b * i, r.d * i - r.c * n) * e.MathUtils.radDeg
                        }, n.prototype.localToWorldRotation = function(t) {
                            var n = e.MathUtils.sinDeg(t),
                                i = e.MathUtils.cosDeg(t),
                                r = this.matrix;
                            return Math.atan2(i * r.b + n * r.d, i * r.a + n * r.c) * e.MathUtils.radDeg
                        }, n.prototype.rotateWorld = function(t) {
                            var n = this.matrix,
                                i = n.a,
                                r = n.c,
                                o = n.b,
                                a = n.d,
                                s = e.MathUtils.cosDeg(t),
                                l = e.MathUtils.sinDeg(t);
                            n.a = s * i - l * o, n.c = s * r - l * a, n.b = l * i + s * o, n.d = l * r + s * a, this.appliedValid = !1
                        }, n.yDown = !1, n
                    }();
                    e.Bone = n
                }(e.core || (e.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function t(t, e, i) {
                            if (this.x = 0, this.y = 0, this.rotation = 0, this.scaleX = 1, this.scaleY = 1, this.shearX = 0, this.shearY = 0, this.transformMode = n.Normal, t < 0) throw new Error("index must be >= 0.");
                            if (null == e) throw new Error("name cannot be null.");
                            this.index = t, this.name = e, this.parent = i
                        }
                        return t
                    }();
                    t.BoneData = e;
                    var n;
                    ! function(t) {
                        t[t.Normal = 0] = "Normal", t[t.OnlyTranslation = 1] = "OnlyTranslation", t[t.NoRotationOrReflection = 2] = "NoRotationOrReflection", t[t.NoScale = 3] = "NoScale", t[t.NoScaleOrReflection = 4] = "NoScaleOrReflection"
                    }(n = t.TransformMode || (t.TransformMode = {}))
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function t(t, e) {
                            if (null == e) throw new Error("data cannot be null.");
                            this.time = t, this.data = e
                        }
                        return t
                    }();
                    t.Event = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function t(t) {
                            this.name = t
                        }
                        return t
                    }();
                    t.EventData = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function e(t, e) {
                            if (this.mix = 1, this.bendDirection = 0, null == t) throw new Error("data cannot be null.");
                            if (null == e) throw new Error("skeleton cannot be null.");
                            this.data = t, this.mix = t.mix, this.bendDirection = t.bendDirection, this.bones = new Array;
                            for (var n = 0; n < t.bones.length; n++) this.bones.push(e.findBone(t.bones[n].name));
                            this.target = e.findBone(t.target.name)
                        }
                        return e.prototype.getOrder = function() {
                            return this.data.order
                        }, e.prototype.apply = function() {
                            this.update()
                        }, e.prototype.update = function() {
                            var t = this.target,
                                e = this.bones;
                            switch (e.length) {
                                case 1:
                                    this.apply1(e[0], t.worldX, t.worldY, this.mix);
                                    break;
                                case 2:
                                    this.apply2(e[0], e[1], t.worldX, t.worldY, this.bendDirection, this.mix)
                            }
                        }, e.prototype.apply1 = function(e, n, i, r) {
                            e.appliedValid || e.updateAppliedTransform();
                            var o = e.parent.matrix,
                                a = 1 / (o.a * o.d - o.b * o.c),
                                s = n - o.tx,
                                l = i - o.ty,
                                u = (s * o.d - l * o.c) * a - e.ax,
                                c = (l * o.a - s * o.b) * a - e.ay,
                                h = Math.atan2(c, u) * t.MathUtils.radDeg - e.ashearX - e.arotation;
                            e.ascaleX < 0 && (h += 180), h > 180 ? h -= 360 : h < -180 && (h += 360), e.updateWorldTransformWith(e.ax, e.ay, e.arotation + h * r, e.ascaleX, e.ascaleY, e.ashearX, e.ashearY)
                        }, e.prototype.apply2 = function(e, n, i, r, o, a) {
                            if (0 == a) return void n.updateWorldTransform();
                            e.appliedValid || e.updateAppliedTransform(), n.appliedValid || n.updateAppliedTransform();
                            var s = e.ax,
                                l = e.ay,
                                u = e.ascaleX,
                                c = e.ascaleY,
                                h = n.ascaleX,
                                p = e.matrix,
                                f = 0,
                                d = 0,
                                m = 0;
                            u < 0 ? (u = -u, f = 180, m = -1) : (f = 0, m = 1), c < 0 && (c = -c, m = -m), h < 0 ? (h = -h, d = 180) : d = 0;
                            var g = n.ax,
                                _ = 0,
                                y = 0,
                                v = 0,
                                b = p.a,
                                x = p.c,
                                T = p.b,
                                w = p.d,
                                S = Math.abs(u - c) <= 1e-4;
                            S ? (_ = n.ay, y = b * g + x * _ + p.tx, v = T * g + w * _ + p.ty) : (_ = 0, y = b * g + p.tx, v = T * g + p.ty);
                            var P = e.parent.matrix;
                            b = P.a, x = P.c, T = P.b, w = P.d;
                            var M = 1 / (b * w - x * T),
                                C = i - P.tx,
                                E = r - P.ty,
                                O = (C * w - E * x) * M - s,
                                I = (E * b - C * T) * M - l;
                            C = y - P.tx, E = v - P.ty;
                            var R = (C * w - E * x) * M - s,
                                A = (E * b - C * T) * M - l,
                                k = Math.sqrt(R * R + A * A),
                                L = n.data.length * h,
                                D = 0,
                                B = 0;
                            t: if (S) {
                                L *= u;
                                var N = (O * O + I * I - k * k - L * L) / (2 * k * L);
                                N < -1 ? N = -1 : N > 1 && (N = 1), B = Math.acos(N) * o, b = k + L * N, x = L * Math.sin(B), D = Math.atan2(I * b - O * x, O * b + I * x)
                            } else {
                                b = u * L, x = c * L;
                                var F = b * b,
                                    G = x * x,
                                    U = O * O + I * I,
                                    j = Math.atan2(I, O);
                                T = G * k * k + F * U - F * G;
                                var W = -2 * G * k,
                                    X = G - F;
                                if ((w = W * W - 4 * X * T) >= 0) {
                                    var V = Math.sqrt(w);
                                    W < 0 && (V = -V), V = -(W + V) / 2;
                                    var H = V / X,
                                        z = T / V,
                                        Y = Math.abs(H) < Math.abs(z) ? H : z;
                                    if (Y * Y <= U) {
                                        E = Math.sqrt(U - Y * Y) * o, D = j - Math.atan2(E, Y), B = Math.atan2(E / c, (Y - k) / u);
                                        break t
                                    }
                                }
                                var q = t.MathUtils.PI,
                                    J = k - b,
                                    K = J * J,
                                    $ = 0,
                                    Z = 0,
                                    Q = k + b,
                                    tt = Q * Q,
                                    et = 0;
                                T = -b * k / (F - G), T >= -1 && T <= 1 && (T = Math.acos(T), C = b * Math.cos(T) + k, E = x * Math.sin(T), w = C * C + E * E, w < K && (q = T, K = w, J = C, $ = E), w > tt && (Z = T, tt = w, Q = C, et = E)), U <= (K + tt) / 2 ? (D = j - Math.atan2($ * o, J), B = q * o) : (D = j - Math.atan2(et * o, Q), B = Z * o)
                            }
                            var nt = Math.atan2(_, g) * m,
                                it = e.arotation;
                            D = (D - nt) * t.MathUtils.radDeg + f - it, D > 180 ? D -= 360 : D < -180 && (D += 360), e.updateWorldTransformWith(s, l, it + D * a, e.ascaleX, e.ascaleY, 0, 0), it = n.arotation, B = ((B + nt) * t.MathUtils.radDeg - n.ashearX) * m + d - it, B > 180 ? B -= 360 : B < -180 && (B += 360), n.updateWorldTransformWith(g, _, it + B * a, n.ascaleX, n.ascaleY, n.ashearX, n.ashearY)
                        }, e
                    }();
                    t.IkConstraint = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function t(t) {
                            this.order = 0, this.bones = new Array, this.bendDirection = 1, this.mix = 1, this.name = t
                        }
                        return t
                    }();
                    t.IkConstraintData = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function e(t, e) {
                            if (this.position = 0, this.spacing = 0, this.rotateMix = 0, this.translateMix = 0, this.spaces = new Array, this.positions = new Array, this.world = new Array, this.curves = new Array, this.lengths = new Array, this.segments = new Array, null == t) throw new Error("data cannot be null.");
                            if (null == e) throw new Error("skeleton cannot be null.");
                            this.data = t, this.bones = new Array;
                            for (var n = 0, i = t.bones.length; n < i; n++) this.bones.push(e.findBone(t.bones[n].name));
                            this.target = e.findSlot(t.target.name), this.position = t.position, this.spacing = t.spacing, this.rotateMix = t.rotateMix, this.translateMix = t.translateMix
                        }
                        return e.prototype.apply = function() {
                            this.update()
                        }, e.prototype.update = function() {
                            var n = this.target.getAttachment();
                            if (n instanceof t.PathAttachment) {
                                var i = this.rotateMix,
                                    r = this.translateMix,
                                    o = r > 0,
                                    a = i > 0;
                                if (o || a) {
                                    var s = this.data,
                                        l = s.spacingMode,
                                        u = l == t.SpacingMode.Length,
                                        c = s.rotateMode,
                                        h = c == t.RotateMode.Tangent,
                                        p = c == t.RotateMode.ChainScale,
                                        f = this.bones.length,
                                        d = h ? f : f + 1,
                                        m = this.bones,
                                        g = t.Utils.setArraySize(this.spaces, d),
                                        _ = null,
                                        y = this.spacing;
                                    if (p || u) {
                                        p && (_ = t.Utils.setArraySize(this.lengths, f));
                                        for (var v = 0, b = d - 1; v < b;) {
                                            var x = m[v],
                                                T = x.data.length;
                                            if (T < e.epsilon) p && (_[v] = 0), g[++v] = 0;
                                            else {
                                                var w = T * x.matrix.a,
                                                    S = T * x.matrix.b,
                                                    P = Math.sqrt(w * w + S * S);
                                                p && (_[v] = P), g[++v] = (u ? T + y : y) * P / T
                                            }
                                        }
                                    } else
                                        for (var v = 1; v < d; v++) g[v] = y;
                                    var M = this.computeWorldPositions(n, d, h, s.positionMode == t.PositionMode.Percent, l == t.SpacingMode.Percent),
                                        C = M[0],
                                        E = M[1],
                                        O = s.offsetRotation,
                                        I = !1;
                                    if (0 == O) I = c == t.RotateMode.Chain;
                                    else {
                                        I = !1;
                                        var R = this.target.bone.matrix;
                                        O *= R.a * R.d - R.b * R.c > 0 ? t.MathUtils.degRad : -t.MathUtils.degRad
                                    }
                                    for (var v = 0, R = 3; v < f; v++, R += 3) {
                                        var x = m[v],
                                            A = x.matrix;
                                        A.tx += (C - A.tx) * r, A.ty += (E - A.ty) * r;
                                        var w = M[R],
                                            S = M[R + 1],
                                            k = w - C,
                                            L = S - E;
                                        if (p) {
                                            var D = _[v];
                                            if (0 != D) {
                                                var B = (Math.sqrt(k * k + L * L) / D - 1) * i + 1;
                                                A.a *= B, A.b *= B
                                            }
                                        }
                                        if (C = w, E = S, a) {
                                            var N = A.a,
                                                F = A.c,
                                                G = A.b,
                                                U = A.d,
                                                j = 0,
                                                W = 0,
                                                X = 0;
                                            if (j = h ? M[R - 1] : 0 == g[v + 1] ? M[R + 2] : Math.atan2(L, k), j -= Math.atan2(G, N), I) {
                                                W = Math.cos(j), X = Math.sin(j);
                                                var V = x.data.length;
                                                C += (V * (W * N - X * G) - k) * i, E += (V * (X * N + W * G) - L) * i
                                            } else j += O;
                                            j > t.MathUtils.PI ? j -= t.MathUtils.PI2 : j < -t.MathUtils.PI && (j += t.MathUtils.PI2), j *= i, W = Math.cos(j), X = Math.sin(j), A.a = W * N - X * G, A.c = W * F - X * U, A.b = X * N + W * G, A.d = X * F + W * U
                                        }
                                        x.appliedValid = !1
                                    }
                                }
                            }
                        }, e.prototype.computeWorldPositions = function(n, i, r, o, a) {
                            var s = this.target,
                                l = this.position,
                                u = this.spaces,
                                c = t.Utils.setArraySize(this.positions, 3 * i + 2),
                                h = null,
                                p = n.closed,
                                f = n.worldVerticesLength,
                                d = f / 6,
                                m = e.NONE;
                            if (!n.constantSpeed) {
                                var g = n.lengths;
                                d -= p ? 1 : 2;
                                var _ = g[d];
                                if (o && (l *= _), a)
                                    for (var y = 0; y < i; y++) u[y] *= _;
                                h = t.Utils.setArraySize(this.world, 8);
                                for (var y = 0, v = 0, b = 0; y < i; y++, v += 3) {
                                    var x = u[y];
                                    l += x;
                                    var T = l;
                                    if (p) T %= _, T < 0 && (T += _), b = 0;
                                    else {
                                        if (T < 0) {
                                            m != e.BEFORE && (m = e.BEFORE, n.computeWorldVertices(s, 2, 4, h, 0, 2)), this.addBeforePosition(T, h, 0, c, v);
                                            continue
                                        }
                                        if (T > _) {
                                            m != e.AFTER && (m = e.AFTER, n.computeWorldVertices(s, f - 6, 4, h, 0, 2)), this.addAfterPosition(T - _, h, 0, c, v);
                                            continue
                                        }
                                    }
                                    for (;; b++) {
                                        var w = g[b];
                                        if (!(T > w)) {
                                            if (0 == b) T /= w;
                                            else {
                                                var S = g[b - 1];
                                                T = (T - S) / (w - S)
                                            }
                                            break
                                        }
                                    }
                                    b != m && (m = b, p && b == d ? (n.computeWorldVertices(s, f - 4, 4, h, 0, 2), n.computeWorldVertices(s, 0, 4, h, 4, 2)) : n.computeWorldVertices(s, 6 * b + 2, 8, h, 0, 2)), this.addCurvePosition(T, h[0], h[1], h[2], h[3], h[4], h[5], h[6], h[7], c, v, r || y > 0 && 0 == x)
                                }
                                return c
                            }
                            p ? (f += 2, h = t.Utils.setArraySize(this.world, f), n.computeWorldVertices(s, 2, f - 4, h, 0, 2), n.computeWorldVertices(s, 0, 2, h, f - 4, 2), h[f - 2] = h[0], h[f - 1] = h[1]) : (d--, f -= 4, h = t.Utils.setArraySize(this.world, f), n.computeWorldVertices(s, 2, f, h, 0, 2));
                            for (var P = t.Utils.setArraySize(this.curves, d), M = 0, C = h[0], E = h[1], O = 0, I = 0, R = 0, A = 0, k = 0, L = 0, D = 0, B = 0, N = 0, F = 0, G = 0, U = 0, j = 0, W = 0, y = 0, X = 2; y < d; y++, X += 6) O = h[X], I = h[X + 1], R = h[X + 2], A = h[X + 3], k = h[X + 4], L = h[X + 5], D = .1875 * (C - 2 * O + R), B = .1875 * (E - 2 * I + A), N = .09375 * (3 * (O - R) - C + k), F = .09375 * (3 * (I - A) - E + L), G = 2 * D + N, U = 2 * B + F, j = .75 * (O - C) + D + .16666667 * N, W = .75 * (I - E) + B + .16666667 * F, M += Math.sqrt(j * j + W * W), j += G, W += U, G += N, U += F, M += Math.sqrt(j * j + W * W), j += G, W += U, M += Math.sqrt(j * j + W * W), j += G + N, W += U + F, M += Math.sqrt(j * j + W * W), P[y] = M, C = k, E = L;
                            if (o && (l *= M), a)
                                for (var y = 0; y < i; y++) u[y] *= M;
                            for (var V = this.segments, H = 0, y = 0, v = 0, b = 0, z = 0; y < i; y++, v += 3) {
                                var x = u[y];
                                l += x;
                                var T = l;
                                if (p) T %= M, T < 0 && (T += M), b = 0;
                                else {
                                    if (T < 0) {
                                        this.addBeforePosition(T, h, 0, c, v);
                                        continue
                                    }
                                    if (T > M) {
                                        this.addAfterPosition(T - M, h, f - 4, c, v);
                                        continue
                                    }
                                }
                                for (;; b++) {
                                    var Y = P[b];
                                    if (!(T > Y)) {
                                        if (0 == b) T /= Y;
                                        else {
                                            var S = P[b - 1];
                                            T = (T - S) / (Y - S)
                                        }
                                        break
                                    }
                                }
                                if (b != m) {
                                    m = b;
                                    var q = 6 * b;
                                    for (C = h[q], E = h[q + 1], O = h[q + 2], I = h[q + 3], R = h[q + 4], A = h[q + 5], k = h[q + 6], L = h[q + 7], D = .03 * (C - 2 * O + R), B = .03 * (E - 2 * I + A), N = .006 * (3 * (O - R) - C + k), F = .006 * (3 * (I - A) - E + L), G = 2 * D + N, U = 2 * B + F, j = .3 * (O - C) + D + .16666667 * N, W = .3 * (I - E) + B + .16666667 * F, H = Math.sqrt(j * j + W * W), V[0] = H, q = 1; q < 8; q++) j += G, W += U, G += N, U += F, H += Math.sqrt(j * j + W * W), V[q] = H;
                                    j += G, W += U, H += Math.sqrt(j * j + W * W), V[8] = H, j += G + N, W += U + F, H += Math.sqrt(j * j + W * W), V[9] = H, z = 0
                                }
                                for (T *= H;; z++) {
                                    var J = V[z];
                                    if (!(T > J)) {
                                        if (0 == z) T /= J;
                                        else {
                                            var S = V[z - 1];
                                            T = z + (T - S) / (J - S)
                                        }
                                        break
                                    }
                                }
                                this.addCurvePosition(.1 * T, C, E, O, I, R, A, k, L, c, v, r || y > 0 && 0 == x)
                            }
                            return c
                        }, e.prototype.addBeforePosition = function(t, e, n, i, r) {
                            var o = e[n],
                                a = e[n + 1],
                                s = e[n + 2] - o,
                                l = e[n + 3] - a,
                                u = Math.atan2(l, s);
                            i[r] = o + t * Math.cos(u), i[r + 1] = a + t * Math.sin(u), i[r + 2] = u
                        }, e.prototype.addAfterPosition = function(t, e, n, i, r) {
                            var o = e[n + 2],
                                a = e[n + 3],
                                s = o - e[n],
                                l = a - e[n + 1],
                                u = Math.atan2(l, s);
                            i[r] = o + t * Math.cos(u), i[r + 1] = a + t * Math.sin(u), i[r + 2] = u
                        }, e.prototype.addCurvePosition = function(t, e, n, i, r, o, a, s, l, u, c, h) {
                            (0 == t || isNaN(t)) && (t = 1e-4);
                            var p = t * t,
                                f = p * t,
                                d = 1 - t,
                                m = d * d,
                                g = m * d,
                                _ = d * t,
                                y = 3 * _,
                                v = d * y,
                                b = y * t,
                                x = e * g + i * v + o * b + s * f,
                                T = n * g + r * v + a * b + l * f;
                            u[c] = x, u[c + 1] = T, h && (u[c + 2] = Math.atan2(T - (n * m + r * _ * 2 + a * p), x - (e * m + i * _ * 2 + o * p)))
                        }, e.prototype.getOrder = function() {
                            return this.data.order
                        }, e.NONE = -1, e.BEFORE = -2, e.AFTER = -3, e.epsilon = 1e-5, e
                    }();
                    t.PathConstraint = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function t(t) {
                            this.order = 0, this.bones = new Array, this.name = t
                        }
                        return t
                    }();
                    t.PathConstraintData = e;
                    ! function(t) {
                        t[t.Fixed = 0] = "Fixed", t[t.Percent = 1] = "Percent"
                    }(t.PositionMode || (t.PositionMode = {}));
                    ! function(t) {
                        t[t.Length = 0] = "Length", t[t.Fixed = 1] = "Fixed", t[t.Percent = 2] = "Percent"
                    }(t.SpacingMode || (t.SpacingMode = {}));
                    ! function(t) {
                        t[t.Tangent = 0] = "Tangent", t[t.Chain = 1] = "Chain", t[t.ChainScale = 2] = "ChainScale"
                    }(t.RotateMode || (t.RotateMode = {}))
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function e(e) {
                            if (this._updateCache = new Array, this.updateCacheReset = new Array, this.time = 0, this.flipX = !1, this.flipY = !1, this.x = 0, this.y = 0, null == e) throw new Error("data cannot be null.");
                            this.data = e, this.bones = new Array;
                            for (var n = 0; n < e.bones.length; n++) {
                                var i = e.bones[n],
                                    r = void 0;
                                if (null == i.parent) r = new t.Bone(i, this, null);
                                else {
                                    var o = this.bones[i.parent.index];
                                    r = new t.Bone(i, this, o), o.children.push(r)
                                }
                                this.bones.push(r)
                            }
                            this.slots = new Array, this.drawOrder = new Array;
                            for (var n = 0; n < e.slots.length; n++) {
                                var a = e.slots[n],
                                    r = this.bones[a.boneData.index],
                                    s = new t.Slot(a, r);
                                this.slots.push(s), this.drawOrder.push(s)
                            }
                            this.ikConstraints = new Array;
                            for (var n = 0; n < e.ikConstraints.length; n++) {
                                var l = e.ikConstraints[n];
                                this.ikConstraints.push(new t.IkConstraint(l, this))
                            }
                            this.transformConstraints = new Array;
                            for (var n = 0; n < e.transformConstraints.length; n++) {
                                var u = e.transformConstraints[n];
                                this.transformConstraints.push(new t.TransformConstraint(u, this))
                            }
                            this.pathConstraints = new Array;
                            for (var n = 0; n < e.pathConstraints.length; n++) {
                                var c = e.pathConstraints[n];
                                this.pathConstraints.push(new t.PathConstraint(c, this))
                            }
                            this.color = new t.Color(1, 1, 1, 1), this.updateCache()
                        }
                        return e.prototype.updateCache = function() {
                            this._updateCache.length = 0, this.updateCacheReset.length = 0;
                            for (var t = this.bones, e = 0, n = t.length; e < n; e++) t[e].sorted = !1;
                            var i = this.ikConstraints,
                                r = this.transformConstraints,
                                o = this.pathConstraints,
                                a = i.length,
                                s = r.length,
                                l = o.length,
                                u = a + s + l;
                            t: for (var e = 0; e < u; e++) {
                                for (var c = 0; c < a; c++) {
                                    var h = i[c];
                                    if (h.data.order == e) {
                                        this.sortIkConstraint(h);
                                        continue t
                                    }
                                }
                                for (var c = 0; c < s; c++) {
                                    var h = r[c];
                                    if (h.data.order == e) {
                                        this.sortTransformConstraint(h);
                                        continue t
                                    }
                                }
                                for (var c = 0; c < l; c++) {
                                    var h = o[c];
                                    if (h.data.order == e) {
                                        this.sortPathConstraint(h);
                                        continue t
                                    }
                                }
                            }
                            for (var e = 0, n = t.length; e < n; e++) this.sortBone(t[e])
                        }, e.prototype.sortIkConstraint = function(t) {
                            var e = t.target;
                            this.sortBone(e);
                            var n = t.bones,
                                i = n[0];
                            if (this.sortBone(i), n.length > 1) {
                                var r = n[n.length - 1];
                                this._updateCache.indexOf(r) > -1 || this.updateCacheReset.push(r)
                            }
                            this._updateCache.push(t), this.sortReset(i.children), n[n.length - 1].sorted = !0
                        }, e.prototype.sortPathConstraint = function(e) {
                            var n = e.target,
                                i = n.data.index,
                                r = n.bone;
                            null != this.skin && this.sortPathConstraintAttachment(this.skin, i, r), null != this.data.defaultSkin && this.data.defaultSkin != this.skin && this.sortPathConstraintAttachment(this.data.defaultSkin, i, r);
                            for (var o = 0, a = this.data.skins.length; o < a; o++) this.sortPathConstraintAttachment(this.data.skins[o], i, r);
                            var s = n.getAttachment();
                            s instanceof t.PathAttachment && this.sortPathConstraintAttachmentWith(s, r);
                            for (var l = e.bones, u = l.length, o = 0; o < u; o++) this.sortBone(l[o]);
                            this._updateCache.push(e);
                            for (var o = 0; o < u; o++) this.sortReset(l[o].children);
                            for (var o = 0; o < u; o++) l[o].sorted = !0
                        }, e.prototype.sortTransformConstraint = function(t) {
                            this.sortBone(t.target);
                            var e = t.bones,
                                n = e.length;
                            if (t.data.local)
                                for (var i = 0; i < n; i++) {
                                    var r = e[i];
                                    this.sortBone(r.parent), this._updateCache.indexOf(r) > -1 || this.updateCacheReset.push(r)
                                } else
                                    for (var i = 0; i < n; i++) this.sortBone(e[i]);
                            this._updateCache.push(t);
                            for (var o = 0; o < n; o++) this.sortReset(e[o].children);
                            for (var o = 0; o < n; o++) e[o].sorted = !0
                        }, e.prototype.sortPathConstraintAttachment = function(t, e, n) {
                            var i = t.attachments[e];
                            if (i)
                                for (var r in i) this.sortPathConstraintAttachmentWith(i[r], n)
                        }, e.prototype.sortPathConstraintAttachmentWith = function(e, n) {
                            if (e instanceof t.PathAttachment) {
                                var i = e.bones;
                                if (null == i) this.sortBone(n);
                                else
                                    for (var r = this.bones, o = 0; o < i.length;)
                                        for (var a = i[o++], s = o + a; o < s; o++) {
                                            var l = i[o];
                                            this.sortBone(r[l])
                                        }
                            }
                        }, e.prototype.sortBone = function(t) {
                            if (!t.sorted) {
                                var e = t.parent;
                                null != e && this.sortBone(e), t.sorted = !0, this._updateCache.push(t)
                            }
                        }, e.prototype.sortReset = function(t) {
                            for (var e = 0, n = t.length; e < n; e++) {
                                var i = t[e];
                                i.sorted && this.sortReset(i.children), i.sorted = !1
                            }
                        }, e.prototype.updateWorldTransform = function() {
                            for (var t = this.updateCacheReset, e = 0, n = t.length; e < n; e++) {
                                var i = t[e];
                                i.ax = i.x, i.ay = i.y, i.arotation = i.rotation, i.ascaleX = i.scaleX, i.ascaleY = i.scaleY, i.ashearX = i.shearX, i.ashearY = i.shearY, i.appliedValid = !0
                            }
                            for (var r = this._updateCache, e = 0, n = r.length; e < n; e++) r[e].update()
                        }, e.prototype.setToSetupPose = function() {
                            this.setBonesToSetupPose(), this.setSlotsToSetupPose()
                        }, e.prototype.setBonesToSetupPose = function() {
                            for (var t = this.bones, e = 0, n = t.length; e < n; e++) t[e].setToSetupPose();
                            for (var i = this.ikConstraints, e = 0, n = i.length; e < n; e++) {
                                var r = i[e];
                                r.bendDirection = r.data.bendDirection, r.mix = r.data.mix
                            }
                            for (var o = this.transformConstraints, e = 0, n = o.length; e < n; e++) {
                                var r = o[e],
                                    a = r.data;
                                r.rotateMix = a.rotateMix, r.translateMix = a.translateMix, r.scaleMix = a.scaleMix, r.shearMix = a.shearMix
                            }
                            for (var s = this.pathConstraints, e = 0, n = s.length; e < n; e++) {
                                var r = s[e],
                                    a = r.data;
                                r.position = a.position, r.spacing = a.spacing, r.rotateMix = a.rotateMix, r.translateMix = a.translateMix
                            }
                        }, e.prototype.setSlotsToSetupPose = function() {
                            var e = this.slots;
                            t.Utils.arrayCopy(e, 0, this.drawOrder, 0, e.length);
                            for (var n = 0, i = e.length; n < i; n++) e[n].setToSetupPose()
                        }, e.prototype.getRootBone = function() {
                            return 0 == this.bones.length ? null : this.bones[0]
                        }, e.prototype.findBone = function(t) {
                            if (null == t) throw new Error("boneName cannot be null.");
                            for (var e = this.bones, n = 0, i = e.length; n < i; n++) {
                                var r = e[n];
                                if (r.data.name == t) return r
                            }
                            return null
                        }, e.prototype.findBoneIndex = function(t) {
                            if (null == t) throw new Error("boneName cannot be null.");
                            for (var e = this.bones, n = 0, i = e.length; n < i; n++)
                                if (e[n].data.name == t) return n;
                            return -1
                        }, e.prototype.findSlot = function(t) {
                            if (null == t) throw new Error("slotName cannot be null.");
                            for (var e = this.slots, n = 0, i = e.length; n < i; n++) {
                                var r = e[n];
                                if (r.data.name == t) return r
                            }
                            return null
                        }, e.prototype.findSlotIndex = function(t) {
                            if (null == t) throw new Error("slotName cannot be null.");
                            for (var e = this.slots, n = 0, i = e.length; n < i; n++)
                                if (e[n].data.name == t) return n;
                            return -1
                        }, e.prototype.setSkinByName = function(t) {
                            var e = this.data.findSkin(t);
                            if (null == e) throw new Error("Skin not found: " + t);
                            this.setSkin(e)
                        }, e.prototype.setSkin = function(t) {
                            if (null != t)
                                if (null != this.skin) t.attachAll(this, this.skin);
                                else
                                    for (var e = this.slots, n = 0, i = e.length; n < i; n++) {
                                        var r = e[n],
                                            o = r.data.attachmentName;
                                        if (null != o) {
                                            var a = t.getAttachment(n, o);
                                            null != a && r.setAttachment(a)
                                        }
                                    }
                            this.skin = t
                        }, e.prototype.getAttachmentByName = function(t, e) {
                            return this.getAttachment(this.data.findSlotIndex(t), e)
                        }, e.prototype.getAttachment = function(t, e) {
                            if (null == e) throw new Error("attachmentName cannot be null.");
                            if (null != this.skin) {
                                var n = this.skin.getAttachment(t, e);
                                if (null != n) return n
                            }
                            return null != this.data.defaultSkin ? this.data.defaultSkin.getAttachment(t, e) : null
                        }, e.prototype.setAttachment = function(t, e) {
                            if (null == t) throw new Error("slotName cannot be null.");
                            for (var n = this.slots, i = 0, r = n.length; i < r; i++) {
                                var o = n[i];
                                if (o.data.name == t) {
                                    var a = null;
                                    if (null != e && null == (a = this.getAttachment(i, e))) throw new Error("Attachment not found: " + e + ", for slot: " + t);
                                    return void o.setAttachment(a)
                                }
                            }
                            throw new Error("Slot not found: " + t)
                        }, e.prototype.findIkConstraint = function(t) {
                            if (null == t) throw new Error("constraintName cannot be null.");
                            for (var e = this.ikConstraints, n = 0, i = e.length; n < i; n++) {
                                var r = e[n];
                                if (r.data.name == t) return r
                            }
                            return null
                        }, e.prototype.findTransformConstraint = function(t) {
                            if (null == t) throw new Error("constraintName cannot be null.");
                            for (var e = this.transformConstraints, n = 0, i = e.length; n < i; n++) {
                                var r = e[n];
                                if (r.data.name == t) return r
                            }
                            return null
                        }, e.prototype.findPathConstraint = function(t) {
                            if (null == t) throw new Error("constraintName cannot be null.");
                            for (var e = this.pathConstraints, n = 0, i = e.length; n < i; n++) {
                                var r = e[n];
                                if (r.data.name == t) return r
                            }
                            return null
                        }, e.prototype.getBounds = function(e, n, i) {
                            if (null == e) throw new Error("offset cannot be null.");
                            if (null == n) throw new Error("size cannot be null.");
                            for (var r = this.drawOrder, o = Number.POSITIVE_INFINITY, a = Number.POSITIVE_INFINITY, s = Number.NEGATIVE_INFINITY, l = Number.NEGATIVE_INFINITY, u = 0, c = r.length; u < c; u++) {
                                var h = r[u],
                                    p = 0,
                                    f = null,
                                    d = h.getAttachment();
                                if (d instanceof t.RegionAttachment) p = 8, f = t.Utils.setArraySize(i, p, 0), d.computeWorldVertices(h.bone, f, 0, 2);
                                else if (d instanceof t.MeshAttachment) {
                                    var m = d;
                                    p = m.worldVerticesLength, f = t.Utils.setArraySize(i, p, 0), m.computeWorldVertices(h, 0, p, f, 0, 2)
                                }
                                if (null != f)
                                    for (var g = 0, _ = f.length; g < _; g += 2) {
                                        var y = f[g],
                                            v = f[g + 1];
                                        o = Math.min(o, y), a = Math.min(a, v), s = Math.max(s, y), l = Math.max(l, v)
                                    }
                            }
                            e.set(o, a), n.set(s - o, l - a)
                        }, e.prototype.update = function(t) {
                            this.time += t
                        }, e
                    }();
                    t.Skeleton = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function e() {
                            this.minX = 0, this.minY = 0, this.maxX = 0, this.maxY = 0, this.boundingBoxes = new Array, this.polygons = new Array, this.polygonPool = new t.Pool(function() {
                                return t.Utils.newFloatArray(16)
                            })
                        }
                        return e.prototype.update = function(e, n) {
                            if (null == e) throw new Error("skeleton cannot be null.");
                            var i = this.boundingBoxes,
                                r = this.polygons,
                                o = this.polygonPool,
                                a = e.slots,
                                s = a.length;
                            i.length = 0, o.freeAll(r), r.length = 0;
                            for (var l = 0; l < s; l++) {
                                var u = a[l],
                                    c = u.getAttachment();
                                if (c instanceof t.BoundingBoxAttachment) {
                                    var h = c;
                                    i.push(h);
                                    var p = o.obtain();
                                    p.length != h.worldVerticesLength && (p = t.Utils.newFloatArray(h.worldVerticesLength)), r.push(p), h.computeWorldVertices(u, 0, h.worldVerticesLength, p, 0, 2)
                                }
                            }
                            n ? this.aabbCompute() : (this.minX = Number.POSITIVE_INFINITY, this.minY = Number.POSITIVE_INFINITY, this.maxX = Number.NEGATIVE_INFINITY, this.maxY = Number.NEGATIVE_INFINITY)
                        }, e.prototype.aabbCompute = function() {
                            for (var t = Number.POSITIVE_INFINITY, e = Number.POSITIVE_INFINITY, n = Number.NEGATIVE_INFINITY, i = Number.NEGATIVE_INFINITY, r = this.polygons, o = 0, a = r.length; o < a; o++)
                                for (var s = r[o], l = s, u = 0, c = s.length; u < c; u += 2) {
                                    var h = l[u],
                                        p = l[u + 1];
                                    t = Math.min(t, h), e = Math.min(e, p), n = Math.max(n, h), i = Math.max(i, p)
                                }
                            this.minX = t, this.minY = e, this.maxX = n, this.maxY = i
                        }, e.prototype.aabbContainsPoint = function(t, e) {
                            return t >= this.minX && t <= this.maxX && e >= this.minY && e <= this.maxY
                        }, e.prototype.aabbIntersectsSegment = function(t, e, n, i) {
                            var r = this.minX,
                                o = this.minY,
                                a = this.maxX,
                                s = this.maxY;
                            if (t <= r && n <= r || e <= o && i <= o || t >= a && n >= a || e >= s && i >= s) return !1;
                            var l = (i - e) / (n - t),
                                u = l * (r - t) + e;
                            if (u > o && u < s) return !0;
                            if ((u = l * (a - t) + e) > o && u < s) return !0;
                            var c = (o - e) / l + t;
                            return c > r && c < a || (c = (s - e) / l + t) > r && c < a
                        }, e.prototype.aabbIntersectsSkeleton = function(t) {
                            return this.minX < t.maxX && this.maxX > t.minX && this.minY < t.maxY && this.maxY > t.minY
                        }, e.prototype.containsPoint = function(t, e) {
                            for (var n = this.polygons, i = 0, r = n.length; i < r; i++)
                                if (this.containsPointPolygon(n[i], t, e)) return this.boundingBoxes[i];
                            return null
                        }, e.prototype.containsPointPolygon = function(t, e, n) {
                            for (var i = t, r = t.length, o = r - 2, a = !1, s = 0; s < r; s += 2) {
                                var l = i[s + 1],
                                    u = i[o + 1];
                                if (l < n && u >= n || u < n && l >= n) {
                                    var c = i[s];
                                    c + (n - l) / (u - l) * (i[o] - c) < e && (a = !a)
                                }
                                o = s
                            }
                            return a
                        }, e.prototype.intersectsSegment = function(t, e, n, i) {
                            for (var r = this.polygons, o = 0, a = r.length; o < a; o++)
                                if (this.intersectsSegmentPolygon(r[o], t, e, n, i)) return this.boundingBoxes[o];
                            return null
                        }, e.prototype.intersectsSegmentPolygon = function(t, e, n, i, r) {
                            for (var o = t, a = t.length, s = e - i, l = n - r, u = e * r - n * i, c = o[a - 2], h = o[a - 1], p = 0; p < a; p += 2) {
                                var f = o[p],
                                    d = o[p + 1],
                                    m = c * d - h * f,
                                    g = c - f,
                                    _ = h - d,
                                    y = s * _ - l * g,
                                    v = (u * g - s * m) / y;
                                if ((v >= c && v <= f || v >= f && v <= c) && (v >= e && v <= i || v >= i && v <= e)) {
                                    var b = (u * _ - l * m) / y;
                                    if ((b >= h && b <= d || b >= d && b <= h) && (b >= n && b <= r || b >= r && b <= n)) return !0
                                }
                                c = f, h = d
                            }
                            return !1
                        }, e.prototype.getPolygon = function(t) {
                            if (null == t) throw new Error("boundingBox cannot be null.");
                            var e = this.boundingBoxes.indexOf(t);
                            return -1 == e ? null : this.polygons[e]
                        }, e.prototype.getWidth = function() {
                            return this.maxX - this.minX
                        }, e.prototype.getHeight = function() {
                            return this.maxY - this.minY
                        }, e
                    }();
                    t.SkeletonBounds = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function e() {
                            this.triangulator = new t.Triangulator, this.clippingPolygon = new Array, this.clipOutput = new Array, this.clippedVertices = new Array, this.clippedTriangles = new Array, this.scratch = new Array
                        }
                        return e.prototype.clipStart = function(n, i) {
                            if (null != this.clipAttachment) return 0;
                            this.clipAttachment = i;
                            var r = i.worldVerticesLength,
                                o = t.Utils.setArraySize(this.clippingPolygon, r);
                            i.computeWorldVertices(n, 0, r, o, 0, 2);
                            var a = this.clippingPolygon;
                            e.makeClockwise(a);
                            for (var s = this.clippingPolygons = this.triangulator.decompose(a, this.triangulator.triangulate(a)), l = 0, u = s.length; l < u; l++) {
                                var c = s[l];
                                e.makeClockwise(c), c.push(c[0]), c.push(c[1])
                            }
                            return s.length
                        }, e.prototype.clipEndWithSlot = function(t) {
                            null != this.clipAttachment && this.clipAttachment.endSlot == t.data && this.clipEnd()
                        }, e.prototype.clipEnd = function() {
                            null != this.clipAttachment && (this.clipAttachment = null, this.clippingPolygons = null, this.clippedVertices.length = 0, this.clippedTriangles.length = 0, this.clippingPolygon.length = 0)
                        }, e.prototype.isClipping = function() {
                            return null != this.clipAttachment
                        }, e.prototype.clipTriangles = function(e, n, i, r, o, a, s, l) {
                            var u = this.clipOutput,
                                c = this.clippedVertices,
                                h = this.clippedTriangles,
                                p = this.clippingPolygons,
                                f = this.clippingPolygons.length,
                                d = l ? 12 : 8,
                                m = 0;
                            c.length = 0, h.length = 0;
                            t: for (var g = 0; g < r; g += 3) {
                                var _ = i[g] << 1,
                                    y = e[_],
                                    v = e[_ + 1],
                                    b = o[_],
                                    x = o[_ + 1];
                                _ = i[g + 1] << 1;
                                var T = e[_],
                                    w = e[_ + 1],
                                    S = o[_],
                                    P = o[_ + 1];
                                _ = i[g + 2] << 1;
                                for (var M = e[_], C = e[_ + 1], E = o[_], O = o[_ + 1], I = 0; I < f; I++) {
                                    var R = c.length;
                                    if (!this.clip(y, v, T, w, M, C, p[I], u)) {
                                        var A = t.Utils.setArraySize(c, R + 3 * d);
                                        A[R] = y, A[R + 1] = v, A[R + 2] = a.r, A[R + 3] = a.g, A[R + 4] = a.b, A[R + 5] = a.a, l ? (A[R + 6] = b, A[R + 7] = x, A[R + 8] = s.r, A[R + 9] = s.g, A[R + 10] = s.b, A[R + 11] = s.a, A[R + 12] = T, A[R + 13] = w, A[R + 14] = a.r, A[R + 15] = a.g, A[R + 16] = a.b, A[R + 17] = a.a, A[R + 18] = S, A[R + 19] = P, A[R + 20] = s.r, A[R + 21] = s.g, A[R + 22] = s.b, A[R + 23] = s.a, A[R + 24] = M, A[R + 25] = C, A[R + 26] = a.r, A[R + 27] = a.g, A[R + 28] = a.b, A[R + 29] = a.a, A[R + 30] = E, A[R + 31] = O, A[R + 32] = s.r, A[R + 33] = s.g, A[R + 34] = s.b, A[R + 35] = s.a) : (A[R + 6] = b, A[R + 7] = x, A[R + 8] = T, A[R + 9] = w, A[R + 10] = a.r, A[R + 11] = a.g, A[R + 12] = a.b, A[R + 13] = a.a, A[R + 14] = S, A[R + 15] = P, A[R + 16] = M, A[R + 17] = C, A[R + 18] = a.r, A[R + 19] = a.g, A[R + 20] = a.b, A[R + 21] = a.a, A[R + 22] = E, A[R + 23] = O), R = h.length;
                                        var k = t.Utils.setArraySize(h, R + 3);
                                        k[R] = m, k[R + 1] = m + 1, k[R + 2] = m + 2, m += 3;
                                        continue t
                                    }
                                    var L = u.length;
                                    if (0 != L) {
                                        for (var D = w - C, B = M - T, N = y - M, F = C - v, G = 1 / (D * N + B * (v - C)), U = L >> 1, j = this.clipOutput, A = t.Utils.setArraySize(c, R + U * d), W = 0; W < L; W += 2) {
                                            var X = j[W],
                                                V = j[W + 1];
                                            A[R] = X, A[R + 1] = V, A[R + 2] = a.r, A[R + 3] = a.g, A[R + 4] = a.b, A[R + 5] = a.a;
                                            var H = X - M,
                                                z = V - C,
                                                Y = (D * H + B * z) * G,
                                                q = (F * H + N * z) * G,
                                                J = 1 - Y - q;
                                            A[R + 6] = b * Y + S * q + E * J, A[R + 7] = x * Y + P * q + O * J, l && (A[R + 8] = s.r, A[R + 9] = s.g, A[R + 10] = s.b, A[R + 11] = s.a), R += d
                                        }
                                        R = h.length;
                                        var k = t.Utils.setArraySize(h, R + 3 * (U - 2));
                                        U--;
                                        for (var W = 1; W < U; W++) k[R] = m, k[R + 1] = m + W, k[R + 2] = m + W + 1, R += 3;
                                        m += U + 1
                                    }
                                }
                            }
                        }, e.prototype.clip = function(t, e, n, i, r, o, a, s) {
                            var l = s,
                                u = !1,
                                c = null;
                            a.length % 4 >= 2 ? (c = s, s = this.scratch) : c = this.scratch, c.length = 0, c.push(t), c.push(e), c.push(n), c.push(i), c.push(r), c.push(o), c.push(t), c.push(e), s.length = 0;
                            for (var h = a, p = a.length - 4, f = 0;; f += 2) {
                                for (var d = h[f], m = h[f + 1], g = h[f + 2], _ = h[f + 3], y = d - g, v = m - _, b = c, x = c.length - 2, T = s.length, w = 0; w < x; w += 2) {
                                    var S = b[w],
                                        P = b[w + 1],
                                        M = b[w + 2],
                                        C = b[w + 3],
                                        E = y * (C - _) - v * (M - g) > 0;
                                    if (y * (P - _) - v * (S - g) > 0) {
                                        if (E) {
                                            s.push(M), s.push(C);
                                            continue
                                        }
                                        var O = C - P,
                                            I = M - S,
                                            R = (I * (m - P) - O * (d - S)) / (O * (g - d) - I * (_ - m));
                                        s.push(d + (g - d) * R), s.push(m + (_ - m) * R)
                                    } else if (E) {
                                        var O = C - P,
                                            I = M - S,
                                            R = (I * (m - P) - O * (d - S)) / (O * (g - d) - I * (_ - m));
                                        s.push(d + (g - d) * R), s.push(m + (_ - m) * R), s.push(M), s.push(C)
                                    }
                                    u = !0
                                }
                                if (T == s.length) return l.length = 0, !0;
                                if (s.push(s[0]), s.push(s[1]), f == p) break;
                                var A = s;
                                s = c, s.length = 0, c = A
                            }
                            if (l != s) {
                                l.length = 0;
                                for (var f = 0, k = s.length - 2; f < k; f++) l[f] = s[f]
                            } else l.length = l.length - 2;
                            return u
                        }, e.makeClockwise = function(t) {
                            for (var e = t, n = t.length, i = e[n - 2] * e[1] - e[0] * e[n - 1], r = 0, o = 0, a = 0, s = 0, l = 0, u = n - 3; l < u; l += 2) r = e[l], o = e[l + 1], a = e[l + 2], s = e[l + 3], i += r * s - a * o;
                            if (!(i < 0))
                                for (var l = 0, c = n - 2, u = n >> 1; l < u; l += 2) {
                                    var h = e[l],
                                        p = e[l + 1],
                                        f = c - l;
                                    e[l] = e[f], e[l + 1] = e[f + 1], e[f] = h, e[f + 1] = p
                                }
                        }, e
                    }();
                    t.SkeletonClipping = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function t() {
                            this.bones = new Array, this.slots = new Array, this.skins = new Array, this.events = new Array, this.animations = new Array, this.ikConstraints = new Array, this.transformConstraints = new Array, this.pathConstraints = new Array, this.fps = 0
                        }
                        return t.prototype.findBone = function(t) {
                            if (null == t) throw new Error("boneName cannot be null.");
                            for (var e = this.bones, n = 0, i = e.length; n < i; n++) {
                                var r = e[n];
                                if (r.name == t) return r
                            }
                            return null
                        }, t.prototype.findBoneIndex = function(t) {
                            if (null == t) throw new Error("boneName cannot be null.");
                            for (var e = this.bones, n = 0, i = e.length; n < i; n++)
                                if (e[n].name == t) return n;
                            return -1
                        }, t.prototype.findSlot = function(t) {
                            if (null == t) throw new Error("slotName cannot be null.");
                            for (var e = this.slots, n = 0, i = e.length; n < i; n++) {
                                var r = e[n];
                                if (r.name == t) return r
                            }
                            return null
                        }, t.prototype.findSlotIndex = function(t) {
                            if (null == t) throw new Error("slotName cannot be null.");
                            for (var e = this.slots, n = 0, i = e.length; n < i; n++)
                                if (e[n].name == t) return n;
                            return -1
                        }, t.prototype.findSkin = function(t) {
                            if (null == t) throw new Error("skinName cannot be null.");
                            for (var e = this.skins, n = 0, i = e.length; n < i; n++) {
                                var r = e[n];
                                if (r.name == t) return r
                            }
                            return null
                        }, t.prototype.findEvent = function(t) {
                            if (null == t) throw new Error("eventDataName cannot be null.");
                            for (var e = this.events, n = 0, i = e.length; n < i; n++) {
                                var r = e[n];
                                if (r.name == t) return r
                            }
                            return null
                        }, t.prototype.findAnimation = function(t) {
                            if (null == t) throw new Error("animationName cannot be null.");
                            for (var e = this.animations, n = 0, i = e.length; n < i; n++) {
                                var r = e[n];
                                if (r.name == t) return r
                            }
                            return null
                        }, t.prototype.findIkConstraint = function(t) {
                            if (null == t) throw new Error("constraintName cannot be null.");
                            for (var e = this.ikConstraints, n = 0, i = e.length; n < i; n++) {
                                var r = e[n];
                                if (r.name == t) return r
                            }
                            return null
                        }, t.prototype.findTransformConstraint = function(t) {
                            if (null == t) throw new Error("constraintName cannot be null.");
                            for (var e = this.transformConstraints, n = 0, i = e.length; n < i; n++) {
                                var r = e[n];
                                if (r.name == t) return r
                            }
                            return null
                        }, t.prototype.findPathConstraint = function(t) {
                            if (null == t) throw new Error("constraintName cannot be null.");
                            for (var e = this.pathConstraints, n = 0, i = e.length; n < i; n++) {
                                var r = e[n];
                                if (r.name == t) return r
                            }
                            return null
                        }, t.prototype.findPathConstraintIndex = function(t) {
                            if (null == t) throw new Error("pathConstraintName cannot be null.");
                            for (var e = this.pathConstraints, n = 0, i = e.length; n < i; n++)
                                if (e[n].name == t) return n;
                            return -1
                        }, t
                    }();
                    t.SkeletonData = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function e(t) {
                            this.scale = 1, this.linkedMeshes = new Array, this.attachmentLoader = t
                        }
                        return e.prototype.readSkeletonData = function(n) {
                            var i = this.scale,
                                r = new t.SkeletonData,
                                o = "string" == typeof n ? JSON.parse(n) : n,
                                a = o.skeleton;
                            if (null != a && (r.hash = a.hash, r.version = a.spine, r.width = a.width, r.height = a.height, r.fps = a.fps, r.imagesPath = a.images), o.bones)
                                for (var s = 0; s < o.bones.length; s++) {
                                    var l = o.bones[s],
                                        u = null,
                                        c = this.getValue(l, "parent", null);
                                    if (null != c && null == (u = r.findBone(c))) throw new Error("Parent bone not found: " + c);
                                    var h = new t.BoneData(r.bones.length, l.name, u);
                                    h.length = this.getValue(l, "length", 0) * i, h.x = this.getValue(l, "x", 0) * i, h.y = this.getValue(l, "y", 0) * i, h.rotation = this.getValue(l, "rotation", 0), h.scaleX = this.getValue(l, "scaleX", 1), h.scaleY = this.getValue(l, "scaleY", 1), h.shearX = this.getValue(l, "shearX", 0), h.shearY = this.getValue(l, "shearY", 0), h.transformMode = e.transformModeFromString(this.getValue(l, "transform", "normal")), r.bones.push(h)
                                }
                            if (o.slots)
                                for (var s = 0; s < o.slots.length; s++) {
                                    var p = o.slots[s],
                                        f = p.name,
                                        d = p.bone,
                                        m = r.findBone(d);
                                    if (null == m) throw new Error("Slot bone not found: " + d);
                                    var h = new t.SlotData(r.slots.length, f, m),
                                        g = this.getValue(p, "color", null);
                                    null != g && h.color.setFromString(g);
                                    var _ = this.getValue(p, "dark", null);
                                    null != _ && (h.darkColor = new t.Color(1, 1, 1, 1), h.darkColor.setFromString(_)), h.attachmentName = this.getValue(p, "attachment", null), h.blendMode = e.blendModeFromString(this.getValue(p, "blend", "normal")), r.slots.push(h)
                                }
                            if (o.ik)
                                for (var s = 0; s < o.ik.length; s++) {
                                    var y = o.ik[s],
                                        h = new t.IkConstraintData(y.name);
                                    h.order = this.getValue(y, "order", 0);
                                    for (var v = 0; v < y.bones.length; v++) {
                                        var d = y.bones[v],
                                            b = r.findBone(d);
                                        if (null == b) throw new Error("IK bone not found: " + d);
                                        h.bones.push(b)
                                    }
                                    var x = y.target;
                                    if (h.target = r.findBone(x), null == h.target) throw new Error("IK target bone not found: " + x);
                                    h.bendDirection = this.getValue(y, "bendPositive", !0) ? 1 : -1, h.mix = this.getValue(y, "mix", 1), r.ikConstraints.push(h)
                                }
                            if (o.transform)
                                for (var s = 0; s < o.transform.length; s++) {
                                    var y = o.transform[s],
                                        h = new t.TransformConstraintData(y.name);
                                    h.order = this.getValue(y, "order", 0);
                                    for (var v = 0; v < y.bones.length; v++) {
                                        var d = y.bones[v],
                                            b = r.findBone(d);
                                        if (null == b) throw new Error("Transform constraint bone not found: " + d);
                                        h.bones.push(b)
                                    }
                                    var x = y.target;
                                    if (h.target = r.findBone(x), null == h.target) throw new Error("Transform constraint target bone not found: " + x);
                                    h.local = this.getValue(y, "local", !1), h.relative = this.getValue(y, "relative", !1), h.offsetRotation = this.getValue(y, "rotation", 0), h.offsetX = this.getValue(y, "x", 0) * i, h.offsetY = this.getValue(y, "y", 0) * i, h.offsetScaleX = this.getValue(y, "scaleX", 0), h.offsetScaleY = this.getValue(y, "scaleY", 0), h.offsetShearY = this.getValue(y, "shearY", 0), h.rotateMix = this.getValue(y, "rotateMix", 1), h.translateMix = this.getValue(y, "translateMix", 1), h.scaleMix = this.getValue(y, "scaleMix", 1), h.shearMix = this.getValue(y, "shearMix", 1), r.transformConstraints.push(h)
                                }
                            if (o.path)
                                for (var s = 0; s < o.path.length; s++) {
                                    var y = o.path[s],
                                        h = new t.PathConstraintData(y.name);
                                    h.order = this.getValue(y, "order", 0);
                                    for (var v = 0; v < y.bones.length; v++) {
                                        var d = y.bones[v],
                                            b = r.findBone(d);
                                        if (null == b) throw new Error("Transform constraint bone not found: " + d);
                                        h.bones.push(b)
                                    }
                                    var x = y.target;
                                    if (h.target = r.findSlot(x), null == h.target) throw new Error("Path target slot not found: " + x);
                                    h.positionMode = e.positionModeFromString(this.getValue(y, "positionMode", "percent")), h.spacingMode = e.spacingModeFromString(this.getValue(y, "spacingMode", "length")), h.rotateMode = e.rotateModeFromString(this.getValue(y, "rotateMode", "tangent")), h.offsetRotation = this.getValue(y, "rotation", 0), h.position = this.getValue(y, "position", 0), h.positionMode == t.PositionMode.Fixed && (h.position *= i), h.spacing = this.getValue(y, "spacing", 0), h.spacingMode != t.SpacingMode.Length && h.spacingMode != t.SpacingMode.Fixed || (h.spacing *= i), h.rotateMix = this.getValue(y, "rotateMix", 1), h.translateMix = this.getValue(y, "translateMix", 1), r.pathConstraints.push(h)
                                }
                            if (o.skins)
                                for (var T in o.skins) {
                                    var w = o.skins[T],
                                        S = new t.Skin(T);
                                    for (var f in w) {
                                        var P = r.findSlotIndex(f);
                                        if (-1 == P) throw new Error("Slot not found: " + f);
                                        var p = w[f];
                                        for (var M in p) {
                                            var C = this.readAttachment(p[M], S, P, M, r);
                                            null != C && S.addAttachment(P, M, C)
                                        }
                                    }
                                    r.skins.push(S), "default" == S.name && (r.defaultSkin = S)
                                }
                            for (var s = 0, E = this.linkedMeshes.length; s < E; s++) {
                                var O = this.linkedMeshes[s],
                                    S = null == O.skin ? r.defaultSkin : r.findSkin(O.skin);
                                if (null == S) throw new Error("Skin not found: " + O.skin);
                                var I = S.getAttachment(O.slotIndex, O.parent);
                                if (null == I) throw new Error("Parent mesh not found: " + O.parent);
                                O.mesh.setParentMesh(I)
                            }
                            if (this.linkedMeshes.length = 0, o.events)
                                for (var R in o.events) {
                                    var A = o.events[R],
                                        h = new t.EventData(R);
                                    h.intValue = this.getValue(A, "int", 0), h.floatValue = this.getValue(A, "float", 0), h.stringValue = this.getValue(A, "string", ""), h.audio = this.getValue(A, "audio", null), r.events.push(h)
                                }
                            if (o.animations)
                                for (var k in o.animations) {
                                    var L = o.animations[k];
                                    this.readAnimation(L, k, r)
                                }
                            return r
                        }, e.prototype.readAttachment = function(e, i, r, o, a) {
                            var s = this.scale;
                            switch (o = this.getValue(e, "name", o), this.getValue(e, "type", "region")) {
                                case "region":
                                    var l = this.getValue(e, "path", o),
                                        u = this.attachmentLoader.newRegionAttachment(i, o, l);
                                    if (null == u) return null;
                                    u.path = l, u.x = this.getValue(e, "x", 0) * s, u.y = this.getValue(e, "y", 0) * s, u.scaleX = this.getValue(e, "scaleX", 1), u.scaleY = this.getValue(e, "scaleY", 1), u.rotation = this.getValue(e, "rotation", 0), u.width = e.width * s, u.height = e.height * s;
                                    var c = this.getValue(e, "color", null);
                                    return null != c && u.color.setFromString(c), u;
                                case "boundingbox":
                                    var h = this.attachmentLoader.newBoundingBoxAttachment(i, o);
                                    if (null == h) return null;
                                    this.readVertices(e, h, e.vertexCount << 1);
                                    var c = this.getValue(e, "color", null);
                                    return null != c && h.color.setFromString(c), h;
                                case "mesh":
                                case "linkedmesh":
                                    var l = this.getValue(e, "path", o),
                                        p = this.attachmentLoader.newMeshAttachment(i, o, l);
                                    if (null == p) return null;
                                    p.path = l;
                                    var c = this.getValue(e, "color", null);
                                    null != c && p.color.setFromString(c);
                                    var f = this.getValue(e, "parent", null);
                                    if (null != f) return p.inheritDeform = this.getValue(e, "deform", !0), this.linkedMeshes.push(new n(p, this.getValue(e, "skin", null), r, f)), p;
                                    var d = e.uvs;
                                    return this.readVertices(e, p, d.length), p.triangles = e.triangles, p.regionUVs = d, p.hullLength = 2 * this.getValue(e, "hull", 0), p;
                                case "path":
                                    var l = this.attachmentLoader.newPathAttachment(i, o);
                                    if (null == l) return null;
                                    l.closed = this.getValue(e, "closed", !1), l.constantSpeed = this.getValue(e, "constantSpeed", !0);
                                    var m = e.vertexCount;
                                    this.readVertices(e, l, m << 1);
                                    for (var g = t.Utils.newArray(m / 3, 0), _ = 0; _ < e.lengths.length; _++) g[_] = e.lengths[_] * s;
                                    l.lengths = g;
                                    var c = this.getValue(e, "color", null);
                                    return null != c && l.color.setFromString(c), l;
                                case "point":
                                    var y = this.attachmentLoader.newPointAttachment(i, o);
                                    if (null == y) return null;
                                    y.x = this.getValue(e, "x", 0) * s, y.y = this.getValue(e, "y", 0) * s, y.rotation = this.getValue(e, "rotation", 0);
                                    var c = this.getValue(e, "color", null);
                                    return null != c && y.color.setFromString(c), y;
                                case "clipping":
                                    var v = this.attachmentLoader.newClippingAttachment(i, o);
                                    if (null == v) return null;
                                    var b = this.getValue(e, "end", null);
                                    if (null != b) {
                                        var x = a.findSlot(b);
                                        if (null == x) throw new Error("Clipping end slot not found: " + b);
                                        v.endSlot = x
                                    }
                                    var m = e.vertexCount;
                                    this.readVertices(e, v, m << 1);
                                    var c = this.getValue(e, "color", null);
                                    return null != c && v.color.setFromString(c), v
                            }
                            return null
                        }, e.prototype.readVertices = function(e, n, i) {
                            var r = this.scale;
                            n.worldVerticesLength = i;
                            var o = e.vertices;
                            if (i == o.length) {
                                var a = t.Utils.toFloatArray(o);
                                if (1 != r)
                                    for (var s = 0, l = o.length; s < l; s++) a[s] *= r;
                                return void(n.vertices = a)
                            }
                            for (var u = new Array, c = new Array, s = 0, l = o.length; s < l;) {
                                var h = o[s++];
                                c.push(h);
                                for (var p = s + 4 * h; s < p; s += 4) c.push(o[s]), u.push(o[s + 1] * r), u.push(o[s + 2] * r), u.push(o[s + 3])
                            }
                            n.bones = c, n.vertices = t.Utils.toFloatArray(u)
                        }, e.prototype.readAnimation = function(e, n, i) {
                            var r = this.scale,
                                o = new Array,
                                a = 0;
                            if (e.slots)
                                for (var s in e.slots) {
                                    var l = e.slots[s],
                                        u = i.findSlotIndex(s);
                                    if (-1 == u) throw new Error("Slot not found: " + s);
                                    for (var c in l) {
                                        var h = l[c];
                                        if ("attachment" == c) {
                                            var p = new t.AttachmentTimeline(h.length);
                                            p.slotIndex = u;
                                            for (var f = 0, d = 0; d < h.length; d++) {
                                                var m = h[d];
                                                p.setFrame(f++, m.time, m.name)
                                            }
                                            o.push(p), a = Math.max(a, p.frames[p.getFrameCount() - 1])
                                        } else if ("color" == c) {
                                            var p = new t.ColorTimeline(h.length);
                                            p.slotIndex = u;
                                            for (var f = 0, d = 0; d < h.length; d++) {
                                                var m = h[d],
                                                    g = new t.Color;
                                                g.setFromString(m.color || "ffffffff"), p.setFrame(f, m.time, g.r, g.g, g.b, g.a), this.readCurve(m, p, f), f++
                                            }
                                            o.push(p), a = Math.max(a, p.frames[(p.getFrameCount() - 1) * t.ColorTimeline.ENTRIES])
                                        } else {
                                            if ("twoColor" != c) throw new Error("Invalid timeline type for a slot: " + c + " (" + s + ")");
                                            var p = new t.TwoColorTimeline(h.length);
                                            p.slotIndex = u;
                                            for (var f = 0, d = 0; d < h.length; d++) {
                                                var m = h[d],
                                                    _ = new t.Color,
                                                    y = new t.Color;
                                                _.setFromString(m.light), y.setFromString(m.dark), p.setFrame(f, m.time, _.r, _.g, _.b, _.a, y.r, y.g, y.b), this.readCurve(m, p, f), f++
                                            }
                                            o.push(p), a = Math.max(a, p.frames[(p.getFrameCount() - 1) * t.TwoColorTimeline.ENTRIES])
                                        }
                                    }
                                }
                            if (e.bones)
                                for (var v in e.bones) {
                                    var b = e.bones[v],
                                        x = i.findBoneIndex(v);
                                    if (-1 == x) throw new Error("Bone not found: " + v);
                                    for (var c in b) {
                                        var h = b[c];
                                        if ("rotate" === c) {
                                            var p = new t.RotateTimeline(h.length);
                                            p.boneIndex = x;
                                            for (var f = 0, d = 0; d < h.length; d++) {
                                                var m = h[d];
                                                p.setFrame(f, m.time, m.angle), this.readCurve(m, p, f), f++
                                            }
                                            o.push(p), a = Math.max(a, p.frames[(p.getFrameCount() - 1) * t.RotateTimeline.ENTRIES])
                                        } else {
                                            if ("translate" !== c && "scale" !== c && "shear" !== c) throw new Error("Invalid timeline type for a bone: " + c + " (" + v + ")");
                                            var p = null,
                                                T = 1;
                                            "scale" === c ? p = new t.ScaleTimeline(h.length) : "shear" === c ? p = new t.ShearTimeline(h.length) : (p = new t.TranslateTimeline(h.length), T = r), p.boneIndex = x;
                                            for (var f = 0, d = 0; d < h.length; d++) {
                                                var m = h[d],
                                                    w = this.getValue(m, "x", 0),
                                                    S = this.getValue(m, "y", 0);
                                                p.setFrame(f, m.time, w * T, S * T), this.readCurve(m, p, f), f++
                                            }
                                            o.push(p), a = Math.max(a, p.frames[(p.getFrameCount() - 1) * t.TranslateTimeline.ENTRIES])
                                        }
                                    }
                                }
                            if (e.ik)
                                for (var P in e.ik) {
                                    var M = e.ik[P],
                                        C = i.findIkConstraint(P),
                                        p = new t.IkConstraintTimeline(M.length);
                                    p.ikConstraintIndex = i.ikConstraints.indexOf(C);
                                    for (var f = 0, d = 0; d < M.length; d++) {
                                        var m = M[d];
                                        p.setFrame(f, m.time, this.getValue(m, "mix", 1), this.getValue(m, "bendPositive", !0) ? 1 : -1), this.readCurve(m, p, f), f++
                                    }
                                    o.push(p), a = Math.max(a, p.frames[(p.getFrameCount() - 1) * t.IkConstraintTimeline.ENTRIES])
                                }
                            if (e.transform)
                                for (var P in e.transform) {
                                    var M = e.transform[P],
                                        C = i.findTransformConstraint(P),
                                        p = new t.TransformConstraintTimeline(M.length);
                                    p.transformConstraintIndex = i.transformConstraints.indexOf(C);
                                    for (var f = 0, d = 0; d < M.length; d++) {
                                        var m = M[d];
                                        p.setFrame(f, m.time, this.getValue(m, "rotateMix", 1), this.getValue(m, "translateMix", 1), this.getValue(m, "scaleMix", 1), this.getValue(m, "shearMix", 1)), this.readCurve(m, p, f), f++
                                    }
                                    o.push(p), a = Math.max(a, p.frames[(p.getFrameCount() - 1) * t.TransformConstraintTimeline.ENTRIES])
                                }
                            if (e.paths)
                                for (var P in e.paths) {
                                    var M = e.paths[P],
                                        E = i.findPathConstraintIndex(P);
                                    if (-1 == E) throw new Error("Path constraint not found: " + P);
                                    var O = i.pathConstraints[E];
                                    for (var c in M) {
                                        var h = M[c];
                                        if ("position" === c || "spacing" === c) {
                                            var p = null,
                                                T = 1;
                                            "spacing" === c ? (p = new t.PathConstraintSpacingTimeline(h.length), O.spacingMode != t.SpacingMode.Length && O.spacingMode != t.SpacingMode.Fixed || (T = r)) : (p = new t.PathConstraintPositionTimeline(h.length), O.positionMode == t.PositionMode.Fixed && (T = r)), p.pathConstraintIndex = E;
                                            for (var f = 0, d = 0; d < h.length; d++) {
                                                var m = h[d];
                                                p.setFrame(f, m.time, this.getValue(m, c, 0) * T), this.readCurve(m, p, f), f++
                                            }
                                            o.push(p), a = Math.max(a, p.frames[(p.getFrameCount() - 1) * t.PathConstraintPositionTimeline.ENTRIES])
                                        } else if ("mix" === c) {
                                            var p = new t.PathConstraintMixTimeline(h.length);
                                            p.pathConstraintIndex = E;
                                            for (var f = 0, d = 0; d < h.length; d++) {
                                                var m = h[d];
                                                p.setFrame(f, m.time, this.getValue(m, "rotateMix", 1), this.getValue(m, "translateMix", 1)), this.readCurve(m, p, f), f++
                                            }
                                            o.push(p), a = Math.max(a, p.frames[(p.getFrameCount() - 1) * t.PathConstraintMixTimeline.ENTRIES])
                                        }
                                    }
                                }
                            if (e.deform)
                                for (var I in e.deform) {
                                    var R = e.deform[I],
                                        A = i.findSkin(I);
                                    if (null == A) throw new Error("Skin not found: " + I);
                                    for (var s in R) {
                                        var l = R[s],
                                            u = i.findSlotIndex(s);
                                        if (-1 == u) throw new Error("Slot not found: " + l.name);
                                        for (var c in l) {
                                            var h = l[c],
                                                k = A.getAttachment(u, c);
                                            if (null == k) throw new Error("Deform attachment not found: " + h.name);
                                            var L = null != k.bones,
                                                D = k.vertices,
                                                B = L ? D.length / 3 * 2 : D.length,
                                                p = new t.DeformTimeline(h.length);
                                            p.slotIndex = u, p.attachment = k;
                                            for (var f = 0, N = 0; N < h.length; N++) {
                                                var m = h[N],
                                                    F = void 0,
                                                    G = this.getValue(m, "vertices", null);
                                                if (null == G) F = L ? t.Utils.newFloatArray(B) : D;
                                                else {
                                                    F = t.Utils.newFloatArray(B);
                                                    var U = this.getValue(m, "offset", 0);
                                                    if (t.Utils.arrayCopy(G, 0, F, U, G.length), 1 != r)
                                                        for (var d = U, j = d + G.length; d < j; d++) F[d] *= r;
                                                    if (!L)
                                                        for (var d = 0; d < B; d++) F[d] += D[d]
                                                }
                                                p.setFrame(f, m.time, F), this.readCurve(m, p, f), f++
                                            }
                                            o.push(p), a = Math.max(a, p.frames[p.getFrameCount() - 1])
                                        }
                                    }
                                }
                            var W = e.drawOrder;
                            if (null == W && (W = e.draworder), null != W) {
                                for (var p = new t.DrawOrderTimeline(W.length), X = i.slots.length, f = 0, N = 0; N < W.length; N++) {
                                    var V = W[N],
                                        H = null,
                                        z = this.getValue(V, "offsets", null);
                                    if (null != z) {
                                        H = t.Utils.newArray(X, -1);
                                        for (var Y = t.Utils.newArray(X - z.length, 0), q = 0, J = 0, d = 0; d < z.length; d++) {
                                            var K = z[d],
                                                u = i.findSlotIndex(K.slot);
                                            if (-1 == u) throw new Error("Slot not found: " + K.slot);
                                            for (; q != u;) Y[J++] = q++;
                                            H[q + K.offset] = q++
                                        }
                                        for (; q < X;) Y[J++] = q++;
                                        for (var d = X - 1; d >= 0; d--) - 1 == H[d] && (H[d] = Y[--J])
                                    }
                                    p.setFrame(f++, V.time, H)
                                }
                                o.push(p), a = Math.max(a, p.frames[p.getFrameCount() - 1])
                            }
                            if (e.events) {
                                for (var p = new t.EventTimeline(e.events.length), f = 0, d = 0; d < e.events.length; d++) {
                                    var $ = e.events[d],
                                        Z = i.findEvent($.name);
                                    if (null == Z) throw new Error("Event not found: " + $.name);
                                    var Q = new t.Event(t.Utils.toSinglePrecision($.time), Z);
                                    Q.intValue = this.getValue($, "int", Z.intValue), Q.floatValue = this.getValue($, "float", Z.floatValue), Q.stringValue = this.getValue($, "string", Z.stringValue), p.setFrame(f++, Q)
                                }
                                o.push(p), a = Math.max(a, p.frames[p.getFrameCount() - 1])
                            }
                            if (isNaN(a)) throw new Error("Error while parsing animation, duration is NaN");
                            i.animations.push(new t.Animation(n, o, a))
                        }, e.prototype.readCurve = function(t, e, n) {
                            if (t.curve)
                                if ("stepped" === t.curve) e.setStepped(n);
                                else if ("[object Array]" === Object.prototype.toString.call(t.curve)) {
                                var i = t.curve;
                                e.setCurve(n, i[0], i[1], i[2], i[3])
                            }
                        }, e.prototype.getValue = function(t, e, n) {
                            return void 0 !== t[e] ? t[e] : n
                        }, e.blendModeFromString = function(e) {
                            if ("normal" == (e = e.toLowerCase())) return t.BlendMode.Normal;
                            if ("additive" == e) return t.BlendMode.Additive;
                            if ("multiply" == e) return t.BlendMode.Multiply;
                            if ("screen" == e) return t.BlendMode.Screen;
                            throw new Error("Unknown blend mode: " + e)
                        }, e.positionModeFromString = function(e) {
                            if ("fixed" == (e = e.toLowerCase())) return t.PositionMode.Fixed;
                            if ("percent" == e) return t.PositionMode.Percent;
                            throw new Error("Unknown position mode: " + e)
                        }, e.spacingModeFromString = function(e) {
                            if ("length" == (e = e.toLowerCase())) return t.SpacingMode.Length;
                            if ("fixed" == e) return t.SpacingMode.Fixed;
                            if ("percent" == e) return t.SpacingMode.Percent;
                            throw new Error("Unknown position mode: " + e)
                        }, e.rotateModeFromString = function(e) {
                            if ("tangent" == (e = e.toLowerCase())) return t.RotateMode.Tangent;
                            if ("chain" == e) return t.RotateMode.Chain;
                            if ("chainscale" == e) return t.RotateMode.ChainScale;
                            throw new Error("Unknown rotate mode: " + e)
                        }, e.transformModeFromString = function(e) {
                            if ("normal" == (e = e.toLowerCase())) return t.TransformMode.Normal;
                            if ("onlytranslation" == e) return t.TransformMode.OnlyTranslation;
                            if ("norotationorreflection" == e) return t.TransformMode.NoRotationOrReflection;
                            if ("noscale" == e) return t.TransformMode.NoScale;
                            if ("noscaleorreflection" == e) return t.TransformMode.NoScaleOrReflection;
                            throw new Error("Unknown transform mode: " + e)
                        }, e
                    }();
                    t.SkeletonJson = e;
                    var n = function() {
                        function t(t, e, n, i) {
                            this.mesh = t, this.skin = e, this.slotIndex = n, this.parent = i
                        }
                        return t
                    }()
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function t(t) {
                            if (this.attachments = new Array, null == t) throw new Error("name cannot be null.");
                            this.name = t
                        }
                        return t.prototype.addAttachment = function(t, e, n) {
                            if (null == n) throw new Error("attachment cannot be null.");
                            var i = this.attachments;
                            t >= i.length && (i.length = t + 1), i[t] || (i[t] = {}), i[t][e] = n
                        }, t.prototype.getAttachment = function(t, e) {
                            var n = this.attachments[t];
                            return n ? n[e] : null
                        }, t.prototype.attachAll = function(t, e) {
                            for (var n = 0, i = 0; i < t.slots.length; i++) {
                                var r = t.slots[i],
                                    o = r.getAttachment();
                                if (o && n < e.attachments.length) {
                                    var a = e.attachments[n];
                                    for (var s in a) {
                                        if (o == a[s]) {
                                            var l = this.getAttachment(n, s);
                                            null != l && r.setAttachment(l);
                                            break
                                        }
                                    }
                                }
                                n++
                            }
                        }, t
                    }();
                    t.Skin = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function e(e, n) {
                            if (this.attachmentVertices = new Array, null == e) throw new Error("data cannot be null.");
                            if (null == n) throw new Error("bone cannot be null.");
                            this.data = e, this.bone = n, this.color = new t.Color, this.darkColor = null == e.darkColor ? null : new t.Color, this.setToSetupPose(), this.blendMode = this.data.blendMode
                        }
                        return e.prototype.getAttachment = function() {
                            return this.attachment
                        }, e.prototype.setAttachment = function(t) {
                            this.attachment != t && (this.attachment = t, this.attachmentTime = this.bone.skeleton.time, this.attachmentVertices.length = 0)
                        }, e.prototype.setAttachmentTime = function(t) {
                            this.attachmentTime = this.bone.skeleton.time - t
                        }, e.prototype.getAttachmentTime = function() {
                            return this.bone.skeleton.time - this.attachmentTime
                        }, e.prototype.setToSetupPose = function() {
                            this.color.setFromColor(this.data.color), null != this.darkColor && this.darkColor.setFromColor(this.data.darkColor), null == this.data.attachmentName ? this.attachment = null : (this.attachment = null, this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName)))
                        }, e
                    }();
                    t.Slot = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function e(e, n, i) {
                            if (this.color = new t.Color(1, 1, 1, 1), e < 0) throw new Error("index must be >= 0.");
                            if (null == n) throw new Error("name cannot be null.");
                            if (null == i) throw new Error("boneData cannot be null.");
                            this.index = e, this.name = n, this.boneData = i
                        }
                        return e
                    }();
                    t.SlotData = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(e) {
                ! function(e) {
                    var n = function() {
                        function t(t) {
                            this._image = t
                        }
                        return t.prototype.getImage = function() {
                            return this._image
                        }, t.filterFromString = function(t) {
                            switch (t.toLowerCase()) {
                                case "nearest":
                                    return i.Nearest;
                                case "linear":
                                    return i.Linear;
                                case "mipmap":
                                    return i.MipMap;
                                case "mipmapnearestnearest":
                                    return i.MipMapNearestNearest;
                                case "mipmaplinearnearest":
                                    return i.MipMapLinearNearest;
                                case "mipmapnearestlinear":
                                    return i.MipMapNearestLinear;
                                case "mipmaplinearlinear":
                                    return i.MipMapLinearLinear;
                                default:
                                    throw new Error("Unknown texture filter " + t)
                            }
                        }, t.wrapFromString = function(t) {
                            switch (t.toLowerCase()) {
                                case "mirroredtepeat":
                                    return r.MirroredRepeat;
                                case "clamptoedge":
                                    return r.ClampToEdge;
                                case "repeat":
                                    return r.Repeat;
                                default:
                                    throw new Error("Unknown texture wrap " + t)
                            }
                        }, t
                    }();
                    e.Texture = n;
                    var i;
                    ! function(t) {
                        t[t.Nearest = 9728] = "Nearest", t[t.Linear = 9729] = "Linear", t[t.MipMap = 9987] = "MipMap", t[t.MipMapNearestNearest = 9984] = "MipMapNearestNearest", t[t.MipMapLinearNearest = 9985] = "MipMapLinearNearest", t[t.MipMapNearestLinear = 9986] = "MipMapNearestLinear", t[t.MipMapLinearLinear = 9987] = "MipMapLinearLinear"
                    }(i = e.TextureFilter || (e.TextureFilter = {}));
                    var r;
                    ! function(t) {
                        t[t.MirroredRepeat = 33648] = "MirroredRepeat", t[t.ClampToEdge = 33071] = "ClampToEdge", t[t.Repeat = 10497] = "Repeat"
                    }(r = e.TextureWrap || (e.TextureWrap = {}));
                    var o = function() {
                        function e() {
                            this.size = null
                        }
                        return Object.defineProperty(e.prototype, "width", {
                            get: function() {
                                var e = this.texture;
                                return "3" == t.VERSION[0] ? e.crop.width : e.trim ? e.trim.width : e.orig.width
                            },
                            enumerable: !0,
                            configurable: !0
                        }), Object.defineProperty(e.prototype, "height", {
                            get: function() {
                                var e = this.texture;
                                return "3" == t.VERSION[0] ? e.crop.height : e.trim ? e.trim.height : e.orig.height
                            },
                            enumerable: !0,
                            configurable: !0
                        }), Object.defineProperty(e.prototype, "u", {
                            get: function() {
                                return this.texture._uvs.x0
                            },
                            enumerable: !0,
                            configurable: !0
                        }), Object.defineProperty(e.prototype, "v", {
                            get: function() {
                                return this.texture._uvs.y0
                            },
                            enumerable: !0,
                            configurable: !0
                        }), Object.defineProperty(e.prototype, "u2", {
                            get: function() {
                                return this.texture._uvs.x2
                            },
                            enumerable: !0,
                            configurable: !0
                        }), Object.defineProperty(e.prototype, "v2", {
                            get: function() {
                                return this.texture._uvs.y2
                            },
                            enumerable: !0,
                            configurable: !0
                        }), Object.defineProperty(e.prototype, "offsetX", {
                            get: function() {
                                var t = this.texture;
                                return t.trim ? t.trim.x : 0
                            },
                            enumerable: !0,
                            configurable: !0
                        }), Object.defineProperty(e.prototype, "offsetY", {
                            get: function() {
                                return this.spineOffsetY
                            },
                            enumerable: !0,
                            configurable: !0
                        }), Object.defineProperty(e.prototype, "pixiOffsetY", {
                            get: function() {
                                var t = this.texture;
                                return t.trim ? t.trim.y : 0
                            },
                            enumerable: !0,
                            configurable: !0
                        }), Object.defineProperty(e.prototype, "spineOffsetY", {
                            get: function() {
                                var t = this.texture;
                                return this.originalHeight - this.height - (t.trim ? t.trim.y : 0)
                            },
                            enumerable: !0,
                            configurable: !0
                        }), Object.defineProperty(e.prototype, "originalWidth", {
                            get: function() {
                                var e = this.texture;
                                return "3" == t.VERSION[0] ? e.trim ? e.trim.width : e.crop.width : e.orig.width
                            },
                            enumerable: !0,
                            configurable: !0
                        }), Object.defineProperty(e.prototype, "originalHeight", {
                            get: function() {
                                var e = this.texture;
                                return "3" == t.VERSION[0] ? e.trim ? e.trim.height : e.crop.height : e.orig.height
                            },
                            enumerable: !0,
                            configurable: !0
                        }), Object.defineProperty(e.prototype, "x", {
                            get: function() {
                                return this.texture.frame.x
                            },
                            enumerable: !0,
                            configurable: !0
                        }), Object.defineProperty(e.prototype, "y", {
                            get: function() {
                                return this.texture.frame.y
                            },
                            enumerable: !0,
                            configurable: !0
                        }), Object.defineProperty(e.prototype, "rotate", {
                            get: function() {
                                return 0 !== this.texture.rotate
                            },
                            enumerable: !0,
                            configurable: !0
                        }), e
                    }();
                    e.TextureRegion = o
                }(e.core || (e.core = {}))
            }(e || (e = {}));
            var e;
            ! function(e) {
                ! function(e) {
                    var i = function() {
                        function n(t, e, n) {
                            this.pages = new Array, this.regions = new Array, t && this.addSpineAtlas(t, e, n)
                        }
                        return n.prototype.addTexture = function(t, n) {
                            for (var i = this.pages, r = null, s = 0; s < i.length; s++)
                                if (i[s].baseTexture === n.baseTexture) {
                                    r = i[s];
                                    break
                                }
                            if (null === r) {
                                r = new o, r.name = "texturePage";
                                var l = n.baseTexture;
                                r.width = l.realWidth, r.height = l.realHeight, r.baseTexture = l, r.minFilter = r.magFilter = e.TextureFilter.Nearest, r.uWrap = e.TextureWrap.ClampToEdge, r.vWrap = e.TextureWrap.ClampToEdge, i.push(r)
                            }
                            var u = new a;
                            return u.name = t, u.page = r, u.texture = n, u.index = -1, this.regions.push(u), u
                        }, n.prototype.addTextureHash = function(t, e) {
                            for (var n in t) t.hasOwnProperty(n) && this.addTexture(e && -1 !== n.indexOf(".") ? n.substr(0, n.lastIndexOf(".")) : n, t[n])
                        }, n.prototype.addSpineAtlas = function(t, e, n) {
                            return this.load(t, e, n)
                        }, n.prototype.load = function(n, i, s) {
                            var l = this;
                            if (null == i) throw new Error("textureLoader cannot be null.");
                            var u = new r(n),
                                c = new Array(4),
                                h = null,
                                p = function() {
                                    for (;;) {
                                        var n = u.readLine();
                                        if (null == n) return s && s(l);
                                        if (n = n.trim(), 0 == n.length) h = null;
                                        else {
                                            if (!h) {
                                                h = new o, h.name = n, 2 == u.readTuple(c) && (h.width = parseInt(c[0]), h.height = parseInt(c[1]), u.readTuple(c)), u.readTuple(c), h.minFilter = e.Texture.filterFromString(c[0]), h.magFilter = e.Texture.filterFromString(c[1]);
                                                var r = u.readValue();
                                                h.uWrap = e.TextureWrap.ClampToEdge, h.vWrap = e.TextureWrap.ClampToEdge, "x" == r ? h.uWrap = e.TextureWrap.Repeat : "y" == r ? h.vWrap = e.TextureWrap.Repeat : "xy" == r && (h.uWrap = h.vWrap = e.TextureWrap.Repeat), i(n, function(t) {
                                                    h.baseTexture = t, t.hasLoaded || (t.width = h.width, t.height = h.height), l.pages.push(h), h.setFilters(), h.width && h.height || (h.width = t.realWidth, h.height = t.realHeight, !h.width || h.height), p()
                                                }), l.pages.push(h);
                                                break
                                            }
                                            var f = new a;
                                            f.name = n, f.page = h;
                                            var d = "true" == u.readValue() ? 6 : 0;
                                            u.readTuple(c);
                                            var m = parseInt(c[0]),
                                                g = parseInt(c[1]);
                                            u.readTuple(c);
                                            var _ = parseInt(c[0]),
                                                y = parseInt(c[1]),
                                                v = h.baseTexture.resolution;
                                            m /= v, g /= v, _ /= v, y /= v;
                                            var b = new t.Rectangle(m, g, d ? y : _, d ? _ : y);
                                            4 == u.readTuple(c) && 4 == u.readTuple(c) && u.readTuple(c);
                                            var x = parseInt(c[0]) / v,
                                                T = parseInt(c[1]) / v;
                                            u.readTuple(c);
                                            var w = parseInt(c[0]) / v,
                                                S = parseInt(c[1]) / v,
                                                P = new t.Rectangle(0, 0, x, T),
                                                M = new t.Rectangle(w, T - y - S, _, y);
                                            if ("3" != t.VERSION[0]) f.texture = new t.Texture(f.page.baseTexture, b, P, M, d);
                                            else {
                                                var C = new t.Rectangle(m, g, _, y),
                                                    E = C.clone();
                                                M.width = x, M.height = T, f.texture = new t.Texture(f.page.baseTexture, C, E, M, d)
                                            }
                                            f.index = parseInt(u.readValue()), f.texture._updateUvs(), l.regions.push(f)
                                        }
                                    }
                                };
                            p()
                        }, n.prototype.findRegion = function(t) {
                            for (var e = 0; e < this.regions.length; e++)
                                if (this.regions[e].name == t) return this.regions[e];
                            return null
                        }, n.prototype.dispose = function() {
                            for (var t = 0; t < this.pages.length; t++) this.pages[t].baseTexture.dispose()
                        }, n
                    }();
                    e.TextureAtlas = i;
                    var r = function() {
                            function t(t) {
                                this.index = 0, this.lines = t.split(/\r\n|\r|\n/)
                            }
                            return t.prototype.readLine = function() {
                                return this.index >= this.lines.length ? null : this.lines[this.index++]
                            }, t.prototype.readValue = function() {
                                var t = this.readLine(),
                                    e = t.indexOf(":");
                                if (-1 == e) throw new Error("Invalid line: " + t);
                                return t.substring(e + 1).trim()
                            }, t.prototype.readTuple = function(t) {
                                var e = this.readLine(),
                                    n = e.indexOf(":");
                                if (-1 == n) throw new Error("Invalid line: " + e);
                                for (var i = 0, r = n + 1; i < 3; i++) {
                                    var o = e.indexOf(",", r);
                                    if (-1 == o) break;
                                    t[i] = e.substr(r, o - r).trim(), r = o + 1
                                }
                                return t[i] = e.substring(r).trim(), i + 1
                            }, t
                        }(),
                        o = function() {
                            function n() {}
                            return n.prototype.setFilters = function() {
                                var n = this.baseTexture,
                                    i = this.minFilter;
                                i == e.TextureFilter.Linear ? n.scaleMode = t.SCALE_MODES.LINEAR : this.minFilter == e.TextureFilter.Nearest ? n.scaleMode = t.SCALE_MODES.NEAREST : (n.mipmap = !0, i == e.TextureFilter.MipMapNearestNearest ? n.scaleMode = t.SCALE_MODES.NEAREST : n.scaleMode = t.SCALE_MODES.LINEAR)
                            }, n
                        }();
                    e.TextureAtlasPage = o;
                    var a = function(t) {
                        function e() {
                            return null !== t && t.apply(this, arguments) || this
                        }
                        return n(e, t), e
                    }(e.TextureRegion);
                    e.TextureAtlasRegion = a
                }(e.core || (e.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function e(e, n) {
                            if (this.rotateMix = 0, this.translateMix = 0, this.scaleMix = 0, this.shearMix = 0, this.temp = new t.Vector2, null == e) throw new Error("data cannot be null.");
                            if (null == n) throw new Error("skeleton cannot be null.");
                            this.data = e, this.rotateMix = e.rotateMix, this.translateMix = e.translateMix, this.scaleMix = e.scaleMix, this.shearMix = e.shearMix, this.bones = new Array;
                            for (var i = 0; i < e.bones.length; i++) this.bones.push(n.findBone(e.bones[i].name));
                            this.target = n.findBone(e.target.name)
                        }
                        return e.prototype.apply = function() {
                            this.update()
                        }, e.prototype.update = function() {
                            this.data.local ? this.data.relative ? this.applyRelativeLocal() : this.applyAbsoluteLocal() : this.data.relative ? this.applyRelativeWorld() : this.applyAbsoluteWorld()
                        }, e.prototype.applyAbsoluteWorld = function() {
                            for (var e = this.rotateMix, n = this.translateMix, i = this.scaleMix, r = this.shearMix, o = this.target, a = o.matrix, s = a.a, l = a.c, u = a.b, c = a.d, h = s * c - l * u > 0 ? t.MathUtils.degRad : -t.MathUtils.degRad, p = this.data.offsetRotation * h, f = this.data.offsetShearY * h, d = this.bones, m = 0, g = d.length; m < g; m++) {
                                var _ = d[m],
                                    y = !1,
                                    v = _.matrix;
                                if (0 != e) {
                                    var b = v.a,
                                        x = v.c,
                                        T = v.b,
                                        w = v.d,
                                        S = Math.atan2(u, s) - Math.atan2(T, b) + p;
                                    S > t.MathUtils.PI ? S -= t.MathUtils.PI2 : S < -t.MathUtils.PI && (S += t.MathUtils.PI2), S *= e;
                                    var P = Math.cos(S),
                                        M = Math.sin(S);
                                    v.a = P * b - M * T, v.c = P * x - M * w, v.b = M * b + P * T, v.d = M * x + P * w, y = !0
                                }
                                if (0 != n) {
                                    var C = this.temp;
                                    o.localToWorld(C.set(this.data.offsetX, this.data.offsetY)), v.tx += (C.x - v.tx) * n, v.ty += (C.y - v.ty) * n, y = !0
                                }
                                if (i > 0) {
                                    var E = Math.sqrt(v.a * v.a + v.b * v.b),
                                        O = Math.sqrt(s * s + u * u);
                                    E > 1e-5 && (E = (E + (O - E + this.data.offsetScaleX) * i) / E), v.a *= E, v.b *= E, E = Math.sqrt(v.c * v.c + v.d * v.d), O = Math.sqrt(l * l + c * c), E > 1e-5 && (E = (E + (O - E + this.data.offsetScaleY) * i) / E), v.c *= E, v.d *= E, y = !0
                                }
                                if (r > 0) {
                                    var x = v.c,
                                        w = v.d,
                                        I = Math.atan2(w, x),
                                        S = Math.atan2(c, l) - Math.atan2(u, s) - (I - Math.atan2(v.b, v.a));
                                    S > t.MathUtils.PI ? S -= t.MathUtils.PI2 : S < -t.MathUtils.PI && (S += t.MathUtils.PI2), S = I + (S + f) * r;
                                    var E = Math.sqrt(x * x + w * w);
                                    v.c = Math.cos(S) * E, v.d = Math.sin(S) * E, y = !0
                                }
                                y && (_.appliedValid = !1)
                            }
                        }, e.prototype.applyRelativeWorld = function() {
                            for (var e = this.rotateMix, n = this.translateMix, i = this.scaleMix, r = this.shearMix, o = this.target, a = o.matrix, s = a.a, l = a.c, u = a.b, c = a.d, h = s * c - l * u > 0 ? t.MathUtils.degRad : -t.MathUtils.degRad, p = this.data.offsetRotation * h, f = this.data.offsetShearY * h, d = this.bones, m = 0, g = d.length; m < g; m++) {
                                var _ = d[m],
                                    y = !1,
                                    v = _.matrix;
                                if (0 != e) {
                                    var b = v.a,
                                        x = v.c,
                                        T = v.b,
                                        w = v.d,
                                        S = Math.atan2(u, s) + p;
                                    S > t.MathUtils.PI ? S -= t.MathUtils.PI2 : S < -t.MathUtils.PI && (S += t.MathUtils.PI2), S *= e;
                                    var P = Math.cos(S),
                                        M = Math.sin(S);
                                    v.a = P * b - M * T, v.c = P * x - M * w, v.b = M * b + P * T, v.d = M * x + P * w, y = !0
                                }
                                if (0 != n) {
                                    var C = this.temp;
                                    o.localToWorld(C.set(this.data.offsetX, this.data.offsetY)), v.tx += C.x * n, v.ty += C.y * n, y = !0
                                }
                                if (i > 0) {
                                    var E = (Math.sqrt(s * s + u * u) - 1 + this.data.offsetScaleX) * i + 1;
                                    v.a *= E, v.b *= E, E = (Math.sqrt(l * l + c * c) - 1 + this.data.offsetScaleY) * i + 1, v.c *= E, v.d *= E, y = !0
                                }
                                if (r > 0) {
                                    var S = Math.atan2(c, l) - Math.atan2(u, s);
                                    S > t.MathUtils.PI ? S -= t.MathUtils.PI2 : S < -t.MathUtils.PI && (S += t.MathUtils.PI2);
                                    var x = v.c,
                                        w = v.d;
                                    S = Math.atan2(w, x) + (S - t.MathUtils.PI / 2 + f) * r;
                                    var E = Math.sqrt(x * x + w * w);
                                    v.c = Math.cos(S) * E, v.d = Math.sin(S) * E, y = !0
                                }
                                y && (_.appliedValid = !1)
                            }
                        }, e.prototype.applyAbsoluteLocal = function() {
                            var t = this.rotateMix,
                                e = this.translateMix,
                                n = this.scaleMix,
                                i = this.shearMix,
                                r = this.target;
                            r.appliedValid || r.updateAppliedTransform();
                            for (var o = this.bones, a = 0, s = o.length; a < s; a++) {
                                var l = o[a];
                                l.appliedValid || l.updateAppliedTransform();
                                var u = l.arotation;
                                if (0 != t) {
                                    var c = r.arotation - u + this.data.offsetRotation;
                                    c -= 360 * (16384 - (16384.499999999996 - c / 360 | 0)), u += c * t
                                }
                                var h = l.ax,
                                    p = l.ay;
                                0 != e && (h += (r.ax - h + this.data.offsetX) * e, p += (r.ay - p + this.data.offsetY) * e);
                                var f = l.ascaleX,
                                    d = l.ascaleY;
                                n > 0 && (f > 1e-5 && (f = (f + (r.ascaleX - f + this.data.offsetScaleX) * n) / f), d > 1e-5 && (d = (d + (r.ascaleY - d + this.data.offsetScaleY) * n) / d));
                                var m = l.ashearY;
                                if (i > 0) {
                                    var c = r.ashearY - m + this.data.offsetShearY;
                                    c -= 360 * (16384 - (16384.499999999996 - c / 360 | 0)), l.shearY += c * i
                                }
                                l.updateWorldTransformWith(h, p, u, f, d, l.ashearX, m)
                            }
                        }, e.prototype.applyRelativeLocal = function() {
                            var t = this.rotateMix,
                                e = this.translateMix,
                                n = this.scaleMix,
                                i = this.shearMix,
                                r = this.target;
                            r.appliedValid || r.updateAppliedTransform();
                            for (var o = this.bones, a = 0, s = o.length; a < s; a++) {
                                var l = o[a];
                                l.appliedValid || l.updateAppliedTransform();
                                var u = l.arotation;
                                0 != t && (u += (r.arotation + this.data.offsetRotation) * t);
                                var c = l.ax,
                                    h = l.ay;
                                0 != e && (c += (r.ax + this.data.offsetX) * e, h += (r.ay + this.data.offsetY) * e);
                                var p = l.ascaleX,
                                    f = l.ascaleY;
                                n > 0 && (p > 1e-5 && (p *= (r.ascaleX - 1 + this.data.offsetScaleX) * n + 1), f > 1e-5 && (f *= (r.ascaleY - 1 + this.data.offsetScaleY) * n + 1));
                                var d = l.ashearY;
                                i > 0 && (d += (r.ashearY + this.data.offsetShearY) * i), l.updateWorldTransformWith(c, h, u, p, f, l.ashearX, d)
                            }
                        }, e.prototype.getOrder = function() {
                            return this.data.order
                        }, e
                    }();
                    t.TransformConstraint = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function t(t) {
                            if (this.order = 0, this.bones = new Array, this.rotateMix = 0, this.translateMix = 0, this.scaleMix = 0, this.shearMix = 0, this.offsetRotation = 0, this.offsetX = 0, this.offsetY = 0, this.offsetScaleX = 0, this.offsetScaleY = 0, this.offsetShearY = 0, this.relative = !1, this.local = !1, null == t) throw new Error("name cannot be null.");
                            this.name = t
                        }
                        return t
                    }();
                    t.TransformConstraintData = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function e() {
                            this.convexPolygons = new Array, this.convexPolygonsIndices = new Array, this.indicesArray = new Array, this.isConcaveArray = new Array, this.triangles = new Array, this.polygonPool = new t.Pool(function() {
                                return new Array
                            }), this.polygonIndicesPool = new t.Pool(function() {
                                return new Array
                            })
                        }
                        return e.prototype.triangulate = function(t) {
                            var n = t,
                                i = t.length >> 1,
                                r = this.indicesArray;
                            r.length = 0;
                            for (var o = 0; o < i; o++) r[o] = o;
                            var a = this.isConcaveArray;
                            a.length = 0;
                            for (var o = 0, s = i; o < s; ++o) a[o] = e.isConcave(o, i, n, r);
                            var l = this.triangles;
                            for (l.length = 0; i > 3;) {
                                for (var u = i - 1, o = 0, c = 1;;) {
                                    t: if (!a[o]) {
                                        for (var h = r[u] << 1, p = r[o] << 1, f = r[c] << 1, d = n[h], m = n[h + 1], g = n[p], _ = n[p + 1], y = n[f], v = n[f + 1], b = (c + 1) % i; b != u; b = (b + 1) % i)
                                            if (a[b]) {
                                                var x = r[b] << 1,
                                                    T = n[x],
                                                    w = n[x + 1];
                                                if (e.positiveArea(y, v, d, m, T, w) && e.positiveArea(d, m, g, _, T, w) && e.positiveArea(g, _, y, v, T, w)) break t
                                            }
                                        break
                                    }if (0 == c) {
                                        do {
                                            if (!a[o]) break;
                                            o--
                                        } while (o > 0);
                                        break
                                    }
                                    u = o,
                                    o = c,
                                    c = (c + 1) % i
                                }
                                l.push(r[(i + o - 1) % i]), l.push(r[o]), l.push(r[(o + 1) % i]), r.splice(o, 1), a.splice(o, 1), i--;
                                var S = (i + o - 1) % i,
                                    P = o == i ? 0 : o;
                                a[S] = e.isConcave(S, i, n, r), a[P] = e.isConcave(P, i, n, r)
                            }
                            return 3 == i && (l.push(r[2]), l.push(r[0]), l.push(r[1])), l
                        }, e.prototype.decompose = function(t, n) {
                            var i = t,
                                r = this.convexPolygons;
                            this.polygonPool.freeAll(r), r.length = 0;
                            var o = this.convexPolygonsIndices;
                            this.polygonIndicesPool.freeAll(o), o.length = 0;
                            var a = this.polygonIndicesPool.obtain();
                            a.length = 0;
                            var s = this.polygonPool.obtain();
                            s.length = 0;
                            for (var l = -1, u = 0, c = 0, h = n.length; c < h; c += 3) {
                                var p = n[c] << 1,
                                    f = n[c + 1] << 1,
                                    d = n[c + 2] << 1,
                                    m = i[p],
                                    g = i[p + 1],
                                    _ = i[f],
                                    y = i[f + 1],
                                    v = i[d],
                                    b = i[d + 1],
                                    x = !1;
                                if (l == p) {
                                    var T = s.length - 4,
                                        w = e.winding(s[T], s[T + 1], s[T + 2], s[T + 3], v, b),
                                        S = e.winding(v, b, s[0], s[1], s[2], s[3]);
                                    w == u && S == u && (s.push(v), s.push(b), a.push(d), x = !0)
                                }
                                x || (s.length > 0 ? (r.push(s), o.push(a)) : (this.polygonPool.free(s), this.polygonIndicesPool.free(a)), s = this.polygonPool.obtain(), s.length = 0, s.push(m), s.push(g), s.push(_), s.push(y), s.push(v), s.push(b), a = this.polygonIndicesPool.obtain(), a.length = 0, a.push(p), a.push(f), a.push(d), u = e.winding(m, g, _, y, v, b), l = p)
                            }
                            s.length > 0 && (r.push(s), o.push(a));
                            for (var c = 0, h = r.length; c < h; c++)
                                if (a = o[c], 0 != a.length) {
                                    var P = a[0],
                                        M = a[a.length - 1];
                                    s = r[c];
                                    for (var T = s.length - 4, C = s[T], E = s[T + 1], O = s[T + 2], I = s[T + 3], R = s[0], A = s[1], k = s[2], L = s[3], D = e.winding(C, E, O, I, R, A), B = 0; B < h; B++)
                                        if (B != c) {
                                            var N = o[B];
                                            if (3 == N.length) {
                                                var F = N[0],
                                                    G = N[1],
                                                    U = N[2],
                                                    j = r[B],
                                                    v = j[j.length - 2],
                                                    b = j[j.length - 1];
                                                if (F == P && G == M) {
                                                    var w = e.winding(C, E, O, I, v, b),
                                                        S = e.winding(v, b, R, A, k, L);
                                                    w == D && S == D && (j.length = 0, N.length = 0, s.push(v), s.push(b), a.push(U), C = O, E = I, O = v, I = b, B = 0)
                                                }
                                            }
                                        }
                                }
                            for (var c = r.length - 1; c >= 0; c--) s = r[c], 0 == s.length && (r.splice(c, 1), this.polygonPool.free(s), a = o[c], o.splice(c, 1), this.polygonIndicesPool.free(a));
                            return r
                        }, e.isConcave = function(t, e, n, i) {
                            var r = i[(e + t - 1) % e] << 1,
                                o = i[t] << 1,
                                a = i[(t + 1) % e] << 1;
                            return !this.positiveArea(n[r], n[r + 1], n[o], n[o + 1], n[a], n[a + 1])
                        }, e.positiveArea = function(t, e, n, i, r, o) {
                            return t * (o - i) + n * (e - o) + r * (i - e) >= 0
                        }, e.winding = function(t, e, n, i, r, o) {
                            var a = n - t,
                                s = i - e;
                            return r * s - o * a + a * e - t * s >= 0 ? 1 : -1
                        }, e
                    }();
                    t.Triangulator = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function t() {
                            this.array = new Array
                        }
                        return t.prototype.add = function(t) {
                            var e = this.contains(t);
                            return this.array[0 | t] = 0 | t, !e
                        }, t.prototype.contains = function(t) {
                            return void 0 != this.array[0 | t]
                        }, t.prototype.remove = function(t) {
                            this.array[0 | t] = void 0
                        }, t.prototype.clear = function() {
                            this.array.length = 0
                        }, t
                    }();
                    t.IntSet = e;
                    var i = function() {
                        function t(t, e, n, i) {
                            void 0 === t && (t = 0), void 0 === e && (e = 0), void 0 === n && (n = 0), void 0 === i && (i = 0), this.r = t, this.g = e, this.b = n, this.a = i
                        }
                        return t.prototype.set = function(t, e, n, i) {
                            return this.r = t, this.g = e, this.b = n, this.a = i, this.clamp(), this
                        }, t.prototype.setFromColor = function(t) {
                            return this.r = t.r, this.g = t.g, this.b = t.b, this.a = t.a, this
                        }, t.prototype.setFromString = function(t) {
                            return t = "#" == t.charAt(0) ? t.substr(1) : t, this.r = parseInt(t.substr(0, 2), 16) / 255, this.g = parseInt(t.substr(2, 2), 16) / 255, this.b = parseInt(t.substr(4, 2), 16) / 255, this.a = (8 != t.length ? 255 : parseInt(t.substr(6, 2), 16)) / 255, this
                        }, t.prototype.add = function(t, e, n, i) {
                            return this.r += t, this.g += e, this.b += n, this.a += i, this.clamp(), this
                        }, t.prototype.clamp = function() {
                            return this.r < 0 ? this.r = 0 : this.r > 1 && (this.r = 1), this.g < 0 ? this.g = 0 : this.g > 1 && (this.g = 1), this.b < 0 ? this.b = 0 : this.b > 1 && (this.b = 1), this.a < 0 ? this.a = 0 : this.a > 1 && (this.a = 1), this
                        }, t.WHITE = new t(1, 1, 1, 1), t.RED = new t(1, 0, 0, 1), t.GREEN = new t(0, 1, 0, 1), t.BLUE = new t(0, 0, 1, 1), t.MAGENTA = new t(1, 0, 1, 1), t
                    }();
                    t.Color = i;
                    var r = function() {
                        function t() {}
                        return t.clamp = function(t, e, n) {
                            return t < e ? e : t > n ? n : t
                        }, t.cosDeg = function(e) {
                            return Math.cos(e * t.degRad)
                        }, t.sinDeg = function(e) {
                            return Math.sin(e * t.degRad)
                        }, t.signum = function(t) {
                            return t > 0 ? 1 : t < 0 ? -1 : 0
                        }, t.toInt = function(t) {
                            return t > 0 ? Math.floor(t) : Math.ceil(t)
                        }, t.cbrt = function(t) {
                            var e = Math.pow(Math.abs(t), 1 / 3);
                            return t < 0 ? -e : e
                        }, t.randomTriangular = function(e, n) {
                            return t.randomTriangularWith(e, n, .5 * (e + n))
                        }, t.randomTriangularWith = function(t, e, n) {
                            var i = Math.random(),
                                r = e - t;
                            return i <= (n - t) / r ? t + Math.sqrt(i * r * (n - t)) : e - Math.sqrt((1 - i) * r * (e - n))
                        }, t.PI = 3.1415927, t.PI2 = 2 * t.PI, t.radiansToDegrees = 180 / t.PI, t.radDeg = t.radiansToDegrees, t.degreesToRadians = t.PI / 180, t.degRad = t.degreesToRadians, t
                    }();
                    t.MathUtils = r;
                    var o = function() {
                        function t() {}
                        return t.prototype.apply = function(t, e, n) {
                            return t + (e - t) * this.applyInternal(n)
                        }, t
                    }();
                    t.Interpolation = o;
                    var a = function(t) {
                        function e(e) {
                            var n = t.call(this) || this;
                            return n.power = 2, n.power = e, n
                        }
                        return n(e, t), e.prototype.applyInternal = function(t) {
                            return t <= .5 ? Math.pow(2 * t, this.power) / 2 : Math.pow(2 * (t - 1), this.power) / (this.power % 2 == 0 ? -2 : 2) + 1
                        }, e
                    }(o);
                    t.Pow = a;
                    var s = function(t) {
                        function e(e) {
                            return t.call(this, e) || this
                        }
                        return n(e, t), e.prototype.applyInternal = function(t) {
                            return Math.pow(t - 1, this.power) * (this.power % 2 == 0 ? -1 : 1) + 1
                        }, e
                    }(a);
                    t.PowOut = s;
                    var l = function() {
                        function t() {}
                        return t.arrayCopy = function(t, e, n, i, r) {
                            for (var o = e, a = i; o < e + r; o++, a++) n[a] = t[o]
                        }, t.setArraySize = function(t, e, n) {
                            void 0 === n && (n = 0);
                            var i = t.length;
                            if (i == e) return t;
                            if (t.length = e, i < e)
                                for (var r = i; r < e; r++) t[r] = n;
                            return t
                        }, t.ensureArrayCapacity = function(e, n, i) {
                            return void 0 === i && (i = 0), e.length >= n ? e : t.setArraySize(e, n, i)
                        }, t.newArray = function(t, e) {
                            for (var n = new Array(t), i = 0; i < t; i++) n[i] = e;
                            return n
                        }, t.newFloatArray = function(e) {
                            if (t.SUPPORTS_TYPED_ARRAYS) return new Float32Array(e);
                            for (var n = new Array(e), i = 0; i < n.length; i++) n[i] = 0;
                            return n
                        }, t.newShortArray = function(e) {
                            if (t.SUPPORTS_TYPED_ARRAYS) return new Int16Array(e);
                            for (var n = new Array(e), i = 0; i < n.length; i++) n[i] = 0;
                            return n
                        }, t.toFloatArray = function(e) {
                            return t.SUPPORTS_TYPED_ARRAYS ? new Float32Array(e) : e
                        }, t.toSinglePrecision = function(e) {
                            return t.SUPPORTS_TYPED_ARRAYS ? Math.fround(e) : e
                        }, t.webkit602BugfixHelper = function(t, e) {}, t.SUPPORTS_TYPED_ARRAYS = "undefined" != typeof Float32Array, t
                    }();
                    t.Utils = l;
                    var u = function() {
                        function t() {}
                        return t.logBones = function(t) {
                            for (var e = 0; e < t.bones.length; e++) {
                                var n = t.bones[e];
                                n.matrix
                            }
                        }, t
                    }();
                    t.DebugUtils = u;
                    var c = function() {
                        function t(t) {
                            this.items = new Array, this.instantiator = t
                        }
                        return t.prototype.obtain = function() {
                            return this.items.length > 0 ? this.items.pop() : this.instantiator()
                        }, t.prototype.free = function(t) {
                            t.reset && t.reset(), this.items.push(t)
                        }, t.prototype.freeAll = function(t) {
                            for (var e = 0; e < t.length; e++) t[e].reset && t[e].reset(), this.items[e] = t[e]
                        }, t.prototype.clear = function() {
                            this.items.length = 0
                        }, t
                    }();
                    t.Pool = c;
                    var h = function() {
                        function t(t, e) {
                            void 0 === t && (t = 0), void 0 === e && (e = 0), this.x = t, this.y = e
                        }
                        return t.prototype.set = function(t, e) {
                            return this.x = t, this.y = e, this
                        }, t.prototype.length = function() {
                            var t = this.x,
                                e = this.y;
                            return Math.sqrt(t * t + e * e)
                        }, t.prototype.normalize = function() {
                            var t = this.length();
                            return 0 != t && (this.x /= t, this.y /= t), this
                        }, t
                    }();
                    t.Vector2 = h;
                    var p = function() {
                        function t() {
                            this.maxDelta = .064, this.framesPerSecond = 0, this.delta = 0, this.totalTime = 0, this.lastTime = Date.now() / 1e3, this.frameCount = 0, this.frameTime = 0
                        }
                        return t.prototype.update = function() {
                            var t = Date.now() / 1e3;
                            this.delta = t - this.lastTime, this.frameTime += this.delta, this.totalTime += this.delta, this.delta > this.maxDelta && (this.delta = this.maxDelta), this.lastTime = t, this.frameCount++, this.frameTime > 1 && (this.framesPerSecond = this.frameCount / this.frameTime, this.frameTime = 0, this.frameCount = 0)
                        }, t
                    }();
                    t.TimeKeeper = p;
                    var f = function() {
                        function t(t) {
                            void 0 === t && (t = 32), this.addedValues = 0, this.lastValue = 0, this.mean = 0, this.dirty = !0, this.values = new Array(t)
                        }
                        return t.prototype.hasEnoughData = function() {
                            return this.addedValues >= this.values.length
                        }, t.prototype.addValue = function(t) {
                            this.addedValues < this.values.length && this.addedValues++, this.values[this.lastValue++] = t, this.lastValue > this.values.length - 1 && (this.lastValue = 0), this.dirty = !0
                        }, t.prototype.getMean = function() {
                            if (this.hasEnoughData()) {
                                if (this.dirty) {
                                    for (var t = 0, e = 0; e < this.values.length; e++) t += this.values[e];
                                    this.mean = t / this.values.length, this.dirty = !1
                                }
                                return this.mean
                            }
                            return 0
                        }, t
                    }();
                    t.WindowedMean = f
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function t(t) {
                            if (null == t) throw new Error("name cannot be null.");
                            this.name = t
                        }
                        return t
                    }();
                    t.Attachment = e;
                    var i = function(t) {
                        function e(n) {
                            var i = t.call(this, n) || this;
                            return i.id = (65535 & e.nextID++) << 11, i.worldVerticesLength = 0, i
                        }
                        return n(e, t), e.prototype.computeWorldVerticesOld = function(t, e) {
                            this.computeWorldVertices(t, 0, this.worldVerticesLength, e, 0, 2)
                        }, e.prototype.computeWorldVertices = function(t, e, n, i, r, o) {
                            n = r + (n >> 1) * o;
                            var a = t.bone.skeleton,
                                s = t.attachmentVertices,
                                l = this.vertices,
                                u = this.bones;
                            if (null != u) {
                                for (var c = 0, h = 0, p = 0; p < e; p += 2) {
                                    var f = u[c];
                                    c += f + 1, h += f
                                }
                                var d = a.bones;
                                if (0 == s.length)
                                    for (var m = r, g = 3 * h; m < n; m += o) {
                                        var _ = 0,
                                            y = 0,
                                            f = u[c++];
                                        for (f += c; c < f; c++, g += 3) {
                                            var v = d[u[c]].matrix,
                                                b = l[g],
                                                x = l[g + 1],
                                                T = l[g + 2];
                                            _ += (b * v.a + x * v.c + v.tx) * T, y += (b * v.b + x * v.d + v.ty) * T
                                        }
                                        i[m] = _, i[m + 1] = y
                                    } else
                                        for (var w = s, m = r, g = 3 * h, S = h << 1; m < n; m += o) {
                                            var _ = 0,
                                                y = 0,
                                                f = u[c++];
                                            for (f += c; c < f; c++, g += 3, S += 2) {
                                                var v = d[u[c]].matrix,
                                                    b = l[g] + w[S],
                                                    x = l[g + 1] + w[S + 1],
                                                    T = l[g + 2];
                                                _ += (b * v.a + x * v.c + v.tx) * T, y += (b * v.b + x * v.d + v.ty) * T
                                            }
                                            i[m] = _, i[m + 1] = y
                                        }
                            } else {
                                s.length > 0 && (l = s);
                                for (var v = t.bone.matrix, P = v.tx, M = v.ty, C = v.a, g = v.c, E = v.b, O = v.d, I = e, m = r; m < n; I += 2, m += o) {
                                    var b = l[I],
                                        x = l[I + 1];
                                    i[m] = b * C + x * g + P, i[m + 1] = b * E + x * O + M
                                }
                            }
                        }, e.prototype.applyDeform = function(t) {
                            return this == t
                        }, e.nextID = 0, e
                    }(e);
                    t.VertexAttachment = i
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    ! function(t) {
                        t[t.Region = 0] = "Region", t[t.BoundingBox = 1] = "BoundingBox", t[t.Mesh = 2] = "Mesh", t[t.LinkedMesh = 3] = "LinkedMesh", t[t.Path = 4] = "Path", t[t.Point = 5] = "Point"
                    }(t.AttachmentType || (t.AttachmentType = {}))
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function(e) {
                        function i(n) {
                            var i = e.call(this, n) || this;
                            return i.color = new t.Color(1, 1, 1, 1), i
                        }
                        return n(i, e), i
                    }(t.VertexAttachment);
                    t.BoundingBoxAttachment = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function(e) {
                        function i(n) {
                            var i = e.call(this, n) || this;
                            return i.color = new t.Color(.2275, .2275, .8078, 1), i
                        }
                        return n(i, e), i
                    }(t.VertexAttachment);
                    t.ClippingAttachment = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function(e) {
                        function i(n) {
                            var i = e.call(this, n) || this;
                            return i.color = new t.Color(1, 1, 1, 1), i.inheritDeform = !1, i.tempColor = new t.Color(0, 0, 0, 0), i
                        }
                        return n(i, e), i.prototype.updateUVs = function(e, n) {
                            var i = this.regionUVs,
                                r = i.length;
                            if (n && n.length == r || (n = t.Utils.newFloatArray(r)), null != e) {
                                for (var o = e.texture, a = o._uvs, s = e.width, l = e.height, u = e.originalWidth, c = e.originalHeight, h = e.offsetX, p = e.pixiOffsetY, f = 0; f < r; f += 2) {
                                    var d = this.regionUVs[f],
                                        m = this.regionUVs[f + 1];
                                    d = (d * u - h) / s, m = (m * c - p) / l, n[f] = (a.x0 * (1 - d) + a.x1 * d) * (1 - m) + (a.x3 * (1 - d) + a.x2 * d) * m, n[f + 1] = (a.y0 * (1 - d) + a.y1 * d) * (1 - m) + (a.y3 * (1 - d) + a.y2 * d) * m
                                }
                                return n
                            }
                        }, i.prototype.applyDeform = function(t) {
                            return this == t || this.inheritDeform && this.parentMesh == t
                        }, i.prototype.getParentMesh = function() {
                            return this.parentMesh
                        }, i.prototype.setParentMesh = function(t) {
                            this.parentMesh = t, null != t && (this.bones = t.bones, this.vertices = t.vertices, this.worldVerticesLength = t.worldVerticesLength, this.regionUVs = t.regionUVs, this.triangles = t.triangles, this.hullLength = t.hullLength, this.worldVerticesLength = t.worldVerticesLength)
                        }, i
                    }(t.VertexAttachment);
                    t.MeshAttachment = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function(e) {
                        function i(n) {
                            var i = e.call(this, n) || this;
                            return i.closed = !1, i.constantSpeed = !1, i.color = new t.Color(1, 1, 1, 1), i
                        }
                        return n(i, e), i
                    }(t.VertexAttachment);
                    t.PathAttachment = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function(e) {
                        function i(n) {
                            var i = e.call(this, n) || this;
                            return i.color = new t.Color(.38, .94, 0, 1), i
                        }
                        return n(i, e), i.prototype.computeWorldPosition = function(t, e) {
                            var n = t.matrix;
                            return e.x = this.x * n.a + this.y * n.c + t.worldX, e.y = this.x * n.b + this.y * n.d + t.worldY, e
                        }, i.prototype.computeWorldRotation = function(e) {
                            var n = e.matrix,
                                i = t.MathUtils.cosDeg(this.rotation),
                                r = t.MathUtils.sinDeg(this.rotation),
                                o = i * n.a + r * n.c,
                                a = i * n.b + r * n.d;
                            return Math.atan2(a, o) * t.MathUtils.radDeg
                        }, i
                    }(t.VertexAttachment);
                    t.PointAttachment = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function(e) {
                        function i(n) {
                            var i = e.call(this, n) || this;
                            return i.x = 0, i.y = 0, i.scaleX = 1, i.scaleY = 1, i.rotation = 0, i.width = 0, i.height = 0, i.color = new t.Color(1, 1, 1, 1), i.offset = t.Utils.newFloatArray(8), i.uvs = t.Utils.newFloatArray(8), i.tempColor = new t.Color(1, 1, 1, 1), i
                        }
                        return n(i, e), i.prototype.updateOffset = function() {
                            var t = this.width / this.region.originalWidth * this.scaleX,
                                e = this.height / this.region.originalHeight * this.scaleY,
                                n = -this.width / 2 * this.scaleX + this.region.offsetX * t,
                                r = -this.height / 2 * this.scaleY + this.region.offsetY * e,
                                o = n + this.region.width * t,
                                a = r + this.region.height * e,
                                s = this.rotation * Math.PI / 180,
                                l = Math.cos(s),
                                u = Math.sin(s),
                                c = n * l + this.x,
                                h = n * u,
                                p = r * l + this.y,
                                f = r * u,
                                d = o * l + this.x,
                                m = o * u,
                                g = a * l + this.y,
                                _ = a * u,
                                y = this.offset;
                            y[i.OX1] = c - f, y[i.OY1] = p + h, y[i.OX2] = c - _, y[i.OY2] = g + h, y[i.OX3] = d - _, y[i.OY3] = g + m, y[i.OX4] = d - f, y[i.OY4] = p + m
                        }, i.prototype.setRegion = function(t) {
                            this.region = t;
                            var e = this.uvs;
                            t.rotate ? (e[2] = t.u, e[3] = t.v2, e[4] = t.u, e[5] = t.v, e[6] = t.u2, e[7] = t.v, e[0] = t.u2, e[1] = t.v2) : (e[0] = t.u, e[1] = t.v2, e[2] = t.u, e[3] = t.v, e[4] = t.u2, e[5] = t.v, e[6] = t.u2, e[7] = t.v2)
                        }, i.prototype.computeWorldVertices = function(t, e, n, r) {
                            var o = this.offset,
                                a = t.matrix,
                                s = a.tx,
                                l = a.ty,
                                u = a.a,
                                c = a.c,
                                h = a.b,
                                p = a.d,
                                f = 0,
                                d = 0;
                            f = o[i.OX1], d = o[i.OY1], e[n] = f * u + d * c + s, e[n + 1] = f * h + d * p + l, n += r, f = o[i.OX2], d = o[i.OY2], e[n] = f * u + d * c + s, e[n + 1] = f * h + d * p + l, n += r, f = o[i.OX3], d = o[i.OY3], e[n] = f * u + d * c + s, e[n + 1] = f * h + d * p + l, n += r, f = o[i.OX4], d = o[i.OY4], e[n] = f * u + d * c + s, e[n + 1] = f * h + d * p + l
                        }, i.OX1 = 0, i.OY1 = 1, i.OX2 = 2, i.OY2 = 3, i.OX3 = 4, i.OY3 = 5, i.OX4 = 6, i.OY4 = 7, i.X1 = 0, i.Y1 = 1, i.C1R = 2, i.C1G = 3, i.C1B = 4, i.C1A = 5, i.U1 = 6, i.V1 = 7, i.X2 = 8, i.Y2 = 9, i.C2R = 10, i.C2G = 11, i.C2B = 12, i.C2A = 13, i.U2 = 14, i.V2 = 15, i.X3 = 16, i.Y3 = 17, i.C3R = 18, i.C3G = 19, i.C3B = 20, i.C3A = 21, i.U3 = 22, i.V3 = 23, i.X4 = 24, i.Y4 = 25, i.C4R = 26, i.C4G = 27, i.C4B = 28, i.C4A = 29, i.U4 = 30, i.V4 = 31, i
                    }(t.Attachment);
                    t.RegionAttachment = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function e(t, e) {
                            this.jitterX = 0, this.jitterY = 0, this.jitterX = t, this.jitterY = e
                        }
                        return e.prototype.begin = function(t) {}, e.prototype.transform = function(e, n, i, r) {
                            e.x += t.MathUtils.randomTriangular(-this.jitterX, this.jitterY), e.y += t.MathUtils.randomTriangular(-this.jitterX, this.jitterY)
                        }, e.prototype.end = function() {}, e
                    }();
                    t.JitterEffect = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(t) {
                ! function(t) {
                    var e = function() {
                        function e(t) {
                            this.centerX = 0, this.centerY = 0, this.radius = 0, this.angle = 0, this.worldX = 0, this.worldY = 0, this.radius = t
                        }
                        return e.prototype.begin = function(t) {
                            this.worldX = t.x + this.centerX, this.worldY = t.y + this.centerY
                        }, e.prototype.transform = function(n, i, r, o) {
                            var a = this.angle * t.MathUtils.degreesToRadians,
                                s = n.x - this.worldX,
                                l = n.y - this.worldY,
                                u = Math.sqrt(s * s + l * l);
                            if (u < this.radius) {
                                var c = e.interpolation.apply(0, a, (this.radius - u) / this.radius),
                                    h = Math.cos(c),
                                    p = Math.sin(c);
                                n.x = h * s - p * l + this.worldX, n.y = p * s + h * l + this.worldY
                            }
                        }, e.prototype.end = function() {}, e.interpolation = new t.PowOut(2), e
                    }();
                    t.SwirlEffect = e
                }(t.core || (t.core = {}))
            }(e || (e = {}));
            var e;
            ! function(e) {
                t.spine = e;
                var n = t.Texture.prototype;
                n._updateUvs || (n._updateUvs = n.updateUvs)
            }(e || (e = {}));
            var e;
            ! function(e) {
                function n(e) {
                    return e.type === t.loaders.Resource.TYPE.JSON
                }

                function i() {
                    return function(i, o) {
                        if (!i.data || !n(i) || !i.data.bones) return o();
                        var s = i.metadata || {},
                            l = s ? i.metadata.spineSkeletonScale : null,
                            u = s ? i.metadata.spineAtlas : null;
                        if (!1 === u) return o();
                        if (u && u.pages) {
                            var c = new e.core.SkeletonJson(new e.core.AtlasAttachmentLoader(u)),
                                h = c.readSkeletonData(i.data);
                            return i.spineData = h, i.spineAtlas = u, o()
                        }
                        var p = s.spineAtlasSuffix || ".atlas",
                            f = i.url.substr(0, i.url.lastIndexOf(".")) + p;
                        i.metadata && i.metadata.spineAtlasFile && (f = i.metadata.spineAtlasFile), f = f.replace(this.baseUrl, "");
                        var d = {
                                crossOrigin: i.crossOrigin,
                                xhrType: t.loaders.Resource.XHR_RESPONSE_TYPE.TEXT,
                                metadata: s.spineMetadata || null,
                                parentResource: i
                            },
                            m = {
                                crossOrigin: i.crossOrigin,
                                metadata: s.imageMetadata || null,
                                parentResource: i
                            },
                            g = i.url.substr(0, i.url.lastIndexOf("/") + 1);
                        g = g.replace(this.baseUrl, "");
                        var _ = s.imageNamePrefix || i.name + "_atlas_page_",
                            y = s.images ? a(s.images) : s.image ? a({
                                default: s.image
                            }) : s.imageLoader ? s.imageLoader(this, _, g, m) : r(this, _, g, m),
                            v = function(t) {
                                new e.core.TextureAtlas(t, y, function(t) {
                                    var n = new e.core.SkeletonJson(new e.core.AtlasAttachmentLoader(t));
                                    l && (n.scale = l), i.spineData = n.readSkeletonData(i.data), i.spineAtlas = t, o()
                                })
                            };
                        i.metadata && i.metadata.atlasRawData ? v(i.metadata.atlasRawData) : this.add(i.name + "_atlas", f, d, function(t) {
                            t.error ? o() : v(t.data)
                        })
                    }
                }

                function r(t, e, n, i) {
                    return n && n.lastIndexOf("/") !== n.length - 1 && (n += "/"),
                        function(r, o) {
                            function a() {
                                o(u.texture.baseTexture)
                            }
                            var s = e + r,
                                l = n + r,
                                u = t.resources[s];
                            u ? u.texture ? a() : u.onAfterMiddleware.add(a) : t.add(s, l, i, function(t) {
                                o(t.texture.baseTexture)
                            })
                        }
                }

                function o(e, n) {
                    return e && e.lastIndexOf("/") !== e.length - 1 && (e += "/"),
                        function(e, i) {
                            i(t.BaseTexture.fromImage(e, n))
                        }
                }

                function a(t) {
                    return function(e, n) {
                        var i = t[e] || t.default;
                        n(i && i.baseTexture ? i.baseTexture : i)
                    }
                }
                e.atlasParser = i, e.imageLoaderAdapter = r, e.syncImageLoaderAdapter = o, e.staticImageLoader = a, t.loaders.Loader && (t.loaders.Loader.addPixiMiddleware(i), t.loader.use(i()))
            }(e || (e = {})),
            function() {
                Math.fround || (Math.fround = Math.fround = function(t) {
                    return function(e) {
                        return t[0] = e, t[0]
                    }
                }(new Float32Array(1)))
            }();
            var e;
            ! function(e) {
                function i() {
                    var t = this.parent.worldTransform,
                        e = this.worldTransform,
                        n = this.localTransform;
                    e.a = n.a * t.a + n.b * t.c, e.b = n.a * t.b + n.b * t.d, e.c = n.c * t.a + n.d * t.c, e.d = n.c * t.b + n.d * t.d, e.tx = n.tx * t.a + n.ty * t.c + t.tx, e.ty = n.tx * t.b + n.ty * t.d + t.ty, this.worldAlpha = this.alpha * this.parent.worldAlpha, this._currentBounds = null
                }
                e.core.Bone.yDown = !0;
                var r = [0, 0, 0],
                    o = function(t) {
                        function e() {
                            var e = null !== t && t.apply(this, arguments) || this;
                            return e.region = null, e
                        }
                        return n(e, t), e
                    }(t.Sprite);
                e.SpineSprite = o;
                var a = function(t) {
                    function e(e, n, i, r, o) {
                        return t.call(this, e, n, i, r, o) || this
                    }
                    return n(e, t), e
                }(t.mesh.Mesh);
                e.SpineMesh = a;
                var s = function(s) {
                    function l(t) {
                        var n = s.call(this) || this;
                        if (!t) throw new Error("The spineData param is required.");
                        if ("string" == typeof t) throw new Error('spineData param cant be string. Please use spine.Spine.fromAtlas("YOUR_RESOURCE_NAME") from now on.');
                        n.spineData = t, n.skeleton = new e.core.Skeleton(t), n.skeleton.updateWorldTransform(), n.stateData = new e.core.AnimationStateData(t), n.state = new e.core.AnimationState(n.stateData), n.slotContainers = [], n.tempClipContainers = [];
                        for (var i = 0, r = n.skeleton.slots.length; i < r; i++) {
                            var o = n.skeleton.slots[i],
                                a = o.attachment,
                                l = n.newContainer();
                            if (n.slotContainers.push(l), n.addChild(l), n.tempClipContainers.push(null), a instanceof e.core.RegionAttachment) {
                                var u = a.region.name,
                                    c = n.createSprite(o, a, u);
                                o.currentSprite = c, o.currentSpriteName = u, l.addChild(c)
                            } else if (a instanceof e.core.MeshAttachment) {
                                var h = n.createMesh(o, a);
                                o.currentMesh = h, o.currentMeshName = a.name, l.addChild(h)
                            } else {
                                if (!(a instanceof e.core.ClippingAttachment)) continue;
                                n.createGraphics(o, a), l.addChild(o.clippingContainer), l.addChild(o.currentGraphics)
                            }
                        }
                        return n.autoUpdate = !0, n.tintRgb = new Float32Array([1, 1, 1]), n
                    }
                    return n(l, s), Object.defineProperty(l.prototype, "autoUpdate", {
                        get: function() {
                            return this.updateTransform === l.prototype.autoUpdateTransform
                        },
                        set: function(e) {
                            this.updateTransform = e ? l.prototype.autoUpdateTransform : t.Container.prototype.updateTransform
                        },
                        enumerable: !0,
                        configurable: !0
                    }), Object.defineProperty(l.prototype, "tint", {
                        get: function() {
                            return t.utils.rgb2hex(this.tintRgb)
                        },
                        set: function(e) {
                            this.tintRgb = t.utils.hex2rgb(e, this.tintRgb)
                        },
                        enumerable: !0,
                        configurable: !0
                    }), Object.defineProperty(l.prototype, "delayLimit", {
                        get: function() {
                            return (void 0 !== this.localDelayLimit ? this.localDelayLimit : l.globalDelayLimit) || Number.MAX_VALUE
                        },
                        enumerable: !0,
                        configurable: !0
                    }), l.prototype.update = function(n) {
                        var o = this.delayLimit;
                        n > o && (n = o), this.state.update(n), this.state.apply(this.skeleton), this.skeleton.updateWorldTransform();
                        var a = this.skeleton.slots,
                            s = this.color,
                            l = null,
                            u = null;
                        s ? (l = s.light, u = s.dark) : l = this.tintRgb;
                        for (var c = t.TransformBase && 1 == this.transformHack(), h = 0, p = a.length; h < p; h++) {
                            var f = a[h],
                                d = f.attachment,
                                m = this.slotContainers[h];
                            if (d) {
                                var g = null,
                                    _ = d.color;
                                if (d instanceof e.core.RegionAttachment) {
                                    var y = d.region;
                                    if (y) {
                                        f.currentMesh && (f.currentMesh.visible = !1, f.currentMesh = null, f.currentMeshName = void 0);
                                        var v = y;
                                        if (!f.currentSpriteName || f.currentSpriteName !== v.name) {
                                            var b = v.name;
                                            if (f.currentSprite && (f.currentSprite.visible = !1), f.sprites = f.sprites || {}, void 0 !== f.sprites[b]) f.sprites[b].visible = !0;
                                            else {
                                                var x = this.createSprite(f, d, b);
                                                m.addChild(x)
                                            }
                                            f.currentSprite = f.sprites[b], f.currentSpriteName = b
                                        }
                                    }
                                    if (m.transform) {
                                        var T = m.transform,
                                            w = T,
                                            S = null;
                                        w.matrix2d ? (S = w.matrix2d, w._dirtyVersion++, w.version = w._dirtyVersion, w.isStatic = !0, w.operMode = 0) : c ? (w.position && (T = new t.TransformBase, T._parentID = -1, T._worldID = m.transform._worldID, m.transform = T), S = T.localTransform) : w.setFromMatrix(f.bone.matrix), S && f.bone.matrix.copy(S)
                                    } else {
                                        var S = m.localTransform || new t.Matrix;
                                        f.bone.matrix.copy(S), m.localTransform = S, m.displayObjectUpdateTransform = i
                                    }
                                    f.currentSprite.color ? g = f.currentSprite.color : (r[0] = l[0] * f.color.r * _.r, r[1] = l[1] * f.color.g * _.g, r[2] = l[2] * f.color.b * _.b, f.currentSprite.tint = t.utils.rgb2hex(r)), f.currentSprite.blendMode = f.blendMode
                                } else if (d instanceof e.core.MeshAttachment) {
                                    if (f.currentSprite)
                                        if (f.currentSprite.visible = !1, f.currentSprite = null, f.currentSpriteName = void 0, m.transform) {
                                            var T = new t.TransformStatic;
                                            T._parentID = -1, T._worldID = m.transform._worldID, m.transform = T
                                        } else m.localTransform = new t.Matrix, m.displayObjectUpdateTransform = t.DisplayObject.prototype.updateTransform;
                                    if (!f.currentMeshName || f.currentMeshName !== d.name) {
                                        var P = d.name;
                                        if (f.currentMesh && (f.currentMesh.visible = !1), f.meshes = f.meshes || {}, void 0 !== f.meshes[P]) f.meshes[P].visible = !0;
                                        else {
                                            var M = this.createMesh(f, d);
                                            m.addChild(M)
                                        }
                                        f.currentMesh = f.meshes[P], f.currentMeshName = P
                                    }
                                    if (d.computeWorldVerticesOld(f, f.currentMesh.vertices), f.currentMesh.color) g = f.currentMesh.color;
                                    else if ("3" !== t.VERSION[0]) {
                                        var C = f.currentMesh.tintRgb;
                                        C[0] = l[0] * f.color.r * _.r, C[1] = l[1] * f.color.g * _.g, C[2] = l[2] * f.color.b * _.b
                                    }
                                    f.currentMesh.blendMode = f.blendMode
                                } else {
                                    if (!(d instanceof e.core.ClippingAttachment)) {
                                        m.visible = !1;
                                        continue
                                    }
                                    f.currentGraphics || (this.createGraphics(f, d), m.addChild(f.clippingContainer), m.addChild(f.currentGraphics)), this.updateGraphics(f, d)
                                }
                                if (m.visible = !0, g) {
                                    var E = f.color.r * _.r,
                                        O = f.color.g * _.g,
                                        I = f.color.b * _.b;
                                    g.setLight(l[0] * E + u[0] * (1 - E), l[1] * O + u[1] * (1 - O), l[2] * I + u[2] * (1 - I)), f.darkColor ? (E = f.darkColor.r, O = f.darkColor.g, I = f.darkColor.b) : (E = 0, O = 0, I = 0), g.setDark(l[0] * E + u[0] * (1 - E), l[1] * O + u[1] * (1 - O), l[2] * I + u[2] * (1 - I))
                                }
                                m.alpha = f.color.a
                            } else m.visible = !1
                        }
                        for (var R = this.skeleton.drawOrder, A = null, k = null, h = 0, p = R.length; h < p; h++) {
                            var f = a[R[h].data.index],
                                m = this.slotContainers[R[h].data.index];
                            if (k || null !== m.parent && m.parent !== this && (m.parent.removeChild(m), m.parent = this), f.currentGraphics && f.attachment) k = f.clippingContainer, A = f.attachment, k.children.length = 0, this.children[h] = m, A.endSlot == f.data && (A.endSlot = null);
                            else if (k) {
                                var L = this.tempClipContainers[h];
                                L || (L = this.tempClipContainers[h] = this.newContainer(), L.visible = !1), this.children[h] = L, m.parent = null, k.addChild(m), A.endSlot == f.data && (k.renderable = !0, k = null, A = null)
                            } else this.children[h] = m
                        }
                    }, l.prototype.setSpriteRegion = function(t, e, n) {
                        e.region = n, e.texture = n.texture, n.size ? (e.scale.x = n.size.width / n.originalWidth, e.scale.y = -n.size.height / n.originalHeight) : (e.scale.x = t.scaleX * t.width / n.originalWidth, e.scale.y = -t.scaleY * t.height / n.originalHeight)
                    }, l.prototype.setMeshRegion = function(t, e, n) {
                        e.region = n, e.texture = n.texture, n.texture._updateUvs(), t.updateUVs(n, e.uvs), e.dirty++
                    }, l.prototype.autoUpdateTransform = function() {
                        if (l.globalAutoUpdate) {
                            this.lastTime = this.lastTime || Date.now();
                            var e = .001 * (Date.now() - this.lastTime);
                            this.lastTime = Date.now(), this.update(e)
                        } else this.lastTime = 0;
                        t.Container.prototype.updateTransform.call(this)
                    }, l.prototype.createSprite = function(t, n, i) {
                        var r = n.region;
                        t.tempAttachment === n && (r = t.tempRegion, t.tempAttachment = null, t.tempRegion = null);
                        var o = r.texture,
                            a = this.newSprite(o);
                        return a.rotation = n.rotation * e.core.MathUtils.degRad, a.anchor.x = .5, a.anchor.y = .5, a.position.x = n.x, a.position.y = n.y, a.alpha = n.color.a, a.region = n.region, this.setSpriteRegion(n, a, n.region), t.sprites = t.sprites || {}, t.sprites[i] = a, a
                    }, l.prototype.createMesh = function(e, n) {
                        var i = n.region;
                        e.tempAttachment === n && (i = e.tempRegion, e.tempAttachment = null, e.tempRegion = null);
                        var r = this.newMesh(i.texture, new Float32Array(n.regionUVs.length), new Float32Array(n.regionUVs.length), new Uint16Array(n.triangles), t.mesh.Mesh.DRAW_MODES.TRIANGLES);
                        return r.canvasPadding = 1.5, r.alpha = n.color.a, r.region = n.region,
                            this.setMeshRegion(n, r, i), e.meshes = e.meshes || {}, e.meshes[n.name] = r, r
                    }, l.prototype.createGraphics = function(e, n) {
                        var i = this.newGraphics(),
                            r = new t.Polygon([]);
                        return i.clear(), i.beginFill(16777215, 1), i.drawPolygon(r), i.renderable = !1, e.currentGraphics = i, e.clippingContainer = this.newContainer(), e.clippingContainer.mask = e.currentGraphics, i
                    }, l.prototype.updateGraphics = function(t, e) {
                        var n = t.currentGraphics.graphicsData[0].shape.points,
                            i = e.worldVerticesLength;
                        n.length = i, e.computeWorldVertices(t, 0, i, n, 0, 2), t.currentGraphics.dirty++, t.currentGraphics.clearDirty++
                    }, l.prototype.hackTextureBySlotIndex = function(t, n, i) {
                        void 0 === n && (n = null), void 0 === i && (i = null);
                        var r = this.skeleton.slots[t];
                        if (!r) return !1;
                        var o = r.attachment,
                            a = o.region;
                        return n && (a = new e.core.TextureRegion, a.texture = n, a.size = i), r.currentSprite && r.currentSprite.region != a ? (this.setSpriteRegion(o, r.currentSprite, a), r.currentSprite.region = a) : r.currentMesh && r.currentMesh.region != a ? this.setMeshRegion(o, r.currentMesh, a) : (r.tempRegion = a, r.tempAttachment = o), !0
                    }, l.prototype.hackTextureBySlotName = function(t, e, n) {
                        void 0 === e && (e = null), void 0 === n && (n = null);
                        var i = this.skeleton.findSlotIndex(t);
                        return -1 != i && this.hackTextureBySlotIndex(i, e, n)
                    }, l.prototype.newContainer = function() {
                        return new t.Container
                    }, l.prototype.newSprite = function(t) {
                        return new o(t)
                    }, l.prototype.newGraphics = function() {
                        return new t.Graphics
                    }, l.prototype.newMesh = function(t, e, n, i, r) {
                        return new a(t, e, n, i, r)
                    }, l.prototype.transformHack = function() {
                        return 1
                    }, l.prototype.hackAttachmentGroups = function(t, e, n) {
                        if (t) {
                            for (var i = [], r = [], o = 0, a = this.skeleton.slots.length; o < a; o++) {
                                var s = this.skeleton.slots[o],
                                    l = s.currentSpriteName || s.currentMeshName || "",
                                    u = s.currentSprite || s.currentMesh;
                                l.endsWith(t) ? (u.parentGroup = e, r.push(u)) : n && u && (u.parentGroup = n, i.push(u))
                            }
                            return [i, r]
                        }
                    }, l.prototype.destroy = function(t) {
                        for (var e = 0, n = this.skeleton.slots.length; e < n; e++) {
                            var i = this.skeleton.slots[e];
                            for (var r in i.meshes) i.meshes[r].destroy(t);
                            i.meshes = null;
                            for (var o in i.sprites) i.sprites[o].destroy(t);
                            i.sprites = null
                        }
                        for (var e = 0, n = this.slotContainers.length; e < n; e++) this.slotContainers[e].destroy(t);
                        this.spineData = null, this.skeleton = null, this.slotContainers = null, this.stateData = null, this.state = null, this.tempClipContainers = null, s.prototype.destroy.call(this, t)
                    }, l.globalAutoUpdate = !0, l.globalDelayLimit = 0, l.clippingPolygon = [], l
                }(t.Container);
                e.Spine = s
            }(e || (e = {}))
        }), define("skbJet/componentManchester/spineLoader/SpineSubLoader", ["com/pixijs/pixi", "skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/AbstractSubLoader", "skbJet/component/resourceLoader/resourceLib", "com/pixijs/pixi-spine"], function(t, e, n, i) {
            function r(t) {
                t = t || {}, this._initOptions("spine", t)
            }
            return i.spine = i.spine || {}, r.prototype = new n, r.prototype._load = r.prototype.load, r.prototype.load = function(e, n) {
                this.loader = new t.loaders.Loader, this.loader.defaultQueryString = "", n.queryStr = null, this._load(e, n);
                var r = this;
                this.loader.on("load", function(t, e) {
                    e.spineData && (i.spine[e.name] = e), r._count.current++, r.options.onFileLoaded()
                }), this.loader.once("complete", function() {
                    r._count.current === r._count.total && (r._count.complete = !0, r.options.onFileLoaded())
                }), this.loader.on("error", this.options.onLoadFailed), this.loader.load()
            }, r.prototype._doLoadFile = function(t) {
                if ("json" === e.getFileExt(t)) {
                    var n = e.getFileNameWithoutExt(t);
                    this.loader.add(n, t)
                }
            }, r
        }), define("skbJet/componentManchester/rgsModel/proxyFix", [], function() {
            function t(t, e, n) {
                var i;
                if (n = n || "@name", t instanceof Array) {
                    for (i = 0; i < t.length; ++i)
                        if (t[i][n] === e) return t[i]
                } else if (t[n] === e) return t
            }

            function e(t) {
                return t
            }

            function n(t) {
                return t instanceof Array ? t : void 0 !== t ? [t] : []
            }

            function i(t) {
                return parseFloat(t) || 0
            }

            function r(t) {
                return parseInt(t, 10) || 0
            }

            function o(t) {
                return "true" === t
            }

            function a(t) {
                return t instanceof Array ? t : t ? [t] : []
            }
            return Object.freeze({
                namedNode: t,
                singleNode: e,
                multipleNode: n,
                toNumber: i,
                toInt: r,
                toBoolean: o,
                array: a
            })
        }), define("skbJet/componentManchester/rgsModel/proxyCachedNode", ["require", "./proxyFix"], function(t) {
            "use strict";

            function e(t, e) {
                var n = t.call(e);
                return n instanceof Object && (n = Object.freeze(n)), n
            }
            var n = t("./proxyFix");
            return function(t, i) {
                function r(r, o, a) {
                    var s, l = t[r];
                    if (a = a || "", p[r] || (p[r] = Object.create(null)), !i[r]) throw new Error("No model for " + r);
                    return p[r][a] || (l && (s = n.namedNode(l, a, o)), s && (p[r][a] = e(i[r], s))), p[r][a]
                }

                function o(r) {
                    var o = t[r];
                    if (!i[r]) throw new Error("No model for " + r);
                    return p[r] || (o = n.multipleNode(o), p[r] = o && Object.freeze(o.map(function(t) {
                        return e(i[r], t)
                    }))), p[r]
                }

                function a(r, o) {
                    var a = t[r];
                    if (!i[r]) throw new Error("No model for " + r);
                    if (!p[r]) {
                        var s;
                        a = n.multipleNode(a), a && (a.forEach(function(t) {
                            var n = e(i[r], t);
                            void 0 !== n && (s = s || {}, s[t[o]] = n)
                        }), s instanceof Object && (s = Object.freeze(s))), p[r] = s
                    }
                    return p[r]
                }

                function s(r) {
                    var o = t[r];
                    if (!i[r]) throw new Error("No model for " + r);
                    return !p[r] && o && (p[r] = e(i[r], n.singleNode(o))), p[r]
                }

                function l(t, e) {
                    return function(n) {
                        return r(t, e, n)
                    }
                }

                function u(t) {
                    return function() {
                        return s(t)
                    }
                }

                function c(t) {
                    return function() {
                        return o(t)
                    }
                }

                function h(t, e) {
                    return function() {
                        return a(t, e)
                    }
                }
                var p = Object.create(null);
                return Object.freeze({
                    named: l,
                    single: u,
                    multiple: c,
                    mapped: h
                })
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/ActionInput", [], function() {
            "use strict";
            return function() {
                return {
                    Action: this.Action
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/Balances", [], function() {
            "use strict";
            return function() {
                return this
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/HighlightOutcome", ["require", "./../proxyFix", "./../proxyCachedNode"], function(t) {
            "use strict";

            function e(t) {
                return t["#text"] ? 0 === t["#text"].length ? [] : t["#text"].split(",") : Object.freeze(n.multipleNode(t.Cell).map(function(t) {
                    return t["@name"]
                }, {}))
            }
            var n = t("./../proxyFix"),
                i = t("./../proxyCachedNode"),
                r = {
                    Highlight: function() {
                        return {
                            type: this["@type"],
                            cells: e(this)
                        }
                    }
                };
            return function() {
                var t = i(this, r);
                return {
                    type: this["@type"],
                    Highlight: t.mapped("Highlight", "@name").call(this)
                }
            }
        }), define("skbJet/componentManchester/rgsModel/proxyNode", ["require", "./proxyFix"], function(t) {
            "use strict";

            function e(t, e) {
                var n = t.call(e);
                return n instanceof Object && (n = Object.freeze(n)), n
            }
            var n = t("./proxyFix");
            return function(t, i) {
                function r(r) {
                    var o = t[r];
                    if (o) return o = n.multipleNode(o), Object.freeze(o.map(function(t) {
                        return e(i[r], t)
                    }))
                }

                function o(e) {
                    var r = t[e];
                    return Object.freeze(i[e].call(n.singleNode(r)))
                }

                function a(r, o) {
                    var a = t[r],
                        s = {};
                    if (a) return a = n.multipleNode(a), a.forEach(function(t) {
                        s[t[o]] = e(i[r], t)
                    }), Object.freeze(s)
                }
                return Object.freeze({
                    single: o,
                    multiple: r,
                    mapped: a
                })
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/JackpotOutcome", ["require", "./../proxyFix", "./../proxyNode"], function(t) {
            "use strict";
            var e = t("./../proxyFix"),
                n = t("./../proxyNode"),
                i = {
                    Jackpot: function() {
                        return {
                            id: this["@id"],
                            level: e.toInt(this["@level"]),
                            value: e.toNumber(this["@value"])
                        }
                    }
                };
            return function() {
                return n(this, i).mapped("Jackpot", "@name")
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/LadderOutcome", ["require", "./../proxyFix"], function(t) {
            "use strict";
            var e = t("./../proxyFix");
            return function() {
                return {
                    Ladder: {
                        Value: e.toInt(this.Ladder["#text"]),
                        Level: e.namedNode(this.Ladder["@level"])
                    }
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/MultiplierOutcome", ["require", "./../proxyFix", "./../proxyCachedNode"], function(t) {
            "use strict";
            var e = t("./../proxyFix"),
                n = t("./../proxyCachedNode"),
                i = {
                    Multiplier: function() {
                        return e.toNumber(this["#text"])
                    }
                };
            return function() {
                return {
                    Multiplier: n(this, i).named("Multiplier")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/OutcomeDetail", ["require", "./../proxyFix"], function(t) {
            "use strict";
            var e = t("./../proxyFix");
            return function() {
                return {
                    Stage: this.Stage,
                    NextStage: this.NextStage,
                    Balance: e.toNumber(this.Balance),
                    GameStatus: this.GameStatus,
                    Settled: e.toNumber(this.Settled),
                    Pending: e.toNumber(this.Pending),
                    Payout: e.toNumber(this.Payout)
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PatternSliderInput", ["require", "./../proxyFix"], function(t) {
            "use strict";
            var e = t("./../proxyFix");
            return function() {
                return {
                    BetPerPattern: e.toNumber(this.BetPerPattern),
                    PatternsBet: e.toNumber(this.PatternsBet)
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PickerOutcome", ["require", "./../proxyFix", "./../proxyNode", "./../proxyCachedNode"], function(t) {
            "use strict";
            var e = t("./../proxyFix"),
                n = t("./../proxyNode"),
                i = t("./../proxyCachedNode"),
                r = {
                    Feature: function() {
                        var t = this["@value"],
                            n = this["@type"];
                        switch (n) {
                            case "credits":
                            case "multiplier":
                                t = e.toInt(t)
                        }
                        return {
                            type: n,
                            value: t
                        }
                    }
                },
                o = {
                    Pick: function() {
                        var t = n(this, r);
                        return {
                            name: this["@name"],
                            picked: e.toBoolean(this["@picked"]),
                            Feature: t.multiple("Feature")
                        }
                    }
                },
                a = {
                    Layer: function() {
                        var t = n(this, o);
                        return {
                            index: e.toInt(this["@index"]),
                            Pick: t.multiple("Pick")
                        }
                    }
                };
            return function() {
                return {
                    Layer: i(this, a).named("Layer")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PickerSummaryOutcome", ["require", "./../proxyFix"], function(t) {
            "use strict";
            var e = t("./../proxyFix");
            return function() {
                return {
                    awarded: e.toInt(this.Awarded),
                    incrementTriggered: e.toBoolean(this.IncrementTriggered),
                    initAwarded: e.toInt(this.InitAwarded),
                    maxPicksAwarded: e.toBoolean(this.MaxPicksAwarded),
                    pickCount: e.toInt(this.PickCount),
                    picksRemaining: e.toInt(this.PicksRemaining),
                    CurrentLayer: Object.freeze({
                        index: e.toInt(this.CurrentLayer["@index"]),
                        name: this.CurrentLayer["@name"]
                    })
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PopulationOutcome", ["require", "./../proxyFix"], function(t) {
            "use strict";
            var e = t("./../proxyFix");
            return function() {
                if (this["#text"]) return this["#text"].split(",");
                var t = e.multipleNode(this.Entry);
                return {
                    stop: t.map(function(t) {
                        return e.toInt(t["@stripIndex"])
                    }),
                    map: t.reduce(function(t, n) {
                        return e.multipleNode(n.Cell).forEach(function(e) {
                            t[e["@name"]] = e["#text"]
                        }), t
                    }, {})
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PatternOutcome", ["require", "./../proxyFix"], function(t) {
            "use strict";
            var e = t("./../proxyFix");
            return function() {
                return this["#text"] ? this["#text"].split(",") : {
                    map: e.multipleNode(this.Pattern).reduce(function(t, n) {
                        return e.multipleNode(n.Cell).forEach(function(e) {
                            t[e["@name"]] = e["#text"]
                        }), t
                    }, {})
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PrizeOutcome", ["require", "./../proxyFix", "./../proxyCachedNode"], function(t) {
            "use strict";
            var e = t("./../proxyFix"),
                n = t("./../proxyCachedNode"),
                i = {
                    Prize: function() {
                        return {
                            betMultiplier: e.toInt(this["@betMultiplier"]),
                            multiplier: e.toInt(this["@multiplier"]),
                            name: this["@name"],
                            pay: e.toNumber(this["@pay"]),
                            payName: this["@payName"],
                            symbolCount: e.toInt(this["@symbolCount"]),
                            totalPay: e.toNumber(this["@totalPay"]),
                            ways: e.toInt(this["@ways"])
                        }
                    }
                };
            return function() {
                var t = n(this, i);
                return {
                    multiplier: e.toInt(this["@multiplier"]),
                    pay: e.toNumber(this["@pay"]),
                    stage: this["@stage"],
                    totalPay: e.toNumber(this["@totalPay"]),
                    type: this["@type"],
                    Prize: t.multiple("Prize").call(this)
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/TriggerOutcome", ["require", "./../proxyNode"], function(t) {
            "use strict";
            var e = t("./../proxyNode"),
                n = {
                    Trigger: function() {
                        return {
                            name: this["@name"],
                            priority: this["@priority"],
                            stageConnector: this["@stageConnector"]
                        }
                    }
                };
            return function() {
                var t = e(this, n);
                return {
                    component: this["@component"],
                    stage: this["@stage"],
                    Triggers: t.mapped("Trigger", "@name")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/AwardCapOutcome", ["require", "./../proxyFix"], function(t) {
            "use strict";
            var e = t("./../proxyFix");
            return function() {
                return {
                    AwardCapExceeded: e.toBoolean(this.AwardCapExceeded)
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/FreeSpinOutcome", ["require", "./../proxyFix"], function(t) {
            "use strict";
            var e = t("./../proxyFix");
            return function() {
                return {
                    Awarded: e.toInt(this.Awarded),
                    Count: e.toInt(this.Count),
                    Countdown: e.toInt(this.Countdown),
                    IncrementTriggered: e.toBoolean(this.IncrementTriggered),
                    InitAwarded: e.toInt(this.InitAwarded),
                    MaxAwarded: e.toBoolean(this.MaxAwarded),
                    MaxSpinsHit: e.toBoolean(this.MaxSpinsHit),
                    TotalAwarded: e.toInt(this.TotalAwarded)
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PickerInput", ["require", "./../proxyFix"], function(t) {
            "use strict";
            var e = t("./../proxyFix");
            return function() {
                var t = [],
                    n = e.multiple(this.Pick).reduce(function(e, n) {
                        var i = n["@name"];
                        return e[i] = n["#text"], t.push(i), e
                    }, {});
                return Object.freeze({
                    names: Object.freeze(t),
                    Picks: Object.freeze(n)
                })
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PlayerHistoryOutcome", ["require", "./../proxyCachedNode", "./../proxyFix"], function(t) {
            "use strict";
            var e = t("./../proxyCachedNode"),
                n = t("./../proxyFix"),
                i = {
                    PlayerHistory: function() {
                        return n.multipleNode(this.PastResult).reduce(function(t, e) {
                            return t[e["@index"]] = e["#text"], t
                        }, [])
                    }
                };
            return function() {
                return {
                    PlayerHistory: e(this, i).named("PlayerHistory")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/KeyValuePairOutcome", ["require", "./../proxyNode"], function(t) {
            "use strict";
            var e = t("./../proxyNode"),
                n = {
                    Mapping: function() {
                        return this["@value"]
                    }
                };
            return function() {
                return e(this, n).mapped("Mapping", "@key")
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/PromotionalFreeSpin", ["require", "./../proxyFix"], function(t) {
            "use strict";
            var e = t("./../proxyFix");
            return function() {
                return {
                    count: e.toInt(this["@count"])
                }
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/SymbolListOutcome", ["require", "./../proxyCachedNode"], function(t) {
            "use strict";
            var e = t("./../proxyCachedNode"),
                n = {
                    Symbol: function() {
                        return {
                            cell: this["@cellName"],
                            from: this["@moveFrom"],
                            symbol: this["@name"],
                            transform: this["@transforms"]
                        }
                    }
                };
            return function() {
                var t = e(this, n);
                return this.Symbol ? t.multiple("Symbol").call(this) : void 0
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse/WagerInput", ["require", "./../proxyFix"], function(t) {
            "use strict";
            var e = t("./../proxyFix");
            return function() {
                var t = e.multipleNode(this.Wager).map(function(t) {
                    return Object.freeze({
                        name: t["@name"],
                        wager: e.toInt(t["#text"])
                    })
                });
                return Object.freeze({
                    Wager: Object.freeze(t)
                })
            }
        }), define("skbJet/componentManchester/rgsModel/GameLogicResponse", ["require", "./proxyCachedNode", "./GameLogicResponse/ActionInput", "./GameLogicResponse/Balances", "./GameLogicResponse/HighlightOutcome", "./GameLogicResponse/JackpotOutcome", "./GameLogicResponse/LadderOutcome", "./GameLogicResponse/MultiplierOutcome", "./GameLogicResponse/OutcomeDetail", "./GameLogicResponse/PatternSliderInput", "./GameLogicResponse/PickerOutcome", "./GameLogicResponse/PickerSummaryOutcome", "./GameLogicResponse/PopulationOutcome", "./GameLogicResponse/PatternOutcome", "./GameLogicResponse/PrizeOutcome", "./GameLogicResponse/TriggerOutcome", "./GameLogicResponse/AwardCapOutcome", "./GameLogicResponse/FreeSpinOutcome", "./GameLogicResponse/PickerInput", "./GameLogicResponse/PlayerHistoryOutcome", "./GameLogicResponse/KeyValuePairOutcome", "./GameLogicResponse/PromotionalFreeSpin", "./GameLogicResponse/SymbolListOutcome", "./GameLogicResponse/WagerInput"], function(t) {
            "use strict";
            var e = t("./proxyCachedNode"),
                n = Object.freeze({
                    ActionInput: t("./GameLogicResponse/ActionInput"),
                    Balances: t("./GameLogicResponse/Balances"),
                    HighlightOutcome: t("./GameLogicResponse/HighlightOutcome"),
                    JackpotOutcome: t("./GameLogicResponse/JackpotOutcome"),
                    LadderOutcome: t("./GameLogicResponse/LadderOutcome"),
                    MultiplierOutcome: t("./GameLogicResponse/MultiplierOutcome"),
                    OutcomeDetail: t("./GameLogicResponse/OutcomeDetail"),
                    PatternSliderInput: t("./GameLogicResponse/PatternSliderInput"),
                    PickerOutcome: t("./GameLogicResponse/PickerOutcome"),
                    PickerSummaryOutcome: t("./GameLogicResponse/PickerSummaryOutcome"),
                    PopulationOutcome: t("./GameLogicResponse/PopulationOutcome"),
                    PatternOutcome: t("./GameLogicResponse/PatternOutcome"),
                    PrizeOutcome: t("./GameLogicResponse/PrizeOutcome"),
                    TriggerOutcome: t("./GameLogicResponse/TriggerOutcome"),
                    AwardCapOutcome: t("./GameLogicResponse/AwardCapOutcome"),
                    FreeSpinOutcome: t("./GameLogicResponse/FreeSpinOutcome"),
                    PickerInput: t("./GameLogicResponse/PickerInput"),
                    PlayerHistoryOutcome: t("./GameLogicResponse/PlayerHistoryOutcome"),
                    KeyValuePairOutcome: t("./GameLogicResponse/KeyValuePairOutcome"),
                    PromotionalFreeSpin: t("./GameLogicResponse/PromotionalFreeSpin"),
                    SymbolListOutcome: t("./GameLogicResponse/SymbolListOutcome"),
                    WagerInput: t("./GameLogicResponse/WagerInput")
                });
            return function(t) {
                var i = e(t, n);
                return Object.freeze({
                    ActionInput: i.named("ActionInput"),
                    Balances: i.single("Balances")(),
                    HighlightOutcome: i.named("HighlightOutcome"),
                    JackpotOutcome: i.mapped("JackpotOutcome", "@name"),
                    LadderOutcome: i.named("LadderOutcome"),
                    MultiplierOutcome: i.named("MultiplierOutcome"),
                    OutcomeDetail: i.single("OutcomeDetail")(),
                    PatternSliderInput: i.single("PatternSliderInput"),
                    PickerOutcome: i.named("PickerOutcome"),
                    PickerSummaryOutcome: i.named("PickerSummaryOutcome"),
                    PopulationOutcome: i.named("PopulationOutcome"),
                    PatternOutcome: i.named("PatternOutcome"),
                    PrizeOutcome: i.named("PrizeOutcome"),
                    TriggerOutcome: i.named("TriggerOutcome"),
                    AwardCapOutcome: i.named("AwardCapOutcome"),
                    FreeSpinOutcome: i.named("FreeSpinOutcome"),
                    PickerInput: i.named("PickerInput"),
                    PlayerHistoryOutcome: i.named("PlayerHistoryOutcome"),
                    KeyValuePairOutcome: i.named("KeyValuePairOutcome"),
                    PromotionalFreeSpin: i.single("PromotionalFreeSpin"),
                    SymbolListOutcome: i.named("SymbolListOutcome"),
                    WagerInput: i.named("WagerInput")
                })
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/AwardCapInfo", ["require", "./../proxyFix"], function(t) {
            "use strict";
            var e = t("./../proxyFix");
            return function() {
                return e.toNumber(this.CurrencyCap.AwardCap)
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/PaytableStatistics", [], function() {
            "use strict";
            return function() {
                return {
                    description: this["@description"],
                    maxRTP: this["@maxRTP"],
                    minRTP: this["@minRTP"],
                    name: this["@name"],
                    type: this["@type"]
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/PatternSliderInfo", ["require", "./../proxyFix", "./../proxyCachedNode"], function(t) {
            "use strict";
            var e = t("./../proxyFix"),
                n = t("./../proxyCachedNode"),
                i = {
                    BetInfo: function() {
                        return {
                            min: this["@min"],
                            max: this["@max"],
                            Step: e.multipleNode(this.Step)
                        }
                    },
                    PatternInfo: function() {
                        return {
                            min: this["@min"],
                            max: this["@max"],
                            Step: e.multipleNode(this.Step)
                        }
                    }
                };
            return function() {
                var t = n(this, i);
                return {
                    BetInfo: t.single("BetInfo"),
                    PatternInfo: t.single("PatternInfo")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/StripInfo", ["require", "./../proxyFix"], function(t) {
            "use strict";
            var e = t("./../proxyFix");
            return function() {
                return e.multipleNode(this.Strip).map(function(t) {
                    if (t["#text"]) return t["#text"].split(",");
                    var n = e.multipleNode(t.Stop);
                    return Object.keys(n).map(function(t) {
                        return n[t]["@symbolID"]
                    })
                })
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/LadderInfo", ["require", "./../proxyCachedNode"], function(t) {
            "use strict";
            var e = t("./../proxyCachedNode"),
                n = {
                    InputEvents: function() {
                        return {
                            isExtraIncrement: this["@isExtraIncrement"],
                            ladderIncrement: this["@ladderIncrement"]
                        }
                    },
                    OutputEvents: function() {
                        return {
                            minTriggerCount: this["@minTriggerCount"],
                            extraIncrement: this["@extraIncrement"]
                        }
                    }
                };
            return function() {
                var t = e(this, n);
                return {
                    InputEvents: t.mapped("InputEvents", "@triggerName"),
                    OutputEvents: t.mapped("OutputEvents", "@triggerName")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/TriggerInfo", ["require", "./../proxyFix", "./../proxyNode"], function(t) {
            "use strict";

            function e(t) {
                var e = t["@category"];
                if (!(r[e] instanceof Function)) throw new Error('No compiler for Condition with @category "' + e + '"');
                return r[e](t)
            }
            var n = t("./../proxyFix"),
                i = t("./../proxyNode"),
                r = {
                    TRIGGER: function(t) {
                        return function(e) {
                            return t["@value"] === e
                        }
                    },
                    OR: function(t) {
                        var i = n.multipleNode(t.Condition).map(function(t) {
                            return e(t)
                        });
                        return function(t) {
                            return i.some(function(e) {
                                return e(t)
                            })
                        }
                    },
                    AND: function(t) {
                        var i = n.multipleNode(t.Condition).map(function(t) {
                            return e(t)
                        });
                        return function(t) {
                            return i.every(function(e) {
                                return e(t)
                            })
                        }
                    },
                    NOT: function(t) {
                        var n = e(t.Condition);
                        return function(t) {
                            return !n(t)
                        }
                    }
                },
                o = {
                    Trigger: function() {
                        return {
                            priority: n.toInt(this["@priority"]),
                            Condition: e(this.Condition)
                        }
                    }
                };
            return function() {
                return {
                    Trigger: i(this, o).mapped("Trigger", "@name")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/KeyValuePairInfo", ["require", "./../proxyNode"], function(t) {
            "use strict";
            var e = t("./../proxyNode"),
                n = {
                    Mapping: function() {
                        return this["@value"]
                    }
                };
            return function() {
                return e(this, n).mapped("Mapping", "@key")
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/KeyValueListInfo", ["require", "./../proxyFix", "./../proxyNode"], function(t) {
            "use strict";
            var e = t("./../proxyFix"),
                n = t("./../proxyNode"),
                i = {
                    Mapping: function() {
                        return e.multipleNode(this.Entry).map(function(t) {
                            return t["@value"]
                        })
                    }
                };
            return function() {
                return n(this, i).mapped("Mapping", "@key")
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/MultiplierInfo", ["require", "./../proxyFix", "./../proxyNode", "./../proxyCachedNode"], function(t) {
            "use strict";
            var e = t("./../proxyFix"),
                n = t("./../proxyNode"),
                i = t("./../proxyCachedNode"),
                r = {
                    Action: function() {
                        return {
                            strategy: this["@strategy"],
                            value: e.toInt(this["@value"])
                        }
                    }
                },
                o = {
                    Trigger: function() {
                        return {
                            Action: n(this, r).multiple("Action")
                        }
                    }
                };
            return function() {
                return {
                    Trigger: i(this, o).named("Trigger")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/PickerInfo", ["require", "./../proxyFix", "./../proxyNode"], function(t) {
            "use strict";
            var e = t("./../proxyFix"),
                n = t("./../proxyNode"),
                i = {
                    Layer: function() {
                        return e.multipleNode(this.Pick).reduce(function(t, e) {
                            return t[e["@name"]] = e["@cellName"], t
                        }, {})
                    }
                };
            return function() {
                var t = n(this, i);
                return {
                    InitialLayer: e.toInt(this.InitialLayer),
                    InitialPickCount: e.toInt(this.InitialPickCount),
                    MaxPicksPerTurn: e.toInt(this.MaxPicksPerTurn),
                    MaxTotalPicks: e.toInt(this.MaxTotalPicks),
                    MinPicks: e.toInt(this.MinPicks),
                    Layers: t.mapped("Layer", "@index")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/PrizeInfo", ["require", "./../proxyFix", "./../proxyNode"], function(t) {
            "use strict";
            var e = t("./../proxyFix"),
                n = t("./../proxyNode"),
                i = {
                    PrizePay: function() {
                        return e.toInt(this["@value"])
                    }
                },
                r = {
                    Prize: function() {
                        var t = n(this, i);
                        return {
                            name: this["@name"],
                            PrizePay: t.mapped("PrizePay", "@count")
                        }
                    }
                };
            return function() {
                return {
                    Prize: n(this, r).multiple("Prize")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/SelectiveStackingInfo", ["require", "./../proxyNode"], function(t) {
            "use strict";
            var e = t("./../proxyNode"),
                n = {
                    SelectiveStackingSymbolList: function() {
                        return this["@name"]
                    }
                };
            return function() {
                var t = e(this, n);
                return {
                    DefaultSchema: this.DefaultSchema,
                    SelectiveStackingSymbolList: t.multiple("SelectiveStackingSymbolList")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/Jackpot", ["require", "./../proxyNode"], function(t) {
            "use strict";
            var e = t("./../proxyNode"),
                n = {
                    BetBandMap: function() {
                        return {
                            bandId: this["@bandId"]
                        }
                    }
                };
            return function() {
                var t = e(this, n);
                return {
                    id: this["@id"],
                    BetBandMap: t.mapped("BetBandMap", "@totalBet")
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/ChipValues", [], function() {
            "use strict";
            return function() {
                return {
                    min: this["@min"],
                    max: this["@min"],
                    Chip: this.Chip
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/GameData", ["require", "./../proxyCachedNode", "./ChipValues", "./KeyValuePairInfo"], function(t) {
            "use strict";
            var e = t("./../proxyCachedNode"),
                n = Object.freeze({
                    ChipValues: t("./ChipValues"),
                    KeyValuePairInfo: t("./KeyValuePairInfo")
                });
            return function() {
                var t = e(this, n);
                return Object.freeze({
                    ChipValues: t.single("ChipValues"),
                    KeyValuePairInfo: t.named("KeyValuePairInfo")
                })
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/TableInfo", ["require", "./../proxyFix", "./../proxyCachedNode"], function(t) {
            "use strict";
            var e = t("./../proxyFix"),
                n = t("./../proxyCachedNode"),
                i = {
                    Chips: function() {
                        return e.multipleNode(this.Chip)
                    }
                };
            return function() {
                return {
                    Chips: n(this, i).named("Chips", "@currency"),
                    MaxSpotBetDivider: e.toNumber(this.MaxSpotBetDivider),
                    MinChipValue: e.toNumber(this.MinChipValue),
                    SideBetMax: e.toNumber(this.SideBetMax),
                    SideBetMin: e.toNumber(this.SideBetMin),
                    TableMax: e.toNumber(this.TableMax),
                    TableMin: e.toNumber(this.TableMin)
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/GameBetInfo", ["require", "./../proxyFix"], function(t) {
            "use strict";
            var e = t("./../proxyFix");
            return function() {
                return {
                    MinChipValue: e.toNumber(this.MinChipValue),
                    MinBet: e.toNumber(this.MinBet),
                    MaxBet: e.toNumber(this.MaxBet),
                    MinSideBet: e.toNumber(this.MinSideBet),
                    MaxSideBet: e.toNumber(this.MaxSideBet)
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse/PersonalProgressiveInfo", ["require", "./../proxyFix"], function(t) {
            "use strict";
            var e = t("./../proxyFix");
            return function() {
                return {
                    precision: e.toNumber(this["@precision"]),
                    strategy: this["@strategy"]
                }
            }
        }), define("skbJet/componentManchester/rgsModel/PaytableResponse", ["require", "./proxyCachedNode", "./PaytableResponse/AwardCapInfo", "./PaytableResponse/PaytableStatistics", "./PaytableResponse/PatternSliderInfo", "./PaytableResponse/StripInfo", "./PaytableResponse/LadderInfo", "./PaytableResponse/TriggerInfo", "./PaytableResponse/KeyValuePairInfo", "./PaytableResponse/KeyValueListInfo", "./PaytableResponse/MultiplierInfo", "./PaytableResponse/PickerInfo", "./PaytableResponse/PrizeInfo", "./PaytableResponse/SelectiveStackingInfo", "./PaytableResponse/Jackpot", "./PaytableResponse/GameData", "./PaytableResponse/TableInfo", "./PaytableResponse/GameBetInfo", "./PaytableResponse/PersonalProgressiveInfo"], function(t) {
            "use strict";
            var e = t("./proxyCachedNode"),
                n = Object.freeze({
                    AwardCapInfo: t("./PaytableResponse/AwardCapInfo"),
                    PaytableStatistics: t("./PaytableResponse/PaytableStatistics"),
                    PatternSliderInfo: t("./PaytableResponse/PatternSliderInfo"),
                    StripInfo: t("./PaytableResponse/StripInfo"),
                    LadderInfo: t("./PaytableResponse/LadderInfo"),
                    TriggerInfo: t("./PaytableResponse/TriggerInfo"),
                    KeyValuePairInfo: t("./PaytableResponse/KeyValuePairInfo"),
                    KeyValueListInfo: t("./PaytableResponse/KeyValueListInfo"),
                    MultiplierInfo: t("./PaytableResponse/MultiplierInfo"),
                    PickerInfo: t("./PaytableResponse/PickerInfo"),
                    PrizeInfo: t("./PaytableResponse/PrizeInfo"),
                    SelectiveStackingInfo: t("./PaytableResponse/SelectiveStackingInfo"),
                    Jackpot: t("./PaytableResponse/Jackpot"),
                    GameData: t("./PaytableResponse/GameData"),
                    TableInfo: t("./PaytableResponse/TableInfo"),
                    GameBetInfo: t("./PaytableResponse/GameBetInfo"),
                    PersonalProgressiveInfo: t("./PaytableResponse/PersonalProgressiveInfo")
                });
            return function(t) {
                var i = e(t, n);
                return Object.freeze({
                    AwardCapInfo: i.single("AwardCapInfo"),
                    PaytableStatistics: i.single("PaytableStatistics"),
                    PatternSliderInfo: i.single("PatternSliderInfo"),
                    StripInfo: i.named("StripInfo"),
                    LadderInfo: i.named("LadderInfo"),
                    TriggerInfo: i.named("TriggerInfo"),
                    KeyValuePairInfo: i.named("KeyValuePairInfo"),
                    KeyValueListInfo: i.named("KeyValueListInfo"),
                    MultiplierInfo: i.named("MultiplierInfo"),
                    PickerInfo: i.named("PickerInfo"),
                    PrizeInfo: i.named("PrizeInfo"),
                    SelectiveStackingInfo: i.single("SelectiveStackingInfo"),
                    Jackpot: i.single("Jackpot"),
                    GameData: i.single("GameData"),
                    TableInfo: i.named("TableInfo"),
                    GameBetInfo: i.single("GameBetInfo"),
                    PersonalProgressiveInfo: i.single("PersonalProgressiveInfo")
                })
            }
        }), define("skbJet/componentManchester/rgsModel/CurrencyResponse", ["require", "./proxyFix"], function(t) {
            "use strict";
            var e = t("./proxyFix");
            return function(t) {
                return function(n, i, r) {
                    function o(t) {
                        return (t * r).toFixed(c)
                    }

                    function a(t, e) {
                        var n, i = o(t).split("."),
                            r = (+i[0]).toString(),
                            a = i[1] || 0;
                        if (f)
                            for (; n = r.match(/^(\d+)(\d\d\d)(.*)$/);) r = n[1].concat(f, n[2], n[3]);
                        return e = e && 0 == +a, h.concat(r, e ? "" : d, e ? "" : a, p)
                    }
                    i = i.toLowerCase();
                    var s = t.filter(function(t) {
                        return t["@currencyCode"] === n
                    });
                    s = s.find(function(t) {
                        return t["@language"] && t["@language"].toLowerCase() === i
                    }) || s.find(function(t) {
                        return void 0 === t["@language"]
                    });
                    var l = s["@currencyCode"],
                        u = "true" === s.MAJOR_SYMBOL_PADDING_SPACE ? " " : "",
                        c = e.toInt(s.DECIMAL_PRECISION),
                        h = "left" === s.MAJOR_SYMBOL_ALIGNMENT ? s.MAJOR_SYMBOL + u : "",
                        p = "right" === s.MAJOR_SYMBOL_ALIGNMENT ? u + s.MAJOR_SYMBOL : "",
                        f = ("yes" === s.USE_THOUSANDS_SEPARATOR ? s.THOUSANDS_SEPARATOR : "").replace("_", " "),
                        d = (c ? s.DECIMAL_SEPARATOR : "").replace("_", " ");
                    return r = r || Math.pow(10, -c), Object.freeze({
                        toString: function() {
                            return l
                        },
                        toStakeUnits: function(t) {
                            return t / r
                        },
                        toCurrency: o,
                        formatFloat: function(t, e) {
                            return a(t / r, e)
                        },
                        format: a,
                        formatShort: function(t) {
                            return a(t, 1)
                        },
                        formatLong: function(t) {
                            return a(t, 0)
                        }
                    })
                }
            }
        }), define("skbJet/componentManchester/rgsModel/rgsModel", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "./GameLogicResponse", "./PaytableResponse", "./CurrencyResponse"], function(t) {
            "use strict";

            function e(t) {
                s.gameLogic = r(t.GameLogicResponse), s.paytable = o(t.PaytableResponse), s.currency = a(t.CurrencyResponse)
            }

            function n(t) {
                s.gameLogic = r(t.response)
            }
            var i = t("skbJet/component/gameMsgBus/GameMsgBus"),
                r = t("./GameLogicResponse"),
                o = t("./PaytableResponse"),
                a = t("./CurrencyResponse"),
                s = Object.seal({
                    gameLogic: {},
                    paytable: {},
                    currency: {}
                });
            return i.subscribe("platformMsg/ClientService/Game.Init", e), i.subscribe("onResolveStage", n), s
        }), define("skbJet/component/currencyHelper/Currency", [], function() {
            function t(t) {
                this.currencyData = t, this.decimalPrecision = Number(t.DECIMAL_PRECISION)
            }

            function e(t, e) {
                var n = Math.floor(t);
                if ("no" === e.USE_THOUSANDS_SEPARATOR) return n + "";
                for (var i = ""; n.toString().length > 3;) {
                    var r = n.toString().length - 3,
                        o = e.THOUSANDS_SEPARATOR;
                    o = "_" === o ? " " : o, i = o + n.toString().substring(r) + i, n = parseInt(n.toString().substring(0, r))
                }
                return i = n + i
            }

            function n(t, e, n) {
                if (!isNaN(t = Number(t))) {
                    if (n <= 0) return "";
                    var i = t.toFixed(n),
                        r = i.indexOf(".");
                    return -1 === r ? "" : e.DECIMAL_SEPARATOR + i.substring(r + 1)
                }
            }
            return t.prototype.formatBalance = function(t) {
                var i = e(Number(t), this.currencyData) + n(Number(t), this.currencyData, this.decimalPrecision);
                return "left" === this.currencyData.MAJOR_SYMBOL_ALIGNMENT ? i = "false" === this.currencyData.MAJOR_SYMBOL_PADDING_SPACE || !1 === this.currencyData.MAJOR_SYMBOL_PADDING_SPACE ? this.currencyData.MAJOR_SYMBOL + i : this.currencyData.MAJOR_SYMBOL + " " + i : "false" === this.currencyData.MAJOR_SYMBOL_PADDING_SPACE || !1 === this.currencyData.MAJOR_SYMBOL_PADDING_SPACE ? i += this.currencyData.MAJOR_SYMBOL : i = i + " " + this.currencyData.MAJOR_SYMBOL, i
            }, t.prototype.formatDecimal = function(t) {
                return t = Number(t), this.decimalPrecision <= 0 ? t : t.toFixed(this.decimalPrecision)
            }, t.prototype.formatFloat = function(t) {
                return t = Number(t), Number(this.decimalPrecision <= 0 ? t : t.toFixed(this.decimalPrecision))
            }, t.prototype.getCurrencyCode = function() {
                return this.currencyData["@currencyCode"]
            }, t
        }), define("skbJet/component/currencyHelper/currencyHelper", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/currencyHelper/Currency"], function(t, e) {
            function n(t) {
                if (Array.isArray(t.CurrencyResponse))
                    for (var n = 0; n < t.CurrencyResponse.length; n++) {
                        var i = new e(t.CurrencyResponse[n].CURRENCY);
                        f[i.getCurrencyCode()] = i
                    } else {
                        var i = new e(t.CurrencyResponse.CURRENCY);
                        f[p] = i
                    }
            }

            function i(t) {
                h = Number(t.serverConfig.denomamount), p = t.gameConfig.currencycode
            }

            function r(t, e) {
                return e || (e = p), f[e] ? f[e].formatBalance(t) : ""
            }

            function o(t) {
                return l(t.replace(/[^\d.]/g, ""))
            }

            function a(t, e) {
                return e || (e = p), f[e] ? f[e].formatDecimal(t) : ""
            }

            function s(t) {
                if (!isNaN(t = Number(t))) return parseInt(t)
            }

            function l(t, e) {
                return e || (e = p), f[e] ? f[e].formatFloat(t) : ""
            }

            function u(t) {
                return t * (1e3 * h) / 1e3
            }

            function c(t) {
                return 1e3 * t / (1e3 * h)
            }
            var h, p, f = {};
            return t.subscribe("platformMsg/ClientService/Game.Init", n), t.subscribe("platformMsg/Kernel/System.Init", i), {
                formatBalance: r,
                formatFloat: l,
                formatInteger: s,
                convertToNumber: o,
                formatDecimal: a,
                fromStakeUnits: u,
                toStakeUnits: c
            }
        }), define("skbJet/componentManchester/commonUI/slot/betData", ["require", "skbJet/component/gameMsgBus/GameMsgBus"], function(t) {
            function e(t) {
                var e = t.PaytableResponse.PatternSliderInfo,
                    n = t.GameLogicResponse.PatternSliderInput;
                i._betInfo = e.BetInfo.Step instanceof Array ? e.BetInfo.Step : [e.BetInfo.Step], i._patternInfo = e.PatternInfo.Step instanceof Array ? e.PatternInfo.Step : [e.PatternInfo.Step], i._patternsBet = n.PatternsBet, i._betPerPattern = n.BetPerPattern
            }
            var n = t("skbJet/component/gameMsgBus/GameMsgBus"),
                i = {
                    _betPerPattern: 0,
                    _patternsBet: 0,
                    _betInfo: null,
                    _patternInfo: null
                };
            return n.subscribe("platformMsg/ClientService/Game.Init", e), {
                get _betPerPattern() {
                    return i._betPerPattern
                },
                set _betPerPattern(t) {
                    i._betPerPattern = t, n.publish("BetData.BetPerPattern", t), n.publish("BetData.TotalBet", this.totalBet)
                },
                get _patternsBet() {
                    return i._patternsBet
                },
                set _patternsBet(t) {
                    i._patternsBet = t, n.publish("BetData.PatternsBet", t), n.publish("BetData.TotalBet", this.totalBet)
                },
                get betPerPattern() {
                    return i._betPerPattern
                },
                get maxBetPerPattern() {
                    return i._betInfo[i._betInfo.length - 1]
                },
                get minBetPerPattern() {
                    return i._betInfo[0]
                },
                get patternsBet() {
                    return i._patternsBet
                },
                get maxPatternsBet() {
                    return i._patternInfo[i._patternInfo.length - 1]
                },
                get minPatternsBet() {
                    return i._patternInfo[0]
                },
                get betInfo() {
                    return i._betInfo
                },
                get patternInfo() {
                    return i._patternInfo
                },
                get totalBet() {
                    return i._betPerPattern * i._patternsBet
                },
                get maxTotalBet() {
                    return this.maxPatternsBet * this.maxBetPerPattern
                },
                get minTotalBet() {
                    return this.minPatternsBet * this.minBetPerPattern
                }
            }
        }), define("skbJet/componentManchester/commonUI/slot/layouts/desktop", [], function() {
            var t = {
                    x: 1331,
                    y: 407,
                    enabledTexture: "desktop_skipButtonEnabled",
                    disabledTexture: "desktop_skipButtonDisabled",
                    pressedTexture: "desktop_skipButtonPressed",
                    overTexture: "desktop_skipButtonOver"
                },
                e = {
                    x: 1331,
                    y: 407,
                    enabledTexture: "desktop_playButtonEnabled",
                    disabledTexture: "desktop_playButtonDisabled",
                    pressedTexture: "desktop_playButtonPressed",
                    overTexture: "desktop_playButtonOver"
                },
                n = {
                    x: 1331,
                    y: 407,
                    targetTexture: "desktop_playButtonEnabled"
                };
            return {
                baseGame: {
                    footer: {
                        x: 720,
                        y: 740,
                        height: 70,
                        frame: "desktop_basegameMeter",
                        dividerFrame: "desktop_basegameMeterDivider",
                        fixedWidth: !1,
                        patternsBet: {
                            minWidth: 140,
                            visible: !0,
                            _valueText: {
                                y: -2
                            },
                            _labelText: {
                                y: 27
                            },
                            pivot: {
                                y: 22.5
                            },
                            multiline: !0,
                            valueStyle: {
                                fontSize: 22
                            },
                            labelStyle: {
                                fontSize: 18
                            },
                            index: 1
                        },
                        betPerPattern: {
                            minWidth: 140,
                            visible: !0,
                            _valueText: {
                                y: -2
                            },
                            _labelText: {
                                y: 27
                            },
                            pivot: {
                                y: 22.5
                            },
                            multiline: !0,
                            valueStyle: {
                                fontSize: 22
                            },
                            labelStyle: {
                                fontSize: 18
                            },
                            index: 2
                        },
                        totalBet: {
                            minWidth: 140,
                            visible: !0,
                            _valueText: {
                                y: -2
                            },
                            _labelText: {
                                y: 27
                            },
                            pivot: {
                                y: 22.5
                            },
                            multiline: !0,
                            valueStyle: {
                                fontSize: 22
                            },
                            labelStyle: {
                                fontSize: 18
                            },
                            index: 3,
                            buttonsVisible: !0,
                            plus: {
                                x: 85,
                                y: 22.5,
                                enabledTexture: "desktop_plusButtonEnabled",
                                disabledTexture: "desktop_plusButtonDisabled",
                                pressedTexture: "desktop_plusButtonPressed",
                                overTexture: "desktop_plusButtonOver"
                            },
                            minus: {
                                x: -85,
                                y: 22.5,
                                enabledTexture: "desktop_minusButtonEnabled",
                                disabledTexture: "desktop_minusButtonDisabled",
                                pressedTexture: "desktop_minusButtonPressed",
                                overTexture: "desktop_minusButtonOver"
                            }
                        },
                        win: {
                            minWidth: 140,
                            _valueText: {
                                y: -2
                            },
                            _labelText: {
                                y: 27
                            },
                            pivot: {
                                y: 22.5
                            },
                            multiline: !0,
                            valueStyle: {
                                fontSize: 22
                            },
                            labelStyle: {
                                fontSize: 18
                            },
                            index: 4
                        },
                        balance: {
                            minWidth: 140,
                            _valueText: {
                                y: -2
                            },
                            _labelText: {
                                y: 27
                            },
                            pivot: {
                                y: 22.5
                            },
                            multiline: !0,
                            valueStyle: {
                                fontSize: 22
                            },
                            labelStyle: {
                                fontSize: 18
                            },
                            index: 5
                        },
                        promoSpins: {
                            minWidth: 140,
                            _valueText: {
                                y: -2
                            },
                            _labelText: {
                                y: 27
                            },
                            pivot: {
                                y: 22.5
                            },
                            multiline: !0,
                            valueStyle: {
                                fontSize: 22
                            },
                            labelStyle: {
                                fontSize: 18
                            },
                            index: 5
                        }
                    },
                    spin: {
                        x: 1331,
                        y: 407,
                        enabledTexture: "desktop_spinButtonEnabled",
                        disabledTexture: "desktop_spinButtonDisabled",
                        pressedTexture: "desktop_spinButtonPressed",
                        overTexture: "desktop_spinButtonOver"
                    },
                    skip: t,
                    play: e,
                    autoSpin: {
                        x: 1331,
                        y: 305,
                        _meter: {
                            y: -75,
                            frame: "desktop_autoSpinCounterBackground"
                        },
                        _startButton: {
                            enabledTexture: "desktop_autoSpinButtonEnabled",
                            disabledTexture: "desktop_autoSpinButtonDisabled",
                            pressedTexture: "desktop_autoSpinButtonPressed",
                            overTexture: "desktop_autoSpinButtonOver"
                        },
                        _stopButton: {
                            enabledTexture: "desktop_autoSpinStopButtonEnabled",
                            disabledTexture: "desktop_autoSpinStopButtonDisabled",
                            pressedTexture: "desktop_autoSpinStopButtonPressed",
                            overTexture: "desktop_autoSpinStopButtonOver"
                        }
                    },
                    activityAnim: n,
                    betConfig: null,
                    prompt: null
                },
                freeSpins: {
                    footer: {
                        x: 720,
                        y: 740,
                        height: 70,
                        frame: "desktop_freeSpinsMeter",
                        dividerFrame: "desktop_freeSpinsMeterDivider",
                        fixedWidth: !1,
                        spins: {
                            minWidth: 140,
                            _valueText: {
                                y: -2
                            },
                            _labelText: {
                                y: 27
                            },
                            pivot: {
                                y: 22.5
                            },
                            multiline: !0,
                            valueStyle: {
                                fontSize: 22
                            },
                            labelStyle: {
                                fontSize: 18
                            },
                            index: 1
                        },
                        win: {
                            minWidth: 140,
                            _valueText: {
                                y: -2
                            },
                            _labelText: {
                                y: 27
                            },
                            pivot: {
                                y: 22.5
                            },
                            multiline: !0,
                            valueStyle: {
                                fontSize: 22
                            },
                            labelStyle: {
                                fontSize: 18
                            },
                            index: 2
                        },
                        bonusWin: {
                            minWidth: 140,
                            _valueText: {
                                y: -2
                            },
                            _labelText: {
                                y: 27
                            },
                            pivot: {
                                y: 22.5
                            },
                            multiline: !0,
                            valueStyle: {
                                fontSize: 22
                            },
                            labelStyle: {
                                fontSize: 18
                            },
                            index: 3
                        }
                    },
                    skip: t,
                    play: e,
                    activityAnim: n
                }
            }
        }), define("skbJet/componentManchester/commonUI/slot/layouts/landscape", [], function() {
            var t = {
                    x: 1331,
                    y: 407,
                    enabledTexture: "landscape_skipButtonEnabled",
                    disabledTexture: "landscape_skipButtonDisabled",
                    pressedTexture: "landscape_skipButtonPressed",
                    overTexture: "landscape_skipButtonOver"
                },
                e = {
                    x: 1331,
                    y: 407,
                    enabledTexture: "landscape_playButtonEnabled",
                    disabledTexture: "landscape_playButtonDisabled",
                    pressedTexture: "landscape_playButtonPressed",
                    overTexture: "landscape_playButtonOver"
                },
                n = {
                    x: 1331,
                    y: 407,
                    targetTexture: "landscape_playButtonEnabled"
                },
                i = {
                    frame: "landscape_betControlsBackground",
                    _labelText: {
                        y: 108
                    },
                    _valueText: {
                        y: 42
                    },
                    multiline: !0,
                    pivot: {
                        y: 98
                    },
                    plus: {
                        x: 362,
                        y: 98,
                        enabledTexture: "landscape_plusButtonEnabled",
                        disabledTexture: "landscape_plusButtonDisabled",
                        pressedTexture: "landscape_plusButtonPressed",
                        overTexture: "landscape_plusButtonOver"
                    },
                    minus: {
                        x: -352,
                        y: 98,
                        enabledTexture: "landscape_minusButtonEnabled",
                        disabledTexture: "landscape_minusButtonDisabled",
                        pressedTexture: "landscape_minusButtonPressed",
                        overTexture: "landscape_minusButtonOver"
                    },
                    pips: {
                        x: 0,
                        y: 150
                    },
                    pipActiveFrame: "landscape_betIndicatorActive",
                    pipInactiveFrame: "landscape_betIndicatorActive"
                };
            return {
                baseGame: {
                    footer: {
                        x: 720,
                        y: 760,
                        height: 50,
                        fixedWidth: 1440,
                        frame: "landscape_basegameMeter",
                        dividerFrame: "landscape_basegameMeterDivider",
                        patternsBet: null,
                        betPerPattern: null,
                        totalBet: {
                            minWidth: 120,
                            _labelText: {
                                y: 0
                            },
                            _valueText: {
                                y: 0
                            },
                            pivot: {
                                y: 10
                            },
                            multiline: !1,
                            valueStyle: {
                                fontSize: 24
                            },
                            index: 1
                        },
                        win: {
                            minWidth: 120,
                            _labelText: {
                                y: 0
                            },
                            _valueText: {
                                y: 0
                            },
                            pivot: {
                                y: 10
                            },
                            multiline: !1,
                            valueStyle: {
                                fontSize: 24
                            },
                            index: 2
                        },
                        balance: {
                            minWidth: 120,
                            _labelText: {
                                y: 0
                            },
                            _valueText: {
                                y: 0
                            },
                            pivot: {
                                y: 10
                            },
                            multiline: !1,
                            valueStyle: {
                                fontSize: 24
                            },
                            index: 3
                        },
                        promoSpins: {
                            minWidth: 120,
                            _labelText: {
                                y: 0
                            },
                            _valueText: {
                                y: 0
                            },
                            pivot: {
                                y: 10
                            },
                            multiline: !1,
                            valueStyle: {
                                fontSize: 24
                            },
                            index: 3
                        }
                    },
                    spin: {
                        x: 1331,
                        y: 407,
                        enabledTexture: "landscape_spinButtonEnabled",
                        disabledTexture: "landscape_spinButtonDisabled",
                        pressedTexture: "landscape_spinButtonPressed",
                        overTexture: "landscape_spinButtonOver"
                    },
                    skip: t,
                    play: e,
                    autoSpin: {
                        x: 1331,
                        y: 270,
                        _meter: {
                            y: -75,
                            frame: "landscape_autoSpinCounterBackground"
                        },
                        _startButton: {
                            enabledTexture: "landscape_autoSpinButtonEnabled",
                            disabledTexture: "landscape_autoSpinButtonDisabled",
                            pressedTexture: "landscape_autoSpinButtonPressed",
                            overTexture: "landscape_autoSpinButtonOver"
                        },
                        _stopButton: {
                            enabledTexture: "landscape_autoSpinStopButtonEnabled",
                            disabledTexture: "landscape_autoSpinStopButtonDisabled",
                            pressedTexture: "landscape_autoSpinStopButtonPressed",
                            overTexture: "landscape_autoSpinStopButtonOver"
                        }
                    },
                    activityAnim: n,
                    betConfig: {
                        openButton: {
                            x: 114,
                            y: 407,
                            enabledTexture: "landscape_betControlsButtonEnabled",
                            disabledTexture: "landscape_betControlsButtonDisabled",
                            pressedTexture: "landscape_betControlsButtonPressed",
                            overTexture: "landscape_betControlsButtonOver"
                        },
                        closeButton: {
                            x: 1331,
                            y: 407,
                            enabledTexture: "landscape_acceptButtonEnabled",
                            disabledTexture: "landscape_acceptButtonDisabled",
                            pressedTexture: "landscape_acceptButtonPressed",
                            overTexture: "landscape_acceptButtonOver"
                        },
                        controls: {
                            x: 720,
                            y: 408,
                            anchor: {
                                y: .5
                            }
                        },
                        totalBet: i,
                        betPerPattern: i,
                        patternsBet: i,
                        betSummary: i,
                        meterBar: {
                            x: -411,
                            y: -175,
                            frame: "landscape_betControlsBackgroundTop",
                            betPerPattern: {
                                x: 616,
                                y: 30,
                                multiline: !1,
                                pivot: {
                                    y: 12
                                }
                            },
                            patternsBet: {
                                x: 205,
                                y: 30,
                                multiline: !1,
                                pivot: {
                                    y: 12
                                }
                            }
                        }
                    },
                    prompt: {
                        x: 490,
                        y: 350,
                        _text: {
                            x: 33,
                            y: 0
                        },
                        textStyle: {
                            fontSize: 32
                        },
                        enabledTexture: "landscape_messagePrompt"
                    }
                },
                freeSpins: {
                    footer: {
                        x: 720,
                        y: 760,
                        height: 50,
                        fixedWidth: 1440,
                        frame: "landscape_freeSpinsMeter",
                        dividerFrame: "landscape_freeSpinsMeterDivider",
                        spins: {
                            minWidth: 120,
                            _labelText: {
                                y: 0
                            },
                            _valueText: {
                                y: 0
                            },
                            pivot: {
                                y: 10
                            },
                            multiline: !1,
                            valueStyle: {
                                fontSize: 24
                            },
                            index: 1
                        },
                        win: {
                            minWidth: 120,
                            _labelText: {
                                y: 0
                            },
                            _valueText: {
                                y: 0
                            },
                            pivot: {
                                y: 10
                            },
                            multiline: !1,
                            valueStyle: {
                                fontSize: 24
                            },
                            index: 2
                        },
                        bonusWin: {
                            minWidth: 120,
                            _labelText: {
                                y: 0
                            },
                            _valueText: {
                                y: 0
                            },
                            pivot: {
                                y: 10
                            },
                            multiline: !1,
                            valueStyle: {
                                fontSize: 24
                            },
                            index: 3
                        }
                    },
                    skip: t,
                    play: e,
                    activityAnim: n
                }
            }
        }), define("skbJet/componentManchester/commonUI/slot/layouts/portrait", [], function() {
            var t = {
                    x: 405,
                    y: 985,
                    enabledTexture: "portrait_skipButtonEnabled",
                    disabledTexture: "portrait_skipButtonDisabled",
                    pressedTexture: "portrait_skipButtonPressed",
                    overTexture: "portrait_skipButtonOver"
                },
                e = {
                    x: 405,
                    y: 985,
                    enabledTexture: "portrait_playButtonEnabled",
                    disabledTexture: "portrait_playButtonDisabled",
                    pressedTexture: "portrait_playButtonPressed",
                    overTexture: "portrait_playButtonOver"
                },
                n = {
                    x: 405,
                    y: 985,
                    targetTexture: "portrait_playButtonEnabled"
                },
                i = {
                    frame: "portrait_betControlsBackground",
                    _labelText: {
                        y: 108
                    },
                    _valueText: {
                        y: 42
                    },
                    pivot: {
                        y: 98
                    },
                    multiline: !0,
                    plus: {
                        x: 318,
                        y: 97,
                        enabledTexture: "portrait_plusButtonEnabled",
                        disabledTexture: "portrait_plusButtonDisabled",
                        pressedTexture: "portrait_plusButtonPressed",
                        overTexture: "portrait_plusButtonOver"
                    },
                    minus: {
                        x: -308,
                        y: 97,
                        enabledTexture: "portrait_minusButtonEnabled",
                        disabledTexture: "portrait_minusButtonDisabled",
                        pressedTexture: "portrait_minusButtonPressed",
                        overTexture: "portrait_minusButtonOver"
                    },
                    pips: {
                        y: 150
                    },
                    pipActiveFrame: "portrait_betIndicatorActive",
                    pipInactiveFrame: "portrait_betIndicatorActive"
                };
            return {
                baseGame: {
                    footer: {
                        x: 405,
                        y: 1128,
                        height: 100,
                        fixedWidth: 810,
                        frame: "portrait_basegameMeter",
                        dividerFrame: "portrait_basegameMeterDivider",
                        patternsBet: null,
                        betPerPattern: null,
                        totalBet: {
                            minWidth: 120,
                            _labelText: {
                                y: 38
                            },
                            _valueText: {
                                y: -2
                            },
                            pivot: {
                                y: 27
                            },
                            multiline: !0,
                            valueStyle: {
                                fontSize: 32
                            },
                            labelStyle: {
                                fontSize: 24
                            },
                            index: 1,
                            buttonsVisible: !1,
                            plus: null,
                            minus: null
                        },
                        win: {
                            minWidth: 120,
                            _labelText: {
                                y: 38
                            },
                            _valueText: {
                                y: -2
                            },
                            pivot: {
                                y: 27
                            },
                            multiline: !0,
                            valueStyle: {
                                fontSize: 32
                            },
                            labelStyle: {
                                fontSize: 24
                            },
                            index: 2
                        },
                        balance: {
                            minWidth: 120,
                            _labelText: {
                                y: 38
                            },
                            _valueText: {
                                y: -2
                            },
                            pivot: {
                                y: 27
                            },
                            multiline: !0,
                            valueStyle: {
                                fontSize: 32
                            },
                            labelStyle: {
                                fontSize: 24
                            },
                            index: 3
                        },
                        promoSpins: {
                            minWidth: 120,
                            _labelText: {
                                y: 38
                            },
                            _valueText: {
                                y: -2
                            },
                            pivot: {
                                y: 27
                            },
                            multiline: !0,
                            valueStyle: {
                                fontSize: 32
                            },
                            labelStyle: {
                                fontSize: 24
                            },
                            index: 3
                        }
                    },
                    spin: {
                        x: 405,
                        y: 985,
                        enabledTexture: "portrait_spinButtonEnabled",
                        disabledTexture: "portrait_spinButtonDisabled",
                        pressedTexture: "portrait_spinButtonPressed",
                        overTexture: "portrait_spinButtonOver"
                    },
                    skip: t,
                    play: e,
                    autoSpin: {
                        x: 660,
                        y: 985,
                        _meter: {
                            y: -100,
                            frame: "portrait_autoSpinCounterBackground"
                        },
                        _startButton: {
                            enabledTexture: "portrait_autoSpinButtonEnabled",
                            disabledTexture: "portrait_autoSpinButtonDisabled",
                            pressedTexture: "portrait_autoSpinButtonPressed",
                            overTexture: "portrait_autoSpinButtonOver"
                        },
                        _stopButton: {
                            enabledTexture: "portrait_autoSpinStopButtonEnabled",
                            disabledTexture: "portrait_autoSpinStopButtonDisabled",
                            pressedTexture: "portrait_autoSpinStopButtonPressed",
                            overTexture: "portrait_autoSpinStopButtonOver"
                        }
                    },
                    activityAnim: n,
                    betConfig: {
                        openButton: {
                            x: 150,
                            y: 985,
                            enabledTexture: "portrait_betControlsButtonEnabled",
                            disabledTexture: "portrait_betControlsButtonDisabled",
                            pressedTexture: "portrait_betControlsButtonPressed",
                            overTexture: "portrait_betControlsButtonOver"
                        },
                        closeButton: {
                            x: 405,
                            y: 985,
                            enabledTexture: "portrait_acceptButtonEnabled",
                            pressedTexture: "portrait_acceptButtonPressed",
                            overTexture: "portrait_acceptButtonOver"
                        },
                        controls: {
                            x: 405,
                            y: 750,
                            frame: null
                        },
                        totalBet: i,
                        betPerPattern: i,
                        patternsBet: i,
                        betSummary: i,
                        meterBar: {
                            x: -405,
                            y: -175,
                            frame: "portrait_betControlsBackgroundTop",
                            betPerPattern: {
                                x: 608,
                                y: 30,
                                multiline: !1,
                                pivot: {
                                    y: 10
                                }
                            },
                            patternsBet: {
                                x: 202,
                                y: 30,
                                multiline: !1,
                                pivot: {
                                    y: 10
                                }
                            }
                        }
                    },
                    prompt: {
                        x: 405,
                        y: 850,
                        _text: {
                            x: 0,
                            y: -33
                        },
                        textStyle: {
                            fontSize: 32
                        },
                        enabledTexture: "portrait_messagePrompt"
                    }
                },
                freeSpins: {
                    footer: {
                        x: 405,
                        y: 1128,
                        height: 100,
                        fixedWidth: 810,
                        frame: "portrait_freeSpinsMeter",
                        dividerFrame: "portrait_freeSpinsMeterDivider",
                        spins: {
                            minWidth: 120,
                            _labelText: {
                                y: 38
                            },
                            _valueText: {
                                y: -2
                            },
                            pivot: {
                                y: 27
                            },
                            multiline: !0,
                            valueStyle: {
                                fontSize: 32
                            },
                            labelStyle: {
                                fontSize: 24
                            },
                            index: 1
                        },
                        win: {
                            minWidth: 120,
                            _labelText: {
                                y: 38
                            },
                            _valueText: {
                                y: -2
                            },
                            pivot: {
                                y: 27
                            },
                            multiline: !0,
                            valueStyle: {
                                fontSize: 32
                            },
                            labelStyle: {
                                fontSize: 24
                            },
                            index: 2
                        },
                        bonusWin: {
                            minWidth: 120,
                            _labelText: {
                                y: 38
                            },
                            _valueText: {
                                y: -2
                            },
                            pivot: {
                                y: 27
                            },
                            multiline: !0,
                            valueStyle: {
                                fontSize: 32
                            },
                            labelStyle: {
                                fontSize: 24
                            },
                            index: 3
                        }
                    },
                    skip: t,
                    play: e,
                    activityAnim: n
                }
            }
        }), define("skbJet/componentManchester/commonUI/slot/layout", ["require", "./layouts/desktop", "./layouts/landscape", "./layouts/portrait"], function(t) {
            var e = t("./layouts/desktop"),
                n = t("./layouts/landscape"),
                i = t("./layouts/portrait");
            return {
                MOB: {
                    portrait: i,
                    landscape: n
                },
                TAB: {
                    portrait: i,
                    landscape: n
                },
                INT: {
                    landscape: e,
                    portrait: i
                }
            }
        }),
        function(t, e) {
            "use strict";
            var n = {},
                i = t.document,
                r = t.GreenSockGlobals = t.GreenSockGlobals || t;
            if (!r.TweenLite) {
                var o, a, s, l, u, c = function(t) {
                        var e, n = t.split("."),
                            i = r;
                        for (e = 0; e < n.length; e++) i[n[e]] = i = i[n[e]] || {};
                        return i
                    },
                    h = c("com.greensock"),
                    p = function(t) {
                        var e, n = [],
                            i = t.length;
                        for (e = 0; e !== i; n.push(t[e++]));
                        return n
                    },
                    f = function() {},
                    d = function() {
                        var t = Object.prototype.toString,
                            e = t.call([]);
                        return function(n) {
                            return null != n && (n instanceof Array || "object" == typeof n && !!n.push && t.call(n) === e)
                        }
                    }(),
                    m = {},
                    g = function(e, i, o, a) {
                        this.sc = m[e] ? m[e].sc : [], m[e] = this, this.gsClass = null, this.func = o;
                        var s = [];
                        this.check = function(l) {
                            for (var u, h, p, f, d = i.length, _ = d; --d > -1;)(u = m[i[d]] || new g(i[d], [])).gsClass ? (s[d] = u.gsClass, _--) : l && u.sc.push(this);
                            if (0 === _ && o) {
                                if (h = ("com.greensock." + e).split("."), p = h.pop(), f = c(h.join("."))[p] = this.gsClass = o.apply(o, s), a)
                                    if (r[p] = n[p] = f, "undefined" != typeof module && module.exports)
                                        if ("TweenLite" === e) {
                                            module.exports = n.TweenLite = f;
                                            for (d in n) f[d] = n[d]
                                        } else n.TweenLite && (n.TweenLite[p] = f);
                                else "function" == typeof define && define.amd && define((t.GreenSockAMDPath ? t.GreenSockAMDPath + "/" : "") + e.split(".").pop(), [], function() {
                                    return f
                                });
                                for (d = 0; d < this.sc.length; d++) this.sc[d].check()
                            }
                        }, this.check(!0)
                    },
                    _ = t._gsDefine = function(t, e, n, i) {
                        return new g(t, e, n, i)
                    },
                    y = h._class = function(t, e, n) {
                        return e = e || function() {}, _(t, [], function() {
                            return e
                        }, n), e
                    };
                _.globals = r;
                var v = [0, 0, 1, 1],
                    b = y("easing.Ease", function(t, e, n, i) {
                        this._func = t, this._type = n || 0, this._power = i || 0, this._params = e ? v.concat(e) : v
                    }, !0),
                    x = b.map = {},
                    T = b.register = function(t, e, n, i) {
                        for (var r, o, a, s, l = e.split(","), u = l.length, c = (n || "easeIn,easeOut,easeInOut").split(","); --u > -1;)
                            for (o = l[u], r = i ? y("easing." + o, null, !0) : h.easing[o] || {}, a = c.length; --a > -1;) s = c[a], x[o + "." + s] = x[s + o] = r[s] = t.getRatio ? t : t[s] || new t
                    };
                for (s = b.prototype, s._calcEnd = !1, s.getRatio = function(t) {
                        if (this._func) return this._params[0] = t, this._func.apply(null, this._params);
                        var e = this._type,
                            n = this._power,
                            i = 1 === e ? 1 - t : 2 === e ? t : t < .5 ? 2 * t : 2 * (1 - t);
                        return 1 === n ? i *= i : 2 === n ? i *= i * i : 3 === n ? i *= i * i * i : 4 === n && (i *= i * i * i * i), 1 === e ? 1 - i : 2 === e ? i : t < .5 ? i / 2 : 1 - i / 2
                    }, o = ["Linear", "Quad", "Cubic", "Quart", "Quint,Strong"], a = o.length; --a > -1;) s = o[a] + ",Power" + a, T(new b(null, null, 1, a), s, "easeOut", !0), T(new b(null, null, 2, a), s, "easeIn" + (0 === a ? ",easeNone" : "")), T(new b(null, null, 3, a), s, "easeInOut");
                x.linear = h.easing.Linear.easeIn, x.swing = h.easing.Quad.easeInOut;
                var w = y("events.EventDispatcher", function(t) {
                    this._listeners = {}, this._eventTarget = t || this
                });
                s = w.prototype, s.addEventListener = function(t, e, n, i, r) {
                    r = r || 0;
                    var o, a, s = this._listeners[t],
                        c = 0;
                    for (this !== l || u || l.wake(), null == s && (this._listeners[t] = s = []), a = s.length; --a > -1;) o = s[a], o.c === e && o.s === n ? s.splice(a, 1) : 0 === c && o.pr < r && (c = a + 1);
                    s.splice(c, 0, {
                        c: e,
                        s: n,
                        up: i,
                        pr: r
                    })
                }, s.removeEventListener = function(t, e) {
                    var n, i = this._listeners[t];
                    if (i)
                        for (n = i.length; --n > -1;)
                            if (i[n].c === e) return void i.splice(n, 1)
                }, s.dispatchEvent = function(t) {
                    var e, n, i, r = this._listeners[t];
                    if (r)
                        for (e = r.length, e > 1 && (r = r.slice(0)), n = this._eventTarget; --e > -1;)(i = r[e]) && (i.up ? i.c.call(i.s || n, {
                            type: t,
                            target: n
                        }) : i.c.call(i.s || n))
                };
                var S = t.requestAnimationFrame,
                    P = t.cancelAnimationFrame,
                    M = Date.now || function() {
                        return (new Date).getTime()
                    },
                    C = M();
                for (o = ["ms", "moz", "webkit", "o"], a = o.length; --a > -1 && !S;) S = t[o[a] + "RequestAnimationFrame"], P = t[o[a] + "CancelAnimationFrame"] || t[o[a] + "CancelRequestAnimationFrame"];
                y("Ticker", function(t, e) {
                    var n, r, o, a, s, c = this,
                        h = M(),
                        p = !(!1 === e || !S) && "auto",
                        d = 500,
                        m = 33,
                        g = function(t) {
                            var e, i, l = M() - C;
                            l > d && (h += l - m), C += l, c.time = (C - h) / 1e3, e = c.time - s, (!n || e > 0 || !0 === t) && (c.frame++, s += e + (e >= a ? .004 : a - e), i = !0), !0 !== t && (o = r(g)), i && c.dispatchEvent("tick")
                        };
                    w.call(c), c.time = c.frame = 0, c.tick = function() {
                        g(!0)
                    }, c.lagSmoothing = function(t, e) {
                        if (!arguments.length) return d < 1e10;
                        d = t || 1e10, m = Math.min(e, d, 0)
                    }, c.sleep = function() {
                        null != o && (p && P ? P(o) : clearTimeout(o), r = f, o = null, c === l && (u = !1))
                    }, c.wake = function(t) {
                        null !== o ? c.sleep() : t ? h += -C + (C = M()) : c.frame > 10 && (C = M() - d + 5), r = 0 === n ? f : p && S ? S : function(t) {
                            return setTimeout(t, 1e3 * (s - c.time) + 1 | 0)
                        }, c === l && (u = !0), g(2)
                    }, c.fps = function(t) {
                        if (!arguments.length) return n;
                        n = t, a = 1 / (n || 60), s = this.time + a, c.wake()
                    }, c.useRAF = function(t) {
                        if (!arguments.length) return p;
                        c.sleep(), p = t, c.fps(n)
                    }, c.fps(t), setTimeout(function() {
                        "auto" === p && c.frame < 5 && "hidden" !== (i || {}).visibilityState && c.useRAF(!1)
                    }, 1500)
                }), s = h.Ticker.prototype = new h.events.EventDispatcher, s.constructor = h.Ticker;
                var E = y("core.Animation", function(t, e) {
                    if (this.vars = e = e || {}, this._duration = this._totalDuration = t || 0, this._delay = Number(e.delay) || 0, this._timeScale = 1, this._active = !0 === e.immediateRender, this.data = e.data, this._reversed = !0 === e.reversed, q) {
                        u || l.wake();
                        var n = this.vars.useFrames ? Y : q;
                        n.add(this, n._time), this.vars.paused && this.paused(!0)
                    }
                });
                l = E.ticker = new h.Ticker, s = E.prototype, s._dirty = s._gc = s._initted = s._paused = !1, s._totalTime = s._time = 0, s._rawPrevTime = -1, s._next = s._last = s._onUpdate = s._timeline = s.timeline = null, s._paused = !1;
                var O = function() {
                    u && M() - C > 2e3 && ("hidden" !== (i || {}).visibilityState || !l.lagSmoothing()) && l.wake();
                    var t = setTimeout(O, 2e3);
                    t.unref && t.unref()
                };
                O(), s.play = function(t, e) {
                    return null != t && this.seek(t, e), this.reversed(!1).paused(!1)
                }, s.pause = function(t, e) {
                    return null != t && this.seek(t, e), this.paused(!0)
                }, s.resume = function(t, e) {
                    return null != t && this.seek(t, e), this.paused(!1)
                }, s.seek = function(t, e) {
                    return this.totalTime(Number(t), !1 !== e)
                }, s.restart = function(t, e) {
                    return this.reversed(!1).paused(!1).totalTime(t ? -this._delay : 0, !1 !== e, !0)
                }, s.reverse = function(t, e) {
                    return null != t && this.seek(t || this.totalDuration(), e), this.reversed(!0).paused(!1)
                }, s.render = function(t, e, n) {}, s.invalidate = function() {
                    return this._time = this._totalTime = 0, this._initted = this._gc = !1, this._rawPrevTime = -1, !this._gc && this.timeline || this._enabled(!0), this
                }, s.isActive = function() {
                    var t, e = this._timeline,
                        n = this._startTime;
                    return !e || !this._gc && !this._paused && e.isActive() && (t = e.rawTime(!0)) >= n && t < n + this.totalDuration() / this._timeScale - 1e-7
                }, s._enabled = function(t, e) {
                    return u || l.wake(), this._gc = !t, this._active = this.isActive(), !0 !== e && (t && !this.timeline ? this._timeline.add(this, this._startTime - this._delay) : !t && this.timeline && this._timeline._remove(this, !0)), !1
                }, s._kill = function(t, e) {
                    return this._enabled(!1, !1)
                }, s.kill = function(t, e) {
                    return this._kill(t, e), this
                }, s._uncache = function(t) {
                    for (var e = t ? this : this.timeline; e;) e._dirty = !0, e = e.timeline;
                    return this
                }, s._swapSelfInParams = function(t) {
                    for (var e = t.length, n = t.concat(); --e > -1;) "{self}" === t[e] && (n[e] = this);
                    return n
                }, s._callback = function(t) {
                    var e = this.vars,
                        n = e[t],
                        i = e[t + "Params"],
                        r = e[t + "Scope"] || e.callbackScope || this;
                    switch (i ? i.length : 0) {
                        case 0:
                            n.call(r);
                            break;
                        case 1:
                            n.call(r, i[0]);
                            break;
                        case 2:
                            n.call(r, i[0], i[1]);
                            break;
                        default:
                            n.apply(r, i)
                    }
                }, s.eventCallback = function(t, e, n, i) {
                    if ("on" === (t || "").substr(0, 2)) {
                        var r = this.vars;
                        if (1 === arguments.length) return r[t];
                        null == e ? delete r[t] : (r[t] = e, r[t + "Params"] = d(n) && -1 !== n.join("").indexOf("{self}") ? this._swapSelfInParams(n) : n, r[t + "Scope"] = i), "onUpdate" === t && (this._onUpdate = e)
                    }
                    return this
                }, s.delay = function(t) {
                    return arguments.length ? (this._timeline.smoothChildTiming && this.startTime(this._startTime + t - this._delay), this._delay = t, this) : this._delay
                }, s.duration = function(t) {
                    return arguments.length ? (this._duration = this._totalDuration = t, this._uncache(!0), this._timeline.smoothChildTiming && this._time > 0 && this._time < this._duration && 0 !== t && this.totalTime(this._totalTime * (t / this._duration), !0), this) : (this._dirty = !1, this._duration)
                }, s.totalDuration = function(t) {
                    return this._dirty = !1, arguments.length ? this.duration(t) : this._totalDuration
                }, s.time = function(t, e) {
                    return arguments.length ? (this._dirty && this.totalDuration(), this.totalTime(t > this._duration ? this._duration : t, e)) : this._time
                }, s.totalTime = function(t, e, n) {
                    if (u || l.wake(), !arguments.length) return this._totalTime;
                    if (this._timeline) {
                        if (t < 0 && !n && (t += this.totalDuration()), this._timeline.smoothChildTiming) {
                            this._dirty && this.totalDuration();
                            var i = this._totalDuration,
                                r = this._timeline;
                            if (t > i && !n && (t = i), this._startTime = (this._paused ? this._pauseTime : r._time) - (this._reversed ? i - t : t) / this._timeScale, r._dirty || this._uncache(!1), r._timeline)
                                for (; r._timeline;) r._timeline._time !== (r._startTime + r._totalTime) / r._timeScale && r.totalTime(r._totalTime, !0), r = r._timeline
                        }
                        this._gc && this._enabled(!0, !1), this._totalTime === t && 0 !== this._duration || (L.length && K(), this.render(t, e, !1), L.length && K())
                    }
                    return this
                }, s.progress = s.totalProgress = function(t, e) {
                    var n = this.duration();
                    return arguments.length ? this.totalTime(n * t, e) : n ? this._time / n : this.ratio
                }, s.startTime = function(t) {
                    return arguments.length ? (t !== this._startTime && (this._startTime = t, this.timeline && this.timeline._sortChildren && this.timeline.add(this, t - this._delay)), this) : this._startTime
                }, s.endTime = function(t) {
                    return this._startTime + (0 != t ? this.totalDuration() : this.duration()) / this._timeScale
                }, s.timeScale = function(t) {
                    if (!arguments.length) return this._timeScale;
                    var e, n;
                    for (t = t || 1e-10, this._timeline && this._timeline.smoothChildTiming && (e = this._pauseTime, n = e || 0 === e ? e : this._timeline.totalTime(), this._startTime = n - (n - this._startTime) * this._timeScale / t), this._timeScale = t, n = this.timeline; n && n.timeline;) n._dirty = !0, n.totalDuration(), n = n.timeline;
                    return this
                }, s.reversed = function(t) {
                    return arguments.length ? (t != this._reversed && (this._reversed = t, this.totalTime(this._timeline && !this._timeline.smoothChildTiming ? this.totalDuration() - this._totalTime : this._totalTime, !0)), this) : this._reversed
                }, s.paused = function(t) {
                    if (!arguments.length) return this._paused;
                    var e, n, i = this._timeline;
                    return t != this._paused && i && (u || t || l.wake(), e = i.rawTime(), n = e - this._pauseTime, !t && i.smoothChildTiming && (this._startTime += n, this._uncache(!1)), this._pauseTime = t ? e : null, this._paused = t, this._active = this.isActive(), !t && 0 !== n && this._initted && this.duration() && (e = i.smoothChildTiming ? this._totalTime : (e - this._startTime) / this._timeScale, this.render(e, e === this._totalTime, !0))), this._gc && !t && this._enabled(!0, !1), this
                };
                var I = y("core.SimpleTimeline", function(t) {
                    E.call(this, 0, t), this.autoRemoveChildren = this.smoothChildTiming = !0
                });
                s = I.prototype = new E, s.constructor = I, s.kill()._gc = !1, s._first = s._last = s._recent = null, s._sortChildren = !1, s.add = s.insert = function(t, e, n, i) {
                    var r, o;
                    if (t._startTime = Number(e || 0) + t._delay, t._paused && this !== t._timeline && (t._pauseTime = t._startTime + (this.rawTime() - t._startTime) / t._timeScale), t.timeline && t.timeline._remove(t, !0), t.timeline = t._timeline = this, t._gc && t._enabled(!0, !0), r = this._last, this._sortChildren)
                        for (o = t._startTime; r && r._startTime > o;) r = r._prev;
                    return r ? (t._next = r._next, r._next = t) : (t._next = this._first, this._first = t), t._next ? t._next._prev = t : this._last = t, t._prev = r, this._recent = t, this._timeline && this._uncache(!0), this
                }, s._remove = function(t, e) {
                    return t.timeline === this && (e || t._enabled(!1, !0), t._prev ? t._prev._next = t._next : this._first === t && (this._first = t._next), t._next ? t._next._prev = t._prev : this._last === t && (this._last = t._prev), t._next = t._prev = t.timeline = null, t === this._recent && (this._recent = this._last), this._timeline && this._uncache(!0)), this
                }, s.render = function(t, e, n) {
                    var i, r = this._first;
                    for (this._totalTime = this._time = this._rawPrevTime = t; r;) i = r._next, (r._active || t >= r._startTime && !r._paused && !r._gc) && (r._reversed ? r.render((r._dirty ? r.totalDuration() : r._totalDuration) - (t - r._startTime) * r._timeScale, e, n) : r.render((t - r._startTime) * r._timeScale, e, n)), r = i
                }, s.rawTime = function() {
                    return u || l.wake(), this._totalTime
                };
                var R = y("TweenLite", function(e, n, i) {
                        if (E.call(this, n, i), this.render = R.prototype.render, null == e) throw "Cannot tween a null target.";
                        this.target = e = "string" != typeof e ? e : R.selector(e) || e;
                        var r, o, a, s = e.jquery || e.length && e !== t && e[0] && (e[0] === t || e[0].nodeType && e[0].style && !e.nodeType),
                            l = this.vars.overwrite;
                        if (this._overwrite = l = null == l ? z[R.defaultOverwrite] : "number" == typeof l ? l >> 0 : z[l], (s || e instanceof Array || e.push && d(e)) && "number" != typeof e[0])
                            for (this._targets = a = p(e), this._propLookup = [], this._siblings = [], r = 0; r < a.length; r++) o = a[r], o ? "string" != typeof o ? o.length && o !== t && o[0] && (o[0] === t || o[0].nodeType && o[0].style && !o.nodeType) ? (a.splice(r--, 1), this._targets = a = a.concat(p(o))) : (this._siblings[r] = $(o, this, !1), 1 === l && this._siblings[r].length > 1 && Q(o, this, null, 1, this._siblings[r])) : "string" == typeof(o = a[r--] = R.selector(o)) && a.splice(r + 1, 1) : a.splice(r--, 1);
                        else this._propLookup = {}, this._siblings = $(e, this, !1), 1 === l && this._siblings.length > 1 && Q(e, this, null, 1, this._siblings);
                        (this.vars.immediateRender || 0 === n && 0 === this._delay && !1 !== this.vars.immediateRender) && (this._time = -1e-10, this.render(Math.min(0, -this._delay)))
                    }, !0),
                    A = function(e) {
                        return e && e.length && e !== t && e[0] && (e[0] === t || e[0].nodeType && e[0].style && !e.nodeType)
                    },
                    k = function(t, e) {
                        var n, i = {};
                        for (n in t) H[n] || n in e && "transform" !== n && "x" !== n && "y" !== n && "width" !== n && "height" !== n && "className" !== n && "border" !== n || !(!W[n] || W[n] && W[n]._autoCSS) || (i[n] = t[n], delete t[n]);
                        t.css = i
                    };
                s = R.prototype = new E, s.constructor = R, s.kill()._gc = !1, s.ratio = 0, s._firstPT = s._targets = s._overwrittenProps = s._startAt = null, s._notifyPluginsOfEnabled = s._lazy = !1, R.version = "1.20.4", R.defaultEase = s._ease = new b(null, null, 1, 1), R.defaultOverwrite = "auto", R.ticker = l, R.autoSleep = 120, R.lagSmoothing = function(t, e) {
                    l.lagSmoothing(t, e)
                }, R.selector = t.$ || t.jQuery || function(e) {
                    var n = t.$ || t.jQuery;
                    return n ? (R.selector = n, n(e)) : void 0 === i ? e : i.querySelectorAll ? i.querySelectorAll(e) : i.getElementById("#" === e.charAt(0) ? e.substr(1) : e)
                };
                var L = [],
                    D = {},
                    B = /(?:(-|-=|\+=)?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/gi,
                    N = /[\+-]=-?[\.\d]/,
                    F = function(t) {
                        for (var e, n = this._firstPT; n;) e = n.blob ? 1 === t && null != this.end ? this.end : t ? this.join("") : this.start : n.c * t + n.s, n.m ? e = n.m(e, this._target || n.t) : e < 1e-6 && e > -1e-6 && !n.blob && (e = 0), n.f ? n.fp ? n.t[n.p](n.fp, e) : n.t[n.p](e) : n.t[n.p] = e, n = n._next
                    },
                    G = function(t, e, n, i) {
                        var r, o, a, s, l, u, c, h = [],
                            p = 0,
                            f = "",
                            d = 0;
                        for (h.start = t, h.end = e, t = h[0] = t + "", e = h[1] = e + "", n && (n(h), t = h[0], e = h[1]), h.length = 0, r = t.match(B) || [], o = e.match(B) || [], i && (i._next = null, i.blob = 1, h._firstPT = h._applyPT = i), l = o.length, s = 0; s < l; s++) c = o[s], u = e.substr(p, e.indexOf(c, p) - p), f += u || !s ? u : ",", p += u.length, d ? d = (d + 1) % 5 : "rgba(" === u.substr(-5) && (d = 1), c === r[s] || r.length <= s ? f += c : (f && (h.push(f), f = ""), a = parseFloat(r[s]), h.push(a), h._firstPT = {
                            _next: h._firstPT,
                            t: h,
                            p: h.length - 1,
                            s: a,
                            c: ("=" === c.charAt(1) ? parseInt(c.charAt(0) + "1", 10) * parseFloat(c.substr(2)) : parseFloat(c) - a) || 0,
                            f: 0,
                            m: d && d < 4 ? Math.round : 0
                        }), p += c.length;
                        return f += e.substr(p), f && h.push(f), h.setRatio = F, N.test(e) && (h.end = null), h
                    },
                    U = function(t, e, n, i, r, o, a, s, l) {
                        "function" == typeof i && (i = i(l || 0, t));
                        var u, c = typeof t[e],
                            h = "function" !== c ? "" : e.indexOf("set") || "function" != typeof t["get" + e.substr(3)] ? e : "get" + e.substr(3),
                            p = "get" !== n ? n : h ? a ? t[h](a) : t[h]() : t[e],
                            f = "string" == typeof i && "=" === i.charAt(1),
                            d = {
                                t: t,
                                p: e,
                                s: p,
                                f: "function" === c,
                                pg: 0,
                                n: r || e,
                                m: o ? "function" == typeof o ? o : Math.round : 0,
                                pr: 0,
                                c: f ? parseInt(i.charAt(0) + "1", 10) * parseFloat(i.substr(2)) : parseFloat(i) - p || 0
                            };
                        if (("number" != typeof p || "number" != typeof i && !f) && (a || isNaN(p) || !f && isNaN(i) || "boolean" == typeof p || "boolean" == typeof i ? (d.fp = a, u = G(p, f ? parseFloat(d.s) + d.c + (d.s + "").replace(/[0-9\-\.]/g, "") : i, s || R.defaultStringFilter, d), d = {
                                t: u,
                                p: "setRatio",
                                s: 0,
                                c: 1,
                                f: 2,
                                pg: 0,
                                n: r || e,
                                pr: 0,
                                m: 0
                            }) : (d.s = parseFloat(p), f || (d.c = parseFloat(i) - d.s || 0))), d.c) return (d._next = this._firstPT) && (d._next._prev = d), this._firstPT = d, d
                    },
                    j = R._internals = {
                        isArray: d,
                        isSelector: A,
                        lazyTweens: L,
                        blobDif: G
                    },
                    W = R._plugins = {},
                    X = j.tweenLookup = {},
                    V = 0,
                    H = j.reservedProps = {
                        ease: 1,
                        delay: 1,
                        overwrite: 1,
                        onComplete: 1,
                        onCompleteParams: 1,
                        onCompleteScope: 1,
                        useFrames: 1,
                        runBackwards: 1,
                        startAt: 1,
                        onUpdate: 1,
                        onUpdateParams: 1,
                        onUpdateScope: 1,
                        onStart: 1,
                        onStartParams: 1,
                        onStartScope: 1,
                        onReverseComplete: 1,
                        onReverseCompleteParams: 1,
                        onReverseCompleteScope: 1,
                        onRepeat: 1,
                        onRepeatParams: 1,
                        onRepeatScope: 1,
                        easeParams: 1,
                        yoyo: 1,
                        immediateRender: 1,
                        repeat: 1,
                        repeatDelay: 1,
                        data: 1,
                        paused: 1,
                        reversed: 1,
                        autoCSS: 1,
                        lazy: 1,
                        onOverwrite: 1,
                        callbackScope: 1,
                        stringFilter: 1,
                        id: 1,
                        yoyoEase: 1
                    },
                    z = {
                        none: 0,
                        all: 1,
                        auto: 2,
                        concurrent: 3,
                        allOnStart: 4,
                        preexisting: 5,
                        true: 1,
                        false: 0
                    },
                    Y = E._rootFramesTimeline = new I,
                    q = E._rootTimeline = new I,
                    J = 30,
                    K = j.lazyRender = function() {
                        var t, e = L.length;
                        for (D = {}; --e > -1;)(t = L[e]) && !1 !== t._lazy && (t.render(t._lazy[0], t._lazy[1], !0), t._lazy = !1);
                        L.length = 0
                    };
                q._startTime = l.time, Y._startTime = l.frame, q._active = Y._active = !0, setTimeout(K, 1), E._updateRoot = R.render = function() {
                    var t, e, n;
                    if (L.length && K(), q.render((l.time - q._startTime) * q._timeScale, !1, !1), Y.render((l.frame - Y._startTime) * Y._timeScale, !1, !1), L.length && K(), l.frame >= J) {
                        J = l.frame + (parseInt(R.autoSleep, 10) || 120);
                        for (n in X) {
                            for (e = X[n].tweens, t = e.length; --t > -1;) e[t]._gc && e.splice(t, 1);
                            0 === e.length && delete X[n]
                        }
                        if ((!(n = q._first) || n._paused) && R.autoSleep && !Y._first && 1 === l._listeners.tick.length) {
                            for (; n && n._paused;) n = n._next;
                            n || l.sleep()
                        }
                    }
                }, l.addEventListener("tick", E._updateRoot);
                var $ = function(t, e, n) {
                        var i, r, o = t._gsTweenID;
                        if (X[o || (t._gsTweenID = o = "t" + V++)] || (X[o] = {
                                target: t,
                                tweens: []
                            }), e && (i = X[o].tweens, i[r = i.length] = e, n))
                            for (; --r > -1;) i[r] === e && i.splice(r, 1);
                        return X[o].tweens
                    },
                    Z = function(t, e, n, i) {
                        var r, o, a = t.vars.onOverwrite;
                        return a && (r = a(t, e, n, i)), a = R.onOverwrite, a && (o = a(t, e, n, i)), !1 !== r && !1 !== o
                    },
                    Q = function(t, e, n, i, r) {
                        var o, a, s, l;
                        if (1 === i || i >= 4) {
                            for (l = r.length, o = 0; o < l; o++)
                                if ((s = r[o]) !== e) s._gc || s._kill(null, t, e) && (a = !0);
                                else if (5 === i) break;
                            return a
                        }
                        var u, c = e._startTime + 1e-10,
                            h = [],
                            p = 0,
                            f = 0 === e._duration;
                        for (o = r.length; --o > -1;)(s = r[o]) === e || s._gc || s._paused || (s._timeline !== e._timeline ? (u = u || tt(e, 0, f), 0 === tt(s, u, f) && (h[p++] = s)) : s._startTime <= c && s._startTime + s.totalDuration() / s._timeScale > c && ((f || !s._initted) && c - s._startTime <= 2e-10 || (h[p++] = s)));
                        for (o = p; --o > -1;)
                            if (s = h[o], 2 === i && s._kill(n, t, e) && (a = !0), 2 !== i || !s._firstPT && s._initted) {
                                if (2 !== i && !Z(s, e)) continue;
                                s._enabled(!1, !1) && (a = !0)
                            }
                        return a
                    },
                    tt = function(t, e, n) {
                        for (var i = t._timeline, r = i._timeScale, o = t._startTime; i._timeline;) {
                            if (o += i._startTime, r *= i._timeScale, i._paused) return -100;
                            i = i._timeline
                        }
                        return o /= r, o > e ? o - e : n && o === e || !t._initted && o - e < 2e-10 ? 1e-10 : (o += t.totalDuration() / t._timeScale / r) > e + 1e-10 ? 0 : o - e - 1e-10
                    };
                s._init = function() {
                    var t, e, n, i, r, o, a = this.vars,
                        s = this._overwrittenProps,
                        l = this._duration,
                        u = !!a.immediateRender,
                        c = a.ease;
                    if (a.startAt) {
                        this._startAt && (this._startAt.render(-1, !0), this._startAt.kill()), r = {};
                        for (i in a.startAt) r[i] = a.startAt[i];
                        if (r.data = "isStart", r.overwrite = !1, r.immediateRender = !0, r.lazy = u && !1 !== a.lazy, r.startAt = r.delay = null, r.onUpdate = a.onUpdate, r.onUpdateParams = a.onUpdateParams, r.onUpdateScope = a.onUpdateScope || a.callbackScope || this, this._startAt = R.to(this.target, 0, r), u)
                            if (this._time > 0) this._startAt = null;
                            else if (0 !== l) return
                    } else if (a.runBackwards && 0 !== l)
                        if (this._startAt) this._startAt.render(-1, !0), this._startAt.kill(), this._startAt = null;
                        else {
                            0 !== this._time && (u = !1), n = {};
                            for (i in a) H[i] && "autoCSS" !== i || (n[i] = a[i]);
                            if (n.overwrite = 0, n.data = "isFromStart", n.lazy = u && !1 !== a.lazy, n.immediateRender = u, this._startAt = R.to(this.target, 0, n), u) {
                                if (0 === this._time) return
                            } else this._startAt._init(), this._startAt._enabled(!1), this.vars.immediateRender && (this._startAt = null)
                        }
                    if (this._ease = c = c ? c instanceof b ? c : "function" == typeof c ? new b(c, a.easeParams) : x[c] || R.defaultEase : R.defaultEase, a.easeParams instanceof Array && c.config && (this._ease = c.config.apply(c, a.easeParams)), this._easeType = this._ease._type, this._easePower = this._ease._power, this._firstPT = null, this._targets)
                        for (o = this._targets.length, t = 0; t < o; t++) this._initProps(this._targets[t], this._propLookup[t] = {}, this._siblings[t], s ? s[t] : null, t) && (e = !0);
                    else e = this._initProps(this.target, this._propLookup, this._siblings, s, 0);
                    if (e && R._onPluginEvent("_onInitAllProps", this), s && (this._firstPT || "function" != typeof this.target && this._enabled(!1, !1)), a.runBackwards)
                        for (n = this._firstPT; n;) n.s += n.c, n.c = -n.c, n = n._next;
                    this._onUpdate = a.onUpdate, this._initted = !0
                }, s._initProps = function(e, n, i, r, o) {
                    var a, s, l, u, c, h;
                    if (null == e) return !1;
                    D[e._gsTweenID] && K(), this.vars.css || e.style && e !== t && e.nodeType && W.css && !1 !== this.vars.autoCSS && k(this.vars, e);
                    for (a in this.vars)
                        if (h = this.vars[a], H[a]) h && (h instanceof Array || h.push && d(h)) && -1 !== h.join("").indexOf("{self}") && (this.vars[a] = h = this._swapSelfInParams(h, this));
                        else if (W[a] && (u = new W[a])._onInitTween(e, this.vars[a], this, o)) {
                        for (this._firstPT = c = {
                                _next: this._firstPT,
                                t: u,
                                p: "setRatio",
                                s: 0,
                                c: 1,
                                f: 1,
                                n: a,
                                pg: 1,
                                pr: u._priority,
                                m: 0
                            }, s = u._overwriteProps.length; --s > -1;) n[u._overwriteProps[s]] = this._firstPT;
                        (u._priority || u._onInitAllProps) && (l = !0), (u._onDisable || u._onEnable) && (this._notifyPluginsOfEnabled = !0), c._next && (c._next._prev = c)
                    } else n[a] = U.call(this, e, a, "get", h, a, 0, null, this.vars.stringFilter, o);
                    return r && this._kill(r, e) ? this._initProps(e, n, i, r, o) : this._overwrite > 1 && this._firstPT && i.length > 1 && Q(e, this, n, this._overwrite, i) ? (this._kill(n, e), this._initProps(e, n, i, r, o)) : (this._firstPT && (!1 !== this.vars.lazy && this._duration || this.vars.lazy && !this._duration) && (D[e._gsTweenID] = !0), l)
                }, s.render = function(t, e, n) {
                    var i, r, o, a, s = this._time,
                        l = this._duration,
                        u = this._rawPrevTime;
                    if (t >= l - 1e-7 && t >= 0) this._totalTime = this._time = l, this.ratio = this._ease._calcEnd ? this._ease.getRatio(1) : 1, this._reversed || (i = !0, r = "onComplete", n = n || this._timeline.autoRemoveChildren), 0 === l && (this._initted || !this.vars.lazy || n) && (this._startTime === this._timeline._duration && (t = 0), (u < 0 || t <= 0 && t >= -1e-7 || 1e-10 === u && "isPause" !== this.data) && u !== t && (n = !0, u > 1e-10 && (r = "onReverseComplete")), this._rawPrevTime = a = !e || t || u === t ? t : 1e-10);
                    else if (t < 1e-7) this._totalTime = this._time = 0, this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0, (0 !== s || 0 === l && u > 0) && (r = "onReverseComplete", i = this._reversed), t < 0 && (this._active = !1, 0 === l && (this._initted || !this.vars.lazy || n) && (u >= 0 && (1e-10 !== u || "isPause" !== this.data) && (n = !0), this._rawPrevTime = a = !e || t || u === t ? t : 1e-10)), (!this._initted || this._startAt && this._startAt.progress()) && (n = !0);
                    else if (this._totalTime = this._time = t, this._easeType) {
                        var c = t / l,
                            h = this._easeType,
                            p = this._easePower;
                        (1 === h || 3 === h && c >= .5) && (c = 1 - c), 3 === h && (c *= 2), 1 === p ? c *= c : 2 === p ? c *= c * c : 3 === p ? c *= c * c * c : 4 === p && (c *= c * c * c * c), this.ratio = 1 === h ? 1 - c : 2 === h ? c : t / l < .5 ? c / 2 : 1 - c / 2
                    } else this.ratio = this._ease.getRatio(t / l);
                    if (this._time !== s || n) {
                        if (!this._initted) {
                            if (this._init(), !this._initted || this._gc) return;
                            if (!n && this._firstPT && (!1 !== this.vars.lazy && this._duration || this.vars.lazy && !this._duration)) return this._time = this._totalTime = s, this._rawPrevTime = u, L.push(this), void(this._lazy = [t, e]);
                            this._time && !i ? this.ratio = this._ease.getRatio(this._time / l) : i && this._ease._calcEnd && (this.ratio = this._ease.getRatio(0 === this._time ? 0 : 1))
                        }
                        for (!1 !== this._lazy && (this._lazy = !1), this._active || !this._paused && this._time !== s && t >= 0 && (this._active = !0), 0 === s && (this._startAt && (t >= 0 ? this._startAt.render(t, !0, n) : r || (r = "_dummyGS")), this.vars.onStart && (0 === this._time && 0 !== l || e || this._callback("onStart"))), o = this._firstPT; o;) o.f ? o.t[o.p](o.c * this.ratio + o.s) : o.t[o.p] = o.c * this.ratio + o.s, o = o._next;
                        this._onUpdate && (t < 0 && this._startAt && -1e-4 !== t && this._startAt.render(t, !0, n), e || (this._time !== s || i || n) && this._callback("onUpdate")), r && (this._gc && !n || (t < 0 && this._startAt && !this._onUpdate && -1e-4 !== t && this._startAt.render(t, !0, n), i && (this._timeline.autoRemoveChildren && this._enabled(!1, !1), this._active = !1), !e && this.vars[r] && this._callback(r), 0 === l && 1e-10 === this._rawPrevTime && 1e-10 !== a && (this._rawPrevTime = 0)))
                    }
                }, s._kill = function(t, e, n) {
                    if ("all" === t && (t = null), null == t && (null == e || e === this.target)) return this._lazy = !1, this._enabled(!1, !1);
                    e = "string" != typeof e ? e || this._targets || this.target : R.selector(e) || e;
                    var i, r, o, a, s, l, u, c, h, p = n && this._time && n._startTime === this._startTime && this._timeline === n._timeline;
                    if ((d(e) || A(e)) && "number" != typeof e[0])
                        for (i = e.length; --i > -1;) this._kill(t, e[i], n) && (l = !0);
                    else {
                        if (this._targets) {
                            for (i = this._targets.length; --i > -1;)
                                if (e === this._targets[i]) {
                                    s = this._propLookup[i] || {}, this._overwrittenProps = this._overwrittenProps || [], r = this._overwrittenProps[i] = t ? this._overwrittenProps[i] || {} : "all";
                                    break
                                }
                        } else {
                            if (e !== this.target) return !1;
                            s = this._propLookup, r = this._overwrittenProps = t ? this._overwrittenProps || {} : "all"
                        }
                        if (s) {
                            if (u = t || s, c = t !== r && "all" !== r && t !== s && ("object" != typeof t || !t._tempKill), n && (R.onOverwrite || this.vars.onOverwrite)) {
                                for (o in u) s[o] && (h || (h = []), h.push(o));
                                if ((h || !t) && !Z(this, n, e, h)) return !1
                            }
                            for (o in u)(a = s[o]) && (p && (a.f ? a.t[a.p](a.s) : a.t[a.p] = a.s, l = !0), a.pg && a.t._kill(u) && (l = !0), a.pg && 0 !== a.t._overwriteProps.length || (a._prev ? a._prev._next = a._next : a === this._firstPT && (this._firstPT = a._next), a._next && (a._next._prev = a._prev), a._next = a._prev = null), delete s[o]), c && (r[o] = 1);
                            !this._firstPT && this._initted && this._enabled(!1, !1)
                        }
                    }
                    return l
                }, s.invalidate = function() {
                    return this._notifyPluginsOfEnabled && R._onPluginEvent("_onDisable", this), this._firstPT = this._overwrittenProps = this._startAt = this._onUpdate = null, this._notifyPluginsOfEnabled = this._active = this._lazy = !1, this._propLookup = this._targets ? {} : [], E.prototype.invalidate.call(this), this.vars.immediateRender && (this._time = -1e-10, this.render(Math.min(0, -this._delay))), this
                }, s._enabled = function(t, e) {
                    if (u || l.wake(), t && this._gc) {
                        var n, i = this._targets;
                        if (i)
                            for (n = i.length; --n > -1;) this._siblings[n] = $(i[n], this, !0);
                        else this._siblings = $(this.target, this, !0)
                    }
                    return E.prototype._enabled.call(this, t, e), !(!this._notifyPluginsOfEnabled || !this._firstPT) && R._onPluginEvent(t ? "_onEnable" : "_onDisable", this)
                }, R.to = function(t, e, n) {
                    return new R(t, e, n)
                }, R.from = function(t, e, n) {
                    return n.runBackwards = !0, n.immediateRender = 0 != n.immediateRender, new R(t, e, n)
                }, R.fromTo = function(t, e, n, i) {
                    return i.startAt = n, i.immediateRender = 0 != i.immediateRender && 0 != n.immediateRender, new R(t, e, i)
                }, R.delayedCall = function(t, e, n, i, r) {
                    return new R(e, 0, {
                        delay: t,
                        onComplete: e,
                        onCompleteParams: n,
                        callbackScope: i,
                        onReverseComplete: e,
                        onReverseCompleteParams: n,
                        immediateRender: !1,
                        lazy: !1,
                        useFrames: r,
                        overwrite: 0
                    })
                }, R.set = function(t, e) {
                    return new R(t, 0, e)
                }, R.getTweensOf = function(t, e) {
                    if (null == t) return [];
                    t = "string" != typeof t ? t : R.selector(t) || t;
                    var n, i, r, o;
                    if ((d(t) || A(t)) && "number" != typeof t[0]) {
                        for (n = t.length, i = []; --n > -1;) i = i.concat(R.getTweensOf(t[n], e));
                        for (n = i.length; --n > -1;)
                            for (o = i[n], r = n; --r > -1;) o === i[r] && i.splice(n, 1)
                    } else if (t._gsTweenID)
                        for (i = $(t).concat(), n = i.length; --n > -1;)(i[n]._gc || e && !i[n].isActive()) && i.splice(n, 1);
                    return i || []
                }, R.killTweensOf = R.killDelayedCallsTo = function(t, e, n) {
                    "object" == typeof e && (n = e, e = !1);
                    for (var i = R.getTweensOf(t, e), r = i.length; --r > -1;) i[r]._kill(n, t)
                };
                var et = y("plugins.TweenPlugin", function(t, e) {
                    this._overwriteProps = (t || "").split(","), this._propName = this._overwriteProps[0], this._priority = e || 0, this._super = et.prototype
                }, !0);
                if (s = et.prototype, et.version = "1.19.0", et.API = 2, s._firstPT = null, s._addTween = U, s.setRatio = F, s._kill = function(t) {
                        var e, n = this._overwriteProps,
                            i = this._firstPT;
                        if (null != t[this._propName]) this._overwriteProps = [];
                        else
                            for (e = n.length; --e > -1;) null != t[n[e]] && n.splice(e, 1);
                        for (; i;) null != t[i.n] && (i._next && (i._next._prev = i._prev), i._prev ? (i._prev._next = i._next, i._prev = null) : this._firstPT === i && (this._firstPT = i._next)), i = i._next;
                        return !1
                    }, s._mod = s._roundProps = function(t) {
                        for (var e, n = this._firstPT; n;) e = t[this._propName] || null != n.n && t[n.n.split(this._propName + "_").join("")], e && "function" == typeof e && (2 === n.f ? n.t._applyPT.m = e : n.m = e), n = n._next
                    }, R._onPluginEvent = function(t, e) {
                        var n, i, r, o, a, s = e._firstPT;
                        if ("_onInitAllProps" === t) {
                            for (; s;) {
                                for (a = s._next, i = r; i && i.pr > s.pr;) i = i._next;
                                (s._prev = i ? i._prev : o) ? s._prev._next = s: r = s, (s._next = i) ? i._prev = s : o = s, s = a
                            }
                            s = e._firstPT = r
                        }
                        for (; s;) s.pg && "function" == typeof s.t[t] && s.t[t]() && (n = !0), s = s._next;
                        return n
                    }, et.activate = function(t) {
                        for (var e = t.length; --e > -1;) t[e].API === et.API && (W[(new t[e])._propName] = t[e]);
                        return !0
                    }, _.plugin = function(t) {
                        if (!(t && t.propName && t.init && t.API)) throw "illegal plugin definition.";
                        var e, n = t.propName,
                            i = t.priority || 0,
                            r = t.overwriteProps,
                            o = {
                                init: "_onInitTween",
                                set: "setRatio",
                                kill: "_kill",
                                round: "_mod",
                                mod: "_mod",
                                initAll: "_onInitAllProps"
                            },
                            a = y("plugins." + n.charAt(0).toUpperCase() + n.substr(1) + "Plugin", function() {
                                et.call(this, n, i), this._overwriteProps = r || []
                            }, !0 === t.global),
                            s = a.prototype = new et(n);
                        s.constructor = a, a.API = t.API;
                        for (e in o) "function" == typeof t[e] && (s[o[e]] = t[e]);
                        return a.version = t.version, et.activate([a]), a
                    }, o = t._gsQueue) {
                    for (a = 0; a < o.length; a++) o[a]();
                    for (s in m) m[s].func || t.console.log("GSAP encountered missing dependency: " + s)
                }
                u = !1
            }
        }("undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window), define("com/gsap/TweenLite", function() {});
    var _gsScope = "undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window;
    (_gsScope._gsQueue || (_gsScope._gsQueue = [])).push(function() {
            "use strict";
            _gsScope._gsDefine("TimelineLite", ["core.Animation", "core.SimpleTimeline", "TweenLite"], function(t, e, n) {
                var i = function(t) {
                        e.call(this, t), this._labels = {}, this.autoRemoveChildren = !0 === this.vars.autoRemoveChildren, this.smoothChildTiming = !0 === this.vars.smoothChildTiming, this._sortChildren = !0, this._onUpdate = this.vars.onUpdate;
                        var n, i, r = this.vars;
                        for (i in r) n = r[i], s(n) && -1 !== n.join("").indexOf("{self}") && (r[i] = this._swapSelfInParams(n));
                        s(r.tweens) && this.add(r.tweens, 0, r.align, r.stagger)
                    },
                    r = n._internals,
                    o = i._internals = {},
                    a = r.isSelector,
                    s = r.isArray,
                    l = r.lazyTweens,
                    u = r.lazyRender,
                    c = _gsScope._gsDefine.globals,
                    h = function(t) {
                        var e, n = {};
                        for (e in t) n[e] = t[e];
                        return n
                    },
                    p = function(t, e, n) {
                        var i, r, o = t.cycle;
                        for (i in o) r = o[i], t[i] = "function" == typeof r ? r(n, e[n]) : r[n % r.length];
                        delete t.cycle
                    },
                    f = o.pauseCallback = function() {},
                    d = function(t) {
                        var e, n = [],
                            i = t.length;
                        for (e = 0; e !== i; n.push(t[e++]));
                        return n
                    },
                    m = i.prototype = new e;
                return i.version = "1.20.4", m.constructor = i, m.kill()._gc = m._forcingPlayhead = m._hasPause = !1, m.to = function(t, e, i, r) {
                    var o = i.repeat && c.TweenMax || n;
                    return e ? this.add(new o(t, e, i), r) : this.set(t, i, r)
                }, m.from = function(t, e, i, r) {
                    return this.add((i.repeat && c.TweenMax || n).from(t, e, i), r)
                }, m.fromTo = function(t, e, i, r, o) {
                    var a = r.repeat && c.TweenMax || n;
                    return e ? this.add(a.fromTo(t, e, i, r), o) : this.set(t, r, o)
                }, m.staggerTo = function(t, e, r, o, s, l, u, c) {
                    var f, m, g = new i({
                            onComplete: l,
                            onCompleteParams: u,
                            callbackScope: c,
                            smoothChildTiming: this.smoothChildTiming
                        }),
                        _ = r.cycle;
                    for ("string" == typeof t && (t = n.selector(t) || t), t = t || [], a(t) && (t = d(t)), o = o || 0, o < 0 && (t = d(t), t.reverse(), o *= -1), m = 0; m < t.length; m++) f = h(r), f.startAt && (f.startAt = h(f.startAt), f.startAt.cycle && p(f.startAt, t, m)), _ && (p(f, t, m), null != f.duration && (e = f.duration, delete f.duration)), g.to(t[m], e, f, m * o);
                    return this.add(g, s)
                }, m.staggerFrom = function(t, e, n, i, r, o, a, s) {
                    return n.immediateRender = 0 != n.immediateRender, n.runBackwards = !0, this.staggerTo(t, e, n, i, r, o, a, s)
                }, m.staggerFromTo = function(t, e, n, i, r, o, a, s, l) {
                    return i.startAt = n, i.immediateRender = 0 != i.immediateRender && 0 != n.immediateRender, this.staggerTo(t, e, i, r, o, a, s, l)
                }, m.call = function(t, e, i, r) {
                    return this.add(n.delayedCall(0, t, e, i), r)
                }, m.set = function(t, e, i) {
                    return i = this._parseTimeOrLabel(i, 0, !0), null == e.immediateRender && (e.immediateRender = i === this._time && !this._paused), this.add(new n(t, 0, e), i)
                }, i.exportRoot = function(t, e) {
                    t = t || {}, null == t.smoothChildTiming && (t.smoothChildTiming = !0);
                    var r, o, a, s, l = new i(t),
                        u = l._timeline;
                    for (null == e && (e = !0), u._remove(l, !0), l._startTime = 0, l._rawPrevTime = l._time = l._totalTime = u._time, a = u._first; a;) s = a._next, e && a instanceof n && a.target === a.vars.onComplete || (o = a._startTime - a._delay, o < 0 && (r = 1), l.add(a, o)), a = s;
                    return u.add(l, 0), r && l.totalDuration(), l
                }, m.add = function(r, o, a, l) {
                    var u, c, h, p, f, d;
                    if ("number" != typeof o && (o = this._parseTimeOrLabel(o, 0, !0, r)), !(r instanceof t)) {
                        if (r instanceof Array || r && r.push && s(r)) {
                            for (a = a || "normal", l = l || 0, u = o, c = r.length, h = 0; h < c; h++) s(p = r[h]) && (p = new i({
                                tweens: p
                            })), this.add(p, u), "string" != typeof p && "function" != typeof p && ("sequence" === a ? u = p._startTime + p.totalDuration() / p._timeScale : "start" === a && (p._startTime -= p.delay())), u += l;
                            return this._uncache(!0)
                        }
                        if ("string" == typeof r) return this.addLabel(r, o);
                        if ("function" != typeof r) throw "Cannot add " + r + " into the timeline; it is not a tween, timeline, function, or string.";
                        r = n.delayedCall(0, r)
                    }
                    if (e.prototype.add.call(this, r, o), r._time && r.render((this.rawTime() - r._startTime) * r._timeScale, !1, !1), (this._gc || this._time === this._duration) && !this._paused && this._duration < this.duration())
                        for (f = this, d = f.rawTime() > r._startTime; f._timeline;) d && f._timeline.smoothChildTiming ? f.totalTime(f._totalTime, !0) : f._gc && f._enabled(!0, !1), f = f._timeline;
                    return this
                }, m.remove = function(e) {
                    if (e instanceof t) {
                        this._remove(e, !1);
                        var n = e._timeline = e.vars.useFrames ? t._rootFramesTimeline : t._rootTimeline;
                        return e._startTime = (e._paused ? e._pauseTime : n._time) - (e._reversed ? e.totalDuration() - e._totalTime : e._totalTime) / e._timeScale, this
                    }
                    if (e instanceof Array || e && e.push && s(e)) {
                        for (var i = e.length; --i > -1;) this.remove(e[i]);
                        return this
                    }
                    return "string" == typeof e ? this.removeLabel(e) : this.kill(null, e)
                }, m._remove = function(t, n) {
                    return e.prototype._remove.call(this, t, n), this._last ? this._time > this.duration() && (this._time = this._duration, this._totalTime = this._totalDuration) : this._time = this._totalTime = this._duration = this._totalDuration = 0, this
                }, m.append = function(t, e) {
                    return this.add(t, this._parseTimeOrLabel(null, e, !0, t))
                }, m.insert = m.insertMultiple = function(t, e, n, i) {
                    return this.add(t, e || 0, n, i)
                }, m.appendMultiple = function(t, e, n, i) {
                    return this.add(t, this._parseTimeOrLabel(null, e, !0, t), n, i)
                }, m.addLabel = function(t, e) {
                    return this._labels[t] = this._parseTimeOrLabel(e), this
                }, m.addPause = function(t, e, i, r) {
                    var o = n.delayedCall(0, f, i, r || this);
                    return o.vars.onComplete = o.vars.onReverseComplete = e, o.data = "isPause", this._hasPause = !0, this.add(o, t)
                }, m.removeLabel = function(t) {
                    return delete this._labels[t], this
                }, m.getLabelTime = function(t) {
                    return null != this._labels[t] ? this._labels[t] : -1
                }, m._parseTimeOrLabel = function(e, n, i, r) {
                    var o, a;
                    if (r instanceof t && r.timeline === this) this.remove(r);
                    else if (r && (r instanceof Array || r.push && s(r)))
                        for (a = r.length; --a > -1;) r[a] instanceof t && r[a].timeline === this && this.remove(r[a]);
                    if (o = "number" != typeof e || n ? this.duration() > 99999999999 ? this.recent().endTime(!1) : this._duration : 0, "string" == typeof n) return this._parseTimeOrLabel(n, i && "number" == typeof e && null == this._labels[n] ? e - o : 0, i);
                    if (n = n || 0, "string" != typeof e || !isNaN(e) && null == this._labels[e]) null == e && (e = o);
                    else {
                        if (-1 === (a = e.indexOf("="))) return null == this._labels[e] ? i ? this._labels[e] = o + n : n : this._labels[e] + n;
                        n = parseInt(e.charAt(a - 1) + "1", 10) * Number(e.substr(a + 1)), e = a > 1 ? this._parseTimeOrLabel(e.substr(0, a - 1), 0, i) : o
                    }
                    return Number(e) + n
                }, m.seek = function(t, e) {
                    return this.totalTime("number" == typeof t ? t : this._parseTimeOrLabel(t), !1 !== e)
                }, m.stop = function() {
                    return this.paused(!0)
                }, m.gotoAndPlay = function(t, e) {
                    return this.play(t, e)
                }, m.gotoAndStop = function(t, e) {
                    return this.pause(t, e)
                }, m.render = function(t, e, n) {
                    this._gc && this._enabled(!0, !1);
                    var i, r, o, a, s, c, h, p = this._time,
                        f = this._dirty ? this.totalDuration() : this._totalDuration,
                        d = this._startTime,
                        m = this._timeScale,
                        g = this._paused;
                    if (p !== this._time && (t += this._time - p), t >= f - 1e-7 && t >= 0) this._totalTime = this._time = f, this._reversed || this._hasPausedChild() || (r = !0, a = "onComplete", s = !!this._timeline.autoRemoveChildren, 0 === this._duration && (t <= 0 && t >= -1e-7 || this._rawPrevTime < 0 || 1e-10 === this._rawPrevTime) && this._rawPrevTime !== t && this._first && (s = !0, this._rawPrevTime > 1e-10 && (a = "onReverseComplete"))), this._rawPrevTime = this._duration || !e || t || this._rawPrevTime === t ? t : 1e-10, t = f + 1e-4;
                    else if (t < 1e-7)
                        if (this._totalTime = this._time = 0, (0 !== p || 0 === this._duration && 1e-10 !== this._rawPrevTime && (this._rawPrevTime > 0 || t < 0 && this._rawPrevTime >= 0)) && (a = "onReverseComplete", r = this._reversed), t < 0) this._active = !1, this._timeline.autoRemoveChildren && this._reversed ? (s = r = !0, a = "onReverseComplete") : this._rawPrevTime >= 0 && this._first && (s = !0), this._rawPrevTime = t;
                        else {
                            if (this._rawPrevTime = this._duration || !e || t || this._rawPrevTime === t ? t : 1e-10, 0 === t && r)
                                for (i = this._first; i && 0 === i._startTime;) i._duration || (r = !1), i = i._next;
                            t = 0, this._initted || (s = !0)
                        }
                    else {
                        if (this._hasPause && !this._forcingPlayhead && !e) {
                            if (t >= p)
                                for (i = this._first; i && i._startTime <= t && !c;) i._duration || "isPause" !== i.data || i.ratio || 0 === i._startTime && 0 === this._rawPrevTime || (c = i), i = i._next;
                            else
                                for (i = this._last; i && i._startTime >= t && !c;) i._duration || "isPause" === i.data && i._rawPrevTime > 0 && (c = i), i = i._prev;
                            c && (this._time = t = c._startTime, this._totalTime = t + this._cycle * (this._totalDuration + this._repeatDelay))
                        }
                        this._totalTime = this._time = this._rawPrevTime = t
                    }
                    if (this._time !== p && this._first || n || s || c) {
                        if (this._initted || (this._initted = !0), this._active || !this._paused && this._time !== p && t > 0 && (this._active = !0), 0 === p && this.vars.onStart && (0 === this._time && this._duration || e || this._callback("onStart")), (h = this._time) >= p)
                            for (i = this._first; i && (o = i._next, h === this._time && (!this._paused || g));)(i._active || i._startTime <= h && !i._paused && !i._gc) && (c === i && this.pause(), i._reversed ? i.render((i._dirty ? i.totalDuration() : i._totalDuration) - (t - i._startTime) * i._timeScale, e, n) : i.render((t - i._startTime) * i._timeScale, e, n)), i = o;
                        else
                            for (i = this._last; i && (o = i._prev, h === this._time && (!this._paused || g));) {
                                if (i._active || i._startTime <= p && !i._paused && !i._gc) {
                                    if (c === i) {
                                        for (c = i._prev; c && c.endTime() > this._time;) c.render(c._reversed ? c.totalDuration() - (t - c._startTime) * c._timeScale : (t - c._startTime) * c._timeScale, e, n), c = c._prev;
                                        c = null, this.pause()
                                    }
                                    i._reversed ? i.render((i._dirty ? i.totalDuration() : i._totalDuration) - (t - i._startTime) * i._timeScale, e, n) : i.render((t - i._startTime) * i._timeScale, e, n)
                                }
                                i = o
                            }
                        this._onUpdate && (e || (l.length && u(), this._callback("onUpdate"))), a && (this._gc || d !== this._startTime && m === this._timeScale || (0 === this._time || f >= this.totalDuration()) && (r && (l.length && u(), this._timeline.autoRemoveChildren && this._enabled(!1, !1), this._active = !1), !e && this.vars[a] && this._callback(a)))
                    }
                }, m._hasPausedChild = function() {
                    for (var t = this._first; t;) {
                        if (t._paused || t instanceof i && t._hasPausedChild()) return !0;
                        t = t._next
                    }
                    return !1
                }, m.getChildren = function(t, e, i, r) {
                    r = r || -9999999999;
                    for (var o = [], a = this._first, s = 0; a;) a._startTime < r || (a instanceof n ? !1 !== e && (o[s++] = a) : (!1 !== i && (o[s++] = a), !1 !== t && (o = o.concat(a.getChildren(!0, e, i)), s = o.length))), a = a._next;
                    return o
                }, m.getTweensOf = function(t, e) {
                    var i, r, o = this._gc,
                        a = [],
                        s = 0;
                    for (o && this._enabled(!0, !0), i = n.getTweensOf(t), r = i.length; --r > -1;)(i[r].timeline === this || e && this._contains(i[r])) && (a[s++] = i[r]);
                    return o && this._enabled(!1, !0), a
                }, m.recent = function() {
                    return this._recent
                }, m._contains = function(t) {
                    for (var e = t.timeline; e;) {
                        if (e === this) return !0;
                        e = e.timeline
                    }
                    return !1
                }, m.shiftChildren = function(t, e, n) {
                    n = n || 0;
                    for (var i, r = this._first, o = this._labels; r;) r._startTime >= n && (r._startTime += t), r = r._next;
                    if (e)
                        for (i in o) o[i] >= n && (o[i] += t);
                    return this._uncache(!0)
                }, m._kill = function(t, e) {
                    if (!t && !e) return this._enabled(!1, !1);
                    for (var n = e ? this.getTweensOf(e) : this.getChildren(!0, !0, !1), i = n.length, r = !1; --i > -1;) n[i]._kill(t, e) && (r = !0);
                    return r
                }, m.clear = function(t) {
                    var e = this.getChildren(!1, !0, !0),
                        n = e.length;
                    for (this._time = this._totalTime = 0; --n > -1;) e[n]._enabled(!1, !1);
                    return !1 !== t && (this._labels = {}), this._uncache(!0)
                }, m.invalidate = function() {
                    for (var e = this._first; e;) e.invalidate(), e = e._next;
                    return t.prototype.invalidate.call(this)
                }, m._enabled = function(t, n) {
                    if (t === this._gc)
                        for (var i = this._first; i;) i._enabled(t, !0), i = i._next;
                    return e.prototype._enabled.call(this, t, n)
                }, m.totalTime = function(e, n, i) {
                    this._forcingPlayhead = !0;
                    var r = t.prototype.totalTime.apply(this, arguments);
                    return this._forcingPlayhead = !1, r
                }, m.duration = function(t) {
                    return arguments.length ? (0 !== this.duration() && 0 !== t && this.timeScale(this._duration / t), this) : (this._dirty && this.totalDuration(), this._duration)
                }, m.totalDuration = function(t) {
                    if (!arguments.length) {
                        if (this._dirty) {
                            for (var e, n, i = 0, r = this._last, o = 999999999999; r;) e = r._prev, r._dirty && r.totalDuration(), r._startTime > o && this._sortChildren && !r._paused && !this._calculatingDuration ? (this._calculatingDuration = 1, this.add(r, r._startTime - r._delay), this._calculatingDuration = 0) : o = r._startTime, r._startTime < 0 && !r._paused && (i -= r._startTime, this._timeline.smoothChildTiming && (this._startTime += r._startTime / this._timeScale, this._time -= r._startTime, this._totalTime -= r._startTime, this._rawPrevTime -= r._startTime), this.shiftChildren(-r._startTime, !1, -9999999999), o = 0), n = r._startTime + r._totalDuration / r._timeScale, n > i && (i = n), r = e;
                            this._duration = this._totalDuration = i, this._dirty = !1
                        }
                        return this._totalDuration
                    }
                    return t && this.totalDuration() ? this.timeScale(this._totalDuration / t) : this
                }, m.paused = function(e) {
                    if (!e)
                        for (var n = this._first, i = this._time; n;) n._startTime === i && "isPause" === n.data && (n._rawPrevTime = 0), n = n._next;
                    return t.prototype.paused.apply(this, arguments)
                }, m.usesFrames = function() {
                    for (var e = this._timeline; e._timeline;) e = e._timeline;
                    return e === t._rootFramesTimeline
                }, m.rawTime = function(t) {
                    return t && (this._paused || this._repeat && this.time() > 0 && this.totalProgress() < 1) ? this._totalTime % (this._duration + this._repeatDelay) : this._paused ? this._totalTime : (this._timeline.rawTime(t) - this._startTime) * this._timeScale
                }, i
            }, !0)
        }), _gsScope._gsDefine && _gsScope._gsQueue.pop()(),
        function(t) {
            "use strict";
            var e = function() {
                return (_gsScope.GreenSockGlobals || _gsScope).TimelineLite
            };
            "undefined" != typeof module && module.exports ? (require("./TweenLite.js"), module.exports = e()) : "function" == typeof define && define.amd && define("com/gsap/TimelineLite", ["TweenLite"], e)
        }();
    var _gsScope = "undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window;
    (_gsScope._gsQueue || (_gsScope._gsQueue = [])).push(function() {
            "use strict";
            var t, e, n, i = /(\d|\.)+/g,
                r = /(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,
                o = {
                    aqua: [0, 255, 255],
                    lime: [0, 255, 0],
                    silver: [192, 192, 192],
                    black: [0, 0, 0],
                    maroon: [128, 0, 0],
                    teal: [0, 128, 128],
                    blue: [0, 0, 255],
                    navy: [0, 0, 128],
                    white: [255, 255, 255],
                    fuchsia: [255, 0, 255],
                    olive: [128, 128, 0],
                    yellow: [255, 255, 0],
                    orange: [255, 165, 0],
                    gray: [128, 128, 128],
                    purple: [128, 0, 128],
                    green: [0, 128, 0],
                    red: [255, 0, 0],
                    pink: [255, 192, 203],
                    cyan: [0, 255, 255],
                    transparent: [255, 255, 255, 0]
                },
                a = function(t, e, n) {
                    return t = t < 0 ? t + 1 : t > 1 ? t - 1 : t, 255 * (6 * t < 1 ? e + (n - e) * t * 6 : t < .5 ? n : 3 * t < 2 ? e + (n - e) * (2 / 3 - t) * 6 : e) + .5 | 0
                },
                s = function(t, e) {
                    var n, s, l, u, c, h, p, f, d, m, g, _ = "hsl" === e;
                    if (t)
                        if ("number" == typeof t) n = [t >> 16, t >> 8 & 255, 255 & t];
                        else {
                            if ("," === t.charAt(t.length - 1) && (t = t.substr(0, t.length - 1)), o[t]) n = o[t];
                            else if ("#" === t.charAt(0)) 4 === t.length && (s = t.charAt(1), l = t.charAt(2), u = t.charAt(3), t = "#" + s + s + l + l + u + u), t = parseInt(t.substr(1), 16), n = [t >> 16, t >> 8 & 255, 255 & t];
                            else if ("hsl" === t.substr(0, 3))
                                if (n = g = t.match(i), _) {
                                    if (-1 !== t.indexOf("=")) return t.match(r)
                                } else c = Number(n[0]) % 360 / 360, h = Number(n[1]) / 100, p = Number(n[2]) / 100, l = p <= .5 ? p * (h + 1) : p + h - p * h, s = 2 * p - l, n.length > 3 && (n[3] = Number(t[3])), n[0] = a(c + 1 / 3, s, l), n[1] = a(c, s, l), n[2] = a(c - 1 / 3, s, l);
                            else n = t.match(i) || o.transparent;
                            n[0] = Number(n[0]), n[1] = Number(n[1]), n[2] = Number(n[2]), n.length > 3 && (n[3] = Number(n[3]))
                        }
                    else n = o.black;
                    return _ && !g && (s = n[0] / 255, l = n[1] / 255, u = n[2] / 255, f = Math.max(s, l, u), d = Math.min(s, l, u), p = (f + d) / 2, f === d ? c = h = 0 : (m = f - d, h = p > .5 ? m / (2 - f - d) : m / (f + d), c = f === s ? (l - u) / m + (l < u ? 6 : 0) : f === l ? (u - s) / m + 2 : (s - l) / m + 4, c *= 60), n[0] = c + .5 | 0, n[1] = 100 * h + .5 | 0, n[2] = 100 * p + .5 | 0), "number" === e ? n[0] << 16 | n[1] << 8 | n[2] : n
                },
                l = function(t, e) {
                    var n, i, r, o = (t + "").match(c) || [],
                        a = 0,
                        l = "";
                    if (!o.length) return t;
                    for (n = 0; n < o.length; n++) i = o[n], r = t.substr(a, t.indexOf(i, a) - a), a += r.length + i.length, i = s(i, e ? "hsl" : "rgb"), 3 === i.length && i.push(1), l += r + (e ? "hsla(" + i[0] + "," + i[1] + "%," + i[2] + "%," + i[3] : "rgba(" + i.join(",")) + ")";
                    return l + t.substr(a)
                },
                u = (_gsScope.GreenSockGlobals || _gsScope).TweenLite,
                c = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3}){1,2}\\b",
                h = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0],
                p = .212671,
                f = .072169,
                d = function(t, e) {
                    var n, i, r = [],
                        o = 0,
                        a = 0;
                    for (n = 0; n < 4; n++) {
                        for (i = 0; i < 5; i++) a = 4 === i ? t[o + 4] : 0, r[o + i] = t[o] * e[i] + t[o + 1] * e[i + 5] + t[o + 2] * e[i + 10] + t[o + 3] * e[i + 15] + a;
                        o += 5
                    }
                    return r
                },
                m = function(t, e) {
                    var n = 1 - e,
                        i = n * p,
                        r = .71516 * n,
                        o = n * f;
                    return d([i + e, r, o, 0, 0, i, r + e, o, 0, 0, i, r, o + e, 0, 0, 0, 0, 0, 1, 0], t)
                },
                g = function(t, e, n) {
                    var i = s(e),
                        r = i[0] / 255,
                        o = i[1] / 255,
                        a = i[2] / 255,
                        l = 1 - n;
                    return d([l + n * r * p, n * r * .71516, n * r * f, 0, 0, n * o * p, l + n * o * .71516, n * o * f, 0, 0, n * a * p, n * a * .71516, l + n * a * f, 0, 0, 0, 0, 0, 1, 0], t)
                },
                _ = function(t, e) {
                    e *= Math.PI / 180;
                    var n = Math.cos(e),
                        i = Math.sin(e);
                    return d([p + .787329 * n + i * -p, .71516 + -.71516 * n + -.71516 * i, f + n * -f + .927831 * i, 0, 0, p + n * -p + .143 * i, .71516 + .28484 * n + .14 * i, f + n * -f + -.283 * i, 0, 0, p + n * -p + -.787329 * i, .71516 + -.71516 * n + .71516 * i, f + .927831 * n + i * f, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1], t)
                },
                y = function(t, e) {
                    return d([e, 0, 0, 0, .5 * (1 - e), 0, e, 0, 0, .5 * (1 - e), 0, 0, e, 0, .5 * (1 - e), 0, 0, 0, 1, 0], t)
                },
                v = function(t, e) {
                    var n, i = _gsScope.PIXI.filters[e],
                        r = t.filters || [],
                        o = r.length;
                    if (!i) throw "PixiPlugin error: " + e + " isn't present.";
                    for (; --o > -1;)
                        if (r[o] instanceof i) return r[o];
                    return n = new i, "BlurFilter" === e && (n.blur = 0), r.push(n), t.filters = r, n
                },
                b = function(t, e, n, i) {
                    e._addTween(n, t, n[t], i[t], t), e._overwriteProps.push(t)
                },
                x = function(t, e) {
                    var n = new _gsScope.PIXI.filters.ColorMatrixFilter;
                    return n.matrix = e, n.brightness(t, !0), n.matrix
                },
                T = {
                    contrast: 1,
                    saturation: 1,
                    colorizeAmount: 0,
                    colorize: "rgb(255,255,255)",
                    hue: 0,
                    brightness: 1
                },
                w = function(t, e, n) {
                    var i, r, o, a = v(t, "ColorMatrixFilter"),
                        s = t._gsColorMatrixFilter = t._gsColorMatrixFilter || {
                            contrast: 1,
                            saturation: 1,
                            colorizeAmount: 0,
                            colorize: "rgb(255,255,255)",
                            hue: 0,
                            brightness: 1
                        },
                        l = e.combineCMF && !("colorMatrixFilter" in e && !e.colorMatrixFilter);
                    o = a.matrix, e.resolution && (a.resolution = e.resolution), e.matrix && e.matrix.length === o.length ? (r = e.matrix, 1 !== s.contrast && b("contrast", n, s, T), s.hue && b("hue", n, s, T), 1 !== s.brightness && b("brightness", n, s, T), s.colorizeAmount && (b("colorize", n, s, T), b("colorizeAmount", n, s, T)), 1 !== s.saturation && b("saturation", n, s, T)) : (r = h.slice(), null != e.contrast ? (r = y(r, Number(e.contrast)), b("contrast", n, s, e)) : 1 !== s.contrast && (l ? r = y(r, s.contrast) : b("contrast", n, s, T)), null != e.hue ? (r = _(r, Number(e.hue)), b("hue", n, s, e)) : s.hue && (l ? r = _(r, s.hue) : b("hue", n, s, T)), null != e.brightness ? (r = x(Number(e.brightness), r), b("brightness", n, s, e)) : 1 !== s.brightness && (l ? r = x(s.brightness, r) : b("brightness", n, s, T)), null != e.colorize ? (e.colorizeAmount = "colorizeAmount" in e ? Number(e.colorizeAmount) : 1, r = g(r, e.colorize, e.colorizeAmount), b("colorize", n, s, e), b("colorizeAmount", n, s, e)) : s.colorizeAmount && (l ? r = g(r, s.colorize, s.colorizeAmount) : (b("colorize", n, s, T), b("colorizeAmount", n, s, T))), null != e.saturation ? (r = m(r, Number(e.saturation)), b("saturation", n, s, e)) : 1 !== s.saturation && (l ? r = m(r, s.saturation) : b("saturation", n, s, T))), i = r.length;
                    for (; --i > -1;) r[i] !== o[i] && n._addTween(o, i, o[i], r[i], "colorMatrixFilter");
                    n._overwriteProps.push("colorMatrixFilter")
                },
                S = function(e, n, i, r, o) {
                    var a = r._firstPT = {
                        _next: r._firstPT,
                        t: e,
                        p: n,
                        proxy: {},
                        f: "function" == typeof e[n]
                    };
                    a.proxy[n] = "rgb(" + s(a.f ? e[n.indexOf("set") || "function" != typeof e["get" + n.substr(3)] ? n : "get" + n.substr(3)]() : e[n]).join(",") + ")", o._addTween(a.proxy, n, "get", "number" == typeof i ? "rgb(" + s(i, !1).join(",") + ")" : i, n, null, null, t)
                },
                P = function(t, e) {
                    var n = e.setRatio,
                        i = function(t) {
                            var r, o = i._firstPT;
                            for (n.call(e, t); o;) r = s(o.proxy[o.p], "number"), o.f ? o.t[o.p](r) : o.t[o.p] = r, o = o._next;
                            i.graphics && (i.graphics.dirty++, i.graphics.clearDirty++)
                        };
                    return e.setRatio = i, i
                },
                M = {
                    tint: 1,
                    lineColor: 1,
                    fillColor: 1
                },
                C = "position,scale,skew,pivot,anchor,tilePosition,tileScale".split(","),
                E = {
                    x: "position",
                    y: "position",
                    tileX: "tilePosition",
                    tileY: "tilePosition"
                },
                O = {
                    colorMatrixFilter: 1,
                    saturation: 1,
                    contrast: 1,
                    hue: 1,
                    colorize: 1,
                    colorizeAmount: 1,
                    brightness: 1,
                    combineCMF: 1
                },
                I = Math.PI / 180,
                R = function(t) {
                    return "string" == typeof t && "=" === t.charAt(1) ? t.substr(0, 2) + parseFloat(t.substr(2)) * I : t * I
                };
            for (e = 0; e < C.length; e++) n = C[e], E[n + "X"] = n, E[n + "Y"] = n;
            for (n in o) c += "|" + n + "\\b";
            c = new RegExp(c + ")", "gi"), t = function(t) {
                var e, n = t[0] + " " + t[1];
                c.lastIndex = 0, c.test(n) && (e = -1 !== n.indexOf("hsl(") || -1 !== n.indexOf("hsla("), t[0] = l(t[0], e), t[1] = l(t[1], e))
            }, u.defaultStringFilter || (u.defaultStringFilter = t);
            var A = _gsScope._gsDefine.plugin({
                propName: "pixi",
                priority: 0,
                API: 2,
                global: !0,
                version: "0.2.1",
                init: function(t, e, n, i) {
                    if (!t instanceof _gsScope.PIXI.DisplayObject) return !1;
                    var r, o, a, s, l, u, c, h, p, f, d;
                    for (u in e) {
                        if (r = E[u], a = e[u], "function" == typeof a && (a = a(i || 0, t)), r) o = -1 !== u.charAt(u.length - 1).toLowerCase().indexOf("x") ? "x" : "y", this._addTween(t[r], o, t[r][o], "skew" === r ? R(a) : a, u);
                        else if ("scale" === u || "anchor" === u || "pivot" === u || "tileScale" === u) this._addTween(t[u], "x", t[u].x, a, u + "X"), this._addTween(t[u], "y", t[u].y, a, u + "Y");
                        else if ("rotation" === u) this._addTween(t, u, t.rotation, R(a), u);
                        else if (O[u]) s || (w(t, e.colorMatrixFilter || e, this), s = !0);
                        else if ("blur" === u || "blurX" === u || "blurY" === u || "blurPadding" === u) {
                            if (l = v(t, "BlurFilter"), this._addTween(l, u, l[u], a, u), 0 !== e.blurPadding)
                                for (c = e.blurPadding || 2 * Math.max(l[u], a), p = t.filters.length; --p > -1;) t.filters[p].padding = Math.max(t.filters[p].padding, c)
                        } else if (M[u])
                            if (h || (h = P(0, this)), ("lineColor" === u || "fillColor" === u) && t instanceof _gsScope.PIXI.Graphics) {
                                for (f = t.graphicsData, p = f.length; --p > -1;) S(f[p], u, a, h, this);
                                h.graphics = t
                            } else S(t, u, a, h, this);
                        else "autoAlpha" === u ? (this._firstPT = d = {
                            t: {
                                setRatio: function() {
                                    t.visible = !!t.alpha
                                }
                            },
                            p: "setRatio",
                            s: 0,
                            c: 1,
                            f: 1,
                            pg: 0,
                            n: "visible",
                            pr: 0,
                            m: 0,
                            _next: this._firstPT
                        }, d._next && (d._next._prev = d), this._addTween(t, "alpha", t.alpha, a, "alpha"), this._overwriteProps.push("alpha", "visible")) : this._addTween(t, u, t[u], a, u);
                        this._overwriteProps.push(u)
                    }
                    return !0
                }
            });
            A.colorProps = M, A.parseColor = s, A.formatColors = l, A.colorStringFilter = t
        }), _gsScope._gsDefine && _gsScope._gsQueue.pop()(),
        function(t) {
            "use strict";
            var e = function() {
                return (_gsScope.GreenSockGlobals || _gsScope).PixiPlugin
            };
            "undefined" != typeof module && module.exports ? (require("../TweenLite.js"), module.exports = e()) : "function" == typeof define && define.amd && define("com/gsap/plugins/PixiPlugin", ["TweenLite"], e)
        }(), define("skbJet/componentManchester/commonUI/UI", ["require", "com/pixijs/pixi", "com/gsap/TimelineLite", "com/gsap/plugins/PixiPlugin"], function(t) {
            function e(t) {
                t.hidden || (t.visible = !1, t.hidden = 1)
            }

            function n(t) {
                2 !== t.hidden && (t.visible = !0, delete t.hidden)
            }

            function i(t, r) {
                Object.keys(r).forEach(function(o) {
                    void 0 !== t[o] && ("object" == typeof r[o] && "object" == typeof t[o] ? null === r[o] && void 0 !== t[o].visible ? e(t[o]) : r[o] ? (1 === t[o].hidden && n(t[o]), i(t[o], r[o])) : t[o] = r[o] : t[o] = r[o])
                })
            }

            function r(t) {
                o.Container.call(this), this.opts = t || {}, this.buttons = []
            }
            var o = t("com/pixijs/pixi");
            t("com/gsap/TimelineLite"), t("com/gsap/plugins/PixiPlugin");
            var a = window.TweenLite;
            return r.prototype = Object.create(o.Container.prototype), r.prototype.addComponent = function(t, e) {
                this[t] = e, e.name = t, this.addChild(e)
            }, r.prototype.addComponents = function(t) {
                for (var e = Object.keys(t), n = 0; n < e.length; n++) this.addComponent(e[n], t[e[n]])
            }, r.prototype.addButtons = function(t) {
                for (var e = Object.keys(t), n = 0; n < e.length; n++) this.buttons.push(e[n]), this.addComponent(e[n], t[e[n]])
            }, r.prototype.setProps = function(t) {
                i(this, t)
            }, r.prototype.focus = function() {
                this.opts.gameLayer instanceof o.Container && (this.focusTween = a.to(this.opts.gameLayer, .2, {
                    pixi: {
                        blur: 10
                    }
                }))
            }, r.prototype.unFocus = function() {
                this.opts.gameLayer instanceof o.Container && (this.focusTween && this.focusTween.pause(), null !== this.opts.gameLayer.filters && a.to(this.opts.gameLayer, .2, {
                    pixi: {
                        blur: 0
                    },
                    onComplete: function() {
                        this.target.filters = null
                    }
                }))
            }, r.prototype.showButton = function(t, e) {
                if (this.buttons.indexOf(t) < 0) throw new Error("Button `" + t + "` not found in UI");
                for (var n = 0; n < this.buttons.length; n++) this.buttons[n] === t ? (this[this.buttons[n]].visible = !0, void 0 !== e && (this[this.buttons[n]].enabled = e)) : this[this.buttons[n]].visible = !1
            }, r
        }), define("skbJet/componentManchester/commonUI/FlexSprite", ["require", "com/pixijs/pixi"], function(t) {
            function e(t) {
                n.mesh.NineSlicePlane.call(this, n.Texture.EMPTY), "string" == typeof t && (this.name = t)
            }
            var n = t("com/pixijs/pixi");
            return e.prototype = Object.create(n.mesh.NineSlicePlane.prototype, {
                frame: {
                    get: function() {
                        return this.texture
                    },
                    set: function(t) {
                        n.utils.TextureCache[t] ? this.texture = n.Texture.fromFrame(t) : this.texture = n.Texture.EMPTY
                    }
                }
            }), e
        }), define("skbJet/componentManchester/commonUI/Footer", ["require", "com/pixijs/pixi", "./FlexSprite"], function(t) {
            function e(t) {
                i.call(this);
                var e = Object.keys(t);
                this._meters = [], this._dividers = [], this.padding = 20, this._fixedWidth = !1, this._dividerFrame = "";
                for (var n = 0; n < e.length; n++) this.addMeter(e[n], t[e[n]])
            }
            var n = t("com/pixijs/pixi"),
                i = t("./FlexSprite");
            return e.prototype = Object.create(i.prototype, {
                fixedWidth: {
                    get: function() {
                        return this._fixedWidth
                    },
                    set: function(t) {
                        this._fixedWidth = t, this.updateLayout()
                    }
                },
                dividerFrame: {
                    get: function() {
                        return this._dividerFrame
                    },
                    set: function(t) {
                        this._dividerFrame = t, this._dividers.forEach(function(e) {
                            e.texture = n.Texture.fromFrame(t)
                        })
                    }
                }
            }), e.prototype.addMeter = function(t, e) {
                if (this._meters.length > this._dividers.length) {
                    var i = new n.Sprite(n.Texture.EMPTY);
                    i.anchor.y = .5, this._dividers.push(i),
                        this.addChild(i)
                }
                this[t] = e, this.addChild(e), this._meters.push(e), e.name = t
            }, e.prototype.updateLayout = function() {
                var t = this._meters.filter(function(t) {
                    return t.visible
                }).sort(function(t, e) {
                    return t.index < e.index ? -1 : 1
                });
                if (this._dividers.forEach(function(t) {
                        t.visible = !1
                    }), this._fixedWidth) {
                    for (var e = 0; e < t.length; e++) e < t.length - 1 && (this._dividers[e].visible = !0, this._dividers[e].x = this._fixedWidth / t.length * (e + 1), this._dividers[e].y = this.height / 2), t[e].x = this._fixedWidth / t.length * (e + .5), t[e].y = this.height / 2;
                    return this.width = this._fixedWidth, void(this.pivot.x = this._fixedWidth / 2)
                }
                for (var n = 0, i = 0; i < t.length; i++) {
                    t[i].plus && t[i].minus && (t[i].plus.x = 0, t[i].minus.x = 0);
                    var r = Math.max(t[i].getLocalBounds().width, t[i].minWidth);
                    t[i].plus && t[i].minus && (t[i].minus.x = r / -2 - this.padding - t[i].minus.width / 2, t[i].plus.x = r / 2 + this.padding + t[i].plus.width / 2, r = Math.max(t[i].getLocalBounds().width, t[i].minWidth)), n += this.padding, t[i].x = n + r / 2, t[i].y = this.height / 2, n += r + this.padding, i < t.length - 1 && (this._dividers[i].visible = !0, this._dividers[i].x = n, this._dividers[i].y = this.height / 2)
                }
                this.width = n, this.pivot.x = n / 2
            }, e
        }), define("skbJet/componentManchester/commonUI/FrameSprite", ["require", "com/pixijs/pixi"], function(t) {
            function e(t) {
                n.Sprite.call(this, n.Texture.EMPTY), "string" == typeof t && (this.name = t)
            }
            var n = t("com/pixijs/pixi");
            return e.prototype = Object.create(n.Sprite.prototype, {
                frame: {
                    get: function() {
                        return this.texture
                    },
                    set: function(t) {
                        n.utils.TextureCache[t] ? this.texture = n.Texture.fromFrame(t) : this.texture = n.Texture.EMPTY
                    }
                }
            }), e
        }), define("skbJet/componentManchester/commonUI/Meter", ["require", "com/pixijs/pixi", "./FrameSprite"], function(t) {
            function e(t) {
                i.call(this);
                var e = t || {};
                this._labelText = new n.Text(e.label || " ", {
                    fontFamily: "Oswald, Arial, sans-serif",
                    fontSize: e.labelSize || 24,
                    fill: e.labelFill || 0,
                    padding: 5
                }), this._valueText = new n.Text(e.value || " ", {
                    fontFamily: "Oswald, Arial, sans-serif",
                    fontSize: e.valueSize || 24,
                    fill: e.valueFill || 0,
                    padding: 5
                }), this._labelText.name = "label", this._valueText.name = "value", this.minWidth = 0, this.index = e.index || 0, this.addChild(this._labelText, this._valueText), this.multiline = e.multiline || !1
            }
            var n = t("com/pixijs/pixi"),
                i = t("./FrameSprite");
            return e.prototype = Object.create(i.prototype, {
                value: {
                    get: function() {
                        return this._valueText.text
                    },
                    set: function(t) {
                        this._valueText.text = t, this.relayout()
                    }
                },
                label: {
                    get: function() {
                        return this._labelText.text
                    },
                    set: function(t) {
                        this._labelText.text = t, this.relayout()
                    }
                },
                valueStyle: {
                    get: function() {
                        return this._valueText.style
                    },
                    set: function(t) {
                        this._valueText.style = t, this.relayout()
                    }
                },
                labelStyle: {
                    get: function() {
                        return this._labelText.style
                    },
                    set: function(t) {
                        this._labelText.style = t, this.relayout()
                    }
                },
                multiline: {
                    get: function() {
                        return this._multiline
                    },
                    set: function(t) {
                        this._multiline = !!t, this.relayout()
                    }
                }
            }), e.prototype.relayout = function() {
                this._multiline ? (this._labelText.anchor.x = .5, this._labelText.x = 0, this._valueText.anchor.x = .5, this._valueText.x = 0) : (this._labelText.anchor.x = 0, this._labelText.x = (this._labelText.width + 5 + this._valueText.width) / -2, this._valueText.anchor.x = 0, this._valueText.x = this._labelText.width + 5 + this._labelText.x)
            }, e
        }), define("skbJet/componentManchester/commonUI/Button", ["require", "com/pixijs/pixi"], function(t) {
            function e(t) {
                n.Sprite.call(this, n.Texture.EMPTY), t = t || {}, this._textures = {}, this._enabled = !0, this.interactive = !0, this.buttonMode = !0, this.anchor.set(.5), this.enabledTexture = t.enabled || null, this.disabledTexture = t.disabled || null, this.pressedTexture = t.pressed || null, this.overTexture = t.over || null, this.on("pointerdown", this._pointerDown, this), this.on("pointerup", this._pointerUp, this), this.on("pointerupoutside", this._pointerUpOutside, this), this.on("pointerover", this._pointerOver, this), this.on("pointerout", this._pointerOut, this)
            }
            var n = t("com/pixijs/pixi");
            return e.prototype = Object.create(n.Sprite.prototype, {
                enabled: {
                    get: function() {
                        return this._enabled
                    },
                    set: function(t) {
                        this._enabled = !!t, this.interactive = this._enabled, t && null !== this._textures.enabled ? (this.visible = !0, this.texture = this._textures.enabled) : null !== this._textures.disabled ? this.texture = this._textures.disabled : this.visible = t
                    }
                },
                enabledTexture: {
                    get: function() {
                        return this._textures.enabled
                    },
                    set: function(t) {
                        n.utils.TextureCache[t] ? (this._textures.enabled = n.Texture.fromFrame(t), this._textures.enabled.width === this._textures.enabled.height ? this.hitArea = new n.Circle(0, 0, this._textures.enabled.width / 2) : this.hitArea = null) : (this._textures.enabled = n.Texture.EMPTY, this.hitArea = null), this._enabled && (this.texture = this._textures.enabled)
                    }
                },
                disabledTexture: {
                    get: function() {
                        return this._textures.disabled
                    },
                    set: function(t) {
                        this._enabled || this.visible || null !== this._textures.disabled || (this.visible = !0), this._textures.disabled = n.utils.TextureCache[t] ? n.Texture.fromFrame(t) : n.Texture.EMPTY, this._enabled || (this.texture = this._textures.disabled)
                    }
                },
                pressedTexture: {
                    get: function() {
                        return this._textures.pressed
                    },
                    set: function(t) {
                        n.utils.TextureCache[t] ? this._textures.pressed = n.Texture.fromFrame(t) : this._textures.pressed = null
                    }
                },
                overTexture: {
                    get: function() {
                        return this._textures.over
                    },
                    set: function(t) {
                        n.utils.TextureCache[t] ? this._textures.over = n.Texture.fromFrame(t) : this._textures.over = null
                    }
                }
            }), e.prototype._pointerOver = function(t) {
                this._enabled && (t.target.trackedPointers[t.data.identifier].leftDown && null !== this._textures.pressed ? this.texture = this._textures.pressed : null !== this._textures.over && (this.texture = this._textures.over))
            }, e.prototype._pointerOut = function() {
                this._enabled && null !== this._textures.enabled && (this.texture = this._textures.enabled)
            }, e.prototype._pointerDown = function(t) {
                !this._enabled || !this.enableMultitouch && e.singleButtonLock && e.singleButtonLock.worldVisible || "mouse" === t.data.pointerType && 0 !== t.data.button || (null !== this._textures.pressed && (this.texture = this._textures.pressed), this.enableMultitouch || (e.singleButtonLock = this))
            }, e.prototype._pointerUp = function(t) {
                (this.enableMultitouch || e.singleButtonLock === this) && (e.singleButtonLock === this && (e.singleButtonLock = null), this._enabled && (this.texture = "mouse" !== t.data.pointerType ? this._textures.enabled : this._textures.over || this._textures.enabled), "mouse" === t.data.pointerType && 0 !== t.data.button || this.emit("buttonpress", t))
            }, e.prototype._pointerUpOutside = function() {
                e.singleButtonLock === this && (e.singleButtonLock = null), this._enabled && null !== this._textures.enabled && (this.texture = this._textures.enabled)
            }, e
        }), define("skbJet/componentManchester/commonUI/BetConfig", ["require", "com/pixijs/pixi", "./Button", "./FrameSprite", "com/gsap/TweenLite"], function(t) {
            function e() {
                n.Container.call(this), this.controls = new r("controls"), this.openButton = new i, this.closeButton = new i, this.openButton.name = "openButton", this.closeButton.name = "closeButton", this.openButton.on("buttonpress", this.open, this), this.closeButton.on("buttonpress", this.close, this), this._enabled = !0, this._controlsVisible = !1, this.addChild(this.controls, this.openButton, this.closeButton), this.closeButton.visible = !1, this.openButton.visible = !0, this.controls.visible = !1
            }
            var n = t("com/pixijs/pixi"),
                i = t("./Button"),
                r = t("./FrameSprite");
            t("com/gsap/TweenLite");
            var o = window.TweenLite;
            return e.prototype = Object.create(n.Container.prototype, {
                enabled: {
                    get: function() {
                        return this._enabled
                    },
                    set: function(t) {
                        this._enabled = !!t, this.openButton.enabled = t;
                        for (var e = 0; e < this.controls.children.length; e++) this.controls.children[e].enabled = t;
                        t || this.close()
                    }
                },
                controlsVisible: {
                    get: function() {
                        return this._controlsVisible
                    },
                    set: function(t) {
                        this._controlsVisible = !!t, t && (this.controls.visible = !0)
                    }
                }
            }), e.prototype.open = function() {
                this.controlsVisible || (this.controls.visible = !0, this.openButton.visible = !1, this.closeButton.visible = !0, o.fromTo(this.controls, .2, {
                    alpha: 0,
                    scaleX: 1.1,
                    scaleY: 1.1
                }, {
                    alpha: 1,
                    scaleX: 1,
                    scaleY: 1
                }))
            }, e.prototype.close = function() {
                this.controlsVisible || (this.closeButton.visible = !1, this.openButton.visible = !0, o.to(this.controls, .2, {
                    alpha: 0,
                    scaleX: .9,
                    scaleY: .9,
                    onComplete: function() {
                        this.target.visible = !1, this.target.alpha = 1, this.target.scale.set(1)
                    }
                }))
            }, e.prototype.addControl = function(t) {
                this[t.name] = t, this.controls.addChild(t)
            }, e
        }), define("skbJet/componentManchester/commonUI/LabelledButton", ["require", "com/pixijs/pixi", "./Button"], function(t) {
            function e(t) {
                i.call(this, t), this._text = new n.Text(" "), this._text.anchor.set(.5), this.addChild(this._text)
            }
            var n = t("com/pixijs/pixi"),
                i = t("./Button");
            return e.prototype = Object.create(i.prototype, {
                text: {
                    get: function() {
                        return this._text.text
                    },
                    set: function(t) {
                        this._text.text = t
                    }
                },
                textStyle: {
                    get: function() {
                        return this._text.style
                    },
                    set: function(t) {
                        this._text.style = t
                    }
                }
            }), e
        }), define("skbJet/componentManchester/commonUI/slot/AutoSpin", ["require", "com/pixijs/pixi", "../Button", "../FrameSprite"], function(t) {
            function e() {
                n.Container.call(this), this._meter = new r, this._meterText = new n.Text(" ", {
                    fontFamily: "Oswald, Arial, sans-serif",
                    fontSize: 40,
                    fill: 16777215
                }), this._meter.anchor.set(.5), this._meterText.anchor.set(.5), this._meter.addChild(this._meterText), this._meter.name = "counter", this._count = 0, this._active = !1, this._startButton = new i, this._stopButton = new i, this._startButton.name = "startButton", this._stopButton.name = "stopButton", this.addChild(this._startButton, this._stopButton, this._meter)
            }
            var n = t("com/pixijs/pixi"),
                i = t("../Button"),
                r = t("../FrameSprite");
            return e.prototype = Object.create(n.Container.prototype, {
                count: {
                    get: function() {
                        return this._count
                    },
                    set: function(t) {
                        this._count = Math.max(t, 0), this._meterText.text = this._count, this._meter.visible = this._count > 0
                    }
                },
                active: {
                    get: function() {
                        return this._active
                    },
                    set: function(t) {
                        this._active = !!t, this._stopButton.visible = t, this._startButton.visible = !t
                    }
                },
                enabled: {
                    get: function() {
                        return this._startButton.enabled
                    },
                    set: function(t) {
                        this._startButton.enabled = t
                    }
                }
            }), e
        }), define("skbJet/componentManchester/commonUI/super", [], function() {
            function t(e, n, i, r) {
                var o = Object.getOwnPropertyDescriptor(e, n);
                if (void 0 === o) {
                    var a = Object.getPrototypeOf(e);
                    null !== a && t(a, n, i, r)
                } else if ("value" in o && o.writable) o.value = i;
                else {
                    var s = o.set;
                    void 0 !== s && s.call(r, i)
                }
                return i
            }
            return {
                set: t
            }
        }), define("skbJet/componentManchester/commonUI/slot/ActivityAnim", ["require", "com/pixijs/pixi", "../super"], function(t) {
            function e() {
                n.Sprite.call(this, n.Texture.fromFrame("activityBackground")), this._swirl = n.extras.AnimatedSprite.fromFrames(["activityAnim0001", "activityAnim0002", "activityAnim0003", "activityAnim0004", "activityAnim0005", "activityAnim0006", "activityAnim0007", "activityAnim0008", "activityAnim0009", "activityAnim0010", "activityAnim0011", "activityAnim0012", "activityAnim0013", "activityAnim0014", "activityAnim0015", "activityAnim0016", "activityAnim0017", "activityAnim0018", "activityAnim0019", "activityAnim0020", "activityAnim0021", "activityAnim0022", "activityAnim0023", "activityAnim0024", "activityAnim0025", "activityAnim0026", "activityAnim0027", "activityAnim0028", "activityAnim0029", "activityAnim0030", "activityAnim0031", "activityAnim0032", "activityAnim0033", "activityAnim0034", "activityAnim0035", "activityAnim0036", "activityAnim0037", "activityAnim0038", "activityAnim0039", "activityAnim0040"]), this.anchor.set(.5), this._swirl.anchor.set(.5), this._swirl.animationSpeed = .5, this._targetTexture = n.Texture.EMPTY, this._visible = !1, this.visible = !1, this.addChild(this._swirl)
            }
            var n = t("com/pixijs/pixi"),
                i = t("../super");
            return e.prototype = Object.create(n.Sprite.prototype, {
                visible: {
                    get: function() {
                        return this._visible
                    },
                    set: function(t) {
                        this._visible = !!t, i.set(Object.getPrototypeOf(e.prototype), "visible", this._visible, this), this._swirl && (this._visible ? this._swirl.play() : this._swirl.stop())
                    }
                },
                targetTexture: {
                    get: function() {
                        return this._targetTexture
                    },
                    set: function(t) {
                        this._targetTexture = n.Texture.fromFrame(t), this.scale.x = this._targetTexture.width / this.texture.width, this.scale.y = this._targetTexture.height / this.texture.height
                    }
                }
            }), e
        }), define("skbJet/componentManchester/commonUI/slot/color", ["require", "com/pixijs/pixi"], function(t) {
            var e, n = t("com/pixijs/pixi");
            return function() {
                if (void 0 !== e) return e;
                var t = document.createElement("canvas"),
                    i = t.getContext("2d"),
                    r = ["footerTitleColour", "footerValueColour", "betControlsTitleColour", "betControlsValueColour", "autoSpinCounterValueColour", "messagePromptColour"];
                return e = {}, r.forEach(function(t) {
                    var r = n.utils.TextureCache[t];
                    if (r) {
                        var o = r.orig,
                            a = r.baseTexture.resolution;
                        i.clearRect(0, 0, 1, 1), i.drawImage(r.baseTexture.source, o.x * a, o.y * a, o.width * a, o.height * a, 0, 0, 1, 1);
                        var s = i.getImageData(0, 0, 1, 1).data;
                        e[t] = n.utils.rgb2hex([].slice.call(s, 0, 3).map(function(t) {
                            return t / 255
                        }))
                    }
                }), e
            }
        }), define("skbJet/componentManchester/commonUI/slot/logic/autoSpinController", ["require", "skbJet/component/gameMsgBus/GameMsgBus"], function(t) {
            function e(t) {
                i = "false" !== t.PaytableResponse.AutoSpinInfo["@enable"].toLowerCase()
            }
            var n = t("skbJet/component/gameMsgBus/GameMsgBus"),
                i = !0;
            return n.subscribe("platformMsg/ClientService/Game.Init", e),
                function(t) {
                    function e(t) {
                        f.count = t, f.active = !0, n.publish("toPlatform", {
                            channel: "Game",
                            topic: "Game.AutoSpinStart"
                        }), n.publish("UI.AutoSpinStart", {
                            count: t
                        })
                    }

                    function r() {
                        f._startButton.enabled = !0, t.spin.enabled = !0, t.betConfig.enabled = !0
                    }

                    function o() {
                        f._startButton.enabled = !1, t.spin.enabled = !1, t.betConfig.enabled = !1, n.publish("UI.AutoSpinDialogueOpen"), n.publish("toPlatformRequest", {
                            channel: "Game",
                            topic: "Game.AutoSpinOption",
                            data: {},
                            successCallback: function(t) {
                                t && "cancel" !== t.action ? e(t.steps) : (n.publish("UI.AutoSpinDialogueClose"), r())
                            },
                            failCallback: r
                        })
                    }

                    function a() {
                        f._meter.visible = !1, f.count = 0, f.active = !1
                    }

                    function s() {
                        f.count = 0, f.active = !1, f.emit("stop", {
                            type: "autospinstop"
                        }), n.publish("toPlatform", {
                            channel: "Game",
                            topic: "Game.AutoSpinStopped"
                        })
                    }

                    function l() {
                        f.count -= 1, f.count <= 0 && s()
                    }

                    function u(t) {
                        f.count > 0 && f.active, "BaseGame" === t.response.OutcomeDetail.NextStage && (f.enabled = !1, l())
                    }

                    function c(t) {
                        t.response.PromotionalFreeSpin && t.response.PromotionalFreeSpin["@count"] <= 0 && s()
                    }

                    function h() {
                        f.active && s()
                    }

                    function p(e) {
                        "BaseGame" === e.response.OutcomeDetail.Stage && (f.enabled = !0, t.spin.enabled = !0)
                    }
                    var f = t.autoSpin;
                    if (!i) return void Object.defineProperty(f, "visible", {
                        value: !1,
                        writable: !1
                    });
                    f._stopButton.visible = !1, f._meter.visible = !1, f._startButton.on("buttonpress", o), f._stopButton.on("buttonpress", a), n.subscribe("platformMsg/ClientService/Game.StopAutoSpin", s), n.subscribe("onBeforeRequest", u), n.subscribe("onResolveStage", c), n.subscribe("onAbortStage", h), n.subscribe("onResetNextStage", p)
                }
        }), define("skbJet/componentManchester/commonUI/slot/logic/networkActivityController", ["require", "skbJet/component/gameMsgBus/GameMsgBus"], function(t) {
            var e = t("skbJet/component/gameMsgBus/GameMsgBus");
            return function(t) {
                function n() {
                    t.activityAnim.visible = !0, t.spin && (t.spin.visible = !1)
                }

                function i(e) {
                    t.opts.networkActivityStages.indexOf(e.nextStage) > -1 && (clearTimeout(o), t.activityAnim.visible = !1, t.spin && (t.spin.visible = !0))
                }

                function r(e) {
                    t.opts.networkActivityStages.indexOf(e.nextStage) > -1 && (o && i(e), o = setTimeout(n, 3e3))
                }
                var o;
                e.subscribe("onBeforeRequest", r), e.subscribe("onResolveStage", i), e.subscribe("onResetNextStage", i)
            }
        }), define("skbJet/componentManchester/commonUI/ControlledMeter", ["require", "./Button", "./Meter"], function(t) {
            function e(t) {
                i.call(this, t), this.anchor.x = .5, this._value = void 0 !== t.value ? t.value : t.values[0], this._enabled = !0, t.values && (this._values = t.values, this._displayValues = t.displayValues, this.buttonsVisible = !0, this._valueText.text = this.displayValue, this.plus = new n, this.minus = new n, this.plus.name = "plus", this.minus.name = "minus", this.plus.enabled = !1, this.minus.enabled = !1, this.addChild(this.plus, this.minus), t.values.length > 1 && (this.plus.on("buttonpress", this.increment, this), this.minus.on("buttonpress", this.decrement, this))), this.value = this._value
            }
            var n = t("./Button"),
                i = t("./Meter");
            return e.prototype = Object.create(i.prototype, {
                value: {
                    get: function() {
                        return this._value
                    },
                    set: function(t) {
                        if (this._enabled) {
                            if (void 0 === this._values) this.setSimpleValue(t);
                            else {
                                if (!(this._values.indexOf(t) > -1)) throw new Error("Attempting to set value outside of values array");
                                this.setValueFromRange(t)
                            }
                            this.relayout()
                        }
                    }
                },
                displayValue: {
                    get: function() {
                        return void 0 === this._displayValues ? this._value.toString() : this._displayValues[this._values.indexOf(this._value)]
                    }
                },
                increment: {
                    value: function() {
                        if (void 0 === this._values || 0 === this._values.length) throw new Error("An array of values is required in order to increment");
                        var t = this._values.indexOf(this._value) + 1;
                        t < this._values.length && this.emit("change", {
                            name: this.name,
                            value: this._values[t]
                        }), this.emit("increment", {
                            name: this.name
                        })
                    }
                },
                decrement: {
                    value: function() {
                        if (void 0 === this._values || 0 === this._values.length) throw new Error("An array of values is required in order to decrement");
                        var t = this._values.indexOf(this._value) - 1;
                        t >= 0 && this.emit("change", {
                            name: this.name,
                            value: this._values[t]
                        }), this.emit("decrement", {
                            name: this.name
                        })
                    }
                },
                label: {
                    get: function() {
                        return this._labelText.text
                    },
                    set: function(t) {
                        this._labelText.text = t, this.relayout()
                    }
                },
                enabled: {
                    get: function() {
                        return this._enabled
                    },
                    set: function(t) {
                        this._enabled = !!t, this.enableButtons()
                    }
                }
            }), e.prototype.setSimpleValue = function(t) {
                this._value = t, this._valueText.text = t
            }, e.prototype.setValueFromRange = function(t) {
                this._value = t, this._valueText.text = this.displayValue, this._values.length > 1 && this.enableButtons()
            }, e.prototype.enableButtons = function() {
                this._values && (this.plus.enabled = this._enabled && this._value !== this._values[this._values.length - 1], this.minus.enabled = this._enabled && this._value !== this._values[0], this.plus.visible = this.buttonsVisible, this.minus.visible = this.buttonsVisible)
            }, e
        }), define("skbJet/componentManchester/commonUI/BetControl", ["require", "com/pixijs/pixi", "./ControlledMeter"], function(t) {
            function e(t, e) {
                e.labelSize = 30, e.valueSize = 54, i.call(this, e), this.name = t, e.values && e.values.length > 1 && (this._pips = this._values.map(function(t, e) {
                    var i = n.Sprite.fromFrame("portrait_betIndicatorActive");
                    return i.x = i.width * e, i
                }), this.pips = new n.Container, this.pips.addChild.apply(this.pips, this._pips), this.pips.pivot.x = this.pips.width / 2, this.pips.name = "pips", this.addChild(this.pips)), this.value = this._value
            }
            var n = t("com/pixijs/pixi"),
                i = t("./ControlledMeter");
            return e.prototype = Object.create(i.prototype, {
                value: {
                    get: function() {
                        return this._value
                    },
                    set: function(t) {
                        if (this._enabled)
                            if (void 0 === this._values) this.setSimpleValue(t);
                            else {
                                if (!(this._values.indexOf(t) > -1)) throw new Error("Attempting to set value outside of values array");
                                this.setValueFromRange(t), this._pips && this._pips.forEach(function(e, i) {
                                    var r = t === this._values[i] ? "portrait_betIndicatorActive" : "portrait_betIndicatorInactive";
                                    e.texture = n.Texture.fromFrame(r)
                                }, this)
                            }
                    }
                }
            }), e
        }), define("skbJet/componentManchester/commonUI/slot/logic/betController", ["require", "com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/currencyHelper/currencyHelper", "../../Meter", "../../ControlledMeter", "../../BetControl", "../../FrameSprite", "../betData", "../color"], function(t) {
            function e() {
                var t = T.fromStakeUnits(C.totalBet),
                    e = T.formatBalance(t);
                x.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "stake",
                        event: "change",
                        params: [t, e]
                    }
                })
            }

            function n() {
                x.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "betPerPattern",
                        event: "change",
                        params: [C.betPerPattern, T.formatBalance(T.fromStakeUnits(C.betPerPattern))]
                    }
                }), e()
            }

            function i() {
                x.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "patternsBet",
                        event: "change",
                        params: [C.patternsBet]
                    }
                }), e()
            }

            function r(t) {
                C._betPerPattern = t.value, n()
            }

            function o(t) {
                C._patternsBet = t.value, i()
            }

            function a(t) {
                C._betPerPattern = t.value / C.patternsBet, n()
            }

            function s(t) {
                x.publish("UI.BetUp", {
                    meter: t.name
                })
            }

            function l(t) {
                x.publish("UI.BetDown", {
                    meter: t.name
                })
            }

            function u() {
                return C.patternInfo.length > 1
            }

            function c(t) {
                function n(t) {
                    if ("betPerPattern" === t.option || "patternsBet" === t.option) {
                        var n = parseInt(t.value, 10);
                        "betPerPattern" === t.option && n !== C._betPerPattern ? (C._betPerPattern = n, i.betPerPattern.value = n) : "patternsBet" === t.option && n !== C._patternsBet && (C._patternsBet = n, i.patternsBet.value = n), e()
                    }
                }
                var i = t.betConfig,
                    a = E();
                i.addControl(new P("betPerPattern", {
                    values: C.betInfo.map(function(t) {
                        return parseInt(t, 10)
                    }),
                    displayValues: C.betInfo.map(function(t) {
                        return T.formatBalance(T.fromStakeUnits(t))
                    }),
                    value: parseInt(C.betPerPattern, 10),
                    valueFill: a.betControlsValueColour,
                    labelFill: a.betControlsTitleColour
                })), i.addControl(new P("patternsBet", {
                    values: C.patternInfo.map(function(t) {
                        return parseInt(t, 10)
                    }),
                    value: parseInt(C.patternsBet, 10),
                    valueFill: a.betControlsValueColour,
                    labelFill: a.betControlsTitleColour
                }));
                var c = C.betPerPattern * C.patternsBet,
                    h = T.formatBalance(T.fromStakeUnits(c));
                i.addControl(new P("betSummary", {
                    value: h,
                    valueFill: a.betControlsValueColour,
                    labelFill: a.betControlsTitleColour
                })), u() && t.footer.addMeter("totalBet", new w({
                    value: h,
                    valueFill: a.footerValueColour,
                    labelFill: a.footerTitleColour
                })), i.betPerPattern.on("change", r), i.betPerPattern.on("increment", s), i.betPerPattern.on("decrement", l), i.patternsBet.on("change", o), i.patternsBet.on("increment", s), i.patternsBet.on("decrement", l), x.subscribe("platformMsg/ConsoleService/Game.Control", n)
            }

            function h(t) {
                var e = E();
                t.footer.addMeter("betPerPattern", new S({
                    values: C.betInfo.map(function(t) {
                        return parseInt(t, 10)
                    }),
                    displayValues: C.betInfo.map(function(t) {
                        return T.formatBalance(T.fromStakeUnits(t))
                    }),
                    value: parseInt(C.betPerPattern, 10),
                    valueFill: e.footerValueColour,
                    labelFill: e.footerTitleColour
                })), t.footer.addMeter("patternsBet", new S({
                    values: C.patternInfo.map(function(t) {
                        return parseInt(t, 10)
                    }),
                    value: parseInt(C.patternsBet, 10),
                    valueFill: e.footerValueColour,
                    labelFill: e.footerTitleColour
                })), t.footer.betPerPattern.on("change", r), t.footer.betPerPattern.on("increment", s), t.footer.betPerPattern.on("decrement", l), t.footer.patternsBet.on("change", o), t.footer.patternsBet.on("increment", s), t.footer.patternsBet.on("decrement", l)
            }

            function p(t) {
                function n() {
                    o.meterBar.betPerPattern.value = T.formatBalance(T.fromStakeUnits(C.betPerPattern)), o.meterBar.patternsBet.value = C.patternsBet
                }

                function i() {
                    o.totalBet.value = C.totalBet, t.footer.totalBet.value = C.totalBet
                }

                function r(t) {
                    if ("betPerPattern" === t.option) {
                        var n = parseInt(t.value, 10);
                        n !== C.betPerPattern && (C._betPerPattern = n, o.betPerPattern.value = T.formatBalance(T.fromStakeUnits(C.betPerPattern)), e())
                    }
                }
                var o = t.betConfig,
                    c = E(),
                    h = C.betInfo.map(function(t) {
                        return t * C.patternsBet
                    }),
                    p = C.totalBet;
                o.addControl(new M("meterBar")), o.meterBar.betPerPattern = new w({
                    value: T.formatBalance(T.fromStakeUnits(C.betPerPattern)),
                    valueFill: c.betControlsValueColour,
                    valueSize: 30,
                    labelFill: c.betControlsTitleColour,
                    labelSize: 30
                }), o.meterBar.patternsBet = new w({
                    value: C.patternsBet,
                    valueFill: c.betControlsValueColour,
                    valueSize: 30,
                    labelFill: c.betControlsTitleColour,
                    labelSize: 30
                }), o.meterBar.addChild(o.meterBar.betPerPattern, o.meterBar.patternsBet), o.addControl(new P("totalBet", {
                    values: h,
                    displayValues: h.map(function(t) {
                        return T.formatBalance(T.fromStakeUnits(t))
                    }),
                    value: p,
                    valueFill: c.betControlsValueColour,
                    labelFill: c.betControlsTitleColour
                })), u() || t.footer.addMeter("totalBet", new S({
                    values: h,
                    displayValues: h.map(function(t) {
                        return T.formatBalance(T.fromStakeUnits(t))
                    }),
                    value: p,
                    valueFill: c.footerValueColour,
                    labelFill: c.footerTitleColour
                })), x.subscribe("BetData.PatternsBet", n), x.subscribe("BetData.BetPerPattern", n), x.subscribe("BetData.TotalBet", i), o.totalBet.on("change", a), o.totalBet.on("increment", s), o.totalBet.on("decrement", l), x.subscribe("platformMsg/ConsoleService/Game.Control", r)
            }

            function f(t) {
                var e = E();
                t.footer.addMeter("betPerPattern", new w({
                    value: T.formatBalance(T.fromStakeUnits(C.betPerPattern)),
                    valueFill: e.footerValueColour,
                    labelFill: e.footerTitleColour
                })), t.footer.addMeter("patternsBet", new w({
                    value: C.patternsBet,
                    valueFill: e.footerValueColour,
                    labelFill: e.footerTitleColour
                })), t.footer.totalBet.on("change", a), t.footer.totalBet.on("increment", s), t.footer.totalBet.on("decrement", l)
            }

            function d(t) {
                function e() {
                    var e = T.formatBalance(T.fromStakeUnits(C.totalBet));
                    t.betConfig.betSummary.value = e, t.footer.totalBet.value = C.totalBet, t.betConfig.totalBet.value = C.totalBet, t.footer.win.value = " "
                }

                function n() {
                    t.betConfig.betPerPattern.value = C.betPerPattern, t.footer.betPerPattern.value = T.formatBalance(T.fromStakeUnits(C.betPerPattern))
                }

                function i() {
                    t.betConfig.patternsBet.value = C.patternsBet, t.footer.patternsBet.value = C.patternsBet
                }
                c(t), p(t), u() ? h(t) : f(t), x.subscribe("BetData.TotalBet", e), x.subscribe("BetData.BetPerPattern", n), x.subscribe("BetData.PatternsBet", i)
            }

            function m(t) {
                var e = new b.Sprite;
                e.interactive = !0, e.hitArea = new b.Rectangle(0, 0, 1400, 1400), t.addChildAt(e, 0), e.on("pointertap", function() {
                    e.off("pointertap"), t.prompt.visible = !1, e.visible = !1
                })
            }

            function g(t) {
                u() ? c(t) : p(t), m(t)
            }

            function _(t) {
                function e() {
                    t.spin.visible = !1, t.prompt.visible = !1, t.prompt.hidden = 2, t.autoSpin.visible = !1, t.footer.win.value = " ", t.focus(), x.publish("UI.BetConfigOpen")
                }

                function n() {
                    t.spin.visible = !0, t.autoSpin.visible = !0, t.unFocus(), x.publish("UI.BetConfigClose")
                }

                function i() {
                    s.open(), e()
                }

                function r() {
                    s.enabled = !1, "INT" === v && (t.footer.betPerPattern.enabled = !1, t.footer.patternsBet.enabled = !1, t.footer.totalBet.enabled = !1), t.prompt.visible = !1, t.prompt.hidden = 2, t.unFocus()
                }

                function o() {
                    t.autoSpin.active || (s.enabled = !0, "INT" === v && (t.footer.betPerPattern.enabled = !0, t.footer.patternsBet.enabled = !0, t.footer.totalBet.enabled = !0))
                }

                function a(e) {
                    "BaseGame" === e.response.OutcomeDetail.NextStage && (s.enabled = !0, t.spin.enabled = !0, "INT" === v && (t.footer.betPerPattern.enabled = !0, t.footer.patternsBet.enabled = !0, t.footer.totalBet.enabled = !0))
                }
                var s = t.betConfig;
                s.openButton.on("buttonpress", e), s.closeButton.on("buttonpress", n), t.prompt.on("buttonpress", i), x.subscribe("onBeforeRequest", r), x.subscribe("onBeginNewGame", o), x.subscribe("onResetNextStage", a)
            }

            function y(t) {
                v = t.serverConfig.channel
            }
            var v, b = t("com/pixijs/pixi"),
                x = t("skbJet/component/gameMsgBus/GameMsgBus"),
                T = t("skbJet/component/currencyHelper/currencyHelper"),
                w = t("../../Meter"),
                S = t("../../ControlledMeter"),
                P = t("../../BetControl"),
                M = t("../../FrameSprite"),
                C = t("../betData"),
                E = t("../color");
            return x.subscribe("platformMsg/Kernel/System.Init", y), {
                initBet: _,
                initDesktopUI: d,
                initTouchUI: g,
                isSplitBet: u
            }
        }), define("skbJet/componentManchester/commonUI/slot/logic/promoSpinsController", ["require", "skbJet/component/gameMsgBus/GameMsgBus"], function(t) {
            function e(t) {
                r = "freespin" === t.serverConfig.paramGame.playMode
            }

            function n(t) {
                r && (o = t.GameLogicResponse.PromotionalFreeSpin["@count"])
            }
            var i = t("skbJet/component/gameMsgBus/GameMsgBus"),
                r = !1,
                o = 0;
            return i.subscribe("platformMsg/Kernel/System.Init", e), i.subscribe("platformMsg/ClientService/Game.Init", n),
                function(t) {
                    function e(e) {
                        t.footer.promoSpins.value = e.response.PromotionalFreeSpin["@count"]
                    }
                    if (!r) return t.footer.promoSpins.visible = !1, void(t.footer.balance.visible = !0);
                    i.subscribe("onResolveStage", e), t.footer.promoSpins.value = o, t.footer.promoSpins.visible = !0, t.footer.balance.visible = !1, t.prompt.visible = !1
                }
        }), define("skbJet/componentManchester/commonUI/slot/baseGameUI", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "../UI", "../Footer", "../Meter", "../Button", "../BetConfig", "../LabelledButton", "./AutoSpin", "./ActivityAnim", "./color", "./logic/autoSpinController", "./logic/networkActivityController", "./logic/betController", "./logic/promoSpinsController"], function(t) {
            function e(t) {
                r = t.serverConfig.channel
            }

            function n() {
                v.addComponents({
                    footer: new s({
                        win: new l,
                        balance: new l,
                        promoSpins: new l
                    }),
                    autoSpin: new p,
                    betConfig: new c,
                    prompt: new h,
                    activityAnim: new f
                }), v.addButtons({
                    spin: new u,
                    skip: new u,
                    play: new u
                }), m(v), _.initBet(v), "INT" === r ? _.initDesktopUI(v) : _.initTouchUI(v), y(v), g(v);
                var t = d();
                v.footer.balance.labelStyle.fill = t.footerTitleColour, v.footer.promoSpins.labelStyle.fill = t.footerTitleColour, v.footer.win.labelStyle.fill = t.footerTitleColour, v.footer.totalBet.labelStyle.fill = t.footerTitleColour, v.footer.balance.valueStyle.fill = t.footerValueColour, v.footer.promoSpins.valueStyle.fill = t.footerValueColour, v.footer.win.valueStyle.fill = t.footerValueColour, v.footer.totalBet.valueStyle.fill = t.footerValueColour, v.prompt.textStyle.fill = t.messagePromptColour, v.autoSpin._meterText.fill = t.autoSpinCounterValueColour
            }

            function i(t) {
                v.footer.balance.value = t.balance
            }
            var r, o = t("skbJet/component/gameMsgBus/GameMsgBus"),
                a = t("../UI"),
                s = t("../Footer"),
                l = t("../Meter"),
                u = t("../Button"),
                c = t("../BetConfig"),
                h = t("../LabelledButton"),
                p = t("./AutoSpin"),
                f = t("./ActivityAnim"),
                d = t("./color"),
                m = t("./logic/autoSpinController"),
                g = t("./logic/networkActivityController"),
                _ = t("./logic/betController"),
                y = t("./logic/promoSpinsController"),
                v = new a;
            return v.name = "baseGameUI", v.opts.networkActivityStages = ["BaseGame", "BaseGameTumble"], v.applyOrientation = function(t) {
                v.opts.rotateDesktop && "INT" === r && ("portrait" === t ? (v.betConfig.controls.visible = !1, v.betConfig.controlsVisible = !1, v.betConfig.closeButton.visible = !1, v.betConfig.openButton.visible = !0) : (v.betConfig.controls.visible ? (v.spin.visible = !0, v.autoSpin.visible = !0, v.unFocus()) : v.betConfig.controls.visible = !0, v.betConfig.controlsVisible = !0)), v.footer.updateLayout()
            }, v.setText = function(t) {
                v.prompt.text = t.betPrompt, v.footer.balance.label = t.balance, v.footer.win.label = t.win, v.footer.promoSpins.label = t.promoFreeSpins, v.footer.totalBet.label = t.bet, "INT" === r && (v.footer.patternsBet.label = t.patternsBet, v.footer.betPerPattern.label = t.betPerPattern), (_.isSplitBet() || "INT" === r) && (v.betConfig.betPerPattern.label = t.betPerPattern, v.betConfig.patternsBet.label = t.patternsBet, v.betConfig.betSummary.label = t.totalBet), _.isSplitBet() && "INT" !== r || (v.betConfig.totalBet.label = t.totalBet, v.betConfig.meterBar.betPerPattern.label = t.betPerPattern, v.betConfig.meterBar.patternsBet.label = t.patternsBet), v.footer.updateLayout()
            }, o.subscribe("platformMsg/Kernel/System.Init", e), o.subscribe("platformMsg/ClientService/Game.Init", n), o.subscribe("platformMsg/ClientService/Account.Balances", i), v
        }), define("skbJet/componentManchester/commonUI/slot/freeSpinsUI", ["require", "skbJet/component/gameMsgBus/GameMsgBus", "../UI", "../Footer", "../Meter", "../Button", "./ActivityAnim", "./color", "./logic/networkActivityController"], function(t) {
            function e() {
                c.addComponents({
                    footer: new r({
                        spins: new o,
                        bonusWin: new o,
                        win: new o
                    }),
                    activityAnim: new s
                }), c.addButtons({
                    skip: new a,
                    play: new a
                }), u(c);
                var t = l();
                c.footer.spins.labelStyle.fill = t.footerTitleColour, c.footer.win.labelStyle.fill = t.footerTitleColour, c.footer.bonusWin.labelStyle.fill = t.footerTitleColour, c.footer.spins.valueStyle.fill = t.footerValueColour, c.footer.win.valueStyle.fill = t.footerValueColour, c.footer.bonusWin.valueStyle.fill = t.footerValueColour
            }
            var n = t("skbJet/component/gameMsgBus/GameMsgBus"),
                i = t("../UI"),
                r = t("../Footer"),
                o = t("../Meter"),
                a = t("../Button"),
                s = t("./ActivityAnim"),
                l = t("./color"),
                u = t("./logic/networkActivityController"),
                c = new i;
            return c.name = "freeSpinsUI", c.opts.networkActivityStages = ["FreeSpin", "FreeSpinTumble"], c.applyOrientation = function() {
                c.footer.updateLayout()
            }, c.setText = function(t) {
                c.footer.spins.label = t.spins, c.footer.win.label = t.win, c.footer.bonusWin.label = t.bonusWin, c.footer.updateLayout()
            }, n.subscribe("platformMsg/ClientService/Game.Init", e), c
        }), define("skbJet/componentManchester/commonUI/slot/slotUI", ["require", "com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "./layout", "./baseGameUI", "./freeSpinsUI"], function(t) {
            function e(t) {
                Object.assign(p.opts, t), Object.assign(f.opts, t)
            }

            function n(t) {
                p.setText(t), f.setText(t)
            }

            function i() {
                p.setProps(h[l][s].baseGame), f.setProps(h[l][s].freeSpins)
            }

            function r() {
                var t = window.innerWidth,
                    e = window.innerHeight,
                    n = t > e ? "landscape" : "portrait";
                n !== s && null !== h[l][n] && (s = "INT" !== l || p.opts.rotateDesktop ? n : "landscape", i(n), p.applyOrientation(n), f.applyOrientation(n))
            }

            function o(t) {
                l = t.serverConfig.channel
            }

            function a() {
                r(), null !== h.portrait && null !== h.landscape && window.addEventListener("resize", r)
            }
            var s, l, u = t("com/pixijs/pixi"),
                c = t("skbJet/component/gameMsgBus/GameMsgBus"),
                h = t("./layout"),
                p = t("./baseGameUI"),
                f = t("./freeSpinsUI"),
                d = new u.Container;
            return d.addChild(p, f), d.name = "commonUI", c.subscribe("platformMsg/Kernel/System.Init", o), c.subscribe("platformMsg/ClientService/Game.Init", a), {
                container: d,
                layout: h,
                applyLayout: i,
                baseGame: p,
                freeSpins: f,
                set: e,
                setText: n
            }
        }),
        define("game/betController", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/currencyHelper/currencyHelper", "skbJet/componentManchester/commonUI/slot/betData", "skbJet/componentManchester/commonUI/slot/slotUI", "game/Audio"], function(t, e, n, i, r, o) {
            function a() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.DeductStake",
                    data: n.fromStakeUnits(i.totalBet)
                })
            }

            function s() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.PlayData",
                    data: {
                        ActionInput: {
                            Action: "play"
                        },
                        PatternSliderInput: {
                            BetPerPattern: i.betPerPattern,
                            PatternsBet: i.patternsBet
                        }
                    }
                })
            }

            function l() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "betPerPattern",
                        event: "enable",
                        params: [1]
                    }
                }), t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "patternsBet",
                        event: "enable",
                        params: [1]
                    }
                })
            }

            function u() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "betPerPattern",
                        event: "enable",
                        params: [0]
                    }
                }), t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "patternsBet",
                        event: "enable",
                        params: [0]
                    }
                })
            }

            function c() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Register",
                    data: {
                        options: [{
                            type: "list",
                            name: "betPerPattern",
                            text: e.i18n.MenuCommand.coinValue,
                            enabled: 1,
                            value: i.betPerPattern,
                            valueText: i.betInfo.map(function(t) {
                                return n.formatBalance(n.fromStakeUnits(t))
                            }),
                            values: i.betInfo
                        }]
                    }
                })
            }

            function h() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Register",
                    data: {
                        options: [{
                            type: "list",
                            name: "patternsBet",
                            text: e.i18n.MenuCommand.coins,
                            enabled: 1,
                            value: i.patternInfo[0],
                            valueText: i.patternInfo,
                            values: i.patternInfo
                        }]
                    }
                })
            }

            function p() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Register",
                    data: {
                        options: [{
                            name: "stake",
                            text: e.i18n.MenuCommand.stake,
                            type: "stake",
                            enabled: 0,
                            value: 0,
                            valueText: "0"
                        }]
                    }
                })
            }

            function f() {
                var e = n.fromStakeUnits(i.betPerPattern) * i.patternsBet;
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "stake",
                        event: "change",
                        params: [e, n.formatBalance(e)]
                    }
                })
            }

            function d() {
                y = 3 === y ? 10 : 3, i.totalBet === i.maxTotalBet ? o.play("UiBetMax", y, !1) : o.play("UiBetUp", y, !1)
            }

            function m() {
                y = 3 === y ? 10 : 3, o.play("UiBetDown", y, !1)
            }

            function g() {}

            function _() {
                p(), c(), h(), t.subscribe("UI.BetUp", d), t.subscribe("UI.BetDown", m), r.baseGame.betConfig.openButton.on("pointertap", g), r.baseGame.autoSpin._startButton.on("pointertap", function() {}), r.baseGame.autoSpin._stopButton.on("pointertap", function() {}), f()
            }
            var y = 3;
            return t.subscribe("platformMsg/ClientService/Game.Init", _), {
                enableControlConsole: l,
                disableControlConsole: u,
                tellConsolePlayload: s,
                tellConsole2DeductBet: a
            }
        }), define("game/component/phoenixReel/animationLayer", ["com/pixijs/pixi"], function(t) {
            return function(e, n) {
                function i() {
                    var e = new t.extras.AnimatedSprite([t.Texture.EMPTY]);
                    return e.visible = !1, e.zIndex = 1, e
                }

                function r(i, r) {
                    P[i] = [];
                    for (var a = -1; a < e.options.reels[i].symbolCount + 1; a++) {
                        var s = S[i][a + 1],
                            l = r.spriteRefs[a + 1];
                        l ? (Array.isArray(n[l].textures) ? (s.textures = n[l].textures, s.texture = s.textures[0], s.visible = !0, s.gotoAndStop(0), s.loop = !0) : (s.visible = !0, s.textures = [n[l].textures], s.texture = s.textures[0], s.gotoAndStop(0), s.loop = !0), s.position.x = s.position.rx + n[l].xOffset, s.position.y = s.position.ry + n[l].yOffset, s.zIndex = n[l].zOffset) : s.visible = !1, P[i].push(l), a >= 0 && a < e.options.reels[i].symbolCount && (M[i][a].textures = [t.Texture.EMPTY], M[i][a].texture = t.Texture.EMPTY, M[i][a].visible = !1, M[i][a].gotoAndStop(0), M[i][a].loop = !0)
                    }
                    P[i].pop(), P[i].shift(), o(T), o(w)
                }

                function o(t) {
                    t.children.sort(function(t, e) {
                        return t.zIndex - e.zIndex || e.x - t.x || t.y - e.y
                    })
                }

                function a(t, e) {
                    for (var n = [], i = 0; i < e; i++) n = n.concat(t);
                    return n
                }

                function s(e) {
                    return e ? Array.isArray(e) ? e.map(function(e) {
                        return e ? t.utils.TextureCache[e] : t.Texture.EMPTY
                    }) : [t.utils.TextureCache[e]] : [t.Texture.EMPTY]
                }

                function l(t) {
                    return t.every(function(t) {
                        return t.completed
                    })
                }

                function u(t, e, n, i, r, o, a) {
                    var s = {},
                        l = {};
                    return t instanceof Object ? (s = t, l = e) : (s = {
                        location: t,
                        textures: e,
                        animationSpeed: n,
                        layer: i,
                        position: r,
                        playmode: o
                    }, l = a), c(s, l)
                }

                function c(t, e) {
                    G.push({
                        location: t.location,
                        layer: t.layer
                    });
                    var n;
                    return 0 === t.layer ? n = C[O[t.location]] : 1 === t.layer && (n = E[O[t.location]]), n && (t.textures ? (n.visible = !0, n.textures = s(t.playmode && t.playmode.playCount ? a(t.textures, t.playmode.playCount) : t.textures), n.texture = n.textures[0], n.position.x = n.position.rx, n.position.y = n.position.ry, t.position && (t.position.x && (n.position.x += t.position.x), t.position.y && (n.position.y += t.position.y)), n.animationSpeed = t.animationSpeed, n.loop = !0, t.playmode && (!1 === t.playmode.loop || t.playmode.hasOwnProperty("playCount")) && (n.loop = !1), n.gotoAndStop(0), e && (e.onComplete && (n.onComplete = e.onComplete), e.onFrameChange && (n.onFrameChange = e.onFrameChange))) : n.visible = !1), {
                        gotoAndPlay: function(t) {
                            n.gotoAndPlay(t)
                        },
                        gotoAndStop: function(t) {
                            n.gotoAndStop(t)
                        }
                    }
                }

                function h(t, e) {
                    return t.map(function(n) {
                        return n.completed = !1, u(n, {
                            onComplete: function() {
                                n.completed = !0, l(t) && e && e.onComplete && e.onComplete()
                            }
                        })
                    })
                }

                function p(t) {
                    return 0 === t ? T : 1 === t ? w : void 0
                }

                function f(t, e) {
                    return 0 === e ? C[O[t]] : 1 === e ? E[O[t]] : void 0
                }

                function d() {
                    G.forEach(function(t) {
                        var e;
                        0 === t.layer ? e = C[O[t.location]] : 1 === t.layer && (e = E[O[t.location]]), e.gotoAndPlay(0)
                    })
                }

                function m() {
                    G.forEach(function(t) {
                        var e;
                        0 === t.layer ? e = C[O[t.location]] : 1 === t.layer && (e = E[O[t.location]]), e.gotoAndStop(0), e.loop = !0, e.onFrameChange = void 0, e.onComplete = void 0
                    })
                }

                function g(i) {
                    if (m(), !G || 0 !== G.length) {
                        for (var r = 0; r < e.options.reels.length; r++)
                            for (var o = 0; o < e.options.reels[r].symbolCount; o++) {
                                if (!i || 0 === i) {
                                    var a = S[r][o + 1],
                                        s = P[r][o];
                                    s ? (Array.isArray(n[s].textures) ? (a.textures = n[s].textures, a.texture = a.textures[0], a.gotoAndStop(0), a.loop = !0) : (a.textures = [n[s].textures], a.texture = a.textures[0], a.gotoAndStop(0), a.loop = !0), a.onFrameChange = void 0, a.onComplete = void 0, a.visible = !0, a.position.x = a.position.rx + n[s].xOffset, a.position.y = a.position.ry + n[s].yOffset, a.zIndex = n[s].zOffset) : a.visible = !1
                                }
                                0 !== i && (M[r][o].textures = [t.Texture.EMPTY], M[r][o].texture = t.Texture.EMPTY, M[r][o].gotoAndStop(0), M[r][o].loop = !0, M[r][o].onFrameChange = void 0, M[r][o].onComplete = void 0)
                            }
                        G = []
                    }
                }

                function _() {
                    if (m(), !G || 0 !== G.length) {
                        for (var n = 0; n < e.options.reels.length; n++) {
                            for (var i = 0; i < S[n].length; i++) S[n][i].textures = [t.Texture.EMPTY], S[n][i].texture = t.Texture.EMPTY, S[n][i].gotoAndStop(0), S[n][i].loop = !0, S[n][i].onFrameChange = void 0, S[n][i].onComplete = void 0;
                            for (i = 0; i < M[n].length; i++) M[n][i].textures = [t.Texture.EMPTY], M[n][i].texture = t.Texture.EMPTY, M[n][i].gotoAndStop(0), M[n][i].loop = !0, M[n][i].onFrameChange = void 0, M[n][i].onComplete = void 0
                        }
                        G = []
                    }
                }

                function y(t) {
                    x.visible = !0;
                    for (var n = -1; n < e.options.reels[t].symbolCount + 1; n++) {
                        S[t][n + 1].visible = !0, n >= 0 && n < e.options.reels[t].symbolCount && (M[t][n].visible = !0)
                    }
                }

                function v(t) {
                    for (var n = -1; n < e.options.reels[t].symbolCount + 1; n++) {
                        S[t][n + 1].visible = !1, n >= 0 && n < e.options.reels[t].symbolCount && (M[t][n].visible = !1)
                    }
                }

                function b() {
                    return {
                        startAnimating: d,
                        stopAnimating: m,
                        resetAnimations: g,
                        clearAnimations: _,
                        setCellAnimation: u,
                        setCellAnimations: h,
                        getLayerContainer: p,
                        getCellHandle: f,
                        getContainer: function() {
                            return x
                        }
                    }
                }
                var x = new t.Container,
                    T = new t.Container,
                    w = new t.Container;
                x.addChild(T), x.addChild(w);
                var S = [],
                    P = [],
                    M = [],
                    C = [],
                    E = [],
                    O = e.locationsMap.reduce(function(t, e, n) {
                        return t[e] = n, t
                    }, {});
                t.extras.AnimatedSprite || (t.extras.AnimatedSprite = t.extras.MovieClip);
                for (var I = [], R = new t.Graphics, A = !0, k = 0; k < e.options.reels.length; k++) 0 !== e.options.reels[k].y && (A = !1);
                if (e.options.reels.length > 1 && A)
                    for (k = 1; k < e.options.reels.length; k++) e.options.reels[k - 1].symbolCount !== e.options.reels[k].symbolCount && (A = !1);
                var L = !0;
                if (e.options.clip) e.options.clip[0].hasOwnProperty("reels") ? e.options.clip.forEach(function(e) {
                    R = new t.Graphics, R.beginFill(), R.drawRect(e.x, e.y, e.w, e.h), R.endFill(), R.zIndex = 1e3, e.reels.forEach(function(t) {
                        I[t] = R
                    }), x.addChild(R)
                }) : (e.options.clip.forEach(function(t) {
                    R.beginFill(), R.drawRect(t.x, t.y, t.w, t.h), R.endFill()
                }), R.zIndex = 1e3, T.addChild(R), I = [R]);
                else if (A) R.beginFill(), R.drawRect(e.options.pos.x + e.options.reels[0].x, e.options.pos.y + e.options.reels[0].y, (e.symbolSlotWidth + e.symbolSpacingW) * e.options.reels.length - e.symbolSpacingW, (e.symbolSlotHeight + e.symbolSpacingH) * e.options.reels[0].symbolCount - e.symbolSpacingH), R.endFill(), R.zIndex = 1e3, T.addChild(R), I = [R];
                else {
                    for (R.beginFill(), k = 0; k < e.options.reels.length; k++) R.drawRect(e.options.pos.x + e.options.reels[k].x, e.options.pos.y + e.options.reels[k].y, e.symbolSlotWidth + e.symbolSpacingW, (e.symbolSlotHeight + e.symbolSpacingH) * e.options.reels[k].symbolCount);
                    R.endFill(), R.zIndex = 1e3, T.addChild(R), I = [R]
                }
                for (I.length > 1 && (L = !1), L && (T.mask = I[0]), k = 0; k < e.options.reels.length; k++) {
                    for (var D = [], B = [], N = -1; N < e.options.reels[k].symbolCount + 1; N++) {
                        var F = i();
                        F.position.x = e.options.pos.x + e.options.reels[k].x, F.position.y = e.options.pos.y + e.options.reels[k].y + (e.symbolSlotHeight + e.symbolSpacingH) * N, F.position.rx = F.position.x, F.position.ry = F.position.y, L || (F.mask = I[k]), D.push(F), N >= 0 && N < e.options.reels[k].symbolCount && (C.push(F), F = i(), F.position.x = e.options.pos.x + e.options.reels[k].x, F.position.y = e.options.pos.y + e.options.reels[k].y + (e.symbolSlotHeight + e.symbolSpacingH) * N, F.position.rx = F.position.x, F.position.ry = F.position.y, E.push(F), B.push(F))
                    }
                    S.push(D), P.push([]), M.push(B)
                }
                for (k = 0; k < e.options.reels.length; k++) S[k].forEach(function(t) {
                    T.addChild(t)
                });
                for (k = 0; k < e.options.reels.length; k++) M[k].forEach(function(t) {
                    w.addChild(t)
                });
                var G = [];
                return {
                    setViewData: r,
                    show: y,
                    hide: v,
                    startAnimating: d,
                    stopAnimating: m,
                    resetAnimations: g,
                    clearAnimations: _,
                    setCellAnimation: u,
                    setCellAnimations: h,
                    getLayerContainer: p,
                    getCellHandle: f,
                    getContainer: function() {
                        return x
                    },
                    getLimitedAccess: b
                }
            }
        }), define("game/component/phoenixReel/reelspin", ["com/pixijs/pixi", "game/component/phoenixReel/animationLayer", "skbJet/component/gameMsgBus/GameMsgBus"], function(t, e, n) {
            return function(i, r) {
                function o() {
                    var e = new t.extras.AnimatedSprite([t.Texture.EMPTY]);
                    return e.zIndex = 1, e.visible = !1, e
                }

                function a(t) {
                    for (var e, i = r.StripInfo[at], o = !1, a = -2; a < r.options.reels[t].symbolCount + 2; a++) {
                        var s = B[t][a + 2],
                            l = (J[t] + i[t].length + a) % i[t].length,
                            u = Q.populationOutcomeParsed && Q.populationOutcomeParsed[t] && Q.populationOutcomeParsed[t][l] ? Q.populationOutcomeParsed[t][l] : i[t][l];
                        Q.symbolsMap && Q.symbolsMap[u] && (u = Q.symbolsMap[u]), Array.isArray(F[u].textures) ? (s.textures = F[u].textures, s.texture = s.textures[0], s.gotoAndStop(0)) : (s.textures = [F[u].textures], s.texture = s.textures[0], s.gotoAndStop(0)), s.zIndex = F[u].zOffset, s.alpha = F[u].opacity, s.visible = !0, s.position.x = r.options.pos.x + r.options.reels[t].x + F[u].xOffset, s.position.y = r.options.pos.y - q[t] + F[u].yOffset + r.options.reels[t].y + (Z.symbolSlotHeight + Z.symbolSpacingH) * a;
                        var c = u.indexOf("t01") > -1,
                            h = -1 != nt.indexOf(u);
                        c && (o = !0, e = s.position.y), h && n.publish("trailSymbolPassed", {
                            image: u,
                            x: s.position.x,
                            y: s.position.y
                        })
                    }
                    0 == t && (1 == o ? null == et && (e < 0 ? (et = e, n.publish("pyramidSymbolPassed", {
                        reelNum: 0,
                        y: et
                    })) : e > 200 && (et = null)) : et = null)
                }

                function s(t) {
                    for (var e, i = r.StripInfo[tt.reelset], o = !1, a = -2; a < r.options.reels[t].symbolCount + 2; a++) {
                        var s = N[t][a + 2],
                            l = i[t][(G[t] + i[t].length + a) % i[t].length];
                        tt.symbolsMap && tt.symbolsMap[l] && (l = tt.symbolsMap[l]), Array.isArray(F[l].textures) ? (s.textures = F[l].textures, s.texture = s.textures[0], s.gotoAndStop(0)) : (s.textures = [F[l].textures], s.texture = s.textures[0], s.gotoAndStop(0)), s.zIndex = F[l].zOffset, s.alpha = F[l].opacity, s.visible = !0, s.position.x = r.options.pos.x + r.options.reels[t].x + F[l].xOffset;
                        var u = H[t] + V[t];
                        K[t] > 0 && (u = -u), s.position.y = r.options.pos.y - u + r.options.reels[t].y + F[l].yOffset + (Z.symbolSlotHeight + Z.symbolSpacingH) * a;
                        var c = l.indexOf("t01") > -1,
                            h = -1 != nt.indexOf(l);
                        c && (o = !0, e = s.position.y), h && n.publish("trailSymbolPassed", {
                            image: l,
                            x: s.position.x,
                            y: s.position.y
                        })
                    }
                    0 == t && (1 == o ? null == et && (e < 0 ? (et = e, n.publish("pyramidSymbolPassed", {
                        reelNum: 0,
                        y: et
                    })) : e > 200 && (et = null)) : et = null)
                }

                function l(t, e) {
                    for (var n = r.StripInfo[e.reelset], i = {
                            spriteRefs: []
                        }, o = -1; o < r.options.reels[t].symbolCount + 1; o++) {
                        var a = n[t][(D[t] + n[t].length + o) % n[t].length];
                        e.symbolsMap && e.symbolsMap[a] && (a = e.symbolsMap[a]), i.spriteRefs.push(a)
                    }
                    it.show(t), it.setViewData(t, i)
                }

                function u() {
                    for (var t = 0; t < r.options.reels.length; t++)
                        for (var e = -2; e < r.options.reels[t].symbolCount + 2; e++) {
                            var n = N[t][e + 2];
                            n.visible = !1
                        }
                }

                function c() {
                    for (var t = 0; t < r.options.reels.length; t++)
                        for (var e = -2; e < r.options.reels[t].symbolCount + 2; e++) {
                            var n = B[t][e + 2];
                            n.visible = !1
                        }
                }

                function h(t) {
                    for (var e = -2; e < r.options.reels[t].symbolCount + 2; e++) B[t][e + 2].visible = !1, N[t][e + 2].visible = !1
                }

                function p(t, e) {
                    if (k[e] === O.SPIN_SPINUP || k[e] === O.SPIN_FINDEND || k[e] === O.SPIN_SPINNING || k[e] === O.SPIN_PRESTOP || k[e] === O.SPIN_PRESTOP_EXTRA ? (Y[e] = Math.floor((Y[e] + K[e] * t + ot[e]) % ot[e]), J[e] = Math.floor(Y[e] / (Z.symbolSlotHeight + Z.symbolSpacingH)), q[e] = Y[e] % (Z.symbolSlotHeight + Z.symbolSpacingH)) : (J[e] = Math.floor(Y[e] / (Z.symbolSlotHeight + Z.symbolSpacingH)), q[e] += K[e] * t), Q.populationOutcomeParsed && Q.populationOutcomeParsed[e]) {
                        var n = r.StripInfo[at];
                        Q.populationOutcomeParsed[e] && (K[e] > 0 ? (J[e] - parseInt(Object.keys(Q.populationOutcomeParsed[e])[0]) + n[e].length) % n[e].length : (parseInt(Object.keys(Q.populationOutcomeParsed[e])[0]) - J[e] + n[e].length) % n[e].length) > 2 * r.options.reels[e].symbolCount && (Q.populationOutcomeParsed[e] = void 0)
                    }
                    return a(e), !0
                }

                function f(t) {
                    return Math.abs(q[t]) > (Z.symbolSlotHeight + Z.symbolSpacingH) * (Z.options.reels[t].symbolCount + 4)
                }

                function d(t) {
                    return 0 === H[t]
                }

                function m(t) {
                    return 0 === H[t] && (tt.stopBounce && tt.stopBounce.length && V[t] === tt.stopBounce[0] || !(tt.stopBounce && tt.stopBounce.length) && 0 === V[t])
                }

                function g(t, e) {
                    H[e] > 0 ? (H[e] -= Math.abs(K[e] * t), H[e] <= 0 && (V[e] += H[e], H[e] = 0)) : (V[e] -= Math.abs(K[e] * t), tt.stopBounce && tt.stopBounce.length ? V[e] <= tt.stopBounce[0] && (V[e] = tt.stopBounce[0], H[e] = 0) : V[e] <= 0 && (V[e] = 0, H[e] = 0)), s(e)
                }

                function _(t, e) {
                    var n = Y[e] % (Z.symbolSlotHeight + Z.symbolSpacingH);
                    H[e] = n, V[e] = (Z.symbolSlotHeight + Z.symbolSpacingH) * (Z.options.reels[e].symbolCount + 4), K[e] > 0 && (H[e] = Z.symbolSlotHeight + Z.symbolSpacingH - n, V[e] -= Z.symbolSlotHeight + Z.symbolSpacingH), G[e] = tt.stopLocations[e]
                }

                function y(t, e) {
                    L[t] = e
                }

                function v() {
                    L[0], k[0];
                    for (var t = 0; t < r.options.reels.length; t++) k[t] = L[t]
                }

                function b() {
                    x(R)
                }

                function x(t) {
                    t.children.sort(function(t, e) {
                        return t.zIndex - e.zIndex || e.x - t.x || t.y - e.y
                    })
                }

                function T(t) {
                    t = Math.min(t, 100);
                    for (var e = 0; e < r.options.reels.length; e++) switch (B[e].sort(function(t, e) {
                        return t.ry > e.ry
                    }), N[e].sort(function(t, e) {
                        return t.ry > e.ry
                    }), k[e]) {
                        case O.INIT_NEEDED:
                            h(e), k[e] = O.SPIN_REST;
                        case O.SPIN_REST:
                            break;
                        case O.SPIN_INIT:
                            it.hide(e), U[e] = Q.startTimer ? Q.startTimer[e] : 0, j[e] = Q.startTicks ? Q.startTicks[e] : 0, y(e, O.SPIN_WAITSTART);
                        case O.SPIN_WAITSTART:
                            j[e]--, U[e] -= t, Math.max(j[e], U[e]) <= 0 && (y(e, O.SPIN_FAUX_BOUNCE_START), z[e] = 0, ut && ut(e, "STARTED")), p(0, e);
                            break;
                        case O.SPIN_FAUX_BOUNCE_START:
                            Q.startBounce && z[e] < Q.startBounce.length ? (q[e] = K[e] > 0 ? -Q.startBounce[z[e]] : Q.startBounce[z[e]], z[e] += 1) : (q[e] = 0, z[e] = 0, y(e, O.SPIN_SPINUP)), a(e);
                            break;
                        case O.SPIN_SPINUP:
                            p(t, e) && (y(e, O.SPIN_SPINNING), (ct += 1) === k.length && (st && st.call(), st = null));
                            break;
                        case O.SPIN_SPINNING:
                            p(t, e), $ && (W[e] = tt.stopTimer[e], X[e] = tt.stopTicks[e], y(e, O.SPIN_PRESTOP));
                            break;
                        case O.SPIN_PRESTOP:
                            p(t, e), X[e]--, W[e] -= t, Math.max(X[e], W[e]) <= 0 && (tt.reelSpeed && tt.reelSpeed[e] && (K[e] = tt.reelSpeed[e] / 1e3), tt.extraStopTimer ? (W[e] = tt.extraStopTimer[e], y(e, O.SPIN_PRESTOP_EXTRA)) : y(e, O.SPIN_FINDEND));
                            break;
                        case O.SPIN_PRESTOP_EXTRA:
                            p(t, e), X[e]--, W[e] -= t, Math.max(X[e], W[e]) <= 0 && y(e, O.SPIN_FINDEND);
                            break;
                        case O.SPIN_FINDEND:
                            p(t, e), _(t, e), g(t, e), y(e, O.SPIN_STITCH);
                            break;
                        case O.SPIN_STITCH:
                            p(t, e), g(t, e), f(e) && y(e, O.SPIN_STOPPING);
                            break;
                        case O.SPIN_STOPPING:
                            g(t, e), d(e) && y(e, O.SPIN_STOPEND);
                            break;
                        case O.SPIN_STOPEND:
                            g(t, e), m(e) && (y(e, O.SPIN_FAUX_BOUNCE), V[e] = 0, z[e] = 0, ut && ut(e, "BOUNCE"));
                            break;
                        case O.SPIN_FAUX_BOUNCE:
                            tt.stopBounce && z[e] < tt.stopBounce.length ? (H[e] = tt.stopBounce[z[e]], z[e] += 1) : (H[e] = 0, z[e] = 0, y(e, O.SPIN_HANDBRAKE)), s(e);
                            break;
                        case O.SPIN_HANDBRAKE:
                            D[e] = G[e], y(e, O.SPIN_REST), l(e, tt), h(e), ut && ut(e, "STOPPED"), ct -= 1, 0 === ct && lt && (Q = tt, lt.call(), lt = null)
                    }
                    v(), b()
                }

                function w(t, e) {
                    Q = t, Q.reelset && (at = Q.reelset);
                    for (var n = 0; n < r.options.reels.length; n++) q[n] = 0, D[n] = t.stopLocations[n], Y[n] = D[n] * (Z.symbolSlotHeight + Z.symbolSpacingH), y(n, O.SPIN_INIT), K[n] = t.reelSpeed[n] / 1e3;
                    if (Q.populationOutcome) {
                        var i = [];
                        for (n = 0; n < r.options.reels.length; n++) {
                            for (var o = {}, a = 0; a < Z.options.reels[n].symbolCount; a++) Q.populationOutcome["L0C" + n + "R" + a] && (o[(Q.stopLocations[n] + a) % r.StripInfo[at][n].length] = Q.populationOutcome["L0C" + n + "R" + a]);
                            i.push(o)
                        }
                        Q.populationOutcomeParsed = i
                    } else Q.populationOutcomeParsed = void 0;
                    u(), ct = 0, st = e, $ = !1
                }

                function S(t, e, n) {
                    tt = t, lt = e, ut = n, ct = k.length, $ = !0
                }

                function P(t) {
                    if (t.reelSpeed)
                        for (var e = 0; e < r.options.reels.length; e++) tt.reelSpeed[e] = t.reelSpeed[e], K[e] = t.reelSpeed[e] / 1e3
                }

                function M(t) {
                    at = t.reelset;
                    for (var e = 0; e < t.stopLocations.length; e++) D[e] = t.stopLocations[e], k[e] = O.SPIN_REST, L[e] = O.SPIN_REST, q[e] = 0, Y[e] = D[e] * (Z.symbolSlotHeight + Z.symbolSpacingH), J[e] = Math.floor(Y[e] / (Z.symbolSlotHeight + Z.symbolSpacingH)), l(e, t);
                    u(), c(), b()
                }

                function C(t) {
                    M(Q), t && t()
                }

                function E() {
                    return it.getLimitedAccess()
                }
                var O = {
                        INIT_NEEDED: -1,
                        SPIN_REST: 0,
                        SPIN_INIT: 2,
                        SPIN_WAITSTART: 3,
                        SPIN_FAUX_BOUNCE_START: 4,
                        SPIN_SPINUP: 6,
                        SPIN_SPINNING: 8,
                        SPIN_PRESTOP: 9,
                        SPIN_PRESTOP_EXTRA: 22,
                        SPIN_FINDEND: 10,
                        SPIN_STITCH: 12,
                        SPIN_STOPPING: 14,
                        SPIN_STOPEND: 16,
                        SPIN_FAUX_BOUNCE: 18,
                        SPIN_HANDBRAKE: 99
                    },
                    I = new t.Container,
                    R = new t.Container,
                    A = [],
                    k = [],
                    L = [],
                    D = [],
                    B = [],
                    N = [],
                    F = {},
                    G = [],
                    U = [],
                    j = [],
                    W = [],
                    X = [],
                    V = [],
                    H = [],
                    z = [],
                    Y = [],
                    q = [],
                    J = [],
                    K = [],
                    $ = !1,
                    Z = r,
                    Q = {},
                    tt = {},
                    et = null,
                    nt = ["t01", "w02"];
                t.extras.AnimatedSprite || (t.extras.AnimatedSprite = t.extras.MovieClip);
                var it, rt = [],
                    ot = [],
                    at = "BaseGame";
                ! function() {
                    r.spriteOffsets || (r.spriteOffsets = {}), r.symbolNames.forEach(function(e) {
                        if (Array.isArray(r.spriteMap[e])) {
                            var n = [];
                            r.spriteMap[e].forEach(function(e) {
                                n.push(t.Texture.fromFrame(e))
                            }), F[e] = {
                                textures: n
                            }
                        } else F[e] = {
                            textures: t.Texture.fromFrame(r.spriteMap[e])
                        };
                        r.spriteOffsets[e] || (r.spriteOffsets[e] = {
                            x: 0,
                            y: 0,
                            z: 0,
                            o: 1
                        }), F[e].xOffset = r.spriteOffsets[e].x, F[e].yOffset = r.spriteOffsets[e].y, F[e].zOffset = r.spriteOffsets[e].z || 0, F[e].opacity = r.spriteOffsets[e].o || 1
                    }), it = e(r, F), r.StripInfo && (at = Object.keys(r.StripInfo)[0], Object.keys(r.StripInfo).forEach(function(t) {
                        r.StripInfo[t][0].Stop && r.StripInfo[t].forEach(function(e, n) {
                            var i = [];
                            e.Stop.forEach(function(t) {
                                i.push(t["@symbolID"])
                            }), r.StripInfo[t][n] = i
                        })
                    }));
                    for (var n = 0, i = new t.Graphics, a = !0, s = r.options.reels[0].y, l = 0; l < r.options.reels.length; l++) r.options.reels[l].y !== s && (a = !1);
                    if (r.options.reels.length > 1 && a)
                        for (l = 1; l < r.options.reels.length; l++) Z.options.reels[l - 1].symbolCount !== Z.options.reels[l].symbolCount && (a = !1);
                    var u = !0;
                    if (Z.options.clip) Z.options.clip[0].hasOwnProperty("reels") ? Z.options.clip.forEach(function(e) {
                        i = new t.Graphics, i.beginFill(), i.drawRect(e.x, e.y, e.w, e.h), i.endFill(), i.zIndex = 1e3, e.reels.forEach(function(t) {
                            rt[t] = i
                        }), I.addChild(i)
                    }) : (Z.options.clip.forEach(function(t) {
                        i.beginFill(), i.drawRect(t.x, t.y, t.w, t.h), i.endFill()
                    }), i.zIndex = 1e3, I.addChild(i), rt = [i]);
                    else if (a) i.beginFill(), i.drawRect(r.options.pos.x + r.options.reels[0].x, r.options.pos.y + r.options.reels[0].y, (Z.symbolSlotWidth + Z.symbolSpacingW) * r.options.reels.length - Z.symbolSpacingW, (Z.symbolSlotHeight + Z.symbolSpacingH) * Z.options.reels[0].symbolCount - Z.symbolSpacingH), i.endFill(), i.zIndex = 1e3, I.addChild(i), rt = [i];
                    else {
                        for (i.beginFill(), l = 0; l < r.options.reels.length; l++) i.drawRect(r.options.pos.x + r.options.reels[l].x, r.options.pos.y + r.options.reels[l].y, Z.symbolSlotWidth + r.symbolSpacingW, (Z.symbolSlotHeight + r.symbolSpacingH) * Z.options.reels[l].symbolCount);
                        i.endFill(), i.zIndex = 1e3, I.addChild(i), rt = [i]
                    }
                    for (rt.length > 1 && (u = !1), l = 0; l < r.options.reels.length; l++) {
                        ot.push(r.StripInfo[at][l].length * (Z.symbolSlotHeight + Z.symbolSpacingH)), D.push(0), k.push(O.INIT_NEEDED), L.push(O.INIT_NEEDED);
                        for (var c = [o(), o(), o(), o()], h = [o(), o(), o(), o()], p = [], f = 0; f < r.options.reels[l].symbolCount; f++) c.push(o()), h.push(o()), A.push(o()), p.push(A[n]), n += 1;
                        B.push(c), N.push(h)
                    }
                    for (l = 0; l < r.options.reels.length; l++) B[l].forEach(function(t) {
                        u || (t.mask = rt[l]), R.addChild(t)
                    });
                    for (l = 0; l < r.options.reels.length; l++) N[l].forEach(function(t) {
                        u || (t.mask = rt[l]), R.addChild(t)
                    });
                    for (u && (R.mask = rt[0]), I.addChild(R), l = 0; l < r.options.reels.length; l++) G.push(0), U.push(0), j.push(0), W.push(0), X.push(0), V.push(0), H.push(0), z.push(0), Y.push(0), q.push(0), J.push(0), K.push(-400);
                    I.addChild(it.getContainer())
                }();
                var st, lt, ut, ct = 0;
                return {
                    spin: w,
                    resolve: S,
                    setReels: M,
                    cancelSpin: C,
                    getContainer: function() {
                        return I
                    },
                    process: T,
                    updateMotion: P,
                    currentStrategy: function() {
                        return Q
                    },
                    getWinPresentationLayer: E
                }
            }
        }), define("game/autoSpin", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/componentManchester/commonUI/slot/slotUI", "game/Audio", "com/gsap/TweenLite"], function(t, e, n, i, r) {
            function o() {
                "BaseMusicLoop" !== r.currentPlaying(0) && r.play("BaseMusicLoop", 0, !0), "MusicIntro" === r.currentPlaying(11) && r.fadeOut(11, 300), TweenLite.delayedCall(.25, function() {
                    e.publish("nextState")
                })
            }

            function a() {
                s() && (e.publish("nextState"), i.baseGame.spin.enabled = !1)
            }

            function s() {
                return i.baseGame.autoSpin.active && i.baseGame.autoSpin.count > 0
            }
            return e.subscribe("UI.AutoSpinStart", o), e.subscribe("onBeginNewGame", a), {
                isActive: s
            }
        }), define("game/config", ["skbJet/component/gameMsgBus/GameMsgBus"], function(t) {
            function e() {
                return {
                    options: {
                        pos: {},
                        reels: [{
                            symbolCount: n
                        }, {
                            symbolCount: n
                        }, {
                            symbolCount: n
                        }, {
                            symbolCount: n
                        }, {
                            symbolCount: n
                        }]
                    },
                    symbolNames: ["b01", "b02", "b03", "s01", "s02", "s03", "s04", "s05", "s06", "s07", "s08", "s09", "t01", "w01", "w02", "r00", "r06", "r07", "r08", "r09", "ts00", "ts01", "ts02", "ts03", "ts04", "ts05", "ts06", "ts07", "ts08", "ts09", "tw01", "bs00", "bs01", "bs02", "bs03", "bs04", "bs05", "bs06", "bs07", "bs08", "bs09", "bw01"],
                    spriteOffsets: {
                        ts00: {
                            x: -98,
                            y: -116,
                            z: 0
                        },
                        ts01: {
                            x: -98,
                            y: -116,
                            z: 0
                        },
                        ts02: {
                            x: -98,
                            y: -116,
                            z: 0
                        },
                        ts03: {
                            x: -98,
                            y: -116,
                            z: 0
                        },
                        ts04: {
                            x: -98,
                            y: -116,
                            z: 0
                        },
                        ts05: {
                            x: -98,
                            y: -116,
                            z: 0
                        },
                        ts06: {
                            x: -98,
                            y: -116,
                            z: 0
                        },
                        ts07: {
                            x: -98,
                            y: -116,
                            z: 0
                        },
                        ts08: {
                            x: -98,
                            y: -116,
                            z: 0
                        },
                        ts09: {
                            x: -98,
                            y: -116,
                            z: 0
                        },
                        tw01: {
                            x: -98,
                            y: -116,
                            z: 0
                        },
                        bs00: {
                            x: -98,
                            y: -616,
                            z: 0
                        },
                        bs01: {
                            x: -98,
                            y: -616,
                            z: 0
                        },
                        bs02: {
                            x: -98,
                            y: -616,
                            z: 0
                        },
                        bs03: {
                            x: -98,
                            y: -616,
                            z: 0
                        },
                        bs04: {
                            x: -98,
                            y: -616,
                            z: 0
                        },
                        bs05: {
                            x: -98,
                            y: -616,
                            z: 0
                        },
                        bs06: {
                            x: -98,
                            y: -616,
                            z: 0
                        },
                        bs07: {
                            x: -98,
                            y: -616,
                            z: 0
                        },
                        bs08: {
                            x: -98,
                            y: -616,
                            z: 0
                        },
                        bs09: {
                            x: -98,
                            y: -616,
                            z: 0
                        },
                        bw01: {
                            x: -98,
                            y: -616,
                            z: 0
                        }
                    },
                    spriteMap: {},
                    StripInfo: {},
                    locationsMap: ["L0C0R0", "L0C0R1", "L0C0R2", "L0C1R0", "L0C1R1", "L0C1R2", "L0C2R0", "L0C2R1", "L0C2R2", "L0C3R0", "L0C3R1", "L0C3R2", "L0C4R0", "L0C4R1", "L0C4R2"],
                    reelsMap: [
                        ["L0C0R0", "L0C0R1", "L0C0R2"],
                        ["L0C1R0", "L0C1R1", "L0C1R2"],
                        ["L0C2R0", "L0C2R1", "L0C2R2"],
                        ["L0C3R0", "L0C3R1", "L0C3R2"],
                        ["L0C4R0", "L0C4R1", "L0C4R2"]
                    ]
                }
            }
            var n = 3;
            return {
                getBasicReelConfig: e,
                reels: 5,
                symbolsPerReel: n,
                symbolLocationLookup: {
                    L0C0R0: "_reels_0_0",
                    L0C0R1: "_reels_1_0",
                    L0C0R2: "_reels_2_0",
                    L0C1R0: "_reels_0_1",
                    L0C1R1: "_reels_1_1",
                    L0C1R2: "_reels_2_1",
                    L0C2R0: "_reels_0_2",
                    L0C2R1: "_reels_1_2",
                    L0C2R2: "_reels_2_2",
                    L0C3R0: "_reels_0_3",
                    L0C3R1: "_reels_1_3",
                    L0C3R2: "_reels_2_3",
                    L0C4R0: "_reels_0_4",
                    L0C4R1: "_reels_1_4",
                    L0C4R2: "_reels_2_4"
                }
            }
        }), define("game/component/phoenixReel/winline", ["com/pixijs/pixi", "game/component/phoenixReel/animationLayer"], function(t, e) {
            return function(n, i, r) {
                function o() {}

                function a(t, e, n, i) {
                    if (!nt || !nt[t]) {
                        Z = !0;
                        var r = st[t];
                        W.lineStyle(n, e, i), n = Math.max(q, J), l(r.x, r.y, r.width, r.height)
                    }
                }

                function s(t, e, n, i) {
                    if (!nt || !nt[t]) {
                        Z = !0;
                        var r = st[t];
                        W.lineStyle(n, e, i), n = Math.max(q, J), l(r.x, r.y, r.width, r.height)
                    }
                }

                function l(t, e, n, i) {
                    "round" === $ ? W.drawRoundedRect(t, e, n, i, Math.max(n, i) / 16) : W.drawRect(t, e, n, i)
                }

                function u() {
                    var t = Math.max(J, q);
                    K && (t -= K);
                    var e = [];
                    return i.options.reels.forEach(function(n) {
                        for (var r = 0; r < n.symbolCount; r++) {
                            var o = {};
                            o.x = i.options.pos.x + n.x + t / 2, o.y = i.options.pos.y + n.y + (i.symbolSlotHeight + i.symbolSpacingH) * r + t / 2, o.width = i.symbolSlotWidth - t, o.height = i.symbolSlotHeight - t, e.push(o)
                        }
                    }), e
                }

                function c(t, e, n, i, r, o) {
                    return Math.abs(n - t) <= r / 2 && Math.abs(i - e) <= o / 2
                }

                function h(t) {
                    ut = t.reduce(function(t, e, n) {
                        return t[e] = n, t
                    }, {})
                }

                function p(t) {
                    return ((16711680 & t) / 2 & 16711680) + ((65280 & t) / 2 & 65280) + ((255 & t) / 2 & 255)
                }

                function f(t) {
                    lt.winlines.forEach(function(t) {
                        var e, n, r, o, a, s, l, u, h;
                        t.hasOwnProperty("backgroundColour") || (t.backgroundColour = 0), t.hasOwnProperty("start") || (t.start = 0), t.hasOwnProperty("end") || (t.end = 0), t.x = [], t.y = [], t.leftx = [], t.lefty = [], t.rightx = [], t.righty = [], t.leftToRight || (t.locations = t.locations.reverse());
                        for (var p, f = lt.leftx + t.start + i.options.pos.x, d = 0; d < t.locations.length; d++) {
                            if (l = st[t.locations[d]], u = l.x + l.width / 2, h = l.y + l.height / 2 + t.yOffset, t.x.push(u), t.y.push(h), p || (p = h), a = f - u, 0 === (s = p - h)) t.leftx.push(l.x), t.lefty.push(h);
                            else if (Math.abs(a) > Math.abs(s)) {
                                for (e = s / a, r = t.x[d], o = t.y[d]; c(r, o, u, h - t.yOffset, l.width, l.height);) r -= 1, o -= e;
                                r += 1, o += e, t.leftx.push(r), t.lefty.push(o)
                            } else {
                                for (e = a / s, r = t.x[d], o = t.y[d], n = s < 0 ? -1 : 1; c(r, o, u, h - t.yOffset, l.width, l.height);) r -= Math.abs(e), o += n;
                                r += Math.abs(e), o -= n, t.leftx.push(r), t.lefty.push(o)
                            }
                            f = u, p = h
                        }
                        for (d = 0; d < t.locations.length - 1; d++)
                            if (a = t.x[d] - t.x[d + 1], s = t.y[d] - t.y[d + 1], l = st[t.locations[d]], 0 === s) t.rightx.push(l.x + l.width), t.righty.push(t.y[d]);
                            else if (Math.abs(a) > Math.abs(s)) {
                            for (e = s / a, r = t.x[d], o = t.y[d]; c(r, o, t.x[d], t.y[d] - t.yOffset, l.width, l.height);) r += 1, o += e;
                            r -= 1, o -= e, t.rightx.push(r), t.righty.push(o)
                        } else {
                            for (e = a / s, r = t.x[d], o = t.y[d], n = s < 0 ? 1 : -1; c(r, o, t.x[d], t.y[d] - t.yOffset, l.width, l.height);) r += Math.abs(e), o += n;
                            r -= Math.abs(e), o -= n, t.rightx.push(r), t.righty.push(o)
                        }
                        t.rightx.push(t.x[t.locations.length - 1] + st[t.locations.length - 1].width / 2), t.righty.push(t.y[t.locations.length - 1]), t.leftToRight || (t.locations = t.locations.reverse(), t.x = t.x.reverse(), t.y = t.y.reverse(), t.leftx = t.leftx.reverse(), t.lefty = t.lefty.reverse(), t.rightx = t.rightx.reverse(), t.righty = t.righty.reverse())
                    }), t || (lt.leftx += i.options.pos.x, lt.rightx += i.options.pos.x)
                }

                function d(t, e, n, i, r) {
                    Z = !0, W.moveTo(lt.leftx + t.start, t.y[0]), m(lt.leftx + t.start, t.y[0], n, i, r), W.moveTo(lt.leftx + t.start, t.y[0]);
                    for (var o = 0; o < t.locations.length; o++) e > o ? (W.lineTo(t.leftx[o], t.lefty[o]), W.moveTo(t.rightx[o], t.righty[o])) : W.lineTo(t.x[o], t.y[o]);
                    var a = lt.shortenright ? lt.shortenright : 0;
                    (e < t.locations.length || 0 === a) && (W.lineTo(lt.rightx + t.end - a, t.y[t.locations.length - 1]), m(lt.rightx + t.end - a, t.y[t.locations.length - 1], n, i, r))
                }

                function m(t, e, n, i, r) {
                    if (Z = !0, "round" === ct) W.lineStyle(n / 2, r, i), W.drawCircle(t, e, 1), W.lineStyle(n, r, i);
                    else {
                        if ("square" !== ct) return;
                        W.moveTo(t, e), W.lineTo(t, e)
                    }
                }

                function g(t, e, n, i, r) {
                    Z = !0, W.moveTo(lt.rightx + t.end + (ct ? n / 2 : 0), t.y[0]), m(lt.rightx + t.end + (ct ? n / 2 : 0), t.y[0], n, i, r), W.moveTo(lt.rightx + t.end + (ct ? n / 2 : 0), t.y[0]);
                    for (var o = 0; o < t.locations.length; o++) e > t.locations.length - 1 - o ? (W.lineTo(t.rightx[o], t.righty[o]), W.moveTo(t.leftx[o], t.lefty[o])) : W.lineTo(t.x[o], t.y[o]);
                    var a = lt.shortenleft ? lt.shortenleft : 0;
                    0 !== e && 0 !== a || (W.lineTo(lt.leftx + t.start + a - (ct ? n / 2 : 0), t.y[t.locations.length - 1]), m(lt.leftx + t.start - n / 2 + a, t.y[t.locations.length - 1], n, i, r))
                }

                function _(t, e, n, i, r) {
                    Z = !0;
                    var o = lt.winlines[t];
                    W.lineStyle(n, r || o.backgroundColour, i), lt.winlines[t].leftToRight ? d(o, e, n, i, r || o.backgroundColour) : g(o, e, n, i, r || o.backgroundColour)
                }

                function y(t, e, n, i, r) {
                    Z = !0;
                    var o = lt.winlines[t];
                    W.lineStyle(n, r || o.colour, i), lt.winlines[t].leftToRight ? d(o, e, n, i, r || o.colour) : g(o, e, n, i, r || o.colour)
                }

                function v(t) {
                    ot(), Z = !0, t.forEach(function(t) {
                        _(t - 1, 0, J, z), y(t - 1, 0, q, z)
                    }), at()
                }

                function b(t, e) {
                    ot(), Z = !0;
                    var n = t - 1;
                    _(n, e, J, z);
                    for (var i, r = 0; r < e; r++) i = lt.winlines[n].leftToRight ? r : lt.winlines[n].locations.length - 1 - r, a(lt.winlines[n].locations[i], lt.winlines[n].backgroundColour, J, z);
                    for (y(n, e, q, z), r = 0; r < e; r++) i = lt.winlines[n].leftToRight ? r : lt.winlines[n].locations.length - 1 - r, s(lt.winlines[n].locations[i], lt.winlines[n].colour, q, z);
                    at()
                }

                function x(t) {
                    var e = parseInt(t["@name"].substring(5)) - 1,
                        n = t.Cell.map(function(t) {
                            return ut[t["@name"]]
                        });
                    ot(), Z = !0, _(e, n.length, J, z);
                    for (var i = 0; i < n.length; i++) a(n[i], lt.winlines[e].backgroundColour, J, z);
                    for (y(e, n.length, q, z), i = 0; i < n.length; i++) s(n[i], lt.winlines[e].colour, q, z);
                    at()
                }

                function T(e, n) {
                    var i = parseInt(e["@name"].substring(5)) - 1,
                        r = e.Cell.map(function(t) {
                            return ut[t["@name"]]
                        });
                    n.opacity && (n.opacity = parseFloat(n.opacity)), n.height && (n.height = parseInt(n.height)), ot(), Z = !0;
                    var o, l;
                    _(i, r.length, J, z);
                    for (var u = 0; u < r.length; u++) a(r[u], lt.winlines[i].backgroundColour, J, z), n && n.location === e.Cell[u]["@name"] && (o = st[r[u]], l = J, W.moveTo(o.x, o.y + (o.height - n.height)), W.lineTo(o.x + o.width, o.y + (o.height - n.height)), n.hasOwnProperty("backgroundColor") && (W.lineStyle(1, n.backgroundColor, z), W.beginFill(n.backgroundColor, n.hasOwnProperty("opacity") ? n.opacity : z), W.drawRect(o.x + l / 2, o.y + (o.height - parseInt(n.height)), o.width - l, parseInt(n.height) - l / 2), W.endFill()));
                    for (y(i, r.length, q, z), u = 0; u < r.length; u++) s(r[u], lt.winlines[i].colour, q, z), n && n.location === e.Cell[u]["@name"] && (o = st[r[u]], l = q, W.moveTo(o.x, o.y + (o.height - n.height)), W.lineTo(o.x + o.width, o.y + (o.height - n.height)), n.displayText && n.textStyle && (V && H.removeChild(V), V = new t.Text(n.displayText, n.textStyle), V.x = o.x + 2 * l, V.y = o.y + (o.height - n.height / 2 - V.height / 2), "center" === n.textStyle.align && (V.x = o.x + o.width / 2 - V.width / 2), H.addChild(V)));
                    at()
                }

                function w(t, e, n) {
                    Z = !0, t.forEach(function(t) {
                        a(t, n || 0, J, z), s(t, e, q, z)
                    })
                }

                function S(t, e, n) {
                    Z = !0, t.forEach(function(t) {
                        void 0 !== ut[t] && (a(ut[t], n || 0, J, z), s(ut[t], e, q, z))
                    })
                }

                function P(e, n, i, r) {
                    Z = !0, e.forEach(function(e) {
                        if (void 0 !== ut[e]) {
                            var o, l = J;
                            a(ut[e], i, l, z), r && r.location === e && (o = st[ut[e]], W.moveTo(o.x, o.y + (o.height - r.height)), W.lineTo(o.x + o.width, o.y + (o.height - r.height)), r.hasOwnProperty("backgroundColor") && (W.lineStyle(1, r.backgroundColor, z), W.beginFill(r.backgroundColor, r.hasOwnProperty("opacity") ? r.opacity : z), W.drawRect(o.x + l / 2, o.y + (o.height - parseInt(r.height)), o.width - l, parseInt(r.height) - l / 2), W.endFill())), l = q, s(ut[e], n, l, z), r && r.location === e && (o = st[ut[e]], W.moveTo(o.x + l / 2, o.y + (o.height - r.height)), W.lineTo(o.x + l / 2 + (o.width - l), o.y + (o.height - r.height)), r.displayText && r.textStyle && (V && H.removeChild(V), V = new t.Text(r.displayText, r.textStyle), V.x = o.x + 2 * l, V.y = o.y + (o.height - r.height / 2 - V.height / 2), "center" === r.textStyle.align && (V.x = o.x + o.width / 2 - V.width / 2), H.addChild(V)))
                        }
                    }), at()
                }

                function M(t) {
                    W && (W.visible = t), V && (V.visible = t)
                }

                function C(t) {
                    var e = t - 1,
                        n = {};
                    return n.lineData = lt.winlines[e], n.boxData = [], lt.winlines[e].locations.forEach(function(t) {
                        n.boxData.push(st[t])
                    }), n.thickness = J, n.leftx = lt.leftx + n.lineData.start, n.rightx = lt.rightx + n.lineData.end, n
                }

                function E(t) {
                    ct = "round" === t || "square" === t ? t : void 0
                }

                function O(t, e) {
                    var n = t,
                        i = arguments.length > 1 ? e : 2 * t;
                    q === n && J === i || (q = n, J = i, st = u(), f(!0))
                }

                function I(t) {
                    Y = t
                }

                function R(t) {
                    $ = "round" === t ? "round" : "square"
                }

                function A(t) {
                    K = t, st = u(), f(!0)
                }

                function k() {
                    return et
                }

                function L(t) {
                    t ? ht || (ht = ot, ot = function() {}) : ht && (ot = ht, ht = void 0)
                }

                function D(t) {
                    t ? pt || (pt = at, at = function() {}) : pt && (at = pt, pt = void 0)
                }

                function B() {
                    for (var t = JSON.parse(JSON.stringify(lt)), e = 0; e < lt.winlines.length; e++) delete t.winlines[e].x, delete t.winlines[e].y, delete t.winlines[e].leftx, delete t.winlines[e].lefty, delete t.winlines[e].rightx, delete t.winlines[e].righty
                }

                function N(t) {
                    switch (t.key.toLowerCase()) {
                        case "arrowleft":
                            --dt < 0 && (dt = lt.winlines.length - 1);
                            break;
                        case "arrowright":
                            ++dt >= lt.winlines.length && (dt = 0);
                            break;
                        case "arrowup":
                            lt.winlines[dt].yOffset--;
                            break;
                        case "arrowdown":
                            lt.winlines[dt].yOffset++;
                            break;
                        case "g":
                            mt = !mt, gt = !1;
                            break;
                        case "q":
                            lt.winlines[dt].start--;
                            break;
                        case "w":
                            lt.winlines[dt].start++;
                            break;
                        case "a":
                            lt.winlines[dt].end--;
                            break;
                        case "s":
                            lt.winlines[dt].end++;
                            break;
                        case "x":
                            G(!1);
                            break;
                        case "d":
                            B();
                            break;
                        default:
                            return void t.preventDefault()
                    }
                    if (lt.winlines[dt].yOffset > i.symbolSlotHeight / 2 && (lt.winlines[dt].yOffset = Math.floor(i.symbolSlotHeight / 2)), lt.winlines[dt].yOffset < -i.symbolSlotHeight / 2 && (lt.winlines[dt].yOffset = -Math.floor(i.symbolSlotHeight / 2)), f(!0), !ft) return void ot();
                    if (ht(), mt)
                        for (var e = 0; e < lt.winlines.length; e++) _(e, 0, J, z, 0), y(e, 0, q, z, 6710886);
                    b(dt + 1, 0), t.preventDefault()
                }

                function F() {}

                function G(t) {
                    t ? (ft && window.removeEventListener("keydown", N), window.addEventListener("keydown", N, !1), F(), b(dt + 1, 0), ft = !0) : (window.removeEventListener("keydown", N), ft = !1), L(ft)
                }

                function U() {
                    ot(), L(!0), D(!0)
                }

                function j() {
                    D(!1), at(), L(!1)
                }
                var W, X, V, H = new t.Container,
                    z = 1,
                    Y = 1,
                    q = 4,
                    J = 8,
                    K = 0,
                    $ = "square",
                    Z = !1,
                    Q = e(i, null),
                    tt = Q.getContainer(),
                    et = Q.getLimitedAccess(),
                    nt = {},
                    it = et.clearAnimations;
                et.clearAnimations = function() {
                    nt = {}, it()
                };
                var rt = et.setCellAnimation;
                et.setCellAnimation = function(t, e, n, i, r) {
                    0 === i && void 0 !== ut[t] && (nt[ut[t]] = !0), rt(t, e, n, i, r)
                };
                var ot = function() {
                        W ? Z && (Z = !1, W.cacheAsBitmap = !1, W.clear()) : (W = new t.Graphics, X = new t.Container, X.addChild(W), H.addChild(X), H.addChild(tt)), V && (H.removeChild(V), V = null)
                    },
                    at = function() {
                        1 !== Y && (W.cacheAsBitmap = !0, X.alpha = Y)
                    },
                    st = [],
                    lt = r,
                    ut = {};
                ! function() {
                    st = u(), f(), h(i.locationsMap)
                }();
                var ct, ht, pt, ft = !1,
                    dt = 0,
                    mt = !1,
                    gt = !1;
                return {
                    drawWinline: b,
                    drawHighlightOutcome: x,
                    drawHighlightOutcomeWithWinBox: T,
                    drawSpaghetti: v,
                    drawBoxes: w,
                    drawBoxesFromLocations: S,
                    drawBoxesFromLocationsWithWinBox: P,
                    setLineCap: E,
                    clear: ot,
                    done: o,
                    show: M,
                    getContainer: function() {
                        return H
                    },
                    getWinline: C,
                    setLineThickness: O,
                    setOpacity: I,
                    setBoxMode: R,
                    setBoxPadding: A,
                    getHalfbrightColour: p,
                    getAnimationLayer: k,
                    editLines: G,
                    drawStart: U,
                    drawEnd: j
                }
            }
        }), define("game/WinlineHelper", ["skbJet/component/gameMsgBus/GameMsgBus"], function(t) {
            function e() {
                return {
                    id: "",
                    locations: [],
                    colour: "",
                    backgroundColour: "",
                    leftToRight: 0,
                    yOffset: 0
                }
            }

            function n(t) {
                var n, i, r, o, a = {},
                    p = t.PatternInfo.Pattern,
                    f = s.winlines,
                    d = s.locations;
                p.forEach(function(t, s) {
                    r = e(), r.id = t["@name"], o = l[s % l.length], r.colour = o.colour, r.backgroundColour = o.backgroundColour, r.leftToRight = o.leftToRight || 1, i = {
                        locations: []
                    }, t.Cell.forEach(function(t) {
                        r.locations.push(h.indexOf(t["@name"])), i.locations.push(h.indexOf(t["@name"]))
                    }), 0 === r.leftToRight && (r.locations = r.locations.reverse(), i.locations = i.locations.reverse()), d.push(i), n = r.locations[0], void 0 === a[n] ? a[n] = 0 : ++a[n], r.yOffset = u * c[a[n]], f.push(r)
                })
            }

            function i(t) {
                n(t.PaytableResponse)
            }

            function r() {
                return s
            }

            function o() {
                return s.locations
            }
            var a = window.location.search.match(/&?assetPack=([^&]+)&?/)[1],
                s = {
                    winlines: [],
                    locations: [],
                    leftx: -20,
                    rightx: 662,
                    shortenright: 40,
                    shortenleft: 40
                },
                l = [{
                    colour: "0xddeaff",
                    backgroundColour: "0xa9c8f9",
                    leftToRight: 1
                }],
                u = "desktop" === a ? 14 : 11,
                c = [0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5, 6, -6, 7, -7, 8, -8, 9, -9, 10, -10],
                h = ["L0C0R0", "L0C0R1", "L0C0R2", "L0C1R0", "L0C1R1", "L0C1R2", "L0C2R0", "L0C2R1", "L0C2R2", "L0C3R0", "L0C3R1", "L0C3R2", "L0C4R0", "L0C4R1", "L0C4R2"];
            return t.subscribe("platformMsg/ClientService/Game.Init", i), {
                getWinlineData: r,
                getLocations: o
            }
        });
    var _gsScope = "undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window;
    (_gsScope._gsQueue || (_gsScope._gsQueue = [])).push(function() {
            "use strict";
            _gsScope._gsDefine("TimelineMax", ["TimelineLite", "TweenLite", "easing.Ease"], function(t, e, n) {
                var i = function(e) {
                        t.call(this, e), this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._cycle = 0, this._yoyo = !0 === this.vars.yoyo, this._dirty = !0
                    },
                    r = e._internals,
                    o = r.lazyTweens,
                    a = r.lazyRender,
                    s = _gsScope._gsDefine.globals,
                    l = new n(null, null, 1, 0),
                    u = i.prototype = new t;
                return u.constructor = i, u.kill()._gc = !1, i.version = "1.20.4", u.invalidate = function() {
                    return this._yoyo = !0 === this.vars.yoyo, this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._uncache(!0), t.prototype.invalidate.call(this)
                }, u.addCallback = function(t, n, i, r) {
                    return this.add(e.delayedCall(0, t, i, r), n)
                }, u.removeCallback = function(t, e) {
                    if (t)
                        if (null == e) this._kill(null, t);
                        else
                            for (var n = this.getTweensOf(t, !1), i = n.length, r = this._parseTimeOrLabel(e); --i > -1;) n[i]._startTime === r && n[i]._enabled(!1, !1);
                    return this
                }, u.removePause = function(e) {
                    return this.removeCallback(t._internals.pauseCallback, e)
                }, u.tweenTo = function(t, n) {
                    n = n || {};
                    var i, r, o, a = {
                            ease: l,
                            useFrames: this.usesFrames(),
                            immediateRender: !1,
                            lazy: !1
                        },
                        u = n.repeat && s.TweenMax || e;
                    for (r in n) a[r] = n[r];
                    return a.time = this._parseTimeOrLabel(t), i = Math.abs(Number(a.time) - this._time) / this._timeScale || .001, o = new u(this, i, a), a.onStart = function() {
                        o.target.paused(!0), o.vars.time === o.target.time() || i !== o.duration() || o.isFromTo || o.duration(Math.abs(o.vars.time - o.target.time()) / o.target._timeScale).render(o.time(), !0, !0), n.onStart && n.onStart.apply(n.onStartScope || n.callbackScope || o, n.onStartParams || [])
                    }, o
                }, u.tweenFromTo = function(t, e, n) {
                    n = n || {}, t = this._parseTimeOrLabel(t), n.startAt = {
                        onComplete: this.seek,
                        onCompleteParams: [t],
                        callbackScope: this
                    }, n.immediateRender = !1 !== n.immediateRender;
                    var i = this.tweenTo(e, n);
                    return i.isFromTo = 1, i.duration(Math.abs(i.vars.time - t) / this._timeScale || .001)
                }, u.render = function(t, e, n) {
                    this._gc && this._enabled(!0, !1);
                    var i, r, s, l, u, c, h, p, f = this._time,
                        d = this._dirty ? this.totalDuration() : this._totalDuration,
                        m = this._duration,
                        g = this._totalTime,
                        _ = this._startTime,
                        y = this._timeScale,
                        v = this._rawPrevTime,
                        b = this._paused,
                        x = this._cycle;
                    if (f !== this._time && (t += this._time - f), t >= d - 1e-7 && t >= 0) this._locked || (this._totalTime = d, this._cycle = this._repeat), this._reversed || this._hasPausedChild() || (r = !0, l = "onComplete", u = !!this._timeline.autoRemoveChildren, 0 === this._duration && (t <= 0 && t >= -1e-7 || v < 0 || 1e-10 === v) && v !== t && this._first && (u = !0, v > 1e-10 && (l = "onReverseComplete"))), this._rawPrevTime = this._duration || !e || t || this._rawPrevTime === t ? t : 1e-10, this._yoyo && 0 != (1 & this._cycle) ? this._time = t = 0 : (this._time = m, t = m + 1e-4);
                    else if (t < 1e-7)
                        if (this._locked || (this._totalTime = this._cycle = 0), this._time = 0, (0 !== f || 0 === m && 1e-10 !== v && (v > 0 || t < 0 && v >= 0) && !this._locked) && (l = "onReverseComplete", r = this._reversed), t < 0) this._active = !1, this._timeline.autoRemoveChildren && this._reversed ? (u = r = !0, l = "onReverseComplete") : v >= 0 && this._first && (u = !0), this._rawPrevTime = t;
                        else {
                            if (this._rawPrevTime = m || !e || t || this._rawPrevTime === t ? t : 1e-10, 0 === t && r)
                                for (i = this._first; i && 0 === i._startTime;) i._duration || (r = !1), i = i._next;
                            t = 0, this._initted || (u = !0)
                        }
                    else if (0 === m && v < 0 && (u = !0), this._time = this._rawPrevTime = t, this._locked || (this._totalTime = t, 0 !== this._repeat && (c = m + this._repeatDelay, this._cycle = this._totalTime / c >> 0, 0 !== this._cycle && this._cycle === this._totalTime / c && g <= t && this._cycle--, this._time = this._totalTime - this._cycle * c, this._yoyo && 0 != (1 & this._cycle) && (this._time = m - this._time), this._time > m ? (this._time = m, t = m + 1e-4) : this._time < 0 ? this._time = t = 0 : t = this._time)), this._hasPause && !this._forcingPlayhead && !e) {
                        if ((t = this._time) >= f || this._repeat && x !== this._cycle)
                            for (i = this._first; i && i._startTime <= t && !h;) i._duration || "isPause" !== i.data || i.ratio || 0 === i._startTime && 0 === this._rawPrevTime || (h = i), i = i._next;
                        else
                            for (i = this._last; i && i._startTime >= t && !h;) i._duration || "isPause" === i.data && i._rawPrevTime > 0 && (h = i), i = i._prev;
                        h && h._startTime < m && (this._time = t = h._startTime, this._totalTime = t + this._cycle * (this._totalDuration + this._repeatDelay))
                    }
                    if (this._cycle !== x && !this._locked) {
                        var T = this._yoyo && 0 != (1 & x),
                            w = T === (this._yoyo && 0 != (1 & this._cycle)),
                            S = this._totalTime,
                            P = this._cycle,
                            M = this._rawPrevTime,
                            C = this._time;
                        if (this._totalTime = x * m, this._cycle < x ? T = !T : this._totalTime += m, this._time = f, this._rawPrevTime = 0 === m ? v - 1e-4 : v, this._cycle = x, this._locked = !0, f = T ? 0 : m, this.render(f, e, 0 === m), e || this._gc || this.vars.onRepeat && (this._cycle = P, this._locked = !1, this._callback("onRepeat")), f !== this._time) return;
                        if (w && (this._cycle = x, this._locked = !0, f = T ? m + 1e-4 : -1e-4, this.render(f, !0, !1)), this._locked = !1, this._paused && !b) return;
                        this._time = C, this._totalTime = S, this._cycle = P, this._rawPrevTime = M
                    }
                    if (!(this._time !== f && this._first || n || u || h)) return void(g !== this._totalTime && this._onUpdate && (e || this._callback("onUpdate")));
                    if (this._initted || (this._initted = !0), this._active || !this._paused && this._totalTime !== g && t > 0 && (this._active = !0), 0 === g && this.vars.onStart && (0 === this._totalTime && this._totalDuration || e || this._callback("onStart")), (p = this._time) >= f)
                        for (i = this._first; i && (s = i._next, p === this._time && (!this._paused || b));)(i._active || i._startTime <= this._time && !i._paused && !i._gc) && (h === i && this.pause(), i._reversed ? i.render((i._dirty ? i.totalDuration() : i._totalDuration) - (t - i._startTime) * i._timeScale, e, n) : i.render((t - i._startTime) * i._timeScale, e, n)), i = s;
                    else
                        for (i = this._last; i && (s = i._prev, p === this._time && (!this._paused || b));) {
                            if (i._active || i._startTime <= f && !i._paused && !i._gc) {
                                if (h === i) {
                                    for (h = i._prev; h && h.endTime() > this._time;) h.render(h._reversed ? h.totalDuration() - (t - h._startTime) * h._timeScale : (t - h._startTime) * h._timeScale, e, n), h = h._prev;
                                    h = null, this.pause()
                                }
                                i._reversed ? i.render((i._dirty ? i.totalDuration() : i._totalDuration) - (t - i._startTime) * i._timeScale, e, n) : i.render((t - i._startTime) * i._timeScale, e, n)
                            }
                            i = s
                        }
                    this._onUpdate && (e || (o.length && a(), this._callback("onUpdate"))), l && (this._locked || this._gc || _ !== this._startTime && y === this._timeScale || (0 === this._time || d >= this.totalDuration()) && (r && (o.length && a(), this._timeline.autoRemoveChildren && this._enabled(!1, !1), this._active = !1), !e && this.vars[l] && this._callback(l)))
                }, u.getActive = function(t, e, n) {
                    null == t && (t = !0), null == e && (e = !0), null == n && (n = !1);
                    var i, r, o = [],
                        a = this.getChildren(t, e, n),
                        s = 0,
                        l = a.length;
                    for (i = 0; i < l; i++) r = a[i], r.isActive() && (o[s++] = r);
                    return o
                }, u.getLabelAfter = function(t) {
                    t || 0 !== t && (t = this._time);
                    var e, n = this.getLabelsArray(),
                        i = n.length;
                    for (e = 0; e < i; e++)
                        if (n[e].time > t) return n[e].name;
                    return null
                }, u.getLabelBefore = function(t) {
                    null == t && (t = this._time);
                    for (var e = this.getLabelsArray(), n = e.length; --n > -1;)
                        if (e[n].time < t) return e[n].name;
                    return null
                }, u.getLabelsArray = function() {
                    var t, e = [],
                        n = 0;
                    for (t in this._labels) e[n++] = {
                        time: this._labels[t],
                        name: t
                    };
                    return e.sort(function(t, e) {
                        return t.time - e.time
                    }), e
                }, u.invalidate = function() {
                    return this._locked = !1, t.prototype.invalidate.call(this)
                }, u.progress = function(t, e) {
                    return arguments.length ? this.totalTime(this.duration() * (this._yoyo && 0 != (1 & this._cycle) ? 1 - t : t) + this._cycle * (this._duration + this._repeatDelay), e) : this._time / this.duration() || 0
                }, u.totalProgress = function(t, e) {
                    return arguments.length ? this.totalTime(this.totalDuration() * t, e) : this._totalTime / this.totalDuration() || 0
                }, u.totalDuration = function(e) {
                    return arguments.length ? -1 !== this._repeat && e ? this.timeScale(this.totalDuration() / e) : this : (this._dirty && (t.prototype.totalDuration.call(this), this._totalDuration = -1 === this._repeat ? 999999999999 : this._duration * (this._repeat + 1) + this._repeatDelay * this._repeat), this._totalDuration)
                }, u.time = function(t, e) {
                    return arguments.length ? (this._dirty && this.totalDuration(), t > this._duration && (t = this._duration), this._yoyo && 0 != (1 & this._cycle) ? t = this._duration - t + this._cycle * (this._duration + this._repeatDelay) : 0 !== this._repeat && (t += this._cycle * (this._duration + this._repeatDelay)), this.totalTime(t, e)) : this._time
                }, u.repeat = function(t) {
                    return arguments.length ? (this._repeat = t, this._uncache(!0)) : this._repeat
                }, u.repeatDelay = function(t) {
                    return arguments.length ? (this._repeatDelay = t, this._uncache(!0)) : this._repeatDelay
                }, u.yoyo = function(t) {
                    return arguments.length ? (this._yoyo = t, this) : this._yoyo
                }, u.currentLabel = function(t) {
                    return arguments.length ? this.seek(t, !0) : this.getLabelBefore(this._time + 1e-8)
                }, i
            }, !0), _gsScope._gsDefine("TimelineLite", ["core.Animation", "core.SimpleTimeline", "TweenLite"], function(t, e, n) {
                var i = function(t) {
                        e.call(this, t), this._labels = {}, this.autoRemoveChildren = !0 === this.vars.autoRemoveChildren, this.smoothChildTiming = !0 === this.vars.smoothChildTiming, this._sortChildren = !0, this._onUpdate = this.vars.onUpdate;
                        var n, i, r = this.vars;
                        for (i in r) n = r[i], s(n) && -1 !== n.join("").indexOf("{self}") && (r[i] = this._swapSelfInParams(n));
                        s(r.tweens) && this.add(r.tweens, 0, r.align, r.stagger)
                    },
                    r = n._internals,
                    o = i._internals = {},
                    a = r.isSelector,
                    s = r.isArray,
                    l = r.lazyTweens,
                    u = r.lazyRender,
                    c = _gsScope._gsDefine.globals,
                    h = function(t) {
                        var e, n = {};
                        for (e in t) n[e] = t[e];
                        return n
                    },
                    p = function(t, e, n) {
                        var i, r, o = t.cycle;
                        for (i in o) r = o[i], t[i] = "function" == typeof r ? r(n, e[n]) : r[n % r.length];
                        delete t.cycle
                    },
                    f = o.pauseCallback = function() {},
                    d = function(t) {
                        var e, n = [],
                            i = t.length;
                        for (e = 0; e !== i; n.push(t[e++]));
                        return n
                    },
                    m = i.prototype = new e;
                return i.version = "1.20.4", m.constructor = i, m.kill()._gc = m._forcingPlayhead = m._hasPause = !1, m.to = function(t, e, i, r) {
                    var o = i.repeat && c.TweenMax || n;
                    return e ? this.add(new o(t, e, i), r) : this.set(t, i, r)
                }, m.from = function(t, e, i, r) {
                    return this.add((i.repeat && c.TweenMax || n).from(t, e, i), r)
                }, m.fromTo = function(t, e, i, r, o) {
                    var a = r.repeat && c.TweenMax || n;
                    return e ? this.add(a.fromTo(t, e, i, r), o) : this.set(t, r, o)
                }, m.staggerTo = function(t, e, r, o, s, l, u, c) {
                    var f, m, g = new i({
                            onComplete: l,
                            onCompleteParams: u,
                            callbackScope: c,
                            smoothChildTiming: this.smoothChildTiming
                        }),
                        _ = r.cycle;
                    for ("string" == typeof t && (t = n.selector(t) || t), t = t || [], a(t) && (t = d(t)), o = o || 0, o < 0 && (t = d(t), t.reverse(), o *= -1), m = 0; m < t.length; m++) f = h(r), f.startAt && (f.startAt = h(f.startAt), f.startAt.cycle && p(f.startAt, t, m)), _ && (p(f, t, m), null != f.duration && (e = f.duration, delete f.duration)), g.to(t[m], e, f, m * o);
                    return this.add(g, s)
                }, m.staggerFrom = function(t, e, n, i, r, o, a, s) {
                    return n.immediateRender = 0 != n.immediateRender, n.runBackwards = !0, this.staggerTo(t, e, n, i, r, o, a, s)
                }, m.staggerFromTo = function(t, e, n, i, r, o, a, s, l) {
                    return i.startAt = n, i.immediateRender = 0 != i.immediateRender && 0 != n.immediateRender, this.staggerTo(t, e, i, r, o, a, s, l)
                }, m.call = function(t, e, i, r) {
                    return this.add(n.delayedCall(0, t, e, i), r)
                }, m.set = function(t, e, i) {
                    return i = this._parseTimeOrLabel(i, 0, !0), null == e.immediateRender && (e.immediateRender = i === this._time && !this._paused), this.add(new n(t, 0, e), i)
                }, i.exportRoot = function(t, e) {
                    t = t || {}, null == t.smoothChildTiming && (t.smoothChildTiming = !0);
                    var r, o, a, s, l = new i(t),
                        u = l._timeline;
                    for (null == e && (e = !0), u._remove(l, !0), l._startTime = 0, l._rawPrevTime = l._time = l._totalTime = u._time, a = u._first; a;) s = a._next, e && a instanceof n && a.target === a.vars.onComplete || (o = a._startTime - a._delay, o < 0 && (r = 1), l.add(a, o)), a = s;
                    return u.add(l, 0), r && l.totalDuration(), l
                }, m.add = function(r, o, a, l) {
                    var u, c, h, p, f, d;
                    if ("number" != typeof o && (o = this._parseTimeOrLabel(o, 0, !0, r)), !(r instanceof t)) {
                        if (r instanceof Array || r && r.push && s(r)) {
                            for (a = a || "normal", l = l || 0, u = o, c = r.length, h = 0; h < c; h++) s(p = r[h]) && (p = new i({
                                tweens: p
                            })), this.add(p, u), "string" != typeof p && "function" != typeof p && ("sequence" === a ? u = p._startTime + p.totalDuration() / p._timeScale : "start" === a && (p._startTime -= p.delay())), u += l;
                            return this._uncache(!0)
                        }
                        if ("string" == typeof r) return this.addLabel(r, o);
                        if ("function" != typeof r) throw "Cannot add " + r + " into the timeline; it is not a tween, timeline, function, or string.";
                        r = n.delayedCall(0, r)
                    }
                    if (e.prototype.add.call(this, r, o), r._time && r.render((this.rawTime() - r._startTime) * r._timeScale, !1, !1), (this._gc || this._time === this._duration) && !this._paused && this._duration < this.duration())
                        for (f = this, d = f.rawTime() > r._startTime; f._timeline;) d && f._timeline.smoothChildTiming ? f.totalTime(f._totalTime, !0) : f._gc && f._enabled(!0, !1), f = f._timeline;
                    return this
                }, m.remove = function(e) {
                    if (e instanceof t) {
                        this._remove(e, !1);
                        var n = e._timeline = e.vars.useFrames ? t._rootFramesTimeline : t._rootTimeline;
                        return e._startTime = (e._paused ? e._pauseTime : n._time) - (e._reversed ? e.totalDuration() - e._totalTime : e._totalTime) / e._timeScale, this
                    }
                    if (e instanceof Array || e && e.push && s(e)) {
                        for (var i = e.length; --i > -1;) this.remove(e[i]);
                        return this
                    }
                    return "string" == typeof e ? this.removeLabel(e) : this.kill(null, e)
                }, m._remove = function(t, n) {
                    return e.prototype._remove.call(this, t, n), this._last ? this._time > this.duration() && (this._time = this._duration, this._totalTime = this._totalDuration) : this._time = this._totalTime = this._duration = this._totalDuration = 0, this
                }, m.append = function(t, e) {
                    return this.add(t, this._parseTimeOrLabel(null, e, !0, t))
                }, m.insert = m.insertMultiple = function(t, e, n, i) {
                    return this.add(t, e || 0, n, i)
                }, m.appendMultiple = function(t, e, n, i) {
                    return this.add(t, this._parseTimeOrLabel(null, e, !0, t), n, i)
                }, m.addLabel = function(t, e) {
                    return this._labels[t] = this._parseTimeOrLabel(e), this
                }, m.addPause = function(t, e, i, r) {
                    var o = n.delayedCall(0, f, i, r || this);
                    return o.vars.onComplete = o.vars.onReverseComplete = e, o.data = "isPause", this._hasPause = !0, this.add(o, t)
                }, m.removeLabel = function(t) {
                    return delete this._labels[t], this
                }, m.getLabelTime = function(t) {
                    return null != this._labels[t] ? this._labels[t] : -1
                }, m._parseTimeOrLabel = function(e, n, i, r) {
                    var o, a;
                    if (r instanceof t && r.timeline === this) this.remove(r);
                    else if (r && (r instanceof Array || r.push && s(r)))
                        for (a = r.length; --a > -1;) r[a] instanceof t && r[a].timeline === this && this.remove(r[a]);
                    if (o = "number" != typeof e || n ? this.duration() > 99999999999 ? this.recent().endTime(!1) : this._duration : 0, "string" == typeof n) return this._parseTimeOrLabel(n, i && "number" == typeof e && null == this._labels[n] ? e - o : 0, i);
                    if (n = n || 0, "string" != typeof e || !isNaN(e) && null == this._labels[e]) null == e && (e = o);
                    else {
                        if (-1 === (a = e.indexOf("="))) return null == this._labels[e] ? i ? this._labels[e] = o + n : n : this._labels[e] + n;
                        n = parseInt(e.charAt(a - 1) + "1", 10) * Number(e.substr(a + 1)), e = a > 1 ? this._parseTimeOrLabel(e.substr(0, a - 1), 0, i) : o
                    }
                    return Number(e) + n
                }, m.seek = function(t, e) {
                    return this.totalTime("number" == typeof t ? t : this._parseTimeOrLabel(t), !1 !== e)
                }, m.stop = function() {
                    return this.paused(!0)
                }, m.gotoAndPlay = function(t, e) {
                    return this.play(t, e)
                }, m.gotoAndStop = function(t, e) {
                    return this.pause(t, e)
                }, m.render = function(t, e, n) {
                    this._gc && this._enabled(!0, !1);
                    var i, r, o, a, s, c, h, p = this._dirty ? this.totalDuration() : this._totalDuration,
                        f = this._time,
                        d = this._startTime,
                        m = this._timeScale,
                        g = this._paused;
                    if (t >= p - 1e-7 && t >= 0) this._totalTime = this._time = p, this._reversed || this._hasPausedChild() || (r = !0, a = "onComplete", s = !!this._timeline.autoRemoveChildren, 0 === this._duration && (t <= 0 && t >= -1e-7 || this._rawPrevTime < 0 || 1e-10 === this._rawPrevTime) && this._rawPrevTime !== t && this._first && (s = !0, this._rawPrevTime > 1e-10 && (a = "onReverseComplete"))), this._rawPrevTime = this._duration || !e || t || this._rawPrevTime === t ? t : 1e-10, t = p + 1e-4;
                    else if (t < 1e-7)
                        if (this._totalTime = this._time = 0, (0 !== f || 0 === this._duration && 1e-10 !== this._rawPrevTime && (this._rawPrevTime > 0 || t < 0 && this._rawPrevTime >= 0)) && (a = "onReverseComplete", r = this._reversed), t < 0) this._active = !1, this._timeline.autoRemoveChildren && this._reversed ? (s = r = !0, a = "onReverseComplete") : this._rawPrevTime >= 0 && this._first && (s = !0), this._rawPrevTime = t;
                        else {
                            if (this._rawPrevTime = this._duration || !e || t || this._rawPrevTime === t ? t : 1e-10, 0 === t && r)
                                for (i = this._first; i && 0 === i._startTime;) i._duration || (r = !1), i = i._next;
                            t = 0, this._initted || (s = !0)
                        }
                    else {
                        if (this._hasPause && !this._forcingPlayhead && !e) {
                            if (t >= f)
                                for (i = this._first; i && i._startTime <= t && !c;) i._duration || "isPause" !== i.data || i.ratio || 0 === i._startTime && 0 === this._rawPrevTime || (c = i), i = i._next;
                            else
                                for (i = this._last; i && i._startTime >= t && !c;) i._duration || "isPause" === i.data && i._rawPrevTime > 0 && (c = i), i = i._prev;
                            c && (this._time = t = c._startTime, this._totalTime = t + this._cycle * (this._totalDuration + this._repeatDelay))
                        }
                        this._totalTime = this._time = this._rawPrevTime = t
                    }
                    if (this._time !== f && this._first || n || s || c) {
                        if (this._initted || (this._initted = !0), this._active || !this._paused && this._time !== f && t > 0 && (this._active = !0), 0 === f && this.vars.onStart && (0 === this._time && this._duration || e || this._callback("onStart")), (h = this._time) >= f)
                            for (i = this._first; i && (o = i._next, h === this._time && (!this._paused || g));)(i._active || i._startTime <= h && !i._paused && !i._gc) && (c === i && this.pause(), i._reversed ? i.render((i._dirty ? i.totalDuration() : i._totalDuration) - (t - i._startTime) * i._timeScale, e, n) : i.render((t - i._startTime) * i._timeScale, e, n)), i = o;
                        else
                            for (i = this._last; i && (o = i._prev, h === this._time && (!this._paused || g));) {
                                if (i._active || i._startTime <= f && !i._paused && !i._gc) {
                                    if (c === i) {
                                        for (c = i._prev; c && c.endTime() > this._time;) c.render(c._reversed ? c.totalDuration() - (t - c._startTime) * c._timeScale : (t - c._startTime) * c._timeScale, e, n), c = c._prev;
                                        c = null, this.pause()
                                    }
                                    i._reversed ? i.render((i._dirty ? i.totalDuration() : i._totalDuration) - (t - i._startTime) * i._timeScale, e, n) : i.render((t - i._startTime) * i._timeScale, e, n)
                                }
                                i = o
                            }
                        this._onUpdate && (e || (l.length && u(), this._callback("onUpdate"))), a && (this._gc || d !== this._startTime && m === this._timeScale || (0 === this._time || p >= this.totalDuration()) && (r && (l.length && u(), this._timeline.autoRemoveChildren && this._enabled(!1, !1), this._active = !1), !e && this.vars[a] && this._callback(a)))
                    }
                }, m._hasPausedChild = function() {
                    for (var t = this._first; t;) {
                        if (t._paused || t instanceof i && t._hasPausedChild()) return !0;
                        t = t._next
                    }
                    return !1
                }, m.getChildren = function(t, e, i, r) {
                    r = r || -9999999999;
                    for (var o = [], a = this._first, s = 0; a;) a._startTime < r || (a instanceof n ? !1 !== e && (o[s++] = a) : (!1 !== i && (o[s++] = a), !1 !== t && (o = o.concat(a.getChildren(!0, e, i)), s = o.length))), a = a._next;
                    return o
                }, m.getTweensOf = function(t, e) {
                    var i, r, o = this._gc,
                        a = [],
                        s = 0;
                    for (o && this._enabled(!0, !0), i = n.getTweensOf(t), r = i.length; --r > -1;)(i[r].timeline === this || e && this._contains(i[r])) && (a[s++] = i[r]);
                    return o && this._enabled(!1, !0), a
                }, m.recent = function() {
                    return this._recent
                }, m._contains = function(t) {
                    for (var e = t.timeline; e;) {
                        if (e === this) return !0;
                        e = e.timeline
                    }
                    return !1
                }, m.shiftChildren = function(t, e, n) {
                    n = n || 0;
                    for (var i, r = this._first, o = this._labels; r;) r._startTime >= n && (r._startTime += t), r = r._next;
                    if (e)
                        for (i in o) o[i] >= n && (o[i] += t);
                    return this._uncache(!0)
                }, m._kill = function(t, e) {
                    if (!t && !e) return this._enabled(!1, !1);
                    for (var n = e ? this.getTweensOf(e) : this.getChildren(!0, !0, !1), i = n.length, r = !1; --i > -1;) n[i]._kill(t, e) && (r = !0);
                    return r
                }, m.clear = function(t) {
                    var e = this.getChildren(!1, !0, !0),
                        n = e.length;
                    for (this._time = this._totalTime = 0; --n > -1;) e[n]._enabled(!1, !1);
                    return !1 !== t && (this._labels = {}), this._uncache(!0)
                }, m.invalidate = function() {
                    for (var e = this._first; e;) e.invalidate(), e = e._next;
                    return t.prototype.invalidate.call(this)
                }, m._enabled = function(t, n) {
                    if (t === this._gc)
                        for (var i = this._first; i;) i._enabled(t, !0), i = i._next;
                    return e.prototype._enabled.call(this, t, n)
                }, m.totalTime = function(e, n, i) {
                    this._forcingPlayhead = !0;
                    var r = t.prototype.totalTime.apply(this, arguments);
                    return this._forcingPlayhead = !1, r
                }, m.duration = function(t) {
                    return arguments.length ? (0 !== this.duration() && 0 !== t && this.timeScale(this._duration / t), this) : (this._dirty && this.totalDuration(), this._duration)
                }, m.totalDuration = function(t) {
                    if (!arguments.length) {
                        if (this._dirty) {
                            for (var e, n, i = 0, r = this._last, o = 999999999999; r;) e = r._prev, r._dirty && r.totalDuration(), r._startTime > o && this._sortChildren && !r._paused && !this._calculatingDuration ? (this._calculatingDuration = 1, this.add(r, r._startTime - r._delay), this._calculatingDuration = 0) : o = r._startTime, r._startTime < 0 && !r._paused && (i -= r._startTime, this._timeline.smoothChildTiming && (this._startTime += r._startTime / this._timeScale, this._time -= r._startTime, this._totalTime -= r._startTime, this._rawPrevTime -= r._startTime), this.shiftChildren(-r._startTime, !1, -9999999999), o = 0), n = r._startTime + r._totalDuration / r._timeScale, n > i && (i = n), r = e;
                            this._duration = this._totalDuration = i, this._dirty = !1
                        }
                        return this._totalDuration
                    }
                    return t && this.totalDuration() ? this.timeScale(this._totalDuration / t) : this
                }, m.paused = function(e) {
                    if (!e)
                        for (var n = this._first, i = this._time; n;) n._startTime === i && "isPause" === n.data && (n._rawPrevTime = 0), n = n._next;
                    return t.prototype.paused.apply(this, arguments)
                }, m.usesFrames = function() {
                    for (var e = this._timeline; e._timeline;) e = e._timeline;
                    return e === t._rootFramesTimeline
                }, m.rawTime = function(t) {
                    return t && (this._paused || this._repeat && this.time() > 0 && this.totalProgress() < 1) ? this._totalTime % (this._duration + this._repeatDelay) : this._paused ? this._totalTime : (this._timeline.rawTime(t) - this._startTime) * this._timeScale
                }, i
            }, !0)
        }), _gsScope._gsDefine && _gsScope._gsQueue.pop()(),
        function(t) {
            "use strict";
            var e = function() {
                return (_gsScope.GreenSockGlobals || _gsScope).TimelineMax
            };
            "undefined" != typeof module && module.exports ? (require("./TweenLite.js"), module.exports = e()) : "function" == typeof define && define.amd && define("com/gsap/TimelineMax", ["TweenLite"], e)
        }(), define("game/WinLineSweep", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/resourceLoader/resourceLib", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "com/gsap/TimelineMax", "com/gsap/plugins/PixiPlugin", "game/WinlineHelper"], function(t, e, n, i, r, o) {
            function a() {
                s(), R && R.kill()
            }

            function s() {
                _ ? _.clear() : (_ = new PIXI.Graphics, g.addChild(_), TweenLite.to(_, .1, {
                    pixi: {
                        blur: C
                    }
                }))
            }

            function l(t, e, n, i) {
                var r, o, a, s = [];
                for (o = (e.x - t.x) / E, a = (e.y - t.y) / E, r = 0; r < E; r++) s.push({
                    x: t.x + o * r,
                    y: t.y + a * r,
                    location: 0 == r ? n : -1,
                    count: 0 == r ? i : -1
                });
                return s
            }

            function u(t) {
                var e, n = t.locations.length,
                    i = [];
                for (i = l({
                        x: m.leftx,
                        y: t.y[0]
                    }, {
                        x: t.x[0],
                        y: t.y[0]
                    }, -1, -1), e = 0; e < n - 1; e++) i = i.concat(l({
                    x: t.x[e],
                    y: t.y[e]
                }, {
                    x: t.x[e + 1],
                    y: t.y[e + 1]
                }, t.locations[e], e));
                return i = i.concat(l({
                    x: t.x[e],
                    y: t.y[e]
                }, {
                    x: m.rightx,
                    y: t.y[e]
                }, t.locations[e], e)), i.push({
                    x: m.rightx,
                    y: t.y[e],
                    location: -1
                }), i
            }

            function c(e, n, i) {
                s();
                var r = d.getWinline(e).lineData,
                    o = u(r);
                if (y = n - w, !((v = n) < 0 || y >= o.length)) {
                    v >= o.length && (v = o.length - 1), y < 0 && (y = 0), _.lineStyle(b, x, T), _.moveTo(o[y].x, o[y].y), h(o[y].x, o[y].y, b, T, x), _.moveTo(o[y].x, o[y].y);
                    for (var a = y + 1; a < v; a++) _.lineTo(o[a].x, o[a].y);
                    h(o[a - 1].x, o[a - 1].y, b, T, x), -1 != o[v].location && -1 != o[v].count && o[v].count < i && t.publish("WinLineSweep.location", o[v].location)
                }
            }

            function h(t, e, n, i, r) {
                _.lineStyle(n / 2, r, i), _.drawCircle(t, e, 1), _.lineStyle(n, r, i)
            }

            function p(t) {
                d = t, g = n.lib._winLines.pixiContainer, s(), m = o.getWinlineData()
            }

            function f(e, n) {
                null !== R && R.pause(R.duration()).kill(), R = new i({
                    delay: 0,
                    repeat: -1,
                    yoyo: !1,
                    paused: !0
                });
                var r = {
                    x: 0
                };
                R.add(TweenLite.to(r, O, {
                    x: 1,
                    ease: Power1.easeInOut,
                    onStart: function() {
                        M = 0
                    }
                }));
                for (var o = S; o < P; o++) R.add(TweenLite.to(r, .02, {
                    x: 1,
                    ease: Power1.easeInOut,
                    onStart: function(t, e) {
                        c(t, e, n)
                    },
                    onStartParams: [e, o]
                }));
                return R.add(TweenLite.to(r, I, {
                    x: 1,
                    ease: Power1.easeInOut,
                    onComplete: function() {
                        t.publish("WinLineSweep.complete")
                    }
                })), R
            }
            var d, m, g, _, y, v, b = 13,
                x = 16777215,
                T = 1,
                w = 20,
                S = 0,
                P = 70,
                M = 0,
                C = 4,
                E = 6,
                O = .25,
                I = .25,
                R = null;
            return {
                init: p,
                clear: s,
                destroy: a,
                addTween: f
            }
        }), define("game/Utils", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/componentManchester/rgsModel/rgsModel", "skbJet/component/gladPixiRenderer/Sprite", "com/gsap/TweenLite"], function(t, e, n, i) {
            function r(t) {
                return t * (y / 180)
            }

            function o(t, e) {
                PIXI.utils.TextureCache[e + "Over"] && (t.on("mouseover", function() {
                    var n = t.getImage();
                    n && n.match(/Inactive$/) || t.setImage(e + "Over")
                }), t.on("mouseout", function() {
                    var n = t.getImage();
                    n && n.match(/Inactive$/) || t.setImage(e)
                })), PIXI.utils.TextureCache[e + "Pressed"] && (t.on("mousedown", function() {
                    var n = t.getImage();
                    n && n.match(/Inactive$/) || t.setImage(e + "Pressed")
                }), t.on("mouseup", function() {
                    var n = t.getImage();
                    n && n.match(/Inactive$/) || t.setImage(e)
                }))
            }

            function a(t) {
                var e, n = [],
                    i = (t.ex - t.sx) / t.steps,
                    r = (t.ey - t.sy) / t.steps;
                for (e = 1; e < t.steps; e++) n.push({
                    x: t.sx + (i * e + u(t.rand)),
                    y: t.sy + (r * e + u(t.rand))
                });
                return n.push({
                    x: t.ex,
                    y: t.ey
                }), n
            }

            function s(t) {
                var e, n = [],
                    i = (t.ex - t.sx) / t.steps,
                    r = (t.ey - t.sy) / t.steps,
                    o = (t.ez - t.sz) / t.steps;
                for (e = 1; e < t.steps; e++) n.push({
                    x: t.sx + (i * e + u(t.rand)),
                    y: t.sy + (r * e + u(t.rand)),
                    z: t.sz + (o * e + u(t.rand))
                });
                return n.push({
                    x: t.ex,
                    y: t.ey,
                    z: t.ez
                }), n
            }

            function l(t, e) {
                var n = new PIXI.Point;
                t.toGlobal(e || new PIXI.Point, n);
                var i = t.transform.worldTransform.a,
                    r = t.transform.worldTransform.d;
                return n.x += t.width * i / 2, n.y += t.height * r / 2, n
            }

            function u(t) {
                return -t / 2 + Math.random() * t
            }

            function c(t) {
                var e = i.getSpriteSheetAnimationFrameArray(t),
                    n = h(e);
                return new PIXI.extras.AnimatedSprite(n)
            }

            function h(t) {
                var e, n, i = [];
                for (n = 0; n < t.length; ++n) e = PIXI.Texture.fromImage(t[n]), !0 === e.valid && i.push(e);
                return i
            }

            function p(t) {
                return t ? Array.isArray(t) ? t.map(function(t) {
                    return t ? PIXI.utils.TextureCache[t] : PIXI.Texture.EMPTY
                }) : [PIXI.utils.TextureCache[t]] : [PIXI.Texture.EMPTY]
            }

            function f(t, n) {
                var i, r = {
                    val: n || 30
                };
                TweenLite.to(r, t, {
                    val: 0,
                    ease: Power1.easeInOut,
                    onUpdate: function() {
                        i = -r.val / 2, e.lib._gameLayer.pixiContainer.transform.position.x = i + Math.random() * r.val, e.lib._gameLayer.pixiContainer.transform.position.y = i + Math.random() * r.val
                    },
                    onComplete: function() {
                        e.lib._gameLayer.pixiContainer.transform.position.x = 0, e.lib._gameLayer.pixiContainer.transform.position.y = 0
                    }
                })
            }

            function d(t) {
                for (var e = t.length - 1; e > 0; e--) {
                    var n = Math.floor(Math.random() * (e + 1)),
                        i = t[e];
                    t[e] = t[n], t[n] = i
                }
                return t
            }

            function m(t) {
                return new PIXI.TextStyle({
                    fontFamily: "Oswald, Arial, sans-serif",
                    fontSize: t,
                    fontStyle: "normal",
                    fontWeight: "bolder",
                    fill: ["#FFFFFF"],
                    align: "center",
                    padding: 7,
                    lineJoin: "round"
                })
            }

            function g(t, e, n) {
                var i = 1 / 0;
                "number" == typeof e ? i = e : void 0 !== e.width && (i = e.width), i < t.width && (t.style.fontSize = Math.min(i / t.width * t.style.fontSize, n || 4095))
            }

            function _(t, e, n) {
                var i = 1 / 0;
                "number" == typeof e ? i = e : void 0 !== e.width && (i = e.width), i < t.width && (t.font.size = Math.min(i / t.width * t.font.size, n || 4095), t.dirty = !0)
            }
            var y = (window.location.search.match(/&?assetPack=([^&]+)&?/)[1], Math.PI);
            return {
                getRand: u,
                generate2dBezierPoints: a,
                generate3dBezierPoints: s,
                toGlobal: l,
                degToRad: r,
                addButtonInteraction: o,
                getAnimatedSprite: c,
                getTextureArray: h,
                getTextureList: p,
                shakeScreen: f,
                shuffleArray: d,
                standardTextStyle: m,
                fitText: g,
                fitBitmapText: _
            }
        }), define("game/ParticleConfigs", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/componentManchester/rgsModel/rgsModel", "skbJet/component/gladPixiRenderer/Sprite", "com/gsap/TweenLite"], function(t, e, n, i) {
            function r() {
                return o
            }
            var o = (window.location.search.match(/&?assetPack=([^&]+)&?/)[1], {
                bigWinBurst: {
                    emit: !1,
                    alpha: {
                        start: 1,
                        end: .1
                    },
                    scale: {
                        start: 2,
                        end: .3,
                        minimumScaleMultiplier: 1.5
                    },
                    color: {
                        start: "#ffffff",
                        end: "#ffffff"
                    },
                    speed: {
                        start: 600,
                        end: 0,
                        minimumSpeedMultiplier: 1
                    },
                    acceleration: {
                        x: 0,
                        y: 0
                    },
                    maxSpeed: 0,
                    startRotation: {
                        min: 0,
                        max: 360
                    },
                    noRotation: !0,
                    rotationSpeed: {
                        min: 0,
                        max: 0
                    },
                    lifetime: {
                        min: 3,
                        max: 2.8
                    },
                    blendMode: "normal",
                    frequency: .001,
                    emitterLifetime: .5,
                    maxParticles: 4e3,
                    pos: {
                        x: 0,
                        y: 0
                    },
                    addAtBack: !1,
                    spawnType: "ring",
                    spawnCircle: {
                        x: 0,
                        y: 0,
                        r: 0,
                        minR: 0
                    }
                },
                coinFountain: {
                    emit: !1,
                    alpha: {
                        start: 1,
                        end: 1
                    },
                    scale: {
                        start: .8,
                        end: 1.5,
                        minimumScaleMultiplier: 1
                    },
                    color: {
                        start: "#ffffff",
                        end: "#ffffff"
                    },
                    speed: {
                        start: 1500,
                        end: 0,
                        minimumSpeedMultiplier: 1.15
                    },
                    acceleration: {
                        x: 0,
                        y: 1750
                    },
                    maxSpeed: 0,
                    startRotation: {
                        min: 255,
                        max: 285
                    },
                    noRotation: !1,
                    rotationSpeed: {
                        min: -40,
                        max: 40
                    },
                    lifetime: {
                        min: 5,
                        max: 5
                    },
                    blendMode: "normal",
                    frequency: .1,
                    emitterLifetime: -1,
                    maxParticles: 50,
                    pos: {
                        x: 0,
                        y: 0
                    },
                    addAtBack: !1,
                    spawnType: "circle",
                    spawnCircle: {
                        x: 0,
                        y: 0,
                        r: 75
                    }
                },
                coinFlurry: {
                    emit: !1,
                    alpha: {
                        start: 1,
                        end: 1
                    },
                    scale: {
                        start: .8,
                        end: 1.5,
                        minimumScaleMultiplier: 1
                    },
                    color: {
                        start: "#ffffff",
                        end: "#ffffff"
                    },
                    speed: {
                        start: 1500,
                        end: 1500,
                        minimumSpeedMultiplier: 1.1
                    },
                    acceleration: {
                        x: 0,
                        y: 1500
                    },
                    maxSpeed: 0,
                    startRotation: {
                        min: 255,
                        max: 285
                    },
                    noRotation: !0,
                    rotationSpeed: {
                        min: -30,
                        max: 30
                    },
                    lifetime: {
                        min: 4,
                        max: 4
                    },
                    blendMode: "normal",
                    frequency: .0075,
                    emitterLifetime: .5,
                    maxParticles: 150,
                    pos: {
                        x: 0,
                        y: 0
                    },
                    addAtBack: !1,
                    spawnType: "circle",
                    spawnCircle: {
                        x: 0,
                        y: 0,
                        r: 50
                    }
                },
                wildReelTrail: {
                    alpha: {
                        start: 1,
                        end: .31
                    },
                    scale: {
                        start: .75,
                        end: 1,
                        minimumScaleMultiplier: 1
                    },
                    color: {
                        start: "#c3f5fa",
                        end: "#021db5"
                    },
                    speed: {
                        start: 100,
                        end: 0,
                        minimumSpeedMultiplier: 1
                    },
                    acceleration: {
                        x: 0,
                        y: 0
                    },
                    maxSpeed: 0,
                    startRotation: {
                        min: 0,
                        max: 0
                    },
                    noRotation: !1,
                    rotationSpeed: {
                        min: 0,
                        max: 20
                    },
                    lifetime: {
                        min: .5,
                        max: 1
                    },
                    blendMode: "add",
                    frequency: .002,
                    emitterLifetime: -1,
                    maxParticles: 500,
                    pos: {
                        x: 0,
                        y: 0
                    },
                    addAtBack: !1,
                    spawnType: "rect",
                    spawnRect: {
                        x: 0,
                        y: 0,
                        w: 0,
                        h: 770
                    }
                },
                TOPParticleTextures: [{
                    texture: "TOP_particle_00",
                    count: 3
                }, {
                    texture: "TOP_particle_01",
                    count: 3
                }, {
                    texture: "TOP_particle_02",
                    count: 3
                }, {
                    texture: "TOP_particle_03",
                    count: 3
                }, {
                    texture: "TOP_particle_04",
                    count: 3
                }, {
                    texture: "TOP_particle_05",
                    count: 3
                }, {
                    texture: "TOP_particle_06",
                    count: 3
                }, {
                    texture: "TOP_particle_07",
                    count: 3
                }, {
                    texture: "TOP_particle_08",
                    count: 3
                }, {
                    texture: "TOP_particle_09",
                    count: 3
                }, {
                    texture: "TOP_particle_10",
                    count: 3
                }, {
                    texture: "TOP_particle_11",
                    count: 3
                }, {
                    texture: "TOP_particle_12",
                    count: 3
                }],
                TOMParticleTextures: [{
                    texture: "TOM_particle_00",
                    count: 3
                }, {
                    texture: "TOM_particle_01",
                    count: 3
                }, {
                    texture: "TOM_particle_02",
                    count: 3
                }, {
                    texture: "TOM_particle_03",
                    count: 3
                }, {
                    texture: "TOM_particle_04",
                    count: 3
                }, {
                    texture: "TOM_particle_05",
                    count: 3
                }, {
                    texture: "TOM_particle_06",
                    count: 3
                }, {
                    texture: "TOM_particle_07",
                    count: 3
                }, {
                    texture: "TOM_particle_08",
                    count: 3
                }, {
                    texture: "TOM_particle_09",
                    count: 3
                }, {
                    texture: "TOM_particle_10",
                    count: 3
                }, {
                    texture: "TOM_particle_11",
                    count: 3
                }, {
                    texture: "TOM_particle_12",
                    count: 3
                }, {
                    texture: "TOM_particle_13",
                    count: 3
                }, {
                    texture: "TOM_particle_14",
                    count: 3
                }, {
                    texture: "TOM_particle_15",
                    count: 3
                }, {
                    texture: "TOM_particle_16",
                    count: 3
                }, {
                    texture: "TOM_particle_17",
                    count: 3
                }, {
                    texture: "TOM_particle_18",
                    count: 3
                }, {
                    texture: "TOM_particle_19",
                    count: 3
                }, {
                    texture: "TOM_particle_20",
                    count: 3
                }, {
                    texture: "TOM_particle_21",
                    count: 3
                }, {
                    texture: "TOM_particle_22",
                    count: 3
                }, {
                    texture: "TOM_particle_23",
                    count: 3
                }, {
                    texture: "TOM_particle_24",
                    count: 3
                }, {
                    texture: "TOM_particle_25",
                    count: 3
                }],
                TombParticles1: {
                    alpha: {
                        start: 1,
                        end: 0
                    },
                    scale: {
                        start: .4,
                        end: .01,
                        minimumScaleMultiplier: 1.5
                    },
                    color: {
                        start: "#ffffff",
                        end: "#fff23d"
                    },
                    speed: {
                        start: 50,
                        end: 1,
                        minimumSpeedMultiplier: .5
                    },
                    acceleration: {
                        x: 0,
                        y: 0
                    },
                    maxSpeed: 0,
                    startRotation: {
                        min: 0,
                        max: 360
                    },
                    noRotation: !1,
                    rotationSpeed: {
                        min: 0,
                        max: 0
                    },
                    lifetime: {
                        min: 1,
                        max: 10
                    },
                    blendMode: "add",
                    frequency: .2,
                    emitterLifetime: -.13,
                    maxParticles: 300,
                    pos: {
                        x: 0,
                        y: 0
                    },
                    addAtBack: !1,
                    spawnType: "rect",
                    spawnRect: {
                        x: -800,
                        y: -500,
                        w: 1600,
                        h: 1e3
                    }
                }
            });
            return {
                getData: r
            }
        }),
        define("game/transitions/SpineEvents", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/resourceLoader/resourceLib", "game/Audio"], function(t, e, n, i, r, o) {
            function a(t) {
                var e = t.data.name,
                    n = t.stringValue;
                switch (-1 != e.indexOf("sound") && (e = "sound"), e) {
                    case "sound":
                        o.play(n, 1, !1)
                }
            }
            return {
                newEvent: a
            }
        }), define("game/transitions/SpinePlayer", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/resourceLoader/resourceLib", "game/ParticleConfigs", "com/pixijs/pixi-spine", "game/transitions/SpineEvents"], function(t, e, n, i, r, o, a, s) {
            function l() {
                x = i.lib._spineLayer.pixiContainer, T = new t.spine.Spine(r.spine.backgroundEffects_spine.spineData), T.state.onComplete = function() {
                    null != C && (C.call(), C = null)
                }, T.state.onEvent = function(t, e) {
                    s.newEvent(e)
                }, w = new t.spine.Spine(r.spine.bonusBackgroundEffects_spine.spineData), w.state.onComplete = function() {
                    null != C && (C.call(), C = null)
                }, w.state.onEvent = function(t, e) {
                    s.newEvent(e)
                }, u(), x.addChild(T, w), m("BaseGame")
            }

            function u() {
                var e = o.getData();
                A = !0, P = new t.particles.Emitter(R, {
                    frameRate: "matchLife",
                    loop: !0,
                    textures: e.TOMParticleTextures
                }, e.TombParticles1), P.particleConstructor = t.particles.AnimatedParticle, S = w.slotContainers[w.skeleton.findSlotIndex("BG_particle")], S.addChild(R), O = i.getTicker(), I && (O.remove(I), I = null), P.emit = !1, I = c, O.add(I)
            }

            function c() {
                P && A && P.update(.001 * O.elapsedMS)
            }

            function h(t) {
                P.emit = t
            }

            function p(t) {
                return -1 != t.indexOf("Tomb") ? (T.alpha = 0, w.alpha = 1, w) : (T.alpha = 1, w.alpha = 0, T)
            }

            function f(t) {
                if (-1 != t.indexOf("tomb"))
                    if (-1 != t.indexOf("IN") || -1 != t.indexOf("Static")) {
                        var e = o.getData(); - 1 != t.indexOf("Powe") ? P.init({
                            frameRate: "matchLife",
                            loop: !0,
                            textures: e.TOPParticleTextures
                        }, e.TombParticles1) : P.init({
                            frameRate: "matchLife",
                            loop: !0,
                            textures: e.TOMParticleTextures
                        }, e.TombParticles1), h(!0), TweenLite.to(R, 1, {
                            alpha: 1,
                            ease: Power1.easeInOut
                        })
                    } else h(!1), TweenLite.to(R, .3, {
                        alpha: 0,
                        ease: Power1.easeInOut
                    })
            }

            function d(t) {
                var e = "landscape" == E ? "land_" : "port_";
                return String(e + t)
            }

            function m(t, e) {
                var n = {
                        BaseGame: "basegameStatic2",
                        BaseGamePyramid: "basegameStatic_tipAnim",
                        BonusTrigger: "bonusTriggerStatic",
                        TombOfPower: "tombOfPowerStatic",
                        TombOfMystery: "tombOfMysteryStatic",
                        MightyReel: "mightyModStatic",
                        ObeliskWilds: "obeliskModStatic",
                        SunbeamWilds: "sunModStatic",
                        WaterfallStacks: "waterModStatic",
                        Modifier: "modifierTriggerStatic"
                    },
                    i = p(t);
                if (i && (f(n[t]), C = e || null, n[t] != M.name)) {
                    var r = d(n[t]);
                    i.state.setAnimation(0, r, "BaseGame" != t), M = {
                        anim: i,
                        name: n[t],
                        loop: "BaseGame" != t,
                        time: 0
                    }
                }
            }

            function g(t, e) {
                var n = {
                        BaseGame: "basegameStatic2",
                        Bonus: "bonusTransition_IN",
                        BonusTrigger: "bonusTrigger_IN",
                        TombOfPower: "tombOfPowerTransition_IN",
                        TombOfPowerFlash: "tombOfPowerStatic_Burst",
                        TombOfMystery: "tombOfMysteryTransition_IN",
                        MightyReel: "mightyMod_IN",
                        ObeliskWilds: "obeliskMod_IN",
                        SunbeamWilds: "sunMod_IN",
                        WaterfallStacks: "waterMod_IN",
                        Modifier: "modifierTrigger_IN"
                    },
                    i = p(t);
                if (i && (f(n[t]), C = e || null, n[t] != M.name)) {
                    var r = d(n[t]);
                    i.state.setAnimation(0, r, !1), M = {
                        anim: i,
                        name: n[t],
                        loop: !1,
                        time: 0
                    }
                }
            }

            function _(t, e) {
                var n = {
                        BaseGame: "basegameStatic2",
                        Bonus: "bonusTransition_OUT",
                        BonusTrigger: "bonusTrigger_OUT",
                        TombOfPower: "tombOfPowerTransition_OUT",
                        TombOfMystery: "tombOfMysteryTransition_OUT",
                        MightyReel: "mightyMod_OUT",
                        ObeliskWilds: "obeliskMod_OUT",
                        SunbeamWilds: "sunMod_OUT",
                        WaterfallStacks: "waterMod_OUT",
                        Modifier: "modifierTrigger_OUT"
                    },
                    i = p(t);
                if (i && (f(n[t]), C = e || null, n[t] != M.name)) {
                    var r = d(n[t]);
                    i.state.setAnimation(0, r, !1), M = {
                        anim: i,
                        name: n[t],
                        loop: !1,
                        time: 0
                    }
                }
            }

            function y() {
                return M.name
            }

            function v(e) {
                t.spine.Spine.globalAutoUpdate = !1, M.time = M.anim.state.tracks[0].time
            }

            function b(e) {
                if (E = e.orientation, "" != M.name) {
                    var n = d(M.name);
                    M.anim.state.setAnimation(0, n, M.loop), M.anim.state.tracks[0].time = M.time, M.anim.state.update(0)
                }
                t.spine.Spine.globalAutoUpdate = !0
            }
            var x, T, w, S, P, M = {
                    anim: null,
                    name: "",
                    loop: !1,
                    time: 0
                },
                C = null,
                E = "landscape",
                O = null,
                I = null,
                R = new t.Container,
                A = !0;
            return e.subscribe("platformMsg/ClientService/Game.Init", l), e.subscribe("Orientation.BeforeChange", v), e.subscribe("Orientation.AfterChange", b), {
                setSky: m,
                transitionIn: g,
                transitionOut: _,
                getCurrentAnim: y
            }
        });
    var _gsScope = "undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window;
    (_gsScope._gsQueue || (_gsScope._gsQueue = [])).push(function() {
            "use strict";
            _gsScope._gsDefine("easing.Back", ["easing.Ease"], function(t) {
                var e, n, i, r, o = _gsScope.GreenSockGlobals || _gsScope,
                    a = o.com.greensock,
                    s = 2 * Math.PI,
                    l = Math.PI / 2,
                    u = a._class,
                    c = function(e, n) {
                        var i = u("easing." + e, function() {}, !0),
                            r = i.prototype = new t;
                        return r.constructor = i, r.getRatio = n, i
                    },
                    h = t.register || function() {},
                    p = function(t, e, n, i, r) {
                        var o = u("easing." + t, {
                            easeOut: new e,
                            easeIn: new n,
                            easeInOut: new i
                        }, !0);
                        return h(o, t), o
                    },
                    f = function(t, e, n) {
                        this.t = t, this.v = e, n && (this.next = n, n.prev = this, this.c = n.v - e, this.gap = n.t - t)
                    },
                    d = function(e, n) {
                        var i = u("easing." + e, function(t) {
                                this._p1 = t || 0 === t ? t : 1.70158, this._p2 = 1.525 * this._p1
                            }, !0),
                            r = i.prototype = new t;
                        return r.constructor = i, r.getRatio = n, r.config = function(t) {
                            return new i(t)
                        }, i
                    },
                    m = p("Back", d("BackOut", function(t) {
                        return (t -= 1) * t * ((this._p1 + 1) * t + this._p1) + 1
                    }), d("BackIn", function(t) {
                        return t * t * ((this._p1 + 1) * t - this._p1)
                    }), d("BackInOut", function(t) {
                        return (t *= 2) < 1 ? .5 * t * t * ((this._p2 + 1) * t - this._p2) : .5 * ((t -= 2) * t * ((this._p2 + 1) * t + this._p2) + 2)
                    })),
                    g = u("easing.SlowMo", function(t, e, n) {
                        e = e || 0 === e ? e : .7, null == t ? t = .7 : t > 1 && (t = 1), this._p = 1 !== t ? e : 0, this._p1 = (1 - t) / 2, this._p2 = t, this._p3 = this._p1 + this._p2, this._calcEnd = !0 === n
                    }, !0),
                    _ = g.prototype = new t;
                return _.constructor = g, _.getRatio = function(t) {
                    var e = t + (.5 - t) * this._p;
                    return t < this._p1 ? this._calcEnd ? 1 - (t = 1 - t / this._p1) * t : e - (t = 1 - t / this._p1) * t * t * t * e : t > this._p3 ? this._calcEnd ? 1 === t ? 0 : 1 - (t = (t - this._p3) / this._p1) * t : e + (t - e) * (t = (t - this._p3) / this._p1) * t * t * t : this._calcEnd ? 1 : e
                }, g.ease = new g(.7, .7), _.config = g.config = function(t, e, n) {
                    return new g(t, e, n)
                }, e = u("easing.SteppedEase", function(t, e) {
                    t = t || 1, this._p1 = 1 / t, this._p2 = t + (e ? 0 : 1), this._p3 = e ? 1 : 0
                }, !0), _ = e.prototype = new t, _.constructor = e, _.getRatio = function(t) {
                    return t < 0 ? t = 0 : t >= 1 && (t = .999999999), ((this._p2 * t | 0) + this._p3) * this._p1
                }, _.config = e.config = function(t, n) {
                    return new e(t, n)
                }, n = u("easing.ExpoScaleEase", function(t, e, n) {
                    this._p1 = Math.log(e / t), this._p2 = e - t, this._p3 = t, this._ease = n
                }, !0), _ = n.prototype = new t, _.constructor = n, _.getRatio = function(t) {
                    return this._ease && (t = this._ease.getRatio(t)), (this._p3 * Math.exp(this._p1 * t) - this._p3) / this._p2
                }, _.config = n.config = function(t, e, i) {
                    return new n(t, e, i)
                }, i = u("easing.RoughEase", function(e) {
                    e = e || {};
                    for (var n, i, r, o, a, s, l = e.taper || "none", u = [], c = 0, h = 0 | (e.points || 20), p = h, d = !1 !== e.randomize, m = !0 === e.clamp, g = e.template instanceof t ? e.template : null, _ = "number" == typeof e.strength ? .4 * e.strength : .4; --p > -1;) n = d ? Math.random() : 1 / h * p, i = g ? g.getRatio(n) : n, "none" === l ? r = _ : "out" === l ? (o = 1 - n, r = o * o * _) : "in" === l ? r = n * n * _ : n < .5 ? (o = 2 * n, r = o * o * .5 * _) : (o = 2 * (1 - n), r = o * o * .5 * _), d ? i += Math.random() * r - .5 * r : p % 2 ? i += .5 * r : i -= .5 * r, m && (i > 1 ? i = 1 : i < 0 && (i = 0)), u[c++] = {
                        x: n,
                        y: i
                    };
                    for (u.sort(function(t, e) {
                            return t.x - e.x
                        }), s = new f(1, 1, null), p = h; --p > -1;) a = u[p], s = new f(a.x, a.y, s);
                    this._prev = new f(0, 0, 0 !== s.t ? s : s.next)
                }, !0), _ = i.prototype = new t, _.constructor = i, _.getRatio = function(t) {
                    var e = this._prev;
                    if (t > e.t) {
                        for (; e.next && t >= e.t;) e = e.next;
                        e = e.prev
                    } else
                        for (; e.prev && t <= e.t;) e = e.prev;
                    return this._prev = e, e.v + (t - e.t) / e.gap * e.c
                }, _.config = function(t) {
                    return new i(t)
                }, i.ease = new i, p("Bounce", c("BounceOut", function(t) {
                    return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375
                }), c("BounceIn", function(t) {
                    return (t = 1 - t) < 1 / 2.75 ? 1 - 7.5625 * t * t : t < 2 / 2.75 ? 1 - (7.5625 * (t -= 1.5 / 2.75) * t + .75) : t < 2.5 / 2.75 ? 1 - (7.5625 * (t -= 2.25 / 2.75) * t + .9375) : 1 - (7.5625 * (t -= 2.625 / 2.75) * t + .984375)
                }), c("BounceInOut", function(t) {
                    var e = t < .5;
                    return t = e ? 1 - 2 * t : 2 * t - 1, t < 1 / 2.75 ? t *= 7.5625 * t : t = t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375, e ? .5 * (1 - t) : .5 * t + .5
                })), p("Circ", c("CircOut", function(t) {
                    return Math.sqrt(1 - (t -= 1) * t)
                }), c("CircIn", function(t) {
                    return -(Math.sqrt(1 - t * t) - 1)
                }), c("CircInOut", function(t) {
                    return (t *= 2) < 1 ? -.5 * (Math.sqrt(1 - t * t) - 1) : .5 * (Math.sqrt(1 - (t -= 2) * t) + 1)
                })), r = function(e, n, i) {
                    var r = u("easing." + e, function(t, e) {
                            this._p1 = t >= 1 ? t : 1, this._p2 = (e || i) / (t < 1 ? t : 1), this._p3 = this._p2 / s * (Math.asin(1 / this._p1) || 0), this._p2 = s / this._p2
                        }, !0),
                        o = r.prototype = new t;
                    return o.constructor = r, o.getRatio = n, o.config = function(t, e) {
                        return new r(t, e)
                    }, r
                }, p("Elastic", r("ElasticOut", function(t) {
                    return this._p1 * Math.pow(2, -10 * t) * Math.sin((t - this._p3) * this._p2) + 1
                }, .3), r("ElasticIn", function(t) {
                    return -this._p1 * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - this._p3) * this._p2)
                }, .3), r("ElasticInOut", function(t) {
                    return (t *= 2) < 1 ? this._p1 * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - this._p3) * this._p2) * -.5 : this._p1 * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - this._p3) * this._p2) * .5 + 1
                }, .45)), p("Expo", c("ExpoOut", function(t) {
                    return 1 - Math.pow(2, -10 * t)
                }), c("ExpoIn", function(t) {
                    return Math.pow(2, 10 * (t - 1)) - .001
                }), c("ExpoInOut", function(t) {
                    return (t *= 2) < 1 ? .5 * Math.pow(2, 10 * (t - 1)) : .5 * (2 - Math.pow(2, -10 * (t - 1)))
                })), p("Sine", c("SineOut", function(t) {
                    return Math.sin(t * l)
                }), c("SineIn", function(t) {
                    return 1 - Math.cos(t * l)
                }), c("SineInOut", function(t) {
                    return -.5 * (Math.cos(Math.PI * t) - 1)
                })), u("easing.EaseLookup", {
                    find: function(e) {
                        return t.map[e]
                    }
                }, !0), h(o.SlowMo, "SlowMo", "ease,"), h(i, "RoughEase", "ease,"), h(e, "SteppedEase", "ease,"), m
            }, !0)
        }), _gsScope._gsDefine && _gsScope._gsQueue.pop()(),
        function() {
            "use strict";
            var t = function() {
                return _gsScope.GreenSockGlobals || _gsScope
            };
            "undefined" != typeof module && module.exports ? (require("../TweenLite.js"), module.exports = t()) : "function" == typeof define && define.amd && define("com/gsap/easing/EasePack", ["TweenLite"], t)
        }(), define("game/ModifierReel", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/resourceLoader/resourceLib", "game/Audio", "game/Utils", "com/gsap/easing/EasePack", "com/gsap/TweenLite"], function(t, e, n, i, r) {
            function o() {
                var t, i, o;
                for (var a in P) t = PIXI.Sprite.fromImage(P[a].name), o = new PIXI.Text(n.i18n.game.Game.ModifierPlaques[a], P[a].style), r.fitText(o, P[a].style.wordWrapWidth, w), o.anchor.set(1, .5), o.x = t.width - 55, o.y = t.height / 2, t.addChild(o), i = PIXI.RenderTexture.create(t.width, t.height), e.getPixiRenderer().render(t, i), P[a].texture = i, P[a].targets.forEach(function(t) {
                    e.lib[t].pixiContainer.children[0].texture = i
                })
            }

            function a(t) {
                return null == P[t].texture && o(), P[t].texture
            }

            function s(t) {
                o(), g = e.lib._modifierOverlay.pixiContainer, g.visible = !1, _ = e.lib._modifierOverlayLogo.pixiContainer, _.visible = !1, y = e.lib._modifierStrip.pixiContainer, v = e.lib._modifierStripContainer.pixiContainer;
                var n = e.lib._modStripSymbol0.pixiContainer;
                b = n.height, x = n.height * C;
                var i = (e.lib._modifierStripMask.pixiContainer, new PIXI.Graphics);
                i.beginFill(16777215), i.drawRect(76, 68, 668, 392), i.endFill(), y.mask = i, y.addChild(i), M.y = 0, T = 0
            }

            function l(t) {
                M.y = T = S[t] * b, p()
            }

            function u(t, e) {
                g.transform.scale.x = 0, g.transform.scale.y = 0, TweenLite.to(g.transform.scale, .4, {
                    x: 1,
                    y: 1,
                    ease: Power1.easeInOut
                }), g.visible = !0, _.children[0].texture = P[t].texture, I = e, M.y = T;
                var n = x * O + S[t] * b;
                i.play("ModifierSpin", 2, !1), TweenLite.to(M, E + 1 * Math.random(), {
                    y: n,
                    ease: Back.easeInOut.config(.1 + .25 * Math.random()),
                    onUpdate: p,
                    onComplete: c
                })
            }

            function c() {
                _.transform.scale.x = 1, _.transform.scale.y = 1, _.visible = !0, TweenLite.to(_.transform.scale, 1, {
                    x: 1.3,
                    y: 1.3,
                    ease: Power1.easeOut,
                    onComplete: h
                }), i.play("BonusModifierSpinStop", 2, !1)
            }

            function h() {
                i.play("MusicIntro", 11, !1), i.play("BonusMusicLoop", 0, !0), TweenLite.to(g.transform.scale, .5, {
                    x: 0,
                    y: 0,
                    ease: Power1.easeIn,
                    onComplete: function() {
                        g.visible = !1
                    }
                }), TweenLite.to(_.transform.scale, .3, {
                    x: 0,
                    y: 0,
                    delay: 1,
                    ease: Power1.easeOut,
                    onComplete: function() {
                        _.visible = !1, I.call()
                    }
                })
            }

            function p() {
                T = M.y % x, v.transform.position.y = T + 10
            }

            function f() {
                g.visible = !1, l("MightyReel")
            }

            function d() {
                g.visible = !1
            }

            function m() {
                g.visible = !0
            }
            var g, _, y, v, b, x, T, w = (window.location.search.match(/&?assetPack=([^&]+)&?/)[1], 52),
                S = {
                    WaterfallStacks: 3,
                    SunbeamWilds: 2,
                    ObeliskWilds: 1,
                    MightyReel: 0
                },
                P = {
                    WaterfallStacks: {
                        name: "waterfall",
                        texture: null,
                        targets: ["_modStripSymbol0", "_modStripSymbol4"],
                        style: new PIXI.TextStyle({
                            align: "right",
                            dropShadow: !0,
                            dropShadowAngle: .9,
                            dropShadowColor: "#1d1da5",
                            dropShadowDistance: 2,
                            fill: ["#3751ff"],
                            fontFamily: "Oswald, Arial, sans-serif",
                            fontSize: w,
                            fontWeight: "bolder",
                            stroke: "#00004f",
                            strokeThickness: 3,
                            letterSpacing: 3,
                            wordWrap: !1,
                            padding: 7,
                            wordWrapWidth: 350
                        })
                    },
                    SunbeamWilds: {
                        name: "sunbeam",
                        texture: null,
                        targets: ["_modStripSymbol3"],
                        style: new PIXI.TextStyle({
                            align: "right",
                            dropShadow: !0,
                            dropShadowAngle: .9,
                            dropShadowColor: "#c18700",
                            dropShadowDistance: 2,
                            fill: ["#ff2f34"],
                            fontFamily: "Oswald, Arial, sans-serif",
                            fontSize: w,
                            fontWeight: "bolder",
                            stroke: "#4b3203",
                            strokeThickness: 3,
                            letterSpacing: 3,
                            wordWrap: !1,
                            padding: 7,
                            wordWrapWidth: 350
                        })
                    },
                    ObeliskWilds: {
                        name: "obelisk",
                        texture: null,
                        targets: ["_modStripSymbol2", "_modStripSymbol6"],
                        style: new PIXI.TextStyle({
                            align: "right",
                            dropShadow: !0,
                            dropShadowAngle: .9,
                            dropShadowColor: "#a900c1",
                            dropShadowDistance: 2,
                            fill: ["#9b009f"],
                            fontFamily: "Oswald, Arial, sans-serif",
                            fontSize: w,
                            fontWeight: "bolder",
                            stroke: "#4f004d",
                            strokeThickness: 3,
                            letterSpacing: 3,
                            wordWrap: !1,
                            padding: 7,
                            wordWrapWidth: 350
                        })
                    },
                    MightyReel: {
                        name: "mightyReel",
                        texture: null,
                        targets: ["_modStripSymbol1", "_modStripSymbol5"],
                        style: new PIXI.TextStyle({
                            align: "right",
                            dropShadow: !0,
                            dropShadowAngle: .9,
                            dropShadowColor: "#0f00c1",
                            dropShadowDistance: 2,
                            fill: ["#000db0"],
                            fontFamily: "Oswald, Arial, sans-serif",
                            fontSize: w,
                            fontWeight: "bolder",
                            stroke: "#000a4f",
                            strokeThickness: 3,
                            letterSpacing: 3,
                            wordWrap: !1,
                            padding: 7,
                            wordWrapWidth: 350
                        })
                    }
                },
                M = {
                    y: 0
                },
                C = 4,
                E = 7,
                O = 6,
                I = null;
            return t.subscribe("platformMsg/ClientService/Game.Init", s), {
                reset: f,
                setSpin: l,
                spinTo: u,
                hide: d,
                show: m,
                getLogo: a
            }
        }),
        function(t) {
            if ("object" == typeof exports && "undefined" != typeof module) module.exports = t();
            else if ("function" == typeof define && define.amd) define("com/pixijs/pixi-particles", [], t);
            else {
                var e;
                e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this, e.pixiParticles = t()
            }
        }(function() {
            var define, module, exports;
            return function t(e, n, i) {
                function r(a, s) {
                    if (!n[a]) {
                        if (!e[a]) {
                            var l = "function" == typeof require && require;
                            if (!s && l) return l(a, !0);
                            if (o) return o(a, !0);
                            var u = new Error("Cannot find module '" + a + "'");
                            throw u.code = "MODULE_NOT_FOUND", u
                        }
                        var c = n[a] = {
                            exports: {}
                        };
                        e[a][0].call(c.exports, function(t) {
                            var n = e[a][1][t];
                            return r(n || t)
                        }, c, c.exports, t, e, n, i)
                    }
                    return n[a].exports
                }
                for (var o = "function" == typeof require && require, a = 0; a < i.length; a++) r(i[a]);
                return r
            }({
                1: [function(t, e, n) {
                    "use strict";
                    var i = t("./ParticleUtils"),
                        r = t("./Particle"),
                        o = PIXI.Texture,
                        a = function(t) {
                            r.call(this, t), this.textures = null, this.duration = 0, this.framerate = 0, this.elapsed = 0, this.loop = !1
                        },
                        s = r.prototype,
                        l = a.prototype = Object.create(s);
                    l.init = function() {
                        this.Particle_init(), this.elapsed = 0, this.framerate < 0 && (this.duration = this.maxLife, this.framerate = this.textures.length / this.duration)
                    }, l.applyArt = function(t) {
                        this.textures = t.textures, this.framerate = t.framerate, this.duration = t.duration, this.loop = t.loop
                    }, l.update = function(t) {
                        if (this.Particle_update(t) >= 0) {
                            this.elapsed += t, this.elapsed > this.duration && (this.loop ? this.elapsed = this.elapsed % this.duration : this.elapsed = this.duration - 1e-6);
                            var e = this.elapsed * this.framerate + 1e-7 | 0;
                            this.texture = this.textures[e] || i.EMPTY_TEXTURE
                        }
                    }, l.Particle_destroy = r.prototype.destroy, l.destroy = function() {
                        this.Particle_destroy(), this.textures = null
                    }, a.parseArt = function(t) {
                        var e, n, i, r, a, s, l = [];
                        for (e = 0; e < t.length; ++e) {
                            for (n = t[e], t[e] = l = {}, l.textures = s = [], r = n.textures, i = 0; i < r.length; ++i)
                                if ("string" == typeof(a = r[i])) s.push(o.fromImage(a));
                                else if (a instanceof o) s.push(a);
                            else {
                                var u = a.count || 1;
                                for (a = "string" == typeof a.texture ? o.fromImage(a.texture) : a.texture; u > 0; --u) s.push(a)
                            }
                            "matchLife" == n.framerate ? (l.framerate = -1, l.duration = 0, l.loop = !1) : (l.loop = !!n.loop, l.framerate = n.framerate > 0 ? n.framerate : 60, l.duration = s.length / l.framerate)
                        }
                        return t
                    }, e.exports = a
                }, {
                    "./Particle": 3,
                    "./ParticleUtils": 4
                }],
                2: [function(t, e, n) {
                    "use strict";
                    var i = t("./ParticleUtils"),
                        r = t("./Particle"),
                        o = PIXI.particles.ParticleContainer || PIXI.ParticleContainer,
                        a = PIXI.ticker.shared,
                        s = function(t, e, n) {
                            this._particleConstructor = r, this.particleImages = null, this.startAlpha = 1, this.endAlpha = 1, this.startSpeed = 0, this.endSpeed = 0, this.minimumSpeedMultiplier = 1, this.acceleration = null, this.maxSpeed = NaN, this.startScale = 1, this.endScale = 1, this.minimumScaleMultiplier = 1, this.startColor = null, this.endColor = null, this.minLifetime = 0, this.maxLifetime = 0, this.minStartRotation = 0, this.maxStartRotation = 0, this.noRotation = !1, this.minRotationSpeed = 0, this.maxRotationSpeed = 0, this.particleBlendMode = 0, this.customEase = null, this.extraData = null, this._frequency = 1, this.maxParticles = 1e3, this.emitterLifetime = -1, this.spawnPos = null, this.spawnType = null, this._spawnFunc = null, this.spawnRect = null, this.spawnCircle = null, this.particlesPerWave = 1, this.particleSpacing = 0, this.angleStart = 0, this.rotation = 0, this.ownerPos = null, this._prevEmitterPos = null, this._prevPosIsValid = !1, this._posChanged = !1, this._parentIsPC = !1, this._parent = null, this.addAtBack = !1, this.particleCount = 0, this._emit = !1, this._spawnTimer = 0, this._emitterLife = -1, this._activeParticlesFirst = null, this._activeParticlesLast = null, this._poolFirst = null, this._origConfig = null, this._origArt = null, this._autoUpdate = !1, this._destroyWhenComplete = !1, this.parent = t, e && n && this.init(e, n), this.recycle = this.recycle, this.update = this.update, this.rotate = this.rotate, this.updateSpawnPos = this.updateSpawnPos, this.updateOwnerPos = this.updateOwnerPos
                        },
                        l = s.prototype = {},
                        u = new PIXI.Point;
                    Object.defineProperty(l, "frequency", {
                        get: function() {
                            return this._frequency
                        },
                        set: function(t) {
                            this._frequency = "number" == typeof t && t > 0 ? t : 1
                        }
                    }), Object.defineProperty(l, "particleConstructor", {
                        get: function() {
                            return this._particleConstructor
                        },
                        set: function(t) {
                            if (t != this._particleConstructor) {
                                this._particleConstructor = t, this.cleanup();
                                for (var e = this._poolFirst; e; e = e.next) e.destroy();
                                this._poolFirst = null, this._origConfig && this._origArt && this.init(this._origArt, this._origConfig)
                            }
                        }
                    }), Object.defineProperty(l, "parent", {
                        get: function() {
                            return this._parent
                        },
                        set: function(t) {
                            if (this._parentIsPC)
                                for (var e = this._poolFirst; e; e = e.next) e.parent && e.parent.removeChild(e);
                            this.cleanup(), this._parent = t, this._parentIsPC = o && t && t instanceof o
                        }
                    }), l.init = function(t, e) {
                        if (t && e) {
                            this.cleanup(), this._origConfig = e, this._origArt = t, t = Array.isArray(t) ? t.slice() : [t];
                            var n = this._particleConstructor;
                            this.particleImages = n.parseArt ? n.parseArt(t) : t, e.alpha ? (this.startAlpha = e.alpha.start, this.endAlpha = e.alpha.end) : this.startAlpha = this.endAlpha = 1, e.speed ? (this.startSpeed = e.speed.start, this.endSpeed = e.speed.end, this.minimumSpeedMultiplier = e.speed.minimumSpeedMultiplier || 1) : (this.minimumSpeedMultiplier = 1, this.startSpeed = this.endSpeed = 0);
                            var r = e.acceleration;
                            r && (r.x || r.y) ? (this.endSpeed = this.startSpeed, this.acceleration = new PIXI.Point(r.x, r.y), this.maxSpeed = e.maxSpeed || NaN) : this.acceleration = new PIXI.Point, e.scale ? (this.startScale = e.scale.start, this.endScale = e.scale.end, this.minimumScaleMultiplier = e.scale.minimumScaleMultiplier || 1) : this.startScale = this.endScale = this.minimumScaleMultiplier = 1, e.color && (this.startColor = i.hexToRGB(e.color.start), e.color.start != e.color.end ? this.endColor = i.hexToRGB(e.color.end) : this.endColor = null), e.startRotation ? (this.minStartRotation = e.startRotation.min, this.maxStartRotation = e.startRotation.max) : this.minStartRotation = this.maxStartRotation = 0, e.noRotation && (this.minStartRotation || this.maxStartRotation) ? this.noRotation = !!e.noRotation : this.noRotation = !1, e.rotationSpeed ? (this.minRotationSpeed = e.rotationSpeed.min, this.maxRotationSpeed = e.rotationSpeed.max) : this.minRotationSpeed = this.maxRotationSpeed = 0, this.minLifetime = e.lifetime.min, this.maxLifetime = e.lifetime.max, this.particleBlendMode = i.getBlendMode(e.blendMode), e.ease ? this.customEase = "function" == typeof e.ease ? e.ease : i.generateEase(e.ease) : this.customEase = null, n.parseData ? this.extraData = n.parseData(e.extraData) : this.extraData = e.extraData || null, this.spawnRect = this.spawnCircle = null, this.particlesPerWave = 1, this.particleSpacing = 0, this.angleStart = 0;
                            var o;
                            switch (e.spawnType) {
                                case "rect":
                                    this.spawnType = "rect", this._spawnFunc = this._spawnRect;
                                    var a = e.spawnRect;
                                    this.spawnRect = new PIXI.Rectangle(a.x, a.y, a.w, a.h);
                                    break;
                                case "circle":
                                    this.spawnType = "circle", this._spawnFunc = this._spawnCircle, o = e.spawnCircle, this.spawnCircle = new PIXI.Circle(o.x, o.y, o.r);
                                    break;
                                case "ring":
                                    this.spawnType = "ring", this._spawnFunc = this._spawnRing, o = e.spawnCircle, this.spawnCircle = new PIXI.Circle(o.x, o.y, o.r), this.spawnCircle.minRadius = o.minR;
                                    break;
                                case "burst":
                                    this.spawnType = "burst", this._spawnFunc = this._spawnBurst, this.particlesPerWave = e.particlesPerWave, this.particleSpacing = e.particleSpacing, this.angleStart = e.angleStart ? e.angleStart : 0;
                                    break;
                                case "point":
                                    this.spawnType = "point", this._spawnFunc = this._spawnPoint;
                                    break;
                                default:
                                    this.spawnType = "point", this._spawnFunc = this._spawnPoint
                            }
                            this.frequency = e.frequency, this.emitterLifetime = e.emitterLifetime || -1, this.maxParticles = e.maxParticles > 0 ? e.maxParticles : 1e3, this.addAtBack = !!e.addAtBack, this.rotation = 0, this.ownerPos = new PIXI.Point, this.spawnPos = new PIXI.Point(e.pos.x, e.pos.y), this._prevEmitterPos = this.spawnPos.clone(), this._prevPosIsValid = !1, this._spawnTimer = 0, this.emit = void 0 === e.emit || !!e.emit, this.autoUpdate = void 0 !== e.autoUpdate && !!e.autoUpdate
                        }
                    }, l.recycle = function(t) {
                        t.next && (t.next.prev = t.prev), t.prev && (t.prev.next = t.next), t == this._activeParticlesLast && (this._activeParticlesLast = t.prev), t == this._activeParticlesFirst && (this._activeParticlesFirst = t.next), t.prev = null, t.next = this._poolFirst, this._poolFirst = t, this._parentIsPC ? (t.alpha = 0, t.visible = !1) : t.parent && t.parent.removeChild(t), --this.particleCount
                    }, l.rotate = function(t) {
                        if (this.rotation != t) {
                            var e = t - this.rotation;
                            this.rotation = t, i.rotatePoint(e, this.spawnPos), this._posChanged = !0
                        }
                    }, l.updateSpawnPos = function(t, e) {
                        this._posChanged = !0, this.spawnPos.x = t, this.spawnPos.y = e
                    }, l.updateOwnerPos = function(t, e) {
                        this._posChanged = !0, this.ownerPos.x = t, this.ownerPos.y = e
                    }, l.resetPositionTracking = function() {
                        this._prevPosIsValid = !1
                    }, Object.defineProperty(l, "emit", {
                        get: function() {
                            return this._emit
                        },
                        set: function(t) {
                            this._emit = !!t, this._emitterLife = this.emitterLifetime
                        }
                    }), Object.defineProperty(l, "autoUpdate", {
                        get: function() {
                            return this._autoUpdate
                        },
                        set: function(t) {
                            this._autoUpdate && !t ? a.remove(this.update, this) : !this._autoUpdate && t && a.add(this.update, this), this._autoUpdate = !!t
                        }
                    }), l.playOnceAndDestroy = function() {
                        this.autoUpdate = !0, this.emit = !0, this._destroyWhenComplete = !0
                    }, l.update = function(t) {
                        if (this._autoUpdate && (t = t / PIXI.settings.TARGET_FPMS / 1e3), this._parent) {
                            var e, n, i;
                            for (n = this._activeParticlesFirst; n; n = i) i = n.next, n.update(t);
                            var r, o;
                            this._prevPosIsValid && (r = this._prevEmitterPos.x, o = this._prevEmitterPos.y);
                            var a = this.ownerPos.x + this.spawnPos.x,
                                s = this.ownerPos.y + this.spawnPos.y;
                            if (this._emit)
                                for (this._spawnTimer -= t; this._spawnTimer <= 0;) {
                                    if (this._emitterLife > 0 && (this._emitterLife -= this._frequency, this._emitterLife <= 0)) {
                                        this._spawnTimer = 0, this._emitterLife = 0, this.emit = !1;
                                        break
                                    }
                                    if (this.particleCount >= this.maxParticles) this._spawnTimer += this._frequency;
                                    else {
                                        var l;
                                        if (l = this.minLifetime == this.maxLifetime ? this.minLifetime : Math.random() * (this.maxLifetime - this.minLifetime) + this.minLifetime, -this._spawnTimer < l) {
                                            var u, c;
                                            if (this._prevPosIsValid && this._posChanged) {
                                                var h = 1 + this._spawnTimer / t;
                                                u = (a - r) * h + r, c = (s - o) * h + o
                                            } else u = a, c = s;
                                            e = 0;
                                            for (var p = Math.min(this.particlesPerWave, this.maxParticles - this.particleCount); e < p; ++e) {
                                                var f, d;
                                                if (this._poolFirst ? (f = this._poolFirst, this._poolFirst = this._poolFirst.next, f.next = null) : f = new this.particleConstructor(this), this.particleImages.length > 1 ? f.applyArt(this.particleImages.random()) : f.applyArt(this.particleImages[0]), f.startAlpha = this.startAlpha, f.endAlpha = this.endAlpha, 1 != this.minimumSpeedMultiplier ? (d = Math.random() * (1 - this.minimumSpeedMultiplier) + this.minimumSpeedMultiplier, f.startSpeed = this.startSpeed * d, f.endSpeed = this.endSpeed * d) : (f.startSpeed = this.startSpeed, f.endSpeed = this.endSpeed), f.acceleration.x = this.acceleration.x, f.acceleration.y = this.acceleration.y, f.maxSpeed = this.maxSpeed, 1 != this.minimumScaleMultiplier ? (d = Math.random() * (1 - this.minimumScaleMultiplier) + this.minimumScaleMultiplier, f.startScale = this.startScale * d, f.endScale = this.endScale * d) : (f.startScale = this.startScale, f.endScale = this.endScale), f.startColor = this.startColor, f.endColor = this.endColor, this.minRotationSpeed == this.maxRotationSpeed ? f.rotationSpeed = this.minRotationSpeed : f.rotationSpeed = Math.random() * (this.maxRotationSpeed - this.minRotationSpeed) + this.minRotationSpeed, f.noRotation = this.noRotation, f.maxLife = l, f.blendMode = this.particleBlendMode, f.ease = this.customEase, f.extraData = this.extraData, this._spawnFunc(f, u, c, e), f.init(), f.update(-this._spawnTimer), this._parentIsPC && f.parent) {
                                                    var m = this._parent.children;
                                                    if (m[0] == f) m.shift();
                                                    else if (m[m.length - 1] == f) m.pop();
                                                    else {
                                                        var g = m.indexOf(f);
                                                        m.splice(g, 1)
                                                    }
                                                    this.addAtBack ? m.unshift(f) : m.push(f)
                                                } else this.addAtBack ? this._parent.addChildAt(f, 0) : this._parent.addChild(f);
                                                this._activeParticlesLast ? (this._activeParticlesLast.next = f, f.prev = this._activeParticlesLast, this._activeParticlesLast = f) : this._activeParticlesLast = this._activeParticlesFirst = f, ++this.particleCount
                                            }
                                        }
                                        this._spawnTimer += this._frequency
                                    }
                                }
                            this._posChanged && (this._prevEmitterPos.x = a, this._prevEmitterPos.y = s, this._prevPosIsValid = !0, this._posChanged = !1), !this._destroyWhenComplete || this._emit || this._activeParticlesFirst || this.destroy()
                        }
                    }, l._spawnPoint = function(t, e, n) {
                        this.minStartRotation == this.maxStartRotation ? t.rotation = this.minStartRotation + this.rotation : t.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + this.minStartRotation + this.rotation, t.position.x = e, t.position.y = n
                    }, l._spawnRect = function(t, e, n) {
                        this.minStartRotation == this.maxStartRotation ? t.rotation = this.minStartRotation + this.rotation : t.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + this.minStartRotation + this.rotation, u.x = Math.random() * this.spawnRect.width + this.spawnRect.x, u.y = Math.random() * this.spawnRect.height + this.spawnRect.y, 0 !== this.rotation && i.rotatePoint(this.rotation, u), t.position.x = e + u.x, t.position.y = n + u.y
                    }, l._spawnCircle = function(t, e, n) {
                        this.minStartRotation == this.maxStartRotation ? t.rotation = this.minStartRotation + this.rotation : t.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + this.minStartRotation + this.rotation, u.x = Math.random() * this.spawnCircle.radius, u.y = 0, i.rotatePoint(360 * Math.random(), u), u.x += this.spawnCircle.x, u.y += this.spawnCircle.y, 0 !== this.rotation && i.rotatePoint(this.rotation, u), t.position.x = e + u.x, t.position.y = n + u.y
                    }, l._spawnRing = function(t, e, n) {
                        var r = this.spawnCircle;
                        this.minStartRotation == this.maxStartRotation ? t.rotation = this.minStartRotation + this.rotation : t.rotation = Math.random() * (this.maxStartRotation - this.minStartRotation) + this.minStartRotation + this.rotation, r.minRadius == r.radius ? u.x = Math.random() * (r.radius - r.minRadius) + r.minRadius : u.x = r.radius, u.y = 0;
                        var o = 360 * Math.random();
                        t.rotation += o, i.rotatePoint(o, u), u.x += this.spawnCircle.x, u.y += this.spawnCircle.y, 0 !== this.rotation && i.rotatePoint(this.rotation, u), t.position.x = e + u.x, t.position.y = n + u.y
                    }, l._spawnBurst = function(t, e, n, i) {
                        0 === this.particleSpacing ? t.rotation = 360 * Math.random() : t.rotation = this.angleStart + this.particleSpacing * i + this.rotation, t.position.x = e, t.position.y = n
                    }, l.cleanup = function() {
                        var t, e;
                        for (t = this._activeParticlesFirst; t; t = e) e = t.next, this.recycle(t), t.parent && t.parent.removeChild(t);
                        this._activeParticlesFirst = this._activeParticlesLast = null, this.particleCount = 0
                    }, l.destroy = function() {
                        this.autoUpdate = !1, this.cleanup();
                        for (var t, e = this._poolFirst; e; e = t) t = e.next, e.destroy();
                        this._poolFirst = this._parent = this.particleImages = this.spawnPos = this.ownerPos = this.startColor = this.endColor = this.customEase = null
                    }, e.exports = s
                }, {
                    "./Particle": 3,
                    "./ParticleUtils": 4
                }],
                3: [function(t, e, n) {
                    var i = t("./ParticleUtils"),
                        r = PIXI.Sprite,
                        o = function(t) {
                            r.call(this), this.emitter = t, this.anchor.x = this.anchor.y = .5, this.velocity = new PIXI.Point, this.maxLife = 0, this.age = 0, this.ease = null, this.extraData = null, this.startAlpha = 0, this.endAlpha = 0, this.startSpeed = 0, this.endSpeed = 0, this.acceleration = new PIXI.Point, this.maxSpeed = NaN, this.startScale = 0, this.endScale = 0, this.startColor = null, this._sR = 0, this._sG = 0, this._sB = 0, this.endColor = null, this._eR = 0, this._eG = 0, this._eB = 0, this._doAlpha = !1, this._doScale = !1, this._doSpeed = !1, this._doAcceleration = !1, this._doColor = !1, this._doNormalMovement = !1, this._oneOverLife = 0, this.next = null, this.prev = null, this.init = this.init, this.Particle_init = this.Particle_init, this.update = this.update, this.Particle_update = this.Particle_update, this.applyArt = this.applyArt, this.kill = this.kill
                        },
                        a = o.prototype = Object.create(r.prototype);
                    a.init = a.Particle_init = function() {
                        this.age = 0, this.velocity.x = this.startSpeed, this.velocity.y = 0, i.rotatePoint(this.rotation, this.velocity), this.noRotation ? this.rotation = 0 : this.rotation *= i.DEG_TO_RADS, this.rotationSpeed *= i.DEG_TO_RADS, this.alpha = this.startAlpha, this.scale.x = this.scale.y = this.startScale, this.startColor && (this._sR = this.startColor[0], this._sG = this.startColor[1], this._sB = this.startColor[2], this.endColor && (this._eR = this.endColor[0], this._eG = this.endColor[1], this._eB = this.endColor[2])), this._doAlpha = this.startAlpha != this.endAlpha, this._doSpeed = this.startSpeed != this.endSpeed, this._doScale = this.startScale != this.endScale, this._doColor = !!this.endColor, this._doAcceleration = 0 !== this.acceleration.x || 0 !== this.acceleration.y, this._doNormalMovement = this._doSpeed || 0 !== this.startSpeed || this._doAcceleration, this._oneOverLife = 1 / this.maxLife, this.tint = i.combineRGBComponents(this._sR, this._sG, this._sB), this.visible = !0
                    }, a.applyArt = function(t) {
                        this.texture = t || i.EMPTY_TEXTURE
                    }, a.update = a.Particle_update = function(t) {
                        if (this.age += t, this.age >= this.maxLife) return this.kill(), -1;
                        var e = this.age * this._oneOverLife;
                        if (this.ease && (e = 4 == this.ease.length ? this.ease(e, 0, 1, 1) : this.ease(e)), this._doAlpha && (this.alpha = (this.endAlpha - this.startAlpha) * e + this.startAlpha), this._doScale) {
                            var n = (this.endScale - this.startScale) * e + this.startScale;
                            this.scale.x = this.scale.y = n
                        }
                        if (this._doNormalMovement) {
                            if (this._doSpeed) {
                                var r = (this.endSpeed - this.startSpeed) * e + this.startSpeed;
                                i.normalize(this.velocity), i.scaleBy(this.velocity, r)
                            } else if (this._doAcceleration && (this.velocity.x += this.acceleration.x * t, this.velocity.y += this.acceleration.y * t, this.maxSpeed)) {
                                var o = i.length(this.velocity);
                                o > this.maxSpeed && i.scaleBy(this.velocity, this.maxSpeed / o)
                            }
                            this.position.x += this.velocity.x * t, this.position.y += this.velocity.y * t
                        }
                        if (this._doColor) {
                            var a = (this._eR - this._sR) * e + this._sR,
                                s = (this._eG - this._sG) * e + this._sG,
                                l = (this._eB - this._sB) * e + this._sB;
                            this.tint = i.combineRGBComponents(a, s, l)
                        }
                        return 0 !== this.rotationSpeed ? this.rotation += this.rotationSpeed * t : this.acceleration && !this.noRotation && (this.rotation = Math.atan2(this.velocity.y, this.velocity.x)), e
                    }, a.kill = function() {
                        this.emitter.recycle(this)
                    }, a.Sprite_Destroy = r.prototype.destroy, a.destroy = function() {
                        this.parent && this.parent.removeChild(this), this.Sprite_Destroy && this.Sprite_Destroy(), this.emitter = this.velocity = this.startColor = this.endColor = this.ease = this.next = this.prev = null
                    }, o.parseArt = function(t) {
                        var e;
                        for (e = t.length; e >= 0; --e) "string" == typeof t[e] && (t[e] = PIXI.Texture.fromImage(t[e]));
                        if (i.verbose)
                            for (e = t.length - 1; e > 0; --e)
                                if (t[e].baseTexture != t[e - 1].baseTexture) {
                                    window.console;
                                    break
                                }
                        return t
                    }, o.parseData = function(t) {
                        return t
                    }, e.exports = o
                }, {
                    "./ParticleUtils": 4
                }],
                4: [function(t, e, n) {
                    "use strict";
                    var i = PIXI.BLEND_MODES || PIXI.blendModes,
                        r = PIXI.Texture,
                        o = {};
                    o.verbose = !1;
                    var a = o.DEG_TO_RADS = Math.PI / 180,
                        s = o.EMPTY_TEXTURE = r.EMPTY;
                    s.on = s.destroy = s.once = s.emit = function() {}, o.rotatePoint = function(t, e) {
                        if (t) {
                            t *= a;
                            var n = Math.sin(t),
                                i = Math.cos(t),
                                r = e.x * i - e.y * n,
                                o = e.x * n + e.y * i;
                            e.x = r, e.y = o
                        }
                    }, o.combineRGBComponents = function(t, e, n) {
                        return t << 16 | e << 8 | n
                    }, o.normalize = function(t) {
                        var e = 1 / o.length(t);
                        t.x *= e, t.y *= e
                    }, o.scaleBy = function(t, e) {
                        t.x *= e, t.y *= e
                    }, o.length = function(t) {
                        return Math.sqrt(t.x * t.x + t.y * t.y)
                    }, o.hexToRGB = function(t, e) {
                        e ? e.length = 0 : e = [], "#" == t.charAt(0) ? t = t.substr(1) : 0 === t.indexOf("0x") && (t = t.substr(2));
                        var n;
                        return 8 == t.length && (n = t.substr(0, 2), t = t.substr(2)),
                            e.push(parseInt(t.substr(0, 2), 16)), e.push(parseInt(t.substr(2, 2), 16)), e.push(parseInt(t.substr(4, 2), 16)), n && e.push(parseInt(n, 16)), e
                    }, o.generateEase = function(t) {
                        var e = t.length,
                            n = 1 / e;
                        return function(i) {
                            var r, o, a = e * i | 0;
                            return r = (i - a * n) * e, o = t[a] || t[e - 1], o.s + r * (2 * (1 - r) * (o.cp - o.s) + r * (o.e - o.s))
                        }
                    }, o.getBlendMode = function(t) {
                        if (!t) return i.NORMAL;
                        for (t = t.toUpperCase(); t.indexOf(" ") >= 0;) t = t.replace(" ", "_");
                        return i[t] || i.NORMAL
                    }, e.exports = o
                }, {}],
                5: [function(require, module, exports) {
                    "use strict";
                    var ParticleUtils = require("./ParticleUtils"),
                        Particle = require("./Particle"),
                        PathParticle = function(t) {
                            Particle.call(this, t), this.path = null, this.initialRotation = 0, this.initialPosition = new PIXI.Point, this.movement = 0
                        },
                        s = Particle.prototype,
                        p = PathParticle.prototype = Object.create(s),
                        helperPoint = new PIXI.Point;
                    p.init = function() {
                        this.initialRotation = this.rotation, this.Particle_init(), this.path = this.extraData.path, this._doNormalMovement = !this.path, this.movement = 0, this.initialPosition.x = this.position.x, this.initialPosition.y = this.position.y
                    };
                    for (var MATH_FUNCS = ["pow", "sqrt", "abs", "floor", "round", "ceil", "E", "PI", "sin", "cos", "tan", "asin", "acos", "atan", "atan2", "log"], WHITELISTER = "[01234567890\\.\\*\\-\\+\\/\\(\\)x ,]", index = MATH_FUNCS.length - 1; index >= 0; --index) WHITELISTER += "|" + MATH_FUNCS[index];
                    WHITELISTER = new RegExp(WHITELISTER, "g");
                    var parsePath = function(pathString) {
                        for (var rtn, matches = pathString.match(WHITELISTER), i = matches.length - 1; i >= 0; --i) MATH_FUNCS.indexOf(matches[i]) >= 0 && (matches[i] = "Math." + matches[i]);
                        return pathString = matches.join(""), eval("rtn = function(x){ return " + pathString + "; };"), rtn
                    };
                    p.update = function(t) {
                        var e = this.Particle_update(t);
                        if (e >= 0 && this.path) {
                            var n = (this.endSpeed - this.startSpeed) * e + this.startSpeed;
                            this.movement += n * t, helperPoint.x = this.movement, helperPoint.y = this.path(this.movement), ParticleUtils.rotatePoint(this.initialRotation, helperPoint), this.position.x = this.initialPosition.x + helperPoint.x, this.position.y = this.initialPosition.y + helperPoint.y
                        }
                    }, p.Particle_destroy = Particle.prototype.destroy, p.destroy = function() {
                        this.Particle_destroy(), this.path = this.initialPosition = null
                    }, PathParticle.parseArt = function(t) {
                        return Particle.parseArt(t)
                    }, PathParticle.parseData = function(t) {
                        var e = {};
                        if (t && t.path) try {
                            e.path = parsePath(t.path)
                        } catch (t) {
                            ParticleUtils.verbose, e.path = null
                        } else ParticleUtils.verbose, e.path = null;
                        return e
                    }, module.exports = PathParticle
                }, {
                    "./Particle": 3,
                    "./ParticleUtils": 4
                }],
                6: [function(t, e, n) {}, {}],
                7: [function(t, e, n) {
                    t("./polyfills.js"), n.ParticleUtils = t("./ParticleUtils.js"), n.Particle = t("./Particle.js"), n.Emitter = t("./Emitter.js"), n.PathParticle = t("./PathParticle.js"), n.AnimatedParticle = t("./AnimatedParticle.js"), t("./deprecation.js")
                }, {
                    "./AnimatedParticle.js": 1,
                    "./Emitter.js": 2,
                    "./Particle.js": 3,
                    "./ParticleUtils.js": 4,
                    "./PathParticle.js": 5,
                    "./deprecation.js": 6,
                    "./polyfills.js": 8
                }],
                8: [function(t, e, n) {
                    Array.prototype.shuffle || Object.defineProperty(Array.prototype, "shuffle", {
                        enumerable: !1,
                        writable: !1,
                        value: function() {
                            for (var t, e, n = this.length; n; t = Math.floor(Math.random() * n), e = this[--n], this[n] = this[t], this[t] = e);
                            return this
                        }
                    }), Array.prototype.random || Object.defineProperty(Array.prototype, "random", {
                        enumerable: !1,
                        writable: !1,
                        value: function() {
                            return this[Math.floor(Math.random() * this.length)]
                        }
                    })
                }, {}],
                9: [function(t, e, n) {
                    "use strict";
                    var i = "undefined" != typeof window ? window : GLOBAL;
                    if (i.PIXI.particles || (i.PIXI.particles = {}), void 0 !== e && e.exports) "undefined" == typeof PIXI && t("pixi.js"), e.exports = i.PIXI.particles || r;
                    else if ("undefined" == typeof PIXI) throw "pixi-particles requires pixi.js to be loaded first";
                    var r = t("./particles");
                    for (var o in r) i.PIXI.particles[o] = r[o]
                }, {
                    "./particles": 7,
                    "pixi.js": void 0
                }]
            }, {}, [9])(9)
        }), define("game/BigWin", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/resourceLoader/resourceLib", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/gladPixiRenderer/Sprite", "skbJet/component/currencyHelper/currencyHelper", "skbJet/componentManchester/commonUI/slot/betData", "game/ParticleConfigs", "game/Utils", "game/Audio", "com/gsap/TimelineMax", "com/gsap/TweenLite", "com/gsap/plugins/PixiPlugin", "com/pixijs/pixi-particles"], function(t, e, n, i, r, o, a, s, l, u) {
            function c() {
                k = i.lib._bigWin.pixiContainer, k.visible = !1, L = i.lib._gameOverlay.pixiContainer, L.$bgColor.alpha = .3, L.visible = !1, D = t.Sprite.from("donut"), D.name = "donut", D.x = L.width / 2, D.y = L.height / 2, D.anchor.set(.5), D.visible = !1, rt.x = k.width / 2, rt.y = k.height / 2, B = [t.Sprite.from("bigWinFlare"), t.Sprite.from("bigWinFlare")], B.forEach(function(t, e) {
                    t.anchor.set(.5, 1), t.scale.set(2), t.rotation = -.25 * Math.PI + .5 * Math.PI * e, ot.addChild(t)
                }), ot.x = k.width / 2, ot.y = k.height, ot.visible = !1, at.x = k.width / 2, at.y = k.height, U = h(s.getData().coinFountain, r.getSpriteSheetAnimationFrameArray("coinSpin").map(t.Texture.fromFrame)), j = h(s.getData().coinFlurry, r.getSpriteSheetAnimationFrameArray("diamondSpin").map(t.Texture.fromFrame)), N = new t.Text("BIGGEST WIN", lt), N.anchor.set(.5), N.y = N.height / -2, F = new t.Sprite(N.texture), F.anchor.set(.5), F.y = F.height / -2, G = new t.extras.BitmapText("", ut), G.anchor.y = .5, G.y = (G.height + 90) / 2, st.addChild(N, F, G), st.x = k.width / 2, st.y = i.lib._winPlaqueValue.pixiContainer.getGlobalPosition().y - 50, L.addChild(D), k.addChild(rt, ot, at, st)
            }

            function h(e, n) {
                var i = new t.particles.Emitter(at, {
                    framerate: 30,
                    loop: !0,
                    textures: n
                }, e);
                return i.particleConstructor = t.particles.AnimatedParticle, i.autoUpdate = !0, i
            }

            function p() {
                U && (U.emit = !0)
            }

            function f() {
                U && (U.emit = !1)
            }

            function d() {
                var e = new t.particles.Emitter(rt, t.Texture.fromFrame("bigWinStar"), s.getData().bigWinBurst);
                return e.autoUpdate = !0, e
            }

            function m() {
                u.play("BigWinLoopTerm", 0, !1)
            }

            function g() {
                W || (W = d()), rt.visible = !0, W.emit = !0
            }

            function _() {
                j.emit = !0
            }

            function y() {
                W && (W.emit = !1)
            }

            function v() {
                return z.fromTo(D, 1, {
                    pixi: {
                        scaleX: .1,
                        scaleY: .1
                    },
                    alpha: 1
                }, {
                    pixi: {
                        scaleX: 1,
                        scaleY: 1
                    },
                    alpha: 0,
                    ease: window.Power3.easeIn,
                    onStart: function() {
                        D.visible = !0
                    },
                    onComplete: function() {
                        D.visible = !1
                    }
                })
            }

            function b() {
                if (!Y) return V ? V.play(0) : (V = new H({
                    onStart: function() {
                        ot.visible = !0
                    }
                }), V.to(B[0], 2.5, {
                    rotation: Math.PI / 4,
                    repeat: -1,
                    yoyo: !0,
                    ease: window.Power1.easeInOut
                }, 0), V.to(B[1], 2.5, {
                    rotation: Math.PI / -4,
                    repeat: -1,
                    yoyo: !0,
                    ease: window.Power1.easeInOut
                }, 0), V)
            }

            function x() {
                V && (V.pause(), ot.visible = !1)
            }

            function T(t) {
                for (var e = 0; e < J.length - 1; e++)
                    if (t >= J[e] && t < J[e + 1]) return e;
                return J.length - 1
            }

            function w(t) {
                switch (t) {
                    case 1:
                        return "BigWinLevel1";
                    case 2:
                        return "BigWinLevel2";
                    case 3:
                        return "BigWinLevel3";
                    default:
                        return "BigWinLevel1"
                }
            }

            function S(t) {
                var e = new H({
                    onStart: function() {
                        q++, u.play(w(q), 2, !1), N.text = t, N.style.fontSize = 150, l.fitText(N, 1e3, 150)
                    }
                });
                return e.to(N, .25, {
                    pixi: {
                        scaleX: 1.5,
                        scaleY: 1.5
                    }
                }, 0), e.to(N, .25, {
                    pixi: {
                        scaleX: 1,
                        scaleY: 1
                    }
                }, .25), e.fromTo(F, 1, {
                    pixi: {
                        scaleX: 1,
                        scaleY: 1
                    },
                    alpha: 1
                }, {
                    pixi: {
                        scaleX: 1.5,
                        scaleY: 1.5
                    },
                    alpha: 0
                }, 0), e
            }

            function P(t) {
                var e = new H;
                return e.addCallback(_, 0), e.addCallback(g, 1), e.add(v(), 1), e.add(S(t), 1), e
            }

            function M() {
                return P(n.i18n.game.Game.bigWins[1])
            }

            function C() {
                return P(n.i18n.game.Game.bigWins[2]).addCallback(b)
            }

            function E() {
                return P(n.i18n.game.Game.bigWins[3])
            }

            function O(t) {
                return !(t / a.totalBet < J[0])
            }

            function I(t) {
                e.publish("BigWin.Start"), q = 0;
                var r = t / a.totalBet;
                Y = !1, setTimeout(function() {
                    Y || u.play("BigWinLoop", 0, !0)
                }, 1);
                var s = T(r),
                    c = K[s],
                    h = $[s];
                if (X = new H, r < J[0]) return X;
                var d = c > 1 ? h / (c + 1) : h,
                    b = 2 * d;
                return L.alpha = 0, L.visible = !0, k.alpha = 0, k.visible = !0, X.to([L, k], it, {
                    alpha: 1,
                    onComplete: function() {
                        i.lib._gameOverlay.updateCurrentStyle({
                            _opacity: 1
                        }), i.lib._gameOverlay.updateCurrentStyle({
                            _opacity: 1
                        })
                    }
                }, 0), X.to({
                    prize: 1
                }, h, {
                    prize: t,
                    ease: window.Linear.easeNone,
                    onUpdate: function() {
                        G.text = o.formatBalance(o.fromStakeUnits(this.target.prize)), l.fitBitmapText(G, k.width - 100, 270), G.characters = G.text.length, G.x = G.width / -2
                    },
                    onComplete: function() {
                        G.text = o.formatBalance(o.fromStakeUnits(t))
                    }
                }, 0), X.addLabel("minDuration", Z), X.addLabel("rollupComplete", h), X.addLabel("subHoldComplete", h + Q), X.addLabel("holdComplete", h + Q + tt), X.addLabel("skipPoint", h + Q - et), at.visible = !0, X.addCallback(_, 0), X.addCallback(p, it), X.addCallback(f, "rollupComplete"), c >= 2 && (X.addLabel("t2", d), X.add(M, "t2")), c >= 3 && (X.addLabel("t3", 3 === c ? h - b : 2 * d), X.add(C, "t3")), c >= 4 && (X.addLabel("t4", h - b), X.add(E, "t4")), N.text = n.i18n.game.Game.bigWins[0], D.position.set(i.lib._gameOverlay._currentStyle._width / 2, i.lib._gameOverlay._currentStyle._height / 2), D.alpha = 1, X.add(v(), "rollupComplete"), X.addCallback(m, "rollupComplete"), X.addCallback(g, "rollupComplete"), X.addCallback(_, "rollupComplete"), X.addCallback(y, "holdComplete"), X.to([rt, ot, at], nt, {
                    alpha: 0,
                    onComplete: function() {
                        x(), rt.visible = ot.visible = at.visible = !1, rt.alpha = ot.alpha = at.alpha = 1
                    }
                }, "subHoldComplete"), X.to([L, k], nt, {
                    alpha: 0,
                    onComplete: function() {
                        k.visible = !1, k.alpha = 1, L.visible = !1, L.alpha = 1
                    }
                }, "holdComplete"), X
            }

            function R() {
                Y = !0, X && X.time() < X.getLabelTime("skipPoint") && X.seek("skipPoint", !1)
            }

            function A(t) {
                D && D.position.set(i.lib._gameOverlay._currentStyle._width / 2, i.lib._gameOverlay._currentStyle._height / 2)
            }
            var k, L, D, B, N, F, G, U, j, W, X, V, H = window.TimelineMax,
                z = window.TweenLite,
                Y = !1,
                q = 0,
                J = [20, 30, 40, 60, 80, 100, 200, 300, 400, 500, 750, 1e3],
                K = [1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4],
                $ = [5, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28],
                Z = 2,
                Q = 2,
                tt = 2,
                et = 1,
                nt = .5,
                it = .5,
                rt = new t.Container;
            rt.name = "burstContainer";
            var ot = new t.Container;
            ot.name = "flareContainer";
            var at = new t.Container;
            at.name = "coinContainer";
            var st = new t.Container;
            st.name = "textContainer";
            var lt = new t.TextStyle({
                    dropShadow: !0,
                    dropShadowAlpha: .8,
                    dropShadowBlur: 17,
                    dropShadowColor: "#2e1a6a",
                    dropShadowDistance: 3,
                    fill: "white",
                    fontFamily: "Oswald, Arial, sans-serif",
                    fontSize: 190,
                    fontWeight: "bold",
                    lineJoin: "round",
                    stroke: "#0d3288",
                    padding: 15,
                    strokeThickness: 10
                }),
                ut = {
                    font: "270px pyramidionBW_font-export",
                    align: "center"
                };
            return e.subscribe("platformMsg/ClientService/Game.Init", c), e.subscribe("Orientation.AfterChange", A), {
                doBigWin: I,
                checkBigWin: O,
                skip: R
            }
        }), define("game/Logos", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/resourceLoader/resourceLib", "skbJet/componentManchester/rgsModel/rgsModel", "skbJet/component/gladPixiRenderer/Sprite", "game/Utils", "game/ModifierReel", "com/gsap/TweenLite"], function(t, e, n, i, r, o, a) {
            function s(t) {
                g = t.orientation, l()
            }

            function l() {
                if (null != y) {
                    var t = _[y][g];
                    d.transform.position.x = t.x, d.transform.position.y = t.y, d.transform.scale.x = t.scale, d.transform.scale.y = t.scale
                }
            }

            function u(t) {
                f = e.lib._logoLayer.pixiContainer, m.BaseGame = PIXI.Texture.fromImage("pyramidionLogo"), m.TombOfPower = PIXI.Texture.fromImage("TOP_logo"), m.TombOfMystery = PIXI.Texture.fromImage("TOM_logo"), m.MightyReel = a.getLogo("MightyReel"), m.ObeliskWilds = a.getLogo("ObeliskWilds"), m.SunbeamWilds = a.getLogo("SunbeamWilds"), m.WaterfallStacks = a.getLogo("WaterfallStacks")
            }

            function c(t) {
                var e = !1;
                null == y && (y = t, e = !0), y == t && 1 != e || (y = t, f.removeChildren(), d = new PIXI.Sprite(m[t]), d.anchor.set(.5), f.addChild(d), l(), d.alpha = 0, d.visible = !0, TweenLite.to(d, 1, {
                    alpha: 1,
                    ease: Power1.easeInOut
                }))
            }

            function h() {
                y = null, d.visible = !1
            }

            function p() {
                y = null, TweenLite.to(d, .5, {
                    alpha: 0,
                    ease: Power1.easeInOut
                })
            }
            var f, d, m = {
                    BaseGame: null,
                    TombOfPower: null,
                    TombOfMystery: null,
                    MightyReel: null,
                    ObeliskWilds: null,
                    SunbeamWilds: null,
                    WaterfallStacks: null
                },
                g = "landscape",
                _ = {
                    BaseGame: {
                        landscape: {
                            x: 20,
                            y: 0,
                            scale: 1
                        },
                        portrait: {
                            x: 0,
                            y: 20,
                            scale: 1.4
                        }
                    },
                    TombOfPower: {
                        landscape: {
                            x: -166,
                            y: 0,
                            scale: .8
                        },
                        portrait: {
                            x: 0,
                            y: 60,
                            scale: 1.2
                        }
                    },
                    TombOfMystery: {
                        landscape: {
                            x: -166,
                            y: 0,
                            scale: .8
                        },
                        portrait: {
                            x: 0,
                            y: 60,
                            scale: 1.2
                        }
                    },
                    MightyReel: {
                        landscape: {
                            x: -50,
                            y: -10,
                            scale: .7
                        },
                        portrait: {
                            x: 0,
                            y: 40,
                            scale: 1
                        }
                    },
                    ObeliskWilds: {
                        landscape: {
                            x: -50,
                            y: -10,
                            scale: .7
                        },
                        portrait: {
                            x: 0,
                            y: 40,
                            scale: 1
                        }
                    },
                    SunbeamWilds: {
                        landscape: {
                            x: -50,
                            y: -10,
                            scale: .7
                        },
                        portrait: {
                            x: 0,
                            y: 40,
                            scale: 1
                        }
                    },
                    WaterfallStacks: {
                        landscape: {
                            x: -50,
                            y: -10,
                            scale: .7
                        },
                        portrait: {
                            x: 0,
                            y: 40,
                            scale: 1
                        }
                    }
                },
                y = null;
            return t.subscribe("platformMsg/ClientService/Game.Init", u), t.subscribe("Orientation.AfterChange", s), {
                show: c,
                hide: h,
                fade: p
            }
        }), define("game/UI", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/componentManchester/rgsModel/rgsModel", "skbJet/componentManchester/commonUI/slot/slotUI", "skbJet/component/currencyHelper/currencyHelper", "game/betController", "game/Audio", "game/autoSpin", "com/gsap/TweenLite"], function(t, e, n, i, r, o, a, s, l, u) {
            function c(t) {
                z = Number(t.serverConfig.denomamount), Y = t.serverConfig.channel, "freespin" === t.serverConfig.paramGame.playMode && ($ = !0)
            }

            function h() {
                o.layout.INT.landscape.baseGame.autoSpin.y = 335, o.layout.INT.landscape.baseGame.activityAnim.y = 437, o.layout.INT.landscape.baseGame.play.y = 437, o.layout.INT.landscape.baseGame.skip.y = 437, o.layout.INT.landscape.baseGame.spin.y = 437, o.layout.INT.landscape.freeSpins.activityAnim.y = 437, o.layout.INT.landscape.freeSpins.play.y = 437, o.layout.INT.landscape.freeSpins.skip.y = 437, o.freeSpins.opts.networkActivityStages = ["TombOfPower", "TombOfMystery"], o.applyLayout(), o.container.scale.x = o.container.scale.y = Z, o.set({
                    gameLayer: i.lib._gameLayer.pixiContainer
                }), q = i.lib._ui.pixiContainer, q.addChild(o.container), o.freeSpins.visible = !1, o.baseGame.skip.enabled = !1, o.baseGame.skip.visible = !1, o.baseGame.play.enabled = !1, o.baseGame.play.visible = !1, o.baseGame.spin.on("buttonpress", g), o.baseGame.play.on("buttonpress", _), o.baseGame.skip.on("buttonpress", m), o.freeSpins.play.on("buttonpress", b), o.freeSpins.skip.on("buttonpress", x), o.setText(n.i18n.UI), J = i.lib._fsPowerMeter.pixiContainer, J.visible = !1, K = i.lib._mysteryReel.pixiContainer, K.visible = !1, o.baseGame.autoSpin._stopButton.on("buttonpress", function() {
                    l.play("UiClose", 10, !1)
                })
            }

            function p() {
                o.baseGame.visible = !0, o.freeSpins.visible = !1, o.baseGame.autoSpin.active || (o.baseGame.autoSpin.enabled = !0, o.baseGame.spin.enabled = !0), o.baseGame.spin.visible = !0, o.baseGame.skip.enabled = !1, o.baseGame.skip.visible = !1, J.visible = !1, K.visible = !1, u.isActive() || s.enableControlConsole(), e.publish("helpFiles.enableConsole")
            }

            function f() {
                o.baseGame.spin.enabled = !1, s.disableControlConsole(), e.publish("helpFiles.disableConsole")
            }

            function d() {
                o.baseGame.autoSpin.enabled = !1, f(), o.baseGame.betConfig.enabled = !1, "INT" === Y && (o.baseGame.footer.betPerPattern.enabled = !1, o.baseGame.footer.patternsBet.enabled = !1, o.baseGame.footer.totalBet.enabled = !1), o.baseGame.prompt.visible = !1
            }

            function m() {
                o.baseGame.skip.enabled = !1, o.baseGame.skip.visible = !1, e.publish("onSkipButtonClicked")
            }

            function g() {
                o.baseGame.betConfig.close(), o.baseGame.footer.win.value = "", o.baseGame.spin.enabled = !1, o.baseGame.autoSpin.enabled = !1, f(), e.publish("onSpinButtonClicked"), e.publish("nextState")
            }

            function _() {
                "BaseMusicLoop" !== l.currentPlaying(0) && l.play("BaseMusicLoop", 0, !0), o.baseGame.play.enabled = !1, o.baseGame.play.visible = !1, o.baseGame.spin.enabled = !1, o.baseGame.spin.visible = !0, f(), e.publish("onPlayButtonClicked")
            }

            function y(t, n) {
                o.baseGame.visible = !1, o.freeSpins.visible = !0, o.freeSpins.skip.enabled = !1, o.freeSpins.skip.visible = !1, o.freeSpins.play.enabled = n || !1, o.freeSpins.play.visible = n || !1, J.visible = 1 == t, s.disableControlConsole(), e.publish("helpFiles.disableConsole")
            }

            function v() {
                o.freeSpins.play.enabled = !1, o.freeSpins.play.visible = !1, o.freeSpins.skip.enabled = !1, s.disableControlConsole(), e.publish("helpFiles.disableConsole")
            }

            function b() {
                "BonusMusicLoop" !== l.currentPlaying(0) && l.play("BonusMusicLoop", 0, !0), o.freeSpins.play.enabled = !1, o.freeSpins.play.visible = !1, e.publish("onFSPlayButtonClicked"), e.publish("nextState")
            }

            function x() {
                e.publish("onFSSkipButtonClicked")
            }

            function T() {
                o.baseGame.spin.visible = !1, o.baseGame.play.enabled = !0, o.baseGame.play.visible = !0
            }

            function w() {
                o.baseGame.play.enabled = !1, o.baseGame.play.visible = !1
            }

            function S(t, e) {
                var n = Number(r.gameLogic.FreeSpinOutcome(t).Count) + (e || 0);
                o.freeSpins.footer.spins.value = String(n)
            }

            function P(t, e) {
                var i = r.gameLogic.FreeSpinOutcome(t).Countdown,
                    a = r.gameLogic.FreeSpinOutcome(t).TotalAwarded;
                o.freeSpins.footer.spins.value = a - i + 1 + (e || 0) + n.i18n.Game.spinsSeperator + a
            }

            function M(t) {
                var e = r.gameLogic.FreeSpinOutcome(t).Countdown,
                    i = r.gameLogic.FreeSpinOutcome(t).TotalAwarded;
                o.freeSpins.footer.spins.value = i - e + n.i18n.Game.spinsSeperator + i
            }

            function C() {
                E("")
            }

            function E(t) {
                var e = t ? a.formatBalance(t * z) : "";
                o.freeSpins.footer.win.value = e
            }

            function O() {
                I("")
            }

            function I(t) {
                var e = t ? a.formatBalance(t * z) : "";
                o.freeSpins.footer.bonusWin.value = e
            }

            function R() {
                o.baseGame.autoSpin.active = !1, o.baseGame.autoSpin.count = 0, o.baseGame.autoSpin.enabled = !1
            }

            function A() {
                o.baseGame.visible = !0, o.freeSpins.visible = !1, K.visible = !1
            }

            function k() {
                o.baseGame.visible = !1
            }

            function L() {
                q.visible = !1
            }

            function D() {
                q.visible = !0
            }

            function B(t) {
                TweenLite.to(q, .5, {
                    alpha: t,
                    ease: Power1.easeInOut
                })
            }

            function N() {
                return o.freeSpins.footer.spins._valueText
            }

            function F(t) {
                "FreeSpin" === t ? (o.freeSpins.skip.enabled = !0, o.freeSpins.skip.visible = !0) : (o.baseGame.skip.enabled = !0, o.baseGame.skip.visible = !0, o.baseGame.spin.enabled = !1, o.baseGame.spin.visible = !1)
            }

            function G() {
                o.baseGame.betConfig.openButton.enabled = Q.openButton, 1 != o.baseGame.footer.totalBet.plus.visible && 1 != o.baseGame.footer.totalBet.minus.visible || (o.baseGame.footer.totalBet.plus.enabled = Q.totalPlus, o.baseGame.footer.totalBet.minus.enabled = Q.totalMinus)
            }

            function U() {
                Q.openButton = o.baseGame.betConfig.openButton.enabled, Q.totalPlus = o.baseGame.footer.totalBet.plus.enabled, Q.totalMinus = o.baseGame.footer.totalBet.minus.enabled, o.baseGame.betConfig.close(), o.baseGame.betConfig.openButton.enabled = !1, 1 != o.baseGame.footer.totalBet.plus.visible && 1 != o.baseGame.footer.totalBet.minus.visible || (o.baseGame.footer.totalBet.plus.enabled = !1, o.baseGame.footer.totalBet.minus.enabled = !1)
            }

            function j() {
                l.play("UiOpen", 10, !1), U(), s.disableControlConsole()
            }

            function W() {
                l.play("UiOpen", 10, !1)
            }

            function X() {
                l.play("UiClose", 10, !1), G(), u.isActive() || s.enableControlConsole()
            }

            function V() {
                l.play("UiClose", 10, !1)
            }

            function H(t) {
                o.freeSpins.skip.visible = t
            }
            var z, Y, q, J, K, $ = !1,
                Z = 1.33333,
                Q = {
                    openButton: !0,
                    totalPlus: !0,
                    totalMinus: !0
                };
            return e.subscribe("platformMsg/Kernel/System.Init", c), e.subscribe("platformMsg/ClientService/Game.Init", h), e.subscribe("UI.AutoSpinDialogueOpen", j), e.subscribe("UI.AutoSpinDialogueClose", X), e.subscribe("UI.BetConfigOpen", W), e.subscribe("UI.BetConfigClose", V), {
                enableBaseGame: p,
                disableBaseGame: f,
                gameInProgress: d,
                enableFS: y,
                disableFS: v,
                enablePlayButton: T,
                disablePlayButton: w,
                setFreeSpinCount: S,
                setFreeSpinNum: P,
                setFreeSpinOf: M,
                clearFreeSpinWinMeter: C,
                clearFreeSpinsTotalWinMeter: O,
                updateFreeSpinsWinMeter: E,
                updateFreeSpinsTotalWinMeter: I,
                cancelAutoSpin: R,
                showBaseGame: A,
                hideBaseGame: k,
                hide: L,
                show: D,
                fade: B,
                spinsGlobalPos: N,
                enableSkip: F,
                showHideFSSkip: H
            }
        }), define("game/AwardCap", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/currencyHelper/currencyHelper", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/componentManchester/commonUI/slot/slotUI", "game/UI", "game/Utils"], function(t, e, n, i, r, o, a) {
            function s(t) {
                f = n.formatBalance(t.PaytableResponse.AwardCapInfo.CurrencyCap.AwardCap), d = e.lib._awardCapLayer.pixiContainer, d.visible = !1;
                var r = i.i18n.Game.capAward;
                r = r.replace("{0}", f);
                var o = a.standardTextStyle(78);
                m = new PIXI.Text(r, o), m.anchor.set(.5), m.x = d.width / 2, m.y = d.height / 2, d.addChild(m)
            }

            function l(t) {
                return "TombOfPower" == t || "TombOfMystery" == t || "FreeSpin" == t ? "FreeSpin" : "BaseGame"
            }

            function u(t) {
                var e = "BaseGame" == t ? i.i18n.Game.capAward : i.i18n.Game.capAwardBonus;
                e = e.replace("{0}", f), m.text = e, ("BaseGame" == t ? r.baseGame.footer.win : r.freeSpins.footer.bonusWin).value = f, r.freeSpins.footer.win.value = ""
            }

            function c(t) {
                var e = l(t);
                u(e), o.enableSkip(e), o.cancelAutoSpin(), d.visible = !0
            }

            function h() {
                d.visible = !1, t.publish("nextState")
            }

            function p() {
                return d.visible
            }
            var f, d, m;
            return t.subscribe("platformMsg/ClientService/Game.Init", s), {
                show: c,
                skip: h,
                isActive: p
            }
        }), define("game/winSequence", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "game/component/phoenixReel/winline", "game/Audio", "skbJet/component/currencyHelper/currencyHelper", "skbJet/componentManchester/commonUI/slot/betData", "skbJet/componentManchester/rgsModel/rgsModel", "skbJet/component/gladPixiRenderer/Sprite", "game/ReelController", "game/WinlineHelper", "game/WinLineSweep", "game/config", "skbJet/componentManchester/commonUI/slot/slotUI", "game/Utils", "game/transitions/SpinePlayer", "game/ModifierReel", "game/BigWin", "game/Logos", "game/AwardCap", "game/UI", "com/gsap/TweenLite", "com/gsap/TimelineMax"], function(t, e, n, i, r, o, a, s, l, u, c, h, p, f, d, m, g, _, y, v) {
            function b() {
                var t = e.getPixiRenderer();
                ["b03", "b01Anim_03", "w02AnimTransform_01", "w02Anim_07", "anticipationReel_00", "donut", "bs01", "frame", "TOM_particle_01", "reelMask", "bonusReelDivs", "TOM_winPlaque", "powerWildSymbolLoop_08", "basegameSplash", "TOP_helpPlaque"].forEach(function(e) {
                    t.bindTexture(new PIXI.Texture.fromFrame(e))
                })
            }

            function x(t) {
                dt = Number(t.serverConfig.denomamount), b()
            }

            function T(t, i) {
                _t = i, bt = u.getWinlineData(), bt.leftx = _t.config.options.reels[0].x - 10, bt.rightx = _t.config.options.reels[_t.config.options.reels.length - 1].x + _t.config.symbolSlotWidth + 10, gt = _t.config.locationsMap, pt = t.GameLogicResponse.OutcomeDetail.Stage, ft = n(e.getPixiRenderer(), _t.config, bt), e.lib._winLines.pixiContainer.addChild(ft.getContainer()), e.lib._winLines.pixiContainer.alpha = .8, Ot.BaseGame = p.baseGame.footer.win, Ot.FreeSpin = p.freeSpins.footer.win, yt = e.lib._winBoxLayer.pixiContainer, yt.visible = !1, yt.removeChildren(), vt = new PIXI.Text("", new PIXI.TextStyle({
                    dropShadow: !0,
                    dropShadowAngle: 1.3,
                    dropShadowBlur: 16,
                    dropShadowColor: "#020d53",
                    dropShadowDistance: 3,
                    fill: "white",
                    fontFamily: "Oswald, Arial, sans-serif",
                    fontSize: 80,
                    fontWeight: "bolder",
                    padding: 7,
                    stroke: "#42c1ec",
                    strokeThickness: 6
                })), vt.position.x = e.lib._winBoxLayer._currentStyle._width / 2 - vt.width / 2, yt.addChild(vt), Tt = e.lib._winBoxBig.pixiContainer, Tt.visible = !1, e.lib._winBoxText.pixiContainer.removeChildren(), B(), wt = new PIXI.Text("", new PIXI.TextStyle({
                    dropShadow: !0,
                    dropShadowAngle: 1.3,
                    dropShadowBlur: 25,
                    dropShadowColor: "#020d53",
                    dropShadowDistance: 3,
                    fill: "white",
                    fontFamily: "Oswald, Arial, sans-serif",
                    fontSize: 240,
                    fontWeight: "bolder",
                    padding: 7,
                    stroke: "#42c1ec",
                    strokeThickness: 10
                })), wt.position.x = e.lib._winBoxText._currentStyle._width / 2 - wt.width / 2, e.lib._winBoxText.pixiContainer.addChild(wt), e.lib._modifierOverlay.pixiContainer.visible = !1
            }

            function w(t) {
                It = [], Rt = [], At = [], [".Lines"].forEach(function(e) {
                    var n = a.gameLogic.PrizeOutcome(t + e),
                        i = a.gameLogic.HighlightOutcome(t + e);
                    n && n.Prize.forEach(function(t) {
                        var n;
                        n = bt.winlines.map(function(t) {
                            return t.id
                        }).indexOf(t.name) + 1, It.push({
                            winLineIndex: n > 0 ? n : 0,
                            boxLocations: i.Highlight[t.name].cells,
                            totalPay: t.totalPay,
                            pay: t.pay,
                            symbolName: t.payName.slice(-3),
                            symbolCount: t.symbolCount,
                            betMultiplier: t.betMultiplier,
                            multiplier: t.multiplier,
                            winType: e.slice(1)
                        })
                    })
                }), It.sort(function(t, e) {
                    return 0 === t.totalPay ? -1 : 0 === e.totalPay ? -1 : e.totalPay - t.totalPay || t.winLineIndex - e.winLineIndex
                }), Rt = It.map(function(t) {
                    return t.winLineIndex
                }).filter(function(t) {
                    return t > 0
                }), It.forEach(function(t) {
                    At = At.concat(t.boxLocations.filter(function(t) {
                        return At.indexOf(t) < 0
                    }))
                })
            }

            function S() {
                var n = pt;
                if (mt = kt.shift(), 1 == Jt) {
                    if (!mt) {
                        if ("BaseGame" !== n || p.baseGame.autoSpin.active || "BaseGame" !== a.gameLogic.OutcomeDetail.NextStage) return "FreeSpin" == A(n) && F(), k(), "BaseGame" === A(n) ? p.baseGame.skip.enabled = !1 : (p.freeSpins.skip.enabled = !1, p.freeSpins.skip.visible = !1), void t.publish("nextState");
                        kt = It.slice(0), mt = kt.shift(), p.baseGame.skip.enabled = !1, p.baseGame.skip.visible = !1, p.baseGame.spin.enabled = !0, p.baseGame.spin.visible = !0, 1 == Ct && (Ct = !1, t.publish("nextState"))
                    }
                    if ("Lines" === mt.winType) {
                        M();
                        var i = "";
                        0 != mt.totalPay && (i = mt.multiplier > 1 ? mt.multiplier + " x " + r.formatBalance(mt.pay * mt.betMultiplier * dt) : r.formatBalance(mt.totalPay * dt)), vt.text = i, vt.position.x = e.lib._winBoxLayer._currentStyle._width / 2 - vt.width / 2;
                        var o = 2;
                        mt.symbolCount < 3 && (o = 1);
                        var s = Number(mt.boxLocations[o].charAt(5));
                        yt.transform.position.x = Yt[s][o - 1].x, yt.transform.position.y = Yt[s][o - 1].y + 100, yt.visible = !0
                    }
                }
            }

            function P() {
                var t = [
                    ["Payline1", 12],
                    ["Payline2", 13],
                    ["Payline3", 14],
                    ["Payline4", 15]
                ];
                if ("BaseGame" === pt && 1 == Ct || "BaseGame" != pt) {
                    Qt.length <= 0 && (Qt = t.slice(), Qt = f.shuffleArray(Qt), null != Zt && Zt == Qt[Qt.length - 1][0] && Qt.unshift(Qt.pop()));
                    var e = Qt.pop();
                    i.play(e[0], e[1], !1), Zt = e[0]
                }
            }

            function M() {
                ft.clear(), ft.getAnimationLayer().clearAnimations(), ft.show(!0);
                for (var t = C(mt.winLineIndex), e = s.getSpriteSheetAnimationFrameArray("winlineBoxAnim"), n = 0; n < mt.boxLocations.length; n++) {
                    var i = mt.boxLocations[n];
                    ft.getAnimationLayer().setCellAnimation(i, null, .5, 0, {
                        x: 0,
                        y: 0
                    }), ft.getAnimationLayer().setCellAnimation(i, e, Nt, 1, {
                        x: -44,
                        y: -57
                    })
                }
                ft.getAnimationLayer().startAnimating();
                var r = _t.winPresentation;
                r.resetAnimations(pt), Kt = a.gameLogic.PopulationOutcome(Xt[pt]).map;
                var o, l, u = mt.boxLocations.map(function(t) {
                    return o = Y(t), "w02Anim" == o && (o = "w01Anim"), l = s.getSpriteSheetAnimationFrameArray(o), O(t, l, Nt, 1, null, {
                        loop: !1
                    })
                });
                r.setCellAnimations(u, {
                    onComplete: S
                }), r.startAnimating(), ft.setLineThickness(3, 8), ft.setLineCap("round"), ft.drawHighlightOutcome(t), P()
            }

            function C(t) {
                var e = a.gameLogic.HighlightOutcome(pt + ".Lines").Highlight,
                    n = "Line " + t,
                    i = {};
                return e && e[n] && (i = E(e[n], n)), i
            }

            function E(t, e) {
                var n = {
                    "@name": e,
                    "@type": "",
                    Cell: []
                };
                return t.cells.forEach(function(t) {
                    n.Cell.push({
                        "@name": t,
                        "@type": ""
                    })
                }), n
            }

            function O(t, e, n, i, r, o) {
                return {
                    location: t,
                    textures: e,
                    animationSpeed: n,
                    layer: i,
                    position: r,
                    playmode: o
                }
            }

            function I() {
                kt = It.slice(0), 0 == kt.length ? t.publish("nextState") : S()
            }

            function R() {
                Jt = !1, qt.presentWin && qt.presentWin.pause(qt.presentWin.duration()).kill(), ft.clear(), ft.getAnimationLayer().clearAnimations()
            }

            function A(t) {
                return "TombOfPower" == t || "TombOfMystery" == t || "FreeSpin" == t ? "FreeSpin" : "BaseGame"
            }

            function k() {
                R(), yt.visible = !1, _t.winPresentation.resetAnimations(pt)
            }

            function L() {
                var t = A(pt);
                Ot[t].value = ""
            }

            function D() {
                return "BaseGame" === pt ? a.gameLogic.PrizeOutcome("Game.Total").totalPay : "TombOfPower" === pt ? a.gameLogic.PrizeOutcome("TombOfPower.Lines").totalPay : "TombOfMystery" === pt ? a.gameLogic.PrizeOutcome("TombOfMystery.Lines").totalPay : a.gameLogic.PrizeOutcome("Modifier.Total").totalPay
            }

            function B() {
                xt = new TimelineMax({
                    paused: !0,
                    onStart: function() {
                        Tt.visible = !0, Tt.alpha = 0, Tt.y = $t + 100
                    },
                    onComplete: function() {
                        Tt.visible = !1, F()
                    }
                }), xt.add(Et.to(Tt, .2, {
                    alpha: 1,
                    y: $t,
                    ease: Power4.easeOut
                })), xt.add(Et.delayedCall(.8, function() {})), xt.add(Et.to(Tt, .2, {
                    alpha: 0,
                    y: $t - 100,
                    ease: Power4.easeIn
                }))
            }

            function N(t) {
                var n = D();
                wt.text = r.formatBalance(r.fromStakeUnits(n)), f.fitText(wt, e.lib._winBoxText._currentStyle._width - 100, 240), wt.position.x = e.lib._winBoxText._currentStyle._width / 2 - wt.width / 2, xt.gotoAndPlay(0), Ot[A(pt)].value = r.formatBalance(r.fromStakeUnits(n));
                var a = n / o.totalBet,
                    s = "WinLo1";
                a > 1 && a <= 5 ? s = "WinLo2" : a > 5 && a <= 10 ? s = "WinHi1" : a > 10 && a < 20 && (s = "WinHi2"), i.play(s, 9, !1)
            }

            function F() {
                var t = pt,
                    n = D();
                xt.gotoAndStop(0), Tt.visible = !1, wt.text = r.formatBalance(r.fromStakeUnits(n)), f.fitText(wt, e.lib._winBoxText._currentStyle._width - 100, 240), wt.position.x = e.lib._winBoxText._currentStyle._width / 2 - wt.width / 2, A(t)
            }

            function G(t) {
                var e;
                e = t || a.gameLogic.PrizeOutcome("Bonus.Total").totalPay, Ot.FreeSpin.value = r.formatBalance(r.fromStakeUnits(e))
            }

            function U() {
                Lt = !0;
                var t = a.gameLogic.PrizeOutcome("Game.Total").totalPay ? Number(a.gameLogic.PrizeOutcome("Game.Total").totalPay) : "";
                qt.bigWin = g.doBigWin(t), qt.bigWin.eventCallback("onComplete", j)
            }

            function j() {
                Ot[A(pt)].value = r.formatBalance(r.fromStakeUnits(a.gameLogic.PrizeOutcome("Game.Total").totalPay)), Dt = -1, Lt = !1, _t.winPresentation.resetAnimations(pt), "BaseMusicLoop" !== i.currentPlaying(0) && i.play("BaseMusicLoop", 0, !0), "BaseGame" !== A(pt) || Bt ? Bt && z() : 0 != It.length ? (I(), v.enableSkip(A(pt))) : z()
            }

            function W(e) {
                if (pt = e, a.gameLogic.AwardCapOutcome("AwardCap").AwardCapExceeded) return void y.show(pt);
                var n = a.gameLogic.PrizeOutcome("Game.Total").totalPay;
                a.gameLogic.PatternSliderInput().BetPerPattern, a.gameLogic.PatternSliderInput().PatternsBet;
                if (Ct = "BaseGame" === pt, yt.visible = !1, "FreeSpin" === A(e) && (n = a.gameLogic.PrizeOutcome(e + ".Lines").totalPay), w(e), 0 == It.length) return n > 0 && "BaseGame" == e ? (Ot.BaseGame.value = r.formatBalance(r.fromStakeUnits(n)), 1 == g.checkBigWin(n) ? (_t.showReelMask(!1), Bt = !1, Dt = 0, Mt = !1, v.enableSkip(A(pt)), void V()) : void t.publish("nextState")) : void t.publish("nextState");
                _t.showReelMask(!1), Jt = !0, Bt = !1, Dt = -1, "BaseGame" === A(e) && 1 == g.checkBigWin(n) ? (Dt = 0, Mt = !1, v.enableSkip(A(pt)), V()) : (v.enableSkip(A(pt)), N(e), X())
            }

            function X() {
                Mt = !1, ft.clear(), ft.getAnimationLayer().clearAnimations(), ft.show(!0);
                for (var t = s.getSpriteSheetAnimationFrameArray("winlineBoxAnim"), e = 0; e < At.length; e++) {
                    var n = At[e];
                    ft.getAnimationLayer().setCellAnimation(n, null, .5, 0, {
                        x: 0,
                        y: 0
                    }), ft.getAnimationLayer().setCellAnimation(n, t, Nt, 1, {
                        x: -44,
                        y: -57
                    })
                }
                ft.getAnimationLayer().startAnimating();
                var i = _t.winPresentation;
                i.resetAnimations(pt), Kt = a.gameLogic.PopulationOutcome(Xt[pt]).map;
                var r, o, l = At.map(function(t) {
                    return r = Y(t), "w02Anim" == r && (r = "w01Anim"), o = s.getSpriteSheetAnimationFrameArray(r), O(t, o, Ft, 1, null, {
                        loop: !1
                    })
                });
                i.setCellAnimations(l, {
                    onComplete: V
                }), i.startAnimating()
            }

            function V() {
                if (!Mt) {
                    Mt = !0;
                    _t.winPresentation.resetAnimations(pt), Dt >= 0 ? U() : I()
                }
            }

            function H() {
                if ("BaseGame" == A(pt) ? (p.baseGame.spin.enabled = !1, p.baseGame.spin.visible = !0) : (p.freeSpins.skip.enabled = !1, p.freeSpins.skip.visible = !1), y.isActive()) return void y.skip();
                _t.winPresentation.resetAnimations(pt), Lt ? g.skip() : (k(), z()), F()
            }

            function z() {
                "BaseGame" === A(pt) ? (p.baseGame.skip.enabled = !1, p.baseGame.skip.visible = !1, p.baseGame.spin.visible = "BaseGame" === A(pt) && !Lt) : (p.freeSpins.skip.enabled = !1, p.freeSpins.skip.visible = !1), "BaseGame" !== A(pt) || 1 == Ct ? (Ct = !1, t.publish("nextState")) : "BaseGame" === pt || "BaseGame" !== A(pt) || Lt || (Ct = !1, t.publish("nextState"))
            }

            function Y(t) {
                return Kt[t] + "Anim"
            }

            function q(t) {
                var e = gt[t],
                    n = _t.winPresentation,
                    i = Y(e);
                "w02Anim" == i && (i = "w01Anim");
                var r = s.getSpriteSheetAnimationFrameArray(i),
                    o = zt[Gt][Kt[e]];
                n.setCellAnimation(e, r, Nt, 1, {
                    x: o.x,
                    y: o.y
                }, {
                    loop: !1
                }).gotoAndPlay(0)
            }

            function J(t) {
                q(t);
                var e = 2;
                if (mt.symbolCount < 3 && (e = 1), Math.floor(t / h.symbolsPerReel) === e) {
                    var n = t % h.symbolsPerReel;
                    yt.transform.position.x = Yt[n][e - 1].x, yt.transform.position.y = Yt[n][e - 1].y + 20, yt.visible = !0
                }
            }

            function K() {
                yt.visible = !1, S()
            }

            function $(t, e) {
                Kt = a.gameLogic.PopulationOutcome(Xt[pt]).map, R(), qt.presentWin && qt.presentWin.pause(qt.presentWin.duration()).kill()
            }

            function Z(t) {
                var e = _t.winPresentation,
                    n = s.getSpriteSheetAnimationFrameArray("t01Anim"),
                    i = s.getSpriteSheetAnimationFrameArray("t01Anim_loop");
                n = n.concat(i);
                var r = zt[Gt].t01Anims;
                e.setCellAnimation(t, n, Nt, 0, {
                    x: r.x,
                    y: r.y
                }, {
                    loop: !1
                }, {
                    onComplete: Q
                }).gotoAndPlay(0)
            }

            function Q() {
                this.gotoAndPlay(15)
            }

            function tt(t, n) {
                St = t, Pt = n, Ut = !1, _.fade(), TweenLite.delayedCall(1.5, function() {
                    m.spinTo(t, et), e.lib._reelLayer.pixiContainer.alpha = 1, TweenLite.to(e.lib._reelLayer.pixiContainer, .2, {
                        alpha: .7,
                        ease: Power1.easeInOut
                    })
                })
            }

            function et() {
                0 == Ut && (Ut = !0, TweenLite.delayedCall(1.5, function() {
                    _.show(St), d.transitionIn(St, Pt), i.play("BaseIdleAnimation", 8, !1), i.play("BonusTransition", 1, !1), TweenLite.to(e.lib._reelLayer.pixiContainer, .2, {
                        alpha: 1,
                        ease: Power1.easeInOut
                    }), TweenLite.to(e.lib._modifierOverlay.pixiContainer.transform.scale, .2, {
                        x: 0,
                        y: 0,
                        ease: Power1.easeInOut,
                        onComplete: function() {
                            e.lib._modifierOverlay.pixiContainer.visible = !1
                        }
                    })
                }))
            }

            function nt() {
                var t, e, n, i = a.gameLogic.PopulationOutcome("BaseGame.Reels").map,
                    r = _t.winPresentation;
                h.getBasicReelConfig().locationsMap.forEach(function(o) {
                    "t01" == (t = i[o]) && (e = PIXI.Texture.fromImage(t), n = zt[Gt][t], r.getCellHandle(o, 0).gotoAndStop(0), r.getCellHandle(o, 0).texture = e)
                })
            }

            function it(e, n) {
                var i, r, o, a = {},
                    s = _t.winPresentation;
                h.getBasicReelConfig().locationsMap.forEach(function(t) {
                    i = e[t], n && n[i] && (i = n[i]), a[t] = i, r = PIXI.Texture.fromImage(i), o = zt[Gt][i], s.getCellHandle(t, 0).texture = r
                }), t.publish("ReelController.setPopulationMap", a)
            }

            function rt(e) {
                var n = a.gameLogic.PopulationOutcome(Xt[e]).map,
                    i = {};
                for (var r in n) "w02" == n[r] ? i[r] = "w01" : i[r] = n[r];
                t.publish("ReelController.setPopulationMap", i);
                var o, s, l, u = _t.winPresentation;
                h.getBasicReelConfig().locationsMap.forEach(function(t) {
                    o = n[t], "w02" == o && (o = "w01"), s = PIXI.Texture.fromImage(o), l = zt[Gt][o], u.getCellHandle(t, 0).texture = s
                })
            }

            function ot(t, e) {
                var n, i, r = a.gameLogic.PopulationOutcome(Xt[t]).map,
                    o = _t.winPresentation;
                n = r[e], i = PIXI.Texture.fromImage(n),
                    o.getCellHandle(e, 0).texture = i
            }

            function at(t, e, n, i) {
                var r = _t.winPresentation,
                    o = s.getSpriteSheetAnimationFrameArray(e),
                    a = zt[Gt][e] || {
                        x: 0,
                        y: 0
                    };
                r.setCellAnimation(t, o, Nt, 1, {
                    x: a.x,
                    y: a.y
                }, {
                    loop: n || !1
                }, {
                    onComplete: i || function() {}
                }).gotoAndPlay(0)
            }

            function st() {
                _t.winPresentation.resetAnimations(pt)
            }

            function lt() {
                return ft
            }

            function ut(t, e) {
                var n = "TombOfPower" == t ? "b02TransformAnim" : "b03TransformAnim";
                jt = !1, Wt = e;
                var i = [],
                    r = a.gameLogic.PopulationOutcome("BaseGame.Reels").map;
                for (var o in r) "b01" == r[o] && (i.push(o), at(o, n, !1, ct))
            }

            function ct() {
                0 == jt && (jt = !0, Wt && (Wt.call(), Wt = null))
            }

            function ht() {
                k(), L()
            }
            var pt, ft, dt, mt, gt, _t, yt, vt, bt, xt, Tt, wt, St, Pt, Mt = !1,
                Ct = !1,
                Et = window.TweenLite,
                Ot = [],
                It = [],
                Rt = [],
                At = [],
                kt = [],
                Lt = !1,
                Dt = !1,
                Bt = !1,
                Nt = .6,
                Ft = .3,
                Gt = window.location.search.match(/&?assetPack=([^&]+)&?/)[1],
                Ut = !1,
                jt = !0,
                Wt = null,
                Xt = {
                    BaseGame: "BaseGame.Reels",
                    FreeSpin: "FreeSpin.Reels",
                    TombOfPower: "TombOfPower.TransformReels",
                    TombOfMystery: "TombOfMystery.Reels",
                    WaterfallStacks: "WaterfallStacks.TransformReels",
                    SunbeamWilds: "SunbeamWilds.TransformReels",
                    ObeliskWilds: "ObeliskWilds.TransformReels",
                    MightyReel: "MightyReel.Reels"
                },
                Vt = {
                    b01: {
                        x: 0,
                        y: 0
                    },
                    b02: {
                        x: 0,
                        y: 0
                    },
                    b03: {
                        x: 0,
                        y: 0
                    },
                    s01: {
                        x: 0,
                        y: 0
                    },
                    s02: {
                        x: 0,
                        y: 0
                    },
                    s03: {
                        x: 0,
                        y: 0
                    },
                    s04: {
                        x: 0,
                        y: 0
                    },
                    s05: {
                        x: 0,
                        y: 0
                    },
                    s06: {
                        x: 0,
                        y: 0
                    },
                    s07: {
                        x: 0,
                        y: 0
                    },
                    s08: {
                        x: 0,
                        y: 0
                    },
                    s09: {
                        x: 0,
                        y: 0
                    },
                    r00: {
                        x: 0,
                        y: 0
                    },
                    r06: {
                        x: 0,
                        y: 0
                    },
                    r07: {
                        x: 0,
                        y: 0
                    },
                    r08: {
                        x: 0,
                        y: 0
                    },
                    r09: {
                        x: 0,
                        y: 0
                    },
                    t01: {
                        x: 0,
                        y: 0
                    },
                    t01Anims: {
                        x: 0,
                        y: 0
                    },
                    w01: {
                        x: 0,
                        y: 0
                    },
                    w02: {
                        x: 0,
                        y: 0
                    },
                    ms00: {
                        x: 0,
                        y: 0
                    },
                    ms01: {
                        x: 0,
                        y: 0
                    },
                    ms02: {
                        x: 0,
                        y: 0
                    },
                    ms03: {
                        x: 0,
                        y: 0
                    },
                    ms04: {
                        x: 0,
                        y: 0
                    },
                    ms05: {
                        x: 0,
                        y: 0
                    },
                    ms06: {
                        x: 0,
                        y: 0
                    },
                    ms07: {
                        x: 0,
                        y: 0
                    },
                    ms08: {
                        x: 0,
                        y: 0
                    },
                    ms09: {
                        x: 0,
                        y: 0
                    },
                    mw01: {
                        x: 0,
                        y: 0
                    }
                },
                Ht = {
                    b01: {
                        x: 0,
                        y: 0
                    },
                    b02: {
                        x: 0,
                        y: 0
                    },
                    b03: {
                        x: 0,
                        y: 0
                    },
                    s01: {
                        x: 0,
                        y: 0
                    },
                    s02: {
                        x: 0,
                        y: 0
                    },
                    s03: {
                        x: 0,
                        y: 0
                    },
                    s04: {
                        x: 0,
                        y: 0
                    },
                    s05: {
                        x: 0,
                        y: 0
                    },
                    s06: {
                        x: 0,
                        y: 0
                    },
                    s07: {
                        x: 0,
                        y: 0
                    },
                    s08: {
                        x: 0,
                        y: 0
                    },
                    s09: {
                        x: 0,
                        y: 0
                    },
                    r00: {
                        x: 0,
                        y: 0
                    },
                    r06: {
                        x: 0,
                        y: 0
                    },
                    r07: {
                        x: 0,
                        y: 0
                    },
                    r08: {
                        x: 0,
                        y: 0
                    },
                    r09: {
                        x: 0,
                        y: 0
                    },
                    t01: {
                        x: 0,
                        y: 0
                    },
                    t01Anims: {
                        x: 0,
                        y: 0
                    },
                    w01: {
                        x: 0,
                        y: 0
                    },
                    w02: {
                        x: 0,
                        y: 0
                    },
                    ms00: {
                        x: 0,
                        y: 0
                    },
                    ms01: {
                        x: 0,
                        y: 0
                    },
                    ms02: {
                        x: 0,
                        y: 0
                    },
                    ms03: {
                        x: 0,
                        y: 0
                    },
                    ms04: {
                        x: 0,
                        y: 0
                    },
                    ms05: {
                        x: 0,
                        y: 0
                    },
                    ms06: {
                        x: 0,
                        y: 0
                    },
                    ms07: {
                        x: 0,
                        y: 0
                    },
                    ms08: {
                        x: 0,
                        y: 0
                    },
                    ms09: {
                        x: 0,
                        y: 0
                    },
                    mw01: {
                        x: 0,
                        y: 0
                    }
                },
                zt = {
                    desktop: Vt,
                    tablet: Vt,
                    mobile: Ht
                },
                Yt = [
                    [{
                        x: 448,
                        y: 160
                    }, {
                        x: 722,
                        y: 160
                    }],
                    [{
                        x: 448,
                        y: 412
                    }, {
                        x: 722,
                        y: 412
                    }],
                    [{
                        x: 448,
                        y: 664
                    }, {
                        x: 722,
                        y: 664
                    }]
                ],
                qt = {
                    presentWin: null,
                    bigWin: null
                },
                Jt = !1,
                Kt = null,
                $t = 640,
                Zt = null,
                Qt = [];
            return t.subscribe("WinLineSweep.location", J), t.subscribe("WinLineSweep.complete", K), t.subscribe("onSpinButtonClicked", k), t.subscribe("onSkipButtonClicked", H), t.subscribe("onFSSkipButtonClicked", H), t.subscribe("platformMsg/Kernel/System.Init", x), t.subscribe("UI.BetConfigOpen", k), t.subscribe("UI.AutoSpinStart", k), t.subscribe("UI.BetUp", k), t.subscribe("UI.BetDown", k), t.subscribe("UI.AutoSpinDialogueOpen", ht), {
                showWinLineSweep: $,
                showModifierLand: Z,
                showModifiersTransform: tt,
                onSystemInit: x,
                onGameInit: T,
                setBonusWin: G,
                winlineConfig: bt,
                start: W,
                showModifiedReels: rt,
                showModifiedSymbol: ot,
                playSymbolAnim: at,
                getWinlines: lt,
                resetAnimations: st,
                transformBonusSymbols: ut,
                resetModifierSymbols: nt,
                clearWinMeter: L,
                showPopReels: it
            }
        });
    var _gsScope = "undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window;
    (_gsScope._gsQueue || (_gsScope._gsQueue = [])).push(function() {
            "use strict";
            _gsScope._gsDefine("TweenMax", ["core.Animation", "core.SimpleTimeline", "TweenLite"], function(t, e, n) {
                    var i = function(t) {
                            var e, n = [],
                                i = t.length;
                            for (e = 0; e !== i; n.push(t[e++]));
                            return n
                        },
                        r = function(t, e, n) {
                            var i, r, o = t.cycle;
                            for (i in o) r = o[i], t[i] = "function" == typeof r ? r(n, e[n]) : r[n % r.length];
                            delete t.cycle
                        },
                        o = function(t, e, i) {
                            n.call(this, t, e, i), this._cycle = 0, this._yoyo = !0 === this.vars.yoyo || !!this.vars.yoyoEase, this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._repeat && this._uncache(!0), this.render = o.prototype.render
                        },
                        a = n._internals,
                        s = a.isSelector,
                        l = a.isArray,
                        u = o.prototype = n.to({}, .1, {}),
                        c = [];
                    o.version = "1.20.4", u.constructor = o, u.kill()._gc = !1, o.killTweensOf = o.killDelayedCallsTo = n.killTweensOf, o.getTweensOf = n.getTweensOf, o.lagSmoothing = n.lagSmoothing, o.ticker = n.ticker, o.render = n.render, u.invalidate = function() {
                        return this._yoyo = !0 === this.vars.yoyo || !!this.vars.yoyoEase, this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._yoyoEase = null, this._uncache(!0), n.prototype.invalidate.call(this)
                    }, u.updateTo = function(t, e) {
                        var i, r = this.ratio,
                            o = this.vars.immediateRender || t.immediateRender;
                        e && this._startTime < this._timeline._time && (this._startTime = this._timeline._time, this._uncache(!1), this._gc ? this._enabled(!0, !1) : this._timeline.insert(this, this._startTime - this._delay));
                        for (i in t) this.vars[i] = t[i];
                        if (this._initted || o)
                            if (e) this._initted = !1, o && this.render(0, !0, !0);
                            else if (this._gc && this._enabled(!0, !1), this._notifyPluginsOfEnabled && this._firstPT && n._onPluginEvent("_onDisable", this), this._time / this._duration > .998) {
                            var a = this._totalTime;
                            this.render(0, !0, !1), this._initted = !1, this.render(a, !0, !1)
                        } else if (this._initted = !1, this._init(), this._time > 0 || o)
                            for (var s, l = 1 / (1 - r), u = this._firstPT; u;) s = u.s + u.c, u.c *= l, u.s = s - u.c, u = u._next;
                        return this
                    }, u.render = function(t, e, i) {
                        this._initted || 0 === this._duration && this.vars.repeat && this.invalidate();
                        var r, o, s, l, u, c, h, p, f, d = this._dirty ? this.totalDuration() : this._totalDuration,
                            m = this._time,
                            g = this._totalTime,
                            _ = this._cycle,
                            y = this._duration,
                            v = this._rawPrevTime;
                        if (t >= d - 1e-7 && t >= 0 ? (this._totalTime = d, this._cycle = this._repeat, this._yoyo && 0 != (1 & this._cycle) ? (this._time = 0, this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0) : (this._time = y, this.ratio = this._ease._calcEnd ? this._ease.getRatio(1) : 1), this._reversed || (r = !0, o = "onComplete", i = i || this._timeline.autoRemoveChildren), 0 === y && (this._initted || !this.vars.lazy || i) && (this._startTime === this._timeline._duration && (t = 0), (v < 0 || t <= 0 && t >= -1e-7 || 1e-10 === v && "isPause" !== this.data) && v !== t && (i = !0, v > 1e-10 && (o = "onReverseComplete")), this._rawPrevTime = p = !e || t || v === t ? t : 1e-10)) : t < 1e-7 ? (this._totalTime = this._time = this._cycle = 0, this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0, (0 !== g || 0 === y && v > 0) && (o = "onReverseComplete", r = this._reversed), t < 0 && (this._active = !1, 0 === y && (this._initted || !this.vars.lazy || i) && (v >= 0 && (i = !0), this._rawPrevTime = p = !e || t || v === t ? t : 1e-10)), this._initted || (i = !0)) : (this._totalTime = this._time = t, 0 !== this._repeat && (l = y + this._repeatDelay, this._cycle = this._totalTime / l >> 0, 0 !== this._cycle && this._cycle === this._totalTime / l && g <= t && this._cycle--, this._time = this._totalTime - this._cycle * l, this._yoyo && 0 != (1 & this._cycle) && (this._time = y - this._time, (f = this._yoyoEase || this.vars.yoyoEase) && (this._yoyoEase || (!0 !== f || this._initted ? this._yoyoEase = f = !0 === f ? this._ease : f instanceof Ease ? f : Ease.map[f] : (f = this.vars.ease, this._yoyoEase = f = f ? f instanceof Ease ? f : "function" == typeof f ? new Ease(f, this.vars.easeParams) : Ease.map[f] || n.defaultEase : n.defaultEase)), this.ratio = f ? 1 - f.getRatio((y - this._time) / y) : 0)), this._time > y ? this._time = y : this._time < 0 && (this._time = 0)), this._easeType && !f ? (u = this._time / y, c = this._easeType, h = this._easePower, (1 === c || 3 === c && u >= .5) && (u = 1 - u), 3 === c && (u *= 2), 1 === h ? u *= u : 2 === h ? u *= u * u : 3 === h ? u *= u * u * u : 4 === h && (u *= u * u * u * u), 1 === c ? this.ratio = 1 - u : 2 === c ? this.ratio = u : this._time / y < .5 ? this.ratio = u / 2 : this.ratio = 1 - u / 2) : f || (this.ratio = this._ease.getRatio(this._time / y))), m === this._time && !i && _ === this._cycle) return void(g !== this._totalTime && this._onUpdate && (e || this._callback("onUpdate")));
                        if (!this._initted) {
                            if (this._init(), !this._initted || this._gc) return;
                            if (!i && this._firstPT && (!1 !== this.vars.lazy && this._duration || this.vars.lazy && !this._duration)) return this._time = m, this._totalTime = g, this._rawPrevTime = v, this._cycle = _, a.lazyTweens.push(this), void(this._lazy = [t, e]);
                            !this._time || r || f ? r && this._ease._calcEnd && !f && (this.ratio = this._ease.getRatio(0 === this._time ? 0 : 1)) : this.ratio = this._ease.getRatio(this._time / y)
                        }
                        for (!1 !== this._lazy && (this._lazy = !1), this._active || !this._paused && this._time !== m && t >= 0 && (this._active = !0), 0 === g && (2 === this._initted && t > 0 && this._init(), this._startAt && (t >= 0 ? this._startAt.render(t, !0, i) : o || (o = "_dummyGS")), this.vars.onStart && (0 === this._totalTime && 0 !== y || e || this._callback("onStart"))), s = this._firstPT; s;) s.f ? s.t[s.p](s.c * this.ratio + s.s) : s.t[s.p] = s.c * this.ratio + s.s, s = s._next;
                        this._onUpdate && (t < 0 && this._startAt && this._startTime && this._startAt.render(t, !0, i), e || (this._totalTime !== g || o) && this._callback("onUpdate")), this._cycle !== _ && (e || this._gc || this.vars.onRepeat && this._callback("onRepeat")), o && (this._gc && !i || (t < 0 && this._startAt && !this._onUpdate && this._startTime && this._startAt.render(t, !0, i), r && (this._timeline.autoRemoveChildren && this._enabled(!1, !1), this._active = !1), !e && this.vars[o] && this._callback(o), 0 === y && 1e-10 === this._rawPrevTime && 1e-10 !== p && (this._rawPrevTime = 0)))
                    }, o.to = function(t, e, n) {
                        return new o(t, e, n)
                    }, o.from = function(t, e, n) {
                        return n.runBackwards = !0, n.immediateRender = 0 != n.immediateRender, new o(t, e, n)
                    }, o.fromTo = function(t, e, n, i) {
                        return i.startAt = n, i.immediateRender = 0 != i.immediateRender && 0 != n.immediateRender, new o(t, e, i)
                    }, o.staggerTo = o.allTo = function(t, e, a, u, h, p, f) {
                        u = u || 0;
                        var d, m, g, _, y = 0,
                            v = [],
                            b = function() {
                                a.onComplete && a.onComplete.apply(a.onCompleteScope || this, arguments), h.apply(f || a.callbackScope || this, p || c)
                            },
                            x = a.cycle,
                            T = a.startAt && a.startAt.cycle;
                        for (l(t) || ("string" == typeof t && (t = n.selector(t) || t), s(t) && (t = i(t))), t = t || [], u < 0 && (t = i(t), t.reverse(), u *= -1), d = t.length - 1, g = 0; g <= d; g++) {
                            m = {};
                            for (_ in a) m[_] = a[_];
                            if (x && (r(m, t, g), null != m.duration && (e = m.duration, delete m.duration)), T) {
                                T = m.startAt = {};
                                for (_ in a.startAt) T[_] = a.startAt[_];
                                r(m.startAt, t, g)
                            }
                            m.delay = y + (m.delay || 0), g === d && h && (m.onComplete = b), v[g] = new o(t[g], e, m), y += u
                        }
                        return v
                    }, o.staggerFrom = o.allFrom = function(t, e, n, i, r, a, s) {
                        return n.runBackwards = !0, n.immediateRender = 0 != n.immediateRender, o.staggerTo(t, e, n, i, r, a, s)
                    }, o.staggerFromTo = o.allFromTo = function(t, e, n, i, r, a, s, l) {
                        return i.startAt = n, i.immediateRender = 0 != i.immediateRender && 0 != n.immediateRender, o.staggerTo(t, e, i, r, a, s, l)
                    }, o.delayedCall = function(t, e, n, i, r) {
                        return new o(e, 0, {
                            delay: t,
                            onComplete: e,
                            onCompleteParams: n,
                            callbackScope: i,
                            onReverseComplete: e,
                            onReverseCompleteParams: n,
                            immediateRender: !1,
                            useFrames: r,
                            overwrite: 0
                        })
                    }, o.set = function(t, e) {
                        return new o(t, 0, e)
                    }, o.isTweening = function(t) {
                        return n.getTweensOf(t, !0).length > 0
                    };
                    var h = function(t, e) {
                            for (var i = [], r = 0, o = t._first; o;) o instanceof n ? i[r++] = o : (e && (i[r++] = o), i = i.concat(h(o, e)), r = i.length), o = o._next;
                            return i
                        },
                        p = o.getAllTweens = function(e) {
                            return h(t._rootTimeline, e).concat(h(t._rootFramesTimeline, e))
                        };
                    o.killAll = function(t, n, i, r) {
                        null == n && (n = !0), null == i && (i = !0);
                        var o, a, s, l = p(0 != r),
                            u = l.length,
                            c = n && i && r;
                        for (s = 0; s < u; s++) a = l[s], (c || a instanceof e || (o = a.target === a.vars.onComplete) && i || n && !o) && (t ? a.totalTime(a._reversed ? 0 : a.totalDuration()) : a._enabled(!1, !1))
                    }, o.killChildTweensOf = function(t, e) {
                        if (null != t) {
                            var r, u, c, h, p, f = a.tweenLookup;
                            if ("string" == typeof t && (t = n.selector(t) || t), s(t) && (t = i(t)), l(t))
                                for (h = t.length; --h > -1;) o.killChildTweensOf(t[h], e);
                            else {
                                r = [];
                                for (c in f)
                                    for (u = f[c].target.parentNode; u;) u === t && (r = r.concat(f[c].tweens)), u = u.parentNode;
                                for (p = r.length, h = 0; h < p; h++) e && r[h].totalTime(r[h].totalDuration()), r[h]._enabled(!1, !1)
                            }
                        }
                    };
                    var f = function(t, n, i, r) {
                        n = !1 !== n, i = !1 !== i, r = !1 !== r;
                        for (var o, a, s = p(r), l = n && i && r, u = s.length; --u > -1;) a = s[u], (l || a instanceof e || (o = a.target === a.vars.onComplete) && i || n && !o) && a.paused(t)
                    };
                    return o.pauseAll = function(t, e, n) {
                        f(!0, t, e, n)
                    }, o.resumeAll = function(t, e, n) {
                        f(!1, t, e, n)
                    }, o.globalTimeScale = function(e) {
                        var i = t._rootTimeline,
                            r = n.ticker.time;
                        return arguments.length ? (e = e || 1e-10, i._startTime = r - (r - i._startTime) * i._timeScale / e, i = t._rootFramesTimeline, r = n.ticker.frame, i._startTime = r - (r - i._startTime) * i._timeScale / e, i._timeScale = t._rootTimeline._timeScale = e, e) : i._timeScale
                    }, u.progress = function(t, e) {
                        return arguments.length ? this.totalTime(this.duration() * (this._yoyo && 0 != (1 & this._cycle) ? 1 - t : t) + this._cycle * (this._duration + this._repeatDelay), e) : this._time / this.duration()
                    }, u.totalProgress = function(t, e) {
                        return arguments.length ? this.totalTime(this.totalDuration() * t, e) : this._totalTime / this.totalDuration()
                    }, u.time = function(t, e) {
                        return arguments.length ? (this._dirty && this.totalDuration(), t > this._duration && (t = this._duration), this._yoyo && 0 != (1 & this._cycle) ? t = this._duration - t + this._cycle * (this._duration + this._repeatDelay) : 0 !== this._repeat && (t += this._cycle * (this._duration + this._repeatDelay)), this.totalTime(t, e)) : this._time
                    }, u.duration = function(e) {
                        return arguments.length ? t.prototype.duration.call(this, e) : this._duration
                    }, u.totalDuration = function(t) {
                        return arguments.length ? -1 === this._repeat ? this : this.duration((t - this._repeat * this._repeatDelay) / (this._repeat + 1)) : (this._dirty && (this._totalDuration = -1 === this._repeat ? 999999999999 : this._duration * (this._repeat + 1) + this._repeatDelay * this._repeat, this._dirty = !1), this._totalDuration)
                    }, u.repeat = function(t) {
                        return arguments.length ? (this._repeat = t, this._uncache(!0)) : this._repeat
                    }, u.repeatDelay = function(t) {
                        return arguments.length ? (this._repeatDelay = t, this._uncache(!0)) : this._repeatDelay
                    }, u.yoyo = function(t) {
                        return arguments.length ? (this._yoyo = t, this) : this._yoyo
                    }, o
                }, !0), _gsScope._gsDefine("TimelineLite", ["core.Animation", "core.SimpleTimeline", "TweenLite"], function(t, e, n) {
                    var i = function(t) {
                            e.call(this, t), this._labels = {}, this.autoRemoveChildren = !0 === this.vars.autoRemoveChildren, this.smoothChildTiming = !0 === this.vars.smoothChildTiming, this._sortChildren = !0, this._onUpdate = this.vars.onUpdate;
                            var n, i, r = this.vars;
                            for (i in r) n = r[i], s(n) && -1 !== n.join("").indexOf("{self}") && (r[i] = this._swapSelfInParams(n));
                            s(r.tweens) && this.add(r.tweens, 0, r.align, r.stagger)
                        },
                        r = n._internals,
                        o = i._internals = {},
                        a = r.isSelector,
                        s = r.isArray,
                        l = r.lazyTweens,
                        u = r.lazyRender,
                        c = _gsScope._gsDefine.globals,
                        h = function(t) {
                            var e, n = {};
                            for (e in t) n[e] = t[e];
                            return n
                        },
                        p = function(t, e, n) {
                            var i, r, o = t.cycle;
                            for (i in o) r = o[i], t[i] = "function" == typeof r ? r(n, e[n]) : r[n % r.length];
                            delete t.cycle
                        },
                        f = o.pauseCallback = function() {},
                        d = function(t) {
                            var e, n = [],
                                i = t.length;
                            for (e = 0; e !== i; n.push(t[e++]));
                            return n
                        },
                        m = i.prototype = new e;
                    return i.version = "1.20.4", m.constructor = i, m.kill()._gc = m._forcingPlayhead = m._hasPause = !1, m.to = function(t, e, i, r) {
                        var o = i.repeat && c.TweenMax || n;
                        return e ? this.add(new o(t, e, i), r) : this.set(t, i, r)
                    }, m.from = function(t, e, i, r) {
                        return this.add((i.repeat && c.TweenMax || n).from(t, e, i), r)
                    }, m.fromTo = function(t, e, i, r, o) {
                        var a = r.repeat && c.TweenMax || n;
                        return e ? this.add(a.fromTo(t, e, i, r), o) : this.set(t, r, o)
                    }, m.staggerTo = function(t, e, r, o, s, l, u, c) {
                        var f, m, g = new i({
                                onComplete: l,
                                onCompleteParams: u,
                                callbackScope: c,
                                smoothChildTiming: this.smoothChildTiming
                            }),
                            _ = r.cycle;
                        for ("string" == typeof t && (t = n.selector(t) || t), t = t || [], a(t) && (t = d(t)), o = o || 0, o < 0 && (t = d(t), t.reverse(), o *= -1), m = 0; m < t.length; m++) f = h(r), f.startAt && (f.startAt = h(f.startAt), f.startAt.cycle && p(f.startAt, t, m)), _ && (p(f, t, m), null != f.duration && (e = f.duration, delete f.duration)), g.to(t[m], e, f, m * o);
                        return this.add(g, s)
                    }, m.staggerFrom = function(t, e, n, i, r, o, a, s) {
                        return n.immediateRender = 0 != n.immediateRender, n.runBackwards = !0, this.staggerTo(t, e, n, i, r, o, a, s)
                    }, m.staggerFromTo = function(t, e, n, i, r, o, a, s, l) {
                        return i.startAt = n, i.immediateRender = 0 != i.immediateRender && 0 != n.immediateRender, this.staggerTo(t, e, i, r, o, a, s, l)
                    }, m.call = function(t, e, i, r) {
                        return this.add(n.delayedCall(0, t, e, i), r)
                    }, m.set = function(t, e, i) {
                        return i = this._parseTimeOrLabel(i, 0, !0), null == e.immediateRender && (e.immediateRender = i === this._time && !this._paused), this.add(new n(t, 0, e), i)
                    }, i.exportRoot = function(t, e) {
                        t = t || {}, null == t.smoothChildTiming && (t.smoothChildTiming = !0);
                        var r, o, a, s, l = new i(t),
                            u = l._timeline;
                        for (null == e && (e = !0), u._remove(l, !0), l._startTime = 0, l._rawPrevTime = l._time = l._totalTime = u._time, a = u._first; a;) s = a._next, e && a instanceof n && a.target === a.vars.onComplete || (o = a._startTime - a._delay, o < 0 && (r = 1), l.add(a, o)), a = s;
                        return u.add(l, 0), r && l.totalDuration(), l
                    }, m.add = function(r, o, a, l) {
                        var u, c, h, p, f, d;
                        if ("number" != typeof o && (o = this._parseTimeOrLabel(o, 0, !0, r)), !(r instanceof t)) {
                            if (r instanceof Array || r && r.push && s(r)) {
                                for (a = a || "normal", l = l || 0, u = o, c = r.length, h = 0; h < c; h++) s(p = r[h]) && (p = new i({
                                    tweens: p
                                })), this.add(p, u), "string" != typeof p && "function" != typeof p && ("sequence" === a ? u = p._startTime + p.totalDuration() / p._timeScale : "start" === a && (p._startTime -= p.delay())), u += l;
                                return this._uncache(!0)
                            }
                            if ("string" == typeof r) return this.addLabel(r, o);
                            if ("function" != typeof r) throw "Cannot add " + r + " into the timeline; it is not a tween, timeline, function, or string.";
                            r = n.delayedCall(0, r)
                        }
                        if (e.prototype.add.call(this, r, o), r._time && r.render((this.rawTime() - r._startTime) * r._timeScale, !1, !1), (this._gc || this._time === this._duration) && !this._paused && this._duration < this.duration())
                            for (f = this, d = f.rawTime() > r._startTime; f._timeline;) d && f._timeline.smoothChildTiming ? f.totalTime(f._totalTime, !0) : f._gc && f._enabled(!0, !1), f = f._timeline;
                        return this
                    }, m.remove = function(e) {
                        if (e instanceof t) {
                            this._remove(e, !1);
                            var n = e._timeline = e.vars.useFrames ? t._rootFramesTimeline : t._rootTimeline;
                            return e._startTime = (e._paused ? e._pauseTime : n._time) - (e._reversed ? e.totalDuration() - e._totalTime : e._totalTime) / e._timeScale, this
                        }
                        if (e instanceof Array || e && e.push && s(e)) {
                            for (var i = e.length; --i > -1;) this.remove(e[i]);
                            return this
                        }
                        return "string" == typeof e ? this.removeLabel(e) : this.kill(null, e)
                    }, m._remove = function(t, n) {
                        return e.prototype._remove.call(this, t, n), this._last ? this._time > this.duration() && (this._time = this._duration, this._totalTime = this._totalDuration) : this._time = this._totalTime = this._duration = this._totalDuration = 0, this
                    }, m.append = function(t, e) {
                        return this.add(t, this._parseTimeOrLabel(null, e, !0, t))
                    }, m.insert = m.insertMultiple = function(t, e, n, i) {
                        return this.add(t, e || 0, n, i)
                    }, m.appendMultiple = function(t, e, n, i) {
                        return this.add(t, this._parseTimeOrLabel(null, e, !0, t), n, i)
                    }, m.addLabel = function(t, e) {
                        return this._labels[t] = this._parseTimeOrLabel(e), this
                    }, m.addPause = function(t, e, i, r) {
                        var o = n.delayedCall(0, f, i, r || this);
                        return o.vars.onComplete = o.vars.onReverseComplete = e, o.data = "isPause", this._hasPause = !0, this.add(o, t)
                    }, m.removeLabel = function(t) {
                        return delete this._labels[t], this
                    }, m.getLabelTime = function(t) {
                        return null != this._labels[t] ? this._labels[t] : -1
                    }, m._parseTimeOrLabel = function(e, n, i, r) {
                        var o, a;
                        if (r instanceof t && r.timeline === this) this.remove(r);
                        else if (r && (r instanceof Array || r.push && s(r)))
                            for (a = r.length; --a > -1;) r[a] instanceof t && r[a].timeline === this && this.remove(r[a]);
                        if (o = "number" != typeof e || n ? this.duration() > 99999999999 ? this.recent().endTime(!1) : this._duration : 0, "string" == typeof n) return this._parseTimeOrLabel(n, i && "number" == typeof e && null == this._labels[n] ? e - o : 0, i);
                        if (n = n || 0, "string" != typeof e || !isNaN(e) && null == this._labels[e]) null == e && (e = o);
                        else {
                            if (-1 === (a = e.indexOf("="))) return null == this._labels[e] ? i ? this._labels[e] = o + n : n : this._labels[e] + n;
                            n = parseInt(e.charAt(a - 1) + "1", 10) * Number(e.substr(a + 1)), e = a > 1 ? this._parseTimeOrLabel(e.substr(0, a - 1), 0, i) : o
                        }
                        return Number(e) + n
                    }, m.seek = function(t, e) {
                        return this.totalTime("number" == typeof t ? t : this._parseTimeOrLabel(t), !1 !== e)
                    }, m.stop = function() {
                        return this.paused(!0)
                    }, m.gotoAndPlay = function(t, e) {
                        return this.play(t, e)
                    }, m.gotoAndStop = function(t, e) {
                        return this.pause(t, e)
                    }, m.render = function(t, e, n) {
                        this._gc && this._enabled(!0, !1);
                        var i, r, o, a, s, c, h, p = this._time,
                            f = this._dirty ? this.totalDuration() : this._totalDuration,
                            d = this._startTime,
                            m = this._timeScale,
                            g = this._paused;
                        if (p !== this._time && (t += this._time - p), t >= f - 1e-7 && t >= 0) this._totalTime = this._time = f, this._reversed || this._hasPausedChild() || (r = !0, a = "onComplete", s = !!this._timeline.autoRemoveChildren, 0 === this._duration && (t <= 0 && t >= -1e-7 || this._rawPrevTime < 0 || 1e-10 === this._rawPrevTime) && this._rawPrevTime !== t && this._first && (s = !0, this._rawPrevTime > 1e-10 && (a = "onReverseComplete"))), this._rawPrevTime = this._duration || !e || t || this._rawPrevTime === t ? t : 1e-10, t = f + 1e-4;
                        else if (t < 1e-7)
                            if (this._totalTime = this._time = 0, (0 !== p || 0 === this._duration && 1e-10 !== this._rawPrevTime && (this._rawPrevTime > 0 || t < 0 && this._rawPrevTime >= 0)) && (a = "onReverseComplete", r = this._reversed), t < 0) this._active = !1, this._timeline.autoRemoveChildren && this._reversed ? (s = r = !0, a = "onReverseComplete") : this._rawPrevTime >= 0 && this._first && (s = !0), this._rawPrevTime = t;
                            else {
                                if (this._rawPrevTime = this._duration || !e || t || this._rawPrevTime === t ? t : 1e-10, 0 === t && r)
                                    for (i = this._first; i && 0 === i._startTime;) i._duration || (r = !1), i = i._next;
                                t = 0, this._initted || (s = !0)
                            }
                        else {
                            if (this._hasPause && !this._forcingPlayhead && !e) {
                                if (t >= p)
                                    for (i = this._first; i && i._startTime <= t && !c;) i._duration || "isPause" !== i.data || i.ratio || 0 === i._startTime && 0 === this._rawPrevTime || (c = i), i = i._next;
                                else
                                    for (i = this._last; i && i._startTime >= t && !c;) i._duration || "isPause" === i.data && i._rawPrevTime > 0 && (c = i), i = i._prev;
                                c && (this._time = t = c._startTime, this._totalTime = t + this._cycle * (this._totalDuration + this._repeatDelay))
                            }
                            this._totalTime = this._time = this._rawPrevTime = t
                        }
                        if (this._time !== p && this._first || n || s || c) {
                            if (this._initted || (this._initted = !0), this._active || !this._paused && this._time !== p && t > 0 && (this._active = !0), 0 === p && this.vars.onStart && (0 === this._time && this._duration || e || this._callback("onStart")), (h = this._time) >= p)
                                for (i = this._first; i && (o = i._next, h === this._time && (!this._paused || g));)(i._active || i._startTime <= h && !i._paused && !i._gc) && (c === i && this.pause(), i._reversed ? i.render((i._dirty ? i.totalDuration() : i._totalDuration) - (t - i._startTime) * i._timeScale, e, n) : i.render((t - i._startTime) * i._timeScale, e, n)), i = o;
                            else
                                for (i = this._last; i && (o = i._prev, h === this._time && (!this._paused || g));) {
                                    if (i._active || i._startTime <= p && !i._paused && !i._gc) {
                                        if (c === i) {
                                            for (c = i._prev; c && c.endTime() > this._time;) c.render(c._reversed ? c.totalDuration() - (t - c._startTime) * c._timeScale : (t - c._startTime) * c._timeScale, e, n), c = c._prev;
                                            c = null, this.pause()
                                        }
                                        i._reversed ? i.render((i._dirty ? i.totalDuration() : i._totalDuration) - (t - i._startTime) * i._timeScale, e, n) : i.render((t - i._startTime) * i._timeScale, e, n)
                                    }
                                    i = o
                                }
                            this._onUpdate && (e || (l.length && u(), this._callback("onUpdate"))), a && (this._gc || d !== this._startTime && m === this._timeScale || (0 === this._time || f >= this.totalDuration()) && (r && (l.length && u(), this._timeline.autoRemoveChildren && this._enabled(!1, !1), this._active = !1), !e && this.vars[a] && this._callback(a)))
                        }
                    }, m._hasPausedChild = function() {
                        for (var t = this._first; t;) {
                            if (t._paused || t instanceof i && t._hasPausedChild()) return !0;
                            t = t._next
                        }
                        return !1
                    }, m.getChildren = function(t, e, i, r) {
                        r = r || -9999999999;
                        for (var o = [], a = this._first, s = 0; a;) a._startTime < r || (a instanceof n ? !1 !== e && (o[s++] = a) : (!1 !== i && (o[s++] = a), !1 !== t && (o = o.concat(a.getChildren(!0, e, i)), s = o.length))), a = a._next;
                        return o
                    }, m.getTweensOf = function(t, e) {
                        var i, r, o = this._gc,
                            a = [],
                            s = 0;
                        for (o && this._enabled(!0, !0), i = n.getTweensOf(t), r = i.length; --r > -1;)(i[r].timeline === this || e && this._contains(i[r])) && (a[s++] = i[r]);
                        return o && this._enabled(!1, !0), a
                    }, m.recent = function() {
                        return this._recent
                    }, m._contains = function(t) {
                        for (var e = t.timeline; e;) {
                            if (e === this) return !0;
                            e = e.timeline
                        }
                        return !1
                    }, m.shiftChildren = function(t, e, n) {
                        n = n || 0;
                        for (var i, r = this._first, o = this._labels; r;) r._startTime >= n && (r._startTime += t), r = r._next;
                        if (e)
                            for (i in o) o[i] >= n && (o[i] += t);
                        return this._uncache(!0)
                    }, m._kill = function(t, e) {
                        if (!t && !e) return this._enabled(!1, !1);
                        for (var n = e ? this.getTweensOf(e) : this.getChildren(!0, !0, !1), i = n.length, r = !1; --i > -1;) n[i]._kill(t, e) && (r = !0);
                        return r
                    }, m.clear = function(t) {
                        var e = this.getChildren(!1, !0, !0),
                            n = e.length;
                        for (this._time = this._totalTime = 0; --n > -1;) e[n]._enabled(!1, !1);
                        return !1 !== t && (this._labels = {}), this._uncache(!0)
                    }, m.invalidate = function() {
                        for (var e = this._first; e;) e.invalidate(), e = e._next;
                        return t.prototype.invalidate.call(this)
                    }, m._enabled = function(t, n) {
                        if (t === this._gc)
                            for (var i = this._first; i;) i._enabled(t, !0), i = i._next;
                        return e.prototype._enabled.call(this, t, n)
                    }, m.totalTime = function(e, n, i) {
                        this._forcingPlayhead = !0;
                        var r = t.prototype.totalTime.apply(this, arguments);
                        return this._forcingPlayhead = !1, r
                    }, m.duration = function(t) {
                        return arguments.length ? (0 !== this.duration() && 0 !== t && this.timeScale(this._duration / t), this) : (this._dirty && this.totalDuration(), this._duration)
                    }, m.totalDuration = function(t) {
                        if (!arguments.length) {
                            if (this._dirty) {
                                for (var e, n, i = 0, r = this._last, o = 999999999999; r;) e = r._prev, r._dirty && r.totalDuration(), r._startTime > o && this._sortChildren && !r._paused && !this._calculatingDuration ? (this._calculatingDuration = 1, this.add(r, r._startTime - r._delay), this._calculatingDuration = 0) : o = r._startTime, r._startTime < 0 && !r._paused && (i -= r._startTime, this._timeline.smoothChildTiming && (this._startTime += r._startTime / this._timeScale, this._time -= r._startTime, this._totalTime -= r._startTime, this._rawPrevTime -= r._startTime), this.shiftChildren(-r._startTime, !1, -9999999999), o = 0), n = r._startTime + r._totalDuration / r._timeScale, n > i && (i = n), r = e;
                                this._duration = this._totalDuration = i, this._dirty = !1
                            }
                            return this._totalDuration
                        }
                        return t && this.totalDuration() ? this.timeScale(this._totalDuration / t) : this
                    }, m.paused = function(e) {
                        if (!e)
                            for (var n = this._first, i = this._time; n;) n._startTime === i && "isPause" === n.data && (n._rawPrevTime = 0), n = n._next;
                        return t.prototype.paused.apply(this, arguments)
                    }, m.usesFrames = function() {
                        for (var e = this._timeline; e._timeline;) e = e._timeline;
                        return e === t._rootFramesTimeline
                    }, m.rawTime = function(t) {
                        return t && (this._paused || this._repeat && this.time() > 0 && this.totalProgress() < 1) ? this._totalTime % (this._duration + this._repeatDelay) : this._paused ? this._totalTime : (this._timeline.rawTime(t) - this._startTime) * this._timeScale
                    }, i
                }, !0), _gsScope._gsDefine("TimelineMax", ["TimelineLite", "TweenLite", "easing.Ease"], function(t, e, n) {
                    var i = function(e) {
                            t.call(this, e), this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._cycle = 0, this._yoyo = !0 === this.vars.yoyo, this._dirty = !0
                        },
                        r = e._internals,
                        o = r.lazyTweens,
                        a = r.lazyRender,
                        s = _gsScope._gsDefine.globals,
                        l = new n(null, null, 1, 0),
                        u = i.prototype = new t;
                    return u.constructor = i, u.kill()._gc = !1, i.version = "1.20.4", u.invalidate = function() {
                        return this._yoyo = !0 === this.vars.yoyo, this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._uncache(!0), t.prototype.invalidate.call(this)
                    }, u.addCallback = function(t, n, i, r) {
                        return this.add(e.delayedCall(0, t, i, r), n)
                    }, u.removeCallback = function(t, e) {
                        if (t)
                            if (null == e) this._kill(null, t);
                            else
                                for (var n = this.getTweensOf(t, !1), i = n.length, r = this._parseTimeOrLabel(e); --i > -1;) n[i]._startTime === r && n[i]._enabled(!1, !1);
                        return this
                    }, u.removePause = function(e) {
                        return this.removeCallback(t._internals.pauseCallback, e)
                    }, u.tweenTo = function(t, n) {
                        n = n || {};
                        var i, r, o, a = {
                                ease: l,
                                useFrames: this.usesFrames(),
                                immediateRender: !1,
                                lazy: !1
                            },
                            u = n.repeat && s.TweenMax || e;
                        for (r in n) a[r] = n[r];
                        return a.time = this._parseTimeOrLabel(t), i = Math.abs(Number(a.time) - this._time) / this._timeScale || .001, o = new u(this, i, a), a.onStart = function() {
                            o.target.paused(!0), o.vars.time === o.target.time() || i !== o.duration() || o.isFromTo || o.duration(Math.abs(o.vars.time - o.target.time()) / o.target._timeScale).render(o.time(), !0, !0), n.onStart && n.onStart.apply(n.onStartScope || n.callbackScope || o, n.onStartParams || [])
                        }, o
                    }, u.tweenFromTo = function(t, e, n) {
                        n = n || {}, t = this._parseTimeOrLabel(t), n.startAt = {
                            onComplete: this.seek,
                            onCompleteParams: [t],
                            callbackScope: this
                        }, n.immediateRender = !1 !== n.immediateRender;
                        var i = this.tweenTo(e, n);
                        return i.isFromTo = 1, i.duration(Math.abs(i.vars.time - t) / this._timeScale || .001)
                    }, u.render = function(t, e, n) {
                        this._gc && this._enabled(!0, !1);
                        var i, r, s, l, u, c, h, p, f = this._time,
                            d = this._dirty ? this.totalDuration() : this._totalDuration,
                            m = this._duration,
                            g = this._totalTime,
                            _ = this._startTime,
                            y = this._timeScale,
                            v = this._rawPrevTime,
                            b = this._paused,
                            x = this._cycle;
                        if (f !== this._time && (t += this._time - f), t >= d - 1e-7 && t >= 0) this._locked || (this._totalTime = d, this._cycle = this._repeat), this._reversed || this._hasPausedChild() || (r = !0, l = "onComplete", u = !!this._timeline.autoRemoveChildren, 0 === this._duration && (t <= 0 && t >= -1e-7 || v < 0 || 1e-10 === v) && v !== t && this._first && (u = !0, v > 1e-10 && (l = "onReverseComplete"))), this._rawPrevTime = this._duration || !e || t || this._rawPrevTime === t ? t : 1e-10, this._yoyo && 0 != (1 & this._cycle) ? this._time = t = 0 : (this._time = m, t = m + 1e-4);
                        else if (t < 1e-7)
                            if (this._locked || (this._totalTime = this._cycle = 0), this._time = 0, (0 !== f || 0 === m && 1e-10 !== v && (v > 0 || t < 0 && v >= 0) && !this._locked) && (l = "onReverseComplete", r = this._reversed), t < 0) this._active = !1, this._timeline.autoRemoveChildren && this._reversed ? (u = r = !0, l = "onReverseComplete") : v >= 0 && this._first && (u = !0), this._rawPrevTime = t;
                            else {
                                if (this._rawPrevTime = m || !e || t || this._rawPrevTime === t ? t : 1e-10, 0 === t && r)
                                    for (i = this._first; i && 0 === i._startTime;) i._duration || (r = !1), i = i._next;
                                t = 0, this._initted || (u = !0)
                            }
                        else if (0 === m && v < 0 && (u = !0), this._time = this._rawPrevTime = t, this._locked || (this._totalTime = t, 0 !== this._repeat && (c = m + this._repeatDelay, this._cycle = this._totalTime / c >> 0, 0 !== this._cycle && this._cycle === this._totalTime / c && g <= t && this._cycle--, this._time = this._totalTime - this._cycle * c, this._yoyo && 0 != (1 & this._cycle) && (this._time = m - this._time), this._time > m ? (this._time = m, t = m + 1e-4) : this._time < 0 ? this._time = t = 0 : t = this._time)), this._hasPause && !this._forcingPlayhead && !e) {
                            if ((t = this._time) >= f || this._repeat && x !== this._cycle)
                                for (i = this._first; i && i._startTime <= t && !h;) i._duration || "isPause" !== i.data || i.ratio || 0 === i._startTime && 0 === this._rawPrevTime || (h = i), i = i._next;
                            else
                                for (i = this._last; i && i._startTime >= t && !h;) i._duration || "isPause" === i.data && i._rawPrevTime > 0 && (h = i), i = i._prev;
                            h && h._startTime < m && (this._time = t = h._startTime, this._totalTime = t + this._cycle * (this._totalDuration + this._repeatDelay))
                        }
                        if (this._cycle !== x && !this._locked) {
                            var T = this._yoyo && 0 != (1 & x),
                                w = T === (this._yoyo && 0 != (1 & this._cycle)),
                                S = this._totalTime,
                                P = this._cycle,
                                M = this._rawPrevTime,
                                C = this._time;
                            if (this._totalTime = x * m, this._cycle < x ? T = !T : this._totalTime += m, this._time = f, this._rawPrevTime = 0 === m ? v - 1e-4 : v, this._cycle = x, this._locked = !0, f = T ? 0 : m, this.render(f, e, 0 === m), e || this._gc || this.vars.onRepeat && (this._cycle = P, this._locked = !1, this._callback("onRepeat")), f !== this._time) return;
                            if (w && (this._cycle = x, this._locked = !0, f = T ? m + 1e-4 : -1e-4, this.render(f, !0, !1)), this._locked = !1, this._paused && !b) return;
                            this._time = C, this._totalTime = S, this._cycle = P, this._rawPrevTime = M
                        }
                        if (!(this._time !== f && this._first || n || u || h)) return void(g !== this._totalTime && this._onUpdate && (e || this._callback("onUpdate")));
                        if (this._initted || (this._initted = !0), this._active || !this._paused && this._totalTime !== g && t > 0 && (this._active = !0), 0 === g && this.vars.onStart && (0 === this._totalTime && this._totalDuration || e || this._callback("onStart")), (p = this._time) >= f)
                            for (i = this._first; i && (s = i._next, p === this._time && (!this._paused || b));)(i._active || i._startTime <= this._time && !i._paused && !i._gc) && (h === i && this.pause(), i._reversed ? i.render((i._dirty ? i.totalDuration() : i._totalDuration) - (t - i._startTime) * i._timeScale, e, n) : i.render((t - i._startTime) * i._timeScale, e, n)), i = s;
                        else
                            for (i = this._last; i && (s = i._prev, p === this._time && (!this._paused || b));) {
                                if (i._active || i._startTime <= f && !i._paused && !i._gc) {
                                    if (h === i) {
                                        for (h = i._prev; h && h.endTime() > this._time;) h.render(h._reversed ? h.totalDuration() - (t - h._startTime) * h._timeScale : (t - h._startTime) * h._timeScale, e, n), h = h._prev;
                                        h = null, this.pause()
                                    }
                                    i._reversed ? i.render((i._dirty ? i.totalDuration() : i._totalDuration) - (t - i._startTime) * i._timeScale, e, n) : i.render((t - i._startTime) * i._timeScale, e, n)
                                }
                                i = s
                            }
                        this._onUpdate && (e || (o.length && a(), this._callback("onUpdate"))), l && (this._locked || this._gc || _ !== this._startTime && y === this._timeScale || (0 === this._time || d >= this.totalDuration()) && (r && (o.length && a(), this._timeline.autoRemoveChildren && this._enabled(!1, !1), this._active = !1), !e && this.vars[l] && this._callback(l)))
                    }, u.getActive = function(t, e, n) {
                        null == t && (t = !0), null == e && (e = !0), null == n && (n = !1);
                        var i, r, o = [],
                            a = this.getChildren(t, e, n),
                            s = 0,
                            l = a.length;
                        for (i = 0; i < l; i++) r = a[i], r.isActive() && (o[s++] = r);
                        return o
                    }, u.getLabelAfter = function(t) {
                        t || 0 !== t && (t = this._time);
                        var e, n = this.getLabelsArray(),
                            i = n.length;
                        for (e = 0; e < i; e++)
                            if (n[e].time > t) return n[e].name;
                        return null
                    }, u.getLabelBefore = function(t) {
                        null == t && (t = this._time);
                        for (var e = this.getLabelsArray(), n = e.length; --n > -1;)
                            if (e[n].time < t) return e[n].name;
                        return null
                    }, u.getLabelsArray = function() {
                        var t, e = [],
                            n = 0;
                        for (t in this._labels) e[n++] = {
                            time: this._labels[t],
                            name: t
                        };
                        return e.sort(function(t, e) {
                            return t.time - e.time
                        }), e
                    }, u.invalidate = function() {
                        return this._locked = !1, t.prototype.invalidate.call(this)
                    }, u.progress = function(t, e) {
                        return arguments.length ? this.totalTime(this.duration() * (this._yoyo && 0 != (1 & this._cycle) ? 1 - t : t) + this._cycle * (this._duration + this._repeatDelay), e) : this._time / this.duration() || 0
                    }, u.totalProgress = function(t, e) {
                        return arguments.length ? this.totalTime(this.totalDuration() * t, e) : this._totalTime / this.totalDuration() || 0
                    }, u.totalDuration = function(e) {
                        return arguments.length ? -1 !== this._repeat && e ? this.timeScale(this.totalDuration() / e) : this : (this._dirty && (t.prototype.totalDuration.call(this), this._totalDuration = -1 === this._repeat ? 999999999999 : this._duration * (this._repeat + 1) + this._repeatDelay * this._repeat), this._totalDuration)
                    }, u.time = function(t, e) {
                        return arguments.length ? (this._dirty && this.totalDuration(), t > this._duration && (t = this._duration), this._yoyo && 0 != (1 & this._cycle) ? t = this._duration - t + this._cycle * (this._duration + this._repeatDelay) : 0 !== this._repeat && (t += this._cycle * (this._duration + this._repeatDelay)), this.totalTime(t, e)) : this._time
                    }, u.repeat = function(t) {
                        return arguments.length ? (this._repeat = t, this._uncache(!0)) : this._repeat
                    }, u.repeatDelay = function(t) {
                        return arguments.length ? (this._repeatDelay = t, this._uncache(!0)) : this._repeatDelay
                    }, u.yoyo = function(t) {
                        return arguments.length ? (this._yoyo = t, this) : this._yoyo
                    }, u.currentLabel = function(t) {
                        return arguments.length ? this.seek(t, !0) : this.getLabelBefore(this._time + 1e-8)
                    }, i
                }, !0),
                function() {
                    var t = 180 / Math.PI,
                        e = [],
                        n = [],
                        i = [],
                        r = {},
                        o = _gsScope._gsDefine.globals,
                        a = function(t, e, n, i) {
                            n === i && (n = i - (i - e) / 1e6), t === e && (e = t + (n - t) / 1e6), this.a = t, this.b = e, this.c = n, this.d = i, this.da = i - t, this.ca = n - t, this.ba = e - t
                        },
                        s = function(t, e, n, i) {
                            var r = {
                                    a: t
                                },
                                o = {},
                                a = {},
                                s = {
                                    c: i
                                },
                                l = (t + e) / 2,
                                u = (e + n) / 2,
                                c = (n + i) / 2,
                                h = (l + u) / 2,
                                p = (u + c) / 2,
                                f = (p - h) / 8;
                            return r.b = l + (t - l) / 4, o.b = h + f, r.c = o.a = (r.b + o.b) / 2, o.c = a.a = (h + p) / 2, a.b = p - f, s.b = c + (i - c) / 4, a.c = s.a = (a.b + s.b) / 2, [r, o, a, s]
                        },
                        l = function(t, r, o, a, l) {
                            var u, c, h, p, f, d, m, g, _, y, v, b, x, T = t.length - 1,
                                w = 0,
                                S = t[0].a;
                            for (u = 0; u < T; u++) f = t[w], c = f.a, h = f.d, p = t[w + 1].d, l ? (v = e[u], b = n[u], x = (b + v) * r * .25 / (a ? .5 : i[u] || .5), d = h - (h - c) * (a ? .5 * r : 0 !== v ? x / v : 0), m = h + (p - h) * (a ? .5 * r : 0 !== b ? x / b : 0), g = h - (d + ((m - d) * (3 * v / (v + b) + .5) / 4 || 0))) : (d = h - (h - c) * r * .5, m = h + (p - h) * r * .5, g = h - (d + m) / 2), d += g, m += g, f.c = _ = d, f.b = 0 !== u ? S : S = f.a + .6 * (f.c - f.a), f.da = h - c, f.ca = _ - c, f.ba = S - c, o ? (y = s(c, S, _, h), t.splice(w, 1, y[0], y[1], y[2], y[3]), w += 4) : w++, S = m;
                            f = t[w], f.b = S, f.c = S + .4 * (f.d - S), f.da = f.d - f.a, f.ca = f.c - f.a, f.ba = S - f.a, o && (y = s(f.a, S, f.c, f.d), t.splice(w, 1, y[0], y[1], y[2], y[3]))
                        },
                        u = function(t, i, r, o) {
                            var s, l, u, c, h, p, f = [];
                            if (o)
                                for (t = [o].concat(t), l = t.length; --l > -1;) "string" == typeof(p = t[l][i]) && "=" === p.charAt(1) && (t[l][i] = o[i] + Number(p.charAt(0) + p.substr(2)));
                            if ((s = t.length - 2) < 0) return f[0] = new a(t[0][i], 0, 0, t[0][i]), f;
                            for (l = 0; l < s; l++) u = t[l][i], c = t[l + 1][i], f[l] = new a(u, 0, 0, c), r && (h = t[l + 2][i], e[l] = (e[l] || 0) + (c - u) * (c - u), n[l] = (n[l] || 0) + (h - c) * (h - c));
                            return f[l] = new a(t[l][i], 0, 0, t[l + 1][i]), f
                        },
                        c = function(t, o, a, s, c, h) {
                            var p, f, d, m, g, _, y, v, b = {},
                                x = [],
                                T = h || t[0];
                            c = "string" == typeof c ? "," + c + "," : ",x,y,z,left,top,right,bottom,marginTop,marginLeft,marginRight,marginBottom,paddingLeft,paddingTop,paddingRight,paddingBottom,backgroundPosition,backgroundPosition_y,", null == o && (o = 1);
                            for (f in t[0]) x.push(f);
                            if (t.length > 1) {
                                for (v = t[t.length - 1], y = !0, p = x.length; --p > -1;)
                                    if (f = x[p], Math.abs(T[f] - v[f]) > .05) {
                                        y = !1;
                                        break
                                    }
                                y && (t = t.concat(), h && t.unshift(h), t.push(t[1]), h = t[t.length - 3])
                            }
                            for (e.length = n.length = i.length = 0, p = x.length; --p > -1;) f = x[p], r[f] = -1 !== c.indexOf("," + f + ","), b[f] = u(t, f, r[f], h);
                            for (p = e.length; --p > -1;) e[p] = Math.sqrt(e[p]), n[p] = Math.sqrt(n[p]);
                            if (!s) {
                                for (p = x.length; --p > -1;)
                                    if (r[f])
                                        for (d = b[x[p]], _ = d.length - 1, m = 0; m < _; m++) g = d[m + 1].da / n[m] + d[m].da / e[m] || 0, i[m] = (i[m] || 0) + g * g;
                                for (p = i.length; --p > -1;) i[p] = Math.sqrt(i[p])
                            }
                            for (p = x.length, m = a ? 4 : 1; --p > -1;) f = x[p], d = b[f], l(d, o, a, s, r[f]), y && (d.splice(0, m), d.splice(d.length - m, m));
                            return b
                        },
                        h = function(t, e, n) {
                            e = e || "soft";
                            var i, r, o, s, l, u, c, h, p, f, d, m = {},
                                g = "cubic" === e ? 3 : 2,
                                _ = "soft" === e,
                                y = [];
                            if (_ && n && (t = [n].concat(t)), null == t || t.length < g + 1) throw "invalid Bezier data";
                            for (p in t[0]) y.push(p);
                            for (u = y.length; --u > -1;) {
                                for (p = y[u], m[p] = l = [], f = 0, h = t.length, c = 0; c < h; c++) i = null == n ? t[c][p] : "string" == typeof(d = t[c][p]) && "=" === d.charAt(1) ? n[p] + Number(d.charAt(0) + d.substr(2)) : Number(d), _ && c > 1 && c < h - 1 && (l[f++] = (i + l[f - 2]) / 2), l[f++] = i;
                                for (h = f - g + 1, f = 0, c = 0; c < h; c += g) i = l[c], r = l[c + 1], o = l[c + 2], s = 2 === g ? 0 : l[c + 3], l[f++] = d = 3 === g ? new a(i, r, o, s) : new a(i, (2 * r + i) / 3, (2 * r + o) / 3, o);
                                l.length = f
                            }
                            return m
                        },
                        p = function(t, e, n) {
                            for (var i, r, o, a, s, l, u, c, h, p, f, d = 1 / n, m = t.length; --m > -1;)
                                for (p = t[m], o = p.a, a = p.d - o, s = p.c - o, l = p.b - o, i = r = 0, c = 1; c <= n; c++) u = d * c, h = 1 - u, i = r - (r = (u * u * a + 3 * h * (u * s + h * l)) * u), f = m * n + c - 1, e[f] = (e[f] || 0) + i * i
                        },
                        f = function(t, e) {
                            e = e >> 0 || 6;
                            var n, i, r, o, a = [],
                                s = [],
                                l = 0,
                                u = 0,
                                c = e - 1,
                                h = [],
                                f = [];
                            for (n in t) p(t[n], a, e);
                            for (r = a.length, i = 0; i < r; i++) l += Math.sqrt(a[i]), o = i % e, f[o] = l, o === c && (u += l, o = i / e >> 0, h[o] = f, s[o] = u, l = 0, f = []);
                            return {
                                length: u,
                                lengths: s,
                                segments: h
                            }
                        },
                        d = _gsScope._gsDefine.plugin({
                            propName: "bezier",
                            priority: -1,
                            version: "1.3.8",
                            API: 2,
                            global: !0,
                            init: function(t, e, n) {
                                this._target = t, e instanceof Array && (e = {
                                    values: e
                                }), this._func = {}, this._mod = {}, this._props = [], this._timeRes = null == e.timeResolution ? 6 : parseInt(e.timeResolution, 10);
                                var i, r, o, a, s, l = e.values || [],
                                    u = {},
                                    p = l[0],
                                    d = e.autoRotate || n.vars.orientToBezier;
                                this._autoRotate = d ? d instanceof Array ? d : [
                                    ["x", "y", "rotation", !0 === d ? 0 : Number(d) || 0]
                                ] : null;
                                for (i in p) this._props.push(i);
                                for (o = this._props.length; --o > -1;) i = this._props[o], this._overwriteProps.push(i), r = this._func[i] = "function" == typeof t[i], u[i] = r ? t[i.indexOf("set") || "function" != typeof t["get" + i.substr(3)] ? i : "get" + i.substr(3)]() : parseFloat(t[i]), s || u[i] !== l[0][i] && (s = u);
                                if (this._beziers = "cubic" !== e.type && "quadratic" !== e.type && "soft" !== e.type ? c(l, isNaN(e.curviness) ? 1 : e.curviness, !1, "thruBasic" === e.type, e.correlate, s) : h(l, e.type, u), this._segCount = this._beziers[i].length, this._timeRes) {
                                    var m = f(this._beziers, this._timeRes);
                                    this._length = m.length, this._lengths = m.lengths, this._segments = m.segments, this._l1 = this._li = this._s1 = this._si = 0, this._l2 = this._lengths[0], this._curSeg = this._segments[0], this._s2 = this._curSeg[0], this._prec = 1 / this._curSeg.length
                                }
                                if (d = this._autoRotate)
                                    for (this._initialRotations = [], d[0] instanceof Array || (this._autoRotate = d = [d]), o = d.length; --o > -1;) {
                                        for (a = 0; a < 3; a++) i = d[o][a], this._func[i] = "function" == typeof t[i] && t[i.indexOf("set") || "function" != typeof t["get" + i.substr(3)] ? i : "get" + i.substr(3)];
                                        i = d[o][2], this._initialRotations[o] = (this._func[i] ? this._func[i].call(this._target) : this._target[i]) || 0, this._overwriteProps.push(i)
                                    }
                                return this._startRatio = n.vars.runBackwards ? 1 : 0, !0
                            },
                            set: function(e) {
                                var n, i, r, o, a, s, l, u, c, h, p = this._segCount,
                                    f = this._func,
                                    d = this._target,
                                    m = e !== this._startRatio;
                                if (this._timeRes) {
                                    if (c = this._lengths, h = this._curSeg, e *= this._length, r = this._li, e > this._l2 && r < p - 1) {
                                        for (u = p - 1; r < u && (this._l2 = c[++r]) <= e;);
                                        this._l1 = c[r - 1], this._li = r, this._curSeg = h = this._segments[r], this._s2 = h[this._s1 = this._si = 0]
                                    } else if (e < this._l1 && r > 0) {
                                        for (; r > 0 && (this._l1 = c[--r]) >= e;);
                                        0 === r && e < this._l1 ? this._l1 = 0 : r++, this._l2 = c[r], this._li = r, this._curSeg = h = this._segments[r], this._s1 = h[(this._si = h.length - 1) - 1] || 0, this._s2 = h[this._si]
                                    }
                                    if (n = r, e -= this._l1, r = this._si, e > this._s2 && r < h.length - 1) {
                                        for (u = h.length - 1; r < u && (this._s2 = h[++r]) <= e;);
                                        this._s1 = h[r - 1], this._si = r
                                    } else if (e < this._s1 && r > 0) {
                                        for (; r > 0 && (this._s1 = h[--r]) >= e;);
                                        0 === r && e < this._s1 ? this._s1 = 0 : r++, this._s2 = h[r], this._si = r
                                    }
                                    s = (r + (e - this._s1) / (this._s2 - this._s1)) * this._prec || 0
                                } else n = e < 0 ? 0 : e >= 1 ? p - 1 : p * e >> 0, s = (e - n * (1 / p)) * p;
                                for (i = 1 - s, r = this._props.length; --r > -1;) o = this._props[r], a = this._beziers[o][n], l = (s * s * a.da + 3 * i * (s * a.ca + i * a.ba)) * s + a.a, this._mod[o] && (l = this._mod[o](l, d)), f[o] ? d[o](l) : d[o] = l;
                                if (this._autoRotate) {
                                    var g, _, y, v, b, x, T, w = this._autoRotate;
                                    for (r = w.length; --r > -1;) o = w[r][2], x = w[r][3] || 0, T = !0 === w[r][4] ? 1 : t, a = this._beziers[w[r][0]], g = this._beziers[w[r][1]], a && g && (a = a[n], g = g[n], _ = a.a + (a.b - a.a) * s, v = a.b + (a.c - a.b) * s, _ += (v - _) * s, v += (a.c + (a.d - a.c) * s - v) * s, y = g.a + (g.b - g.a) * s, b = g.b + (g.c - g.b) * s, y += (b - y) * s, b += (g.c + (g.d - g.c) * s - b) * s, l = m ? Math.atan2(b - y, v - _) * T + x : this._initialRotations[r], this._mod[o] && (l = this._mod[o](l, d)), f[o] ? d[o](l) : d[o] = l)
                                }
                            }
                        }),
                        m = d.prototype;
                    d.bezierThrough = c, d.cubicToQuadratic = s, d._autoCSS = !0, d.quadraticToCubic = function(t, e, n) {
                        return new a(t, (2 * e + t) / 3, (2 * e + n) / 3, n)
                    }, d._cssRegister = function() {
                        var t = o.CSSPlugin;
                        if (t) {
                            var e = t._internals,
                                n = e._parseToProxy,
                                i = e._setPluginRatio,
                                r = e.CSSPropTween;
                            e._registerComplexSpecialProp("bezier", {
                                parser: function(t, e, o, a, s, l) {
                                    e instanceof Array && (e = {
                                        values: e
                                    }), l = new d;
                                    var u, c, h, p = e.values,
                                        f = p.length - 1,
                                        m = [],
                                        g = {};
                                    if (f < 0) return s;
                                    for (u = 0; u <= f; u++) h = n(t, p[u], a, s, l, f !== u), m[u] = h.end;
                                    for (c in e) g[c] = e[c];
                                    return g.values = m, s = new r(t, "bezier", 0, 0, h.pt, 2), s.data = h, s.plugin = l, s.setRatio = i, 0 === g.autoRotate && (g.autoRotate = !0), !g.autoRotate || g.autoRotate instanceof Array || (u = !0 === g.autoRotate ? 0 : Number(g.autoRotate), g.autoRotate = null != h.end.left ? [
                                        ["left", "top", "rotation", u, !1]
                                    ] : null != h.end.x && [
                                        ["x", "y", "rotation", u, !1]
                                    ]), g.autoRotate && (a._transform || a._enableTransforms(!1), h.autoRotate = a._target._gsTransform, h.proxy.rotation = h.autoRotate.rotation || 0, a._overwriteProps.push("rotation")), l._onInitTween(h.proxy, g, a._tween), s
                                }
                            })
                        }
                    }, m._mod = function(t) {
                        for (var e, n = this._overwriteProps, i = n.length; --i > -1;)(e = t[n[i]]) && "function" == typeof e && (this._mod[n[i]] = e)
                    }, m._kill = function(t) {
                        var e, n, i = this._props;
                        for (e in this._beziers)
                            if (e in t)
                                for (delete this._beziers[e], delete this._func[e], n = i.length; --n > -1;) i[n] === e && i.splice(n, 1);
                        if (i = this._autoRotate)
                            for (n = i.length; --n > -1;) t[i[n][2]] && i.splice(n, 1);
                        return this._super._kill.call(this, t)
                    }
                }(), _gsScope._gsDefine("plugins.CSSPlugin", ["plugins.TweenPlugin", "TweenLite"], function(t, e) {
                    var n, i, r, o, a = function() {
                            t.call(this, "css"), this._overwriteProps.length = 0, this.setRatio = a.prototype.setRatio
                        },
                        s = _gsScope._gsDefine.globals,
                        l = {},
                        u = a.prototype = new t("css");
                    u.constructor = a, a.version = "1.20.4", a.API = 2, a.defaultTransformPerspective = 0, a.defaultSkewType = "compensated", a.defaultSmoothOrigin = !0, u = "px", a.suffixMap = {
                        top: u,
                        right: u,
                        bottom: u,
                        left: u,
                        width: u,
                        height: u,
                        fontSize: u,
                        padding: u,
                        margin: u,
                        perspective: u,
                        lineHeight: ""
                    };
                    var c, h, p, f, d, m, g, _, y = /(?:\-|\.|\b)(\d|\.|e\-)+/g,
                        v = /(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,
                        b = /(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi,
                        x = /(?![+-]?\d*\.?\d+|[+-]|e[+-]\d+)[^0-9]/g,
                        T = /(?:\d|\-|\+|=|#|\.)*/g,
                        w = /opacity *= *([^)]*)/i,
                        S = /opacity:([^;]*)/i,
                        P = /alpha\(opacity *=.+?\)/i,
                        M = /^(rgb|hsl)/,
                        C = /([A-Z])/g,
                        E = /-([a-z])/gi,
                        O = /(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi,
                        I = function(t, e) {
                            return e.toUpperCase()
                        },
                        R = /(?:Left|Right|Width)/i,
                        A = /(M11|M12|M21|M22)=[\d\-\.e]+/gi,
                        k = /progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,
                        L = /,(?=[^\)]*(?:\(|$))/gi,
                        D = /[\s,\(]/i,
                        B = Math.PI / 180,
                        N = 180 / Math.PI,
                        F = {},
                        G = {
                            style: {}
                        },
                        U = _gsScope.document || {
                            createElement: function() {
                                return G
                            }
                        },
                        j = function(t, e) {
                            return U.createElementNS ? U.createElementNS(e || "http://www.w3.org/1999/xhtml", t) : U.createElement(t)
                        },
                        W = j("div"),
                        X = j("img"),
                        V = a._internals = {
                            _specialProps: l
                        },
                        H = (_gsScope.navigator || {}).userAgent || "",
                        z = function() {
                            var t = H.indexOf("Android"),
                                e = j("a");
                            return p = -1 !== H.indexOf("Safari") && -1 === H.indexOf("Chrome") && (-1 === t || parseFloat(H.substr(t + 8, 2)) > 3), d = p && parseFloat(H.substr(H.indexOf("Version/") + 8, 2)) < 6, f = -1 !== H.indexOf("Firefox"), (/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(H) || /Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(H)) && (m = parseFloat(RegExp.$1)), !!e && (e.style.cssText = "top:1px;opacity:.55;", /^0.55/.test(e.style.opacity))
                        }(),
                        Y = function(t) {
                            return w.test("string" == typeof t ? t : (t.currentStyle ? t.currentStyle.filter : t.style.filter) || "") ? parseFloat(RegExp.$1) / 100 : 1
                        },
                        q = function(t) {
                            _gsScope.console
                        },
                        J = "",
                        K = "",
                        $ = function(t, e) {
                            e = e || W;
                            var n, i, r = e.style;
                            if (void 0 !== r[t]) return t;
                            for (t = t.charAt(0).toUpperCase() + t.substr(1), n = ["O", "Moz", "ms", "Ms", "Webkit"], i = 5; --i > -1 && void 0 === r[n[i] + t];);
                            return i >= 0 ? (K = 3 === i ? "ms" : n[i], J = "-" + K.toLowerCase() + "-", K + t) : null
                        },
                        Z = U.defaultView ? U.defaultView.getComputedStyle : function() {},
                        Q = a.getStyle = function(t, e, n, i, r) {
                            var o;
                            return z || "opacity" !== e ? (!i && t.style[e] ? o = t.style[e] : (n = n || Z(t)) ? o = n[e] || n.getPropertyValue(e) || n.getPropertyValue(e.replace(C, "-$1").toLowerCase()) : t.currentStyle && (o = t.currentStyle[e]), null == r || o && "none" !== o && "auto" !== o && "auto auto" !== o ? o : r) : Y(t)
                        },
                        tt = V.convertToPixels = function(t, n, i, r, o) {
                            if ("px" === r || !r && "lineHeight" !== n) return i;
                            if ("auto" === r || !i) return 0;
                            var s, l, u, c = R.test(n),
                                h = t,
                                p = W.style,
                                f = i < 0,
                                d = 1 === i;
                            if (f && (i = -i), d && (i *= 100), "lineHeight" !== n || r)
                                if ("%" === r && -1 !== n.indexOf("border")) s = i / 100 * (c ? t.clientWidth : t.clientHeight);
                                else {
                                    if (p.cssText = "border:0 solid red;position:" + Q(t, "position") + ";line-height:0;", "%" !== r && h.appendChild && "v" !== r.charAt(0) && "rem" !== r) p[c ? "borderLeftWidth" : "borderTopWidth"] = i + r;
                                    else {
                                        if (h = t.parentNode || U.body, -1 !== Q(h, "display").indexOf("flex") && (p.position = "absolute"), l = h._gsCache, u = e.ticker.frame, l && c && l.time === u) return l.width * i / 100;
                                        p[c ? "width" : "height"] = i + r
                                    }
                                    h.appendChild(W), s = parseFloat(W[c ? "offsetWidth" : "offsetHeight"]), h.removeChild(W), c && "%" === r && !1 !== a.cacheWidths && (l = h._gsCache = h._gsCache || {}, l.time = u, l.width = s / i * 100), 0 !== s || o || (s = tt(t, n, i, r, !0))
                                }
                            else l = Z(t).lineHeight, t.style.lineHeight = i, s = parseFloat(Z(t).lineHeight), t.style.lineHeight = l;
                            return d && (s /= 100), f ? -s : s
                        },
                        et = V.calculateOffset = function(t, e, n) {
                            if ("absolute" !== Q(t, "position", n)) return 0;
                            var i = "left" === e ? "Left" : "Top",
                                r = Q(t, "margin" + i, n);
                            return t["offset" + i] - (tt(t, e, parseFloat(r), r.replace(T, "")) || 0)
                        },
                        nt = function(t, e) {
                            var n, i, r, o = {};
                            if (e = e || Z(t, null))
                                if (n = e.length)
                                    for (; --n > -1;) r = e[n], -1 !== r.indexOf("-transform") && Ot !== r || (o[r.replace(E, I)] = e.getPropertyValue(r));
                                else
                                    for (n in e) - 1 !== n.indexOf("Transform") && Et !== n || (o[n] = e[n]);
                            else if (e = t.currentStyle || t.style)
                                for (n in e) "string" == typeof n && void 0 === o[n] && (o[n.replace(E, I)] = e[n]);
                            return z || (o.opacity = Y(t)), i = Xt(t, e, !1), o.rotation = i.rotation, o.skewX = i.skewX, o.scaleX = i.scaleX, o.scaleY = i.scaleY, o.x = i.x, o.y = i.y, Rt && (o.z = i.z, o.rotationX = i.rotationX, o.rotationY = i.rotationY, o.scaleZ = i.scaleZ), o.filters && delete o.filters, o
                        },
                        it = function(t, e, n, i, r) {
                            var o, a, s, l = {},
                                u = t.style;
                            for (a in n) "cssText" !== a && "length" !== a && isNaN(a) && (e[a] !== (o = n[a]) || r && r[a]) && -1 === a.indexOf("Origin") && ("number" != typeof o && "string" != typeof o || (l[a] = "auto" !== o || "left" !== a && "top" !== a ? "" !== o && "auto" !== o && "none" !== o || "string" != typeof e[a] || "" === e[a].replace(x, "") ? o : 0 : et(t, a), void 0 !== u[a] && (s = new yt(u, a, u[a], s))));
                            if (i)
                                for (a in i) "className" !== a && (l[a] = i[a]);
                            return {
                                difs: l,
                                firstMPT: s
                            }
                        },
                        rt = {
                            width: ["Left", "Right"],
                            height: ["Top", "Bottom"]
                        },
                        ot = ["marginLeft", "marginRight", "marginTop", "marginBottom"],
                        at = function(t, e, n) {
                            if ("svg" === (t.nodeName + "").toLowerCase()) return (n || Z(t))[e] || 0;
                            if (t.getCTM && Ut(t)) return t.getBBox()[e] || 0;
                            var i = parseFloat("width" === e ? t.offsetWidth : t.offsetHeight),
                                r = rt[e],
                                o = r.length;
                            for (n = n || Z(t, null); --o > -1;) i -= parseFloat(Q(t, "padding" + r[o], n, !0)) || 0, i -= parseFloat(Q(t, "border" + r[o] + "Width", n, !0)) || 0;
                            return i
                        },
                        st = function(t, e) {
                            if ("contain" === t || "auto" === t || "auto auto" === t) return t + " ";
                            null != t && "" !== t || (t = "0 0");
                            var n, i = t.split(" "),
                                r = -1 !== t.indexOf("left") ? "0%" : -1 !== t.indexOf("right") ? "100%" : i[0],
                                o = -1 !== t.indexOf("top") ? "0%" : -1 !== t.indexOf("bottom") ? "100%" : i[1];
                            if (i.length > 3 && !e) {
                                for (i = t.split(", ").join(",").split(","), t = [], n = 0; n < i.length; n++) t.push(st(i[n]));
                                return t.join(",")
                            }
                            return null == o ? o = "center" === r ? "50%" : "0" : "center" === o && (o = "50%"), ("center" === r || isNaN(parseFloat(r)) && -1 === (r + "").indexOf("=")) && (r = "50%"), t = r + " " + o + (i.length > 2 ? " " + i[2] : ""), e && (e.oxp = -1 !== r.indexOf("%"), e.oyp = -1 !== o.indexOf("%"), e.oxr = "=" === r.charAt(1), e.oyr = "=" === o.charAt(1), e.ox = parseFloat(r.replace(x, "")), e.oy = parseFloat(o.replace(x, "")), e.v = t), e || t
                        },
                        lt = function(t, e) {
                            return "function" == typeof t && (t = t(_, g)), "string" == typeof t && "=" === t.charAt(1) ? parseInt(t.charAt(0) + "1", 10) * parseFloat(t.substr(2)) : parseFloat(t) - parseFloat(e) || 0
                        },
                        ut = function(t, e) {
                            return "function" == typeof t && (t = t(_, g)), null == t ? e : "string" == typeof t && "=" === t.charAt(1) ? parseInt(t.charAt(0) + "1", 10) * parseFloat(t.substr(2)) + e : parseFloat(t) || 0
                        },
                        ct = function(t, e, n, i) {
                            var r, o, a, s, l;
                            return "function" == typeof t && (t = t(_, g)), null == t ? s = e : "number" == typeof t ? s = t : (r = 360, o = t.split("_"), l = "=" === t.charAt(1), a = (l ? parseInt(t.charAt(0) + "1", 10) * parseFloat(o[0].substr(2)) : parseFloat(o[0])) * (-1 === t.indexOf("rad") ? 1 : N) - (l ? 0 : e), o.length && (i && (i[n] = e + a), -1 !== t.indexOf("short") && (a %= r) !== a % (r / 2) && (a = a < 0 ? a + r : a - r), -1 !== t.indexOf("_cw") && a < 0 ? a = (a + 9999999999 * r) % r - (a / r | 0) * r : -1 !== t.indexOf("ccw") && a > 0 && (a = (a - 9999999999 * r) % r - (a / r | 0) * r)), s = e + a), s < 1e-6 && s > -1e-6 && (s = 0), s
                        },
                        ht = {
                            aqua: [0, 255, 255],
                            lime: [0, 255, 0],
                            silver: [192, 192, 192],
                            black: [0, 0, 0],
                            maroon: [128, 0, 0],
                            teal: [0, 128, 128],
                            blue: [0, 0, 255],
                            navy: [0, 0, 128],
                            white: [255, 255, 255],
                            fuchsia: [255, 0, 255],
                            olive: [128, 128, 0],
                            yellow: [255, 255, 0],
                            orange: [255, 165, 0],
                            gray: [128, 128, 128],
                            purple: [128, 0, 128],
                            green: [0, 128, 0],
                            red: [255, 0, 0],
                            pink: [255, 192, 203],
                            cyan: [0, 255, 255],
                            transparent: [255, 255, 255, 0]
                        },
                        pt = function(t, e, n) {
                            return t = t < 0 ? t + 1 : t > 1 ? t - 1 : t, 255 * (6 * t < 1 ? e + (n - e) * t * 6 : t < .5 ? n : 3 * t < 2 ? e + (n - e) * (2 / 3 - t) * 6 : e) + .5 | 0
                        },
                        ft = a.parseColor = function(t, e) {
                            var n, i, r, o, a, s, l, u, c, h, p;
                            if (t)
                                if ("number" == typeof t) n = [t >> 16, t >> 8 & 255, 255 & t];
                                else {
                                    if ("," === t.charAt(t.length - 1) && (t = t.substr(0, t.length - 1)), ht[t]) n = ht[t];
                                    else if ("#" === t.charAt(0)) 4 === t.length && (i = t.charAt(1), r = t.charAt(2), o = t.charAt(3), t = "#" + i + i + r + r + o + o), t = parseInt(t.substr(1), 16), n = [t >> 16, t >> 8 & 255, 255 & t];
                                    else if ("hsl" === t.substr(0, 3))
                                        if (n = p = t.match(y), e) {
                                            if (-1 !== t.indexOf("=")) return t.match(v)
                                        } else a = Number(n[0]) % 360 / 360, s = Number(n[1]) / 100, l = Number(n[2]) / 100, r = l <= .5 ? l * (s + 1) : l + s - l * s, i = 2 * l - r, n.length > 3 && (n[3] = Number(n[3])), n[0] = pt(a + 1 / 3, i, r), n[1] = pt(a, i, r), n[2] = pt(a - 1 / 3, i, r);
                                    else n = t.match(y) || ht.transparent;
                                    n[0] = Number(n[0]), n[1] = Number(n[1]), n[2] = Number(n[2]), n.length > 3 && (n[3] = Number(n[3]))
                                }
                            else n = ht.black;
                            return e && !p && (i = n[0] / 255, r = n[1] / 255, o = n[2] / 255, u = Math.max(i, r, o), c = Math.min(i, r, o), l = (u + c) / 2, u === c ? a = s = 0 : (h = u - c, s = l > .5 ? h / (2 - u - c) : h / (u + c), a = u === i ? (r - o) / h + (r < o ? 6 : 0) : u === r ? (o - i) / h + 2 : (i - r) / h + 4, a *= 60), n[0] = a + .5 | 0, n[1] = 100 * s + .5 | 0, n[2] = 100 * l + .5 | 0), n
                        },
                        dt = function(t, e) {
                            var n, i, r, o = t.match(mt) || [],
                                a = 0,
                                s = "";
                            if (!o.length) return t;
                            for (n = 0; n < o.length; n++) i = o[n], r = t.substr(a, t.indexOf(i, a) - a), a += r.length + i.length, i = ft(i, e), 3 === i.length && i.push(1), s += r + (e ? "hsla(" + i[0] + "," + i[1] + "%," + i[2] + "%," + i[3] : "rgba(" + i.join(",")) + ")";
                            return s + t.substr(a)
                        },
                        mt = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3}){1,2}\\b";
                    for (u in ht) mt += "|" + u + "\\b";
                    mt = new RegExp(mt + ")", "gi"), a.colorStringFilter = function(t) {
                        var e, n = t[0] + " " + t[1];
                        mt.test(n) && (e = -1 !== n.indexOf("hsl(") || -1 !== n.indexOf("hsla("), t[0] = dt(t[0], e), t[1] = dt(t[1], e)), mt.lastIndex = 0
                    }, e.defaultStringFilter || (e.defaultStringFilter = a.colorStringFilter);
                    var gt = function(t, e, n, i) {
                            if (null == t) return function(t) {
                                return t
                            };
                            var r, o = e ? (t.match(mt) || [""])[0] : "",
                                a = t.split(o).join("").match(b) || [],
                                s = t.substr(0, t.indexOf(a[0])),
                                l = ")" === t.charAt(t.length - 1) ? ")" : "",
                                u = -1 !== t.indexOf(" ") ? " " : ",",
                                c = a.length,
                                h = c > 0 ? a[0].replace(y, "") : "";
                            return c ? r = e ? function(t) {
                                var e, p, f, d;
                                if ("number" == typeof t) t += h;
                                else if (i && L.test(t)) {
                                    for (d = t.replace(L, "|").split("|"), f = 0; f < d.length; f++) d[f] = r(d[f]);
                                    return d.join(",")
                                }
                                if (e = (t.match(mt) || [o])[0], p = t.split(e).join("").match(b) || [], f = p.length, c > f--)
                                    for (; ++f < c;) p[f] = n ? p[(f - 1) / 2 | 0] : a[f];
                                return s + p.join(u) + u + e + l + (-1 !== t.indexOf("inset") ? " inset" : "")
                            } : function(t) {
                                var e, o, p;
                                if ("number" == typeof t) t += h;
                                else if (i && L.test(t)) {
                                    for (o = t.replace(L, "|").split("|"), p = 0; p < o.length; p++) o[p] = r(o[p]);
                                    return o.join(",")
                                }
                                if (e = t.match(b) || [], p = e.length, c > p--)
                                    for (; ++p < c;) e[p] = n ? e[(p - 1) / 2 | 0] : a[p];
                                return s + e.join(u) + l
                            } : function(t) {
                                return t
                            }
                        },
                        _t = function(t) {
                            return t = t.split(","),
                                function(e, n, i, r, o, a, s) {
                                    var l, u = (n + "").split(" ");
                                    for (s = {}, l = 0; l < 4; l++) s[t[l]] = u[l] = u[l] || u[(l - 1) / 2 >> 0];
                                    return r.parse(e, s, o, a)
                                }
                        },
                        yt = (V._setPluginRatio = function(t) {
                            this.plugin.setRatio(t);
                            for (var e, n, i, r, o, a = this.data, s = a.proxy, l = a.firstMPT; l;) e = s[l.v], l.r ? e = Math.round(e) : e < 1e-6 && e > -1e-6 && (e = 0), l.t[l.p] = e, l = l._next;
                            if (a.autoRotate && (a.autoRotate.rotation = a.mod ? a.mod(s.rotation, this.t) : s.rotation), 1 === t || 0 === t)
                                for (l = a.firstMPT, o = 1 === t ? "e" : "b"; l;) {
                                    if (n = l.t, n.type) {
                                        if (1 === n.type) {
                                            for (r = n.xs0 + n.s + n.xs1, i = 1; i < n.l; i++) r += n["xn" + i] + n["xs" + (i + 1)];
                                            n[o] = r
                                        }
                                    } else n[o] = n.s + n.xs0;
                                    l = l._next
                                }
                        }, function(t, e, n, i, r) {
                            this.t = t, this.p = e, this.v = n, this.r = r, i && (i._prev = this, this._next = i)
                        }),
                        vt = (V._parseToProxy = function(t, e, n, i, r, o) {
                            var a, s, l, u, c, h = i,
                                p = {},
                                f = {},
                                d = n._transform,
                                m = F;
                            for (n._transform = null, F = e, i = c = n.parse(t, e, i, r), F = m, o && (n._transform = d, h && (h._prev = null, h._prev && (h._prev._next = null))); i && i !== h;) {
                                if (i.type <= 1 && (s = i.p, f[s] = i.s + i.c, p[s] = i.s, o || (u = new yt(i, "s", s, u, i.r), i.c = 0), 1 === i.type))
                                    for (a = i.l; --a > 0;) l = "xn" + a, s = i.p + "_" + l, f[s] = i.data[l], p[s] = i[l], o || (u = new yt(i, l, s, u, i.rxp[l]));
                                i = i._next
                            }
                            return {
                                proxy: p,
                                end: f,
                                firstMPT: u,
                                pt: c
                            }
                        }, V.CSSPropTween = function(t, e, i, r, a, s, l, u, c, h, p) {
                            this.t = t, this.p = e, this.s = i, this.c = r, this.n = l || e, t instanceof vt || o.push(this.n), this.r = u, this.type = s || 0, c && (this.pr = c, n = !0), this.b = void 0 === h ? i : h, this.e = void 0 === p ? i + r : p, a && (this._next = a, a._prev = this)
                        }),
                        bt = function(t, e, n, i, r, o) {
                            var a = new vt(t, e, n, i - n, r, -1, o);
                            return a.b = n, a.e = a.xs0 = i, a
                        },
                        xt = a.parseComplex = function(t, e, n, i, r, o, s, l, u, h) {
                            n = n || o || "", "function" == typeof i && (i = i(_, g)), s = new vt(t, e, 0, 0, s, h ? 2 : 1, null, !1, l, n, i), i += "", r && mt.test(i + n) && (i = [n, i], a.colorStringFilter(i), n = i[0], i = i[1]);
                            var p, f, d, m, b, x, T, w, S, P, M, C, E, O = n.split(", ").join(",").split(" "),
                                I = i.split(", ").join(",").split(" "),
                                R = O.length,
                                A = !1 !== c;
                            for (-1 === i.indexOf(",") && -1 === n.indexOf(",") || (-1 !== (i + n).indexOf("rgb") || -1 !== (i + n).indexOf("hsl") ? (O = O.join(" ").replace(L, ", ").split(" "), I = I.join(" ").replace(L, ", ").split(" ")) : (O = O.join(" ").split(",").join(", ").split(" "), I = I.join(" ").split(",").join(", ").split(" ")), R = O.length), R !== I.length && (O = (o || "").split(" "), R = O.length), s.plugin = u, s.setRatio = h, mt.lastIndex = 0, p = 0; p < R; p++)
                                if (m = O[p], b = I[p], (w = parseFloat(m)) || 0 === w) s.appendXtra("", w, lt(b, w), b.replace(v, ""), A && -1 !== b.indexOf("px"), !0);
                                else if (r && mt.test(m)) C = b.indexOf(")") + 1, C = ")" + (C ? b.substr(C) : ""), E = -1 !== b.indexOf("hsl") && z, P = b, m = ft(m, E), b = ft(b, E), S = m.length + b.length > 6, S && !z && 0 === b[3] ? (s["xs" + s.l] += s.l ? " transparent" : "transparent", s.e = s.e.split(I[p]).join("transparent")) : (z || (S = !1), E ? s.appendXtra(P.substr(0, P.indexOf("hsl")) + (S ? "hsla(" : "hsl("), m[0], lt(b[0], m[0]), ",", !1, !0).appendXtra("", m[1], lt(b[1], m[1]), "%,", !1).appendXtra("", m[2], lt(b[2], m[2]), S ? "%," : "%" + C, !1) : s.appendXtra(P.substr(0, P.indexOf("rgb")) + (S ? "rgba(" : "rgb("), m[0], b[0] - m[0], ",", !0, !0).appendXtra("", m[1], b[1] - m[1], ",", !0).appendXtra("", m[2], b[2] - m[2], S ? "," : C, !0), S && (m = m.length < 4 ? 1 : m[3], s.appendXtra("", m, (b.length < 4 ? 1 : b[3]) - m, C, !1))), mt.lastIndex = 0;
                            else if (x = m.match(y)) {
                                if (!(T = b.match(v)) || T.length !== x.length) return s;
                                for (d = 0, f = 0; f < x.length; f++) M = x[f], P = m.indexOf(M, d), s.appendXtra(m.substr(d, P - d), Number(M), lt(T[f], M), "", A && "px" === m.substr(P + M.length, 2), 0 === f), d = P + M.length;
                                s["xs" + s.l] += m.substr(d)
                            } else s["xs" + s.l] += s.l || s["xs" + s.l] ? " " + b : b;
                            if (-1 !== i.indexOf("=") && s.data) {
                                for (C = s.xs0 + s.data.s, p = 1; p < s.l; p++) C += s["xs" + p] + s.data["xn" + p];
                                s.e = C + s["xs" + p]
                            }
                            return s.l || (s.type = -1, s.xs0 = s.e), s.xfirst || s
                        },
                        Tt = 9;
                    for (u = vt.prototype, u.l = u.pr = 0; --Tt > 0;) u["xn" + Tt] = 0, u["xs" + Tt] = "";
                    u.xs0 = "", u._next = u._prev = u.xfirst = u.data = u.plugin = u.setRatio = u.rxp = null, u.appendXtra = function(t, e, n, i, r, o) {
                        var a = this,
                            s = a.l;
                        return a["xs" + s] += o && (s || a["xs" + s]) ? " " + t : t || "", n || 0 === s || a.plugin ? (a.l++, a.type = a.setRatio ? 2 : 1, a["xs" + a.l] = i || "", s > 0 ? (a.data["xn" + s] = e + n, a.rxp["xn" + s] = r, a["xn" + s] = e, a.plugin || (a.xfirst = new vt(a, "xn" + s, e, n, a.xfirst || a, 0, a.n, r, a.pr), a.xfirst.xs0 = 0), a) : (a.data = {
                            s: e + n
                        }, a.rxp = {}, a.s = e, a.c = n, a.r = r, a)) : (a["xs" + s] += e + (i || ""), a)
                    };
                    var wt = function(t, e) {
                            e = e || {}, this.p = e.prefix ? $(t) || t : t, l[t] = l[this.p] = this, this.format = e.formatter || gt(e.defaultValue, e.color, e.collapsible, e.multi), e.parser && (this.parse = e.parser), this.clrs = e.color, this.multi = e.multi, this.keyword = e.keyword, this.dflt = e.defaultValue, this.pr = e.priority || 0
                        },
                        St = V._registerComplexSpecialProp = function(t, e, n) {
                            "object" != typeof e && (e = {
                                parser: n
                            });
                            var i, r = t.split(","),
                                o = e.defaultValue;
                            for (n = n || [o], i = 0; i < r.length; i++) e.prefix = 0 === i && e.prefix, e.defaultValue = n[i] || o, new wt(r[i], e)
                        },
                        Pt = V._registerPluginProp = function(t) {
                            if (!l[t]) {
                                var e = t.charAt(0).toUpperCase() + t.substr(1) + "Plugin";
                                St(t, {
                                    parser: function(t, n, i, r, o, a, u) {
                                        var c = s.com.greensock.plugins[e];
                                        return c ? (c._cssRegister(), l[i].parse(t, n, i, r, o, a, u)) : (q(), o)
                                    }
                                })
                            }
                        };
                    u = wt.prototype, u.parseComplex = function(t, e, n, i, r, o) {
                        var a, s, l, u, c, h, p = this.keyword;
                        if (this.multi && (L.test(n) || L.test(e) ? (s = e.replace(L, "|").split("|"), l = n.replace(L, "|").split("|")) : p && (s = [e], l = [n])), l) {
                            for (u = l.length > s.length ? l.length : s.length, a = 0; a < u; a++) e = s[a] = s[a] || this.dflt, n = l[a] = l[a] || this.dflt, p && (c = e.indexOf(p), h = n.indexOf(p), c !== h && (-1 === h ? s[a] = s[a].split(p).join("") : -1 === c && (s[a] += " " + p)));
                            e = s.join(", "), n = l.join(", ")
                        }
                        return xt(t, this.p, e, n, this.clrs, this.dflt, i, this.pr, r, o)
                    }, u.parse = function(t, e, n, i, o, a, s) {
                        return this.parseComplex(t.style, this.format(Q(t, this.p, r, !1, this.dflt)), this.format(e), o, a)
                    }, a.registerSpecialProp = function(t, e, n) {
                        St(t, {
                            parser: function(t, i, r, o, a, s, l) {
                                var u = new vt(t, r, 0, 0, a, 2, r, !1, n);
                                return u.plugin = s, u.setRatio = e(t, i, o._tween, r), u
                            },
                            priority: n
                        })
                    }, a.useSVGTransformAttr = !0;
                    var Mt, Ct = "scaleX,scaleY,scaleZ,x,y,z,skewX,skewY,rotation,rotationX,rotationY,perspective,xPercent,yPercent".split(","),
                        Et = $("transform"),
                        Ot = J + "transform",
                        It = $("transformOrigin"),
                        Rt = null !== $("perspective"),
                        At = V.Transform = function() {
                            this.perspective = parseFloat(a.defaultTransformPerspective) || 0, this.force3D = !(!1 === a.defaultForce3D || !Rt) && (a.defaultForce3D || "auto")
                        },
                        kt = _gsScope.SVGElement,
                        Lt = function(t, e, n) {
                            var i, r = U.createElementNS("http://www.w3.org/2000/svg", t),
                                o = /([a-z])([A-Z])/g;
                            for (i in n) r.setAttributeNS(null, i.replace(o, "$1-$2").toLowerCase(), n[i]);
                            return e.appendChild(r), r
                        },
                        Dt = U.documentElement || {},
                        Bt = function() {
                            var t, e, n, i = m || /Android/i.test(H) && !_gsScope.chrome;
                            return U.createElementNS && !i && (t = Lt("svg", Dt), e = Lt("rect", t, {
                                width: 100,
                                height: 50,
                                x: 100
                            }), n = e.getBoundingClientRect().width, e.style[It] = "50% 50%", e.style[Et] = "scaleX(0.5)", i = n === e.getBoundingClientRect().width && !(f && Rt), Dt.removeChild(t)), i
                        }(),
                        Nt = function(t, e, n, i, r, o) {
                            var s, l, u, c, h, p, f, d, m, g, _, y, v, b, x = t._gsTransform,
                                T = Wt(t, !0);
                            x && (v = x.xOrigin, b = x.yOrigin), (!i || (s = i.split(" ")).length < 2) && (f = t.getBBox(), 0 === f.x && 0 === f.y && f.width + f.height === 0 && (f = {
                                x: parseFloat(t.hasAttribute("x") ? t.getAttribute("x") : t.hasAttribute("cx") ? t.getAttribute("cx") : 0) || 0,
                                y: parseFloat(t.hasAttribute("y") ? t.getAttribute("y") : t.hasAttribute("cy") ? t.getAttribute("cy") : 0) || 0,
                                width: 0,
                                height: 0
                            }), e = st(e).split(" "), s = [(-1 !== e[0].indexOf("%") ? parseFloat(e[0]) / 100 * f.width : parseFloat(e[0])) + f.x, (-1 !== e[1].indexOf("%") ? parseFloat(e[1]) / 100 * f.height : parseFloat(e[1])) + f.y]), n.xOrigin = c = parseFloat(s[0]), n.yOrigin = h = parseFloat(s[1]), i && T !== jt && (p = T[0], f = T[1], d = T[2], m = T[3], g = T[4], _ = T[5], (y = p * m - f * d) && (l = c * (m / y) + h * (-d / y) + (d * _ - m * g) / y, u = c * (-f / y) + h * (p / y) - (p * _ - f * g) / y, c = n.xOrigin = s[0] = l, h = n.yOrigin = s[1] = u)), x && (o && (n.xOffset = x.xOffset, n.yOffset = x.yOffset, x = n), r || !1 !== r && !1 !== a.defaultSmoothOrigin ? (l = c - v, u = h - b, x.xOffset += l * T[0] + u * T[2] - l, x.yOffset += l * T[1] + u * T[3] - u) : x.xOffset = x.yOffset = 0), o || t.setAttribute("data-svg-origin", s.join(" "))
                        },
                        Ft = function(t) {
                            var e, n = j("svg", this.ownerSVGElement && this.ownerSVGElement.getAttribute("xmlns") || "http://www.w3.org/2000/svg"),
                                i = this.parentNode,
                                r = this.nextSibling,
                                o = this.style.cssText;
                            if (Dt.appendChild(n), n.appendChild(this), this.style.display = "block", t) try {
                                e = this.getBBox(), this._originalGetBBox = this.getBBox, this.getBBox = Ft
                            } catch (t) {} else this._originalGetBBox && (e = this._originalGetBBox());
                            return r ? i.insertBefore(this, r) : i.appendChild(this), Dt.removeChild(n), this.style.cssText = o, e
                        },
                        Gt = function(t) {
                            try {
                                return t.getBBox()
                            } catch (e) {
                                return Ft.call(t, !0)
                            }
                        },
                        Ut = function(t) {
                            return !(!kt || !t.getCTM || t.parentNode && !t.ownerSVGElement || !Gt(t))
                        },
                        jt = [1, 0, 0, 1, 0, 0],
                        Wt = function(t, e) {
                            var n, i, r, o, a, s, l = t._gsTransform || new At,
                                u = t.style;
                            if (Et ? i = Q(t, Ot, null, !0) : t.currentStyle && (i = t.currentStyle.filter.match(A), i = i && 4 === i.length ? [i[0].substr(4), Number(i[2].substr(4)), Number(i[1].substr(4)), i[3].substr(4), l.x || 0, l.y || 0].join(",") : ""), n = !i || "none" === i || "matrix(1, 0, 0, 1, 0, 0)" === i, !Et || !(s = !Z(t) || "none" === Z(t).display) && t.parentNode || (s && (o = u.display, u.display = "block"), t.parentNode || (a = 1, Dt.appendChild(t)), i = Q(t, Ot, null, !0), n = !i || "none" === i || "matrix(1, 0, 0, 1, 0, 0)" === i, o ? u.display = o : s && Yt(u, "display"), a && Dt.removeChild(t)), (l.svg || t.getCTM && Ut(t)) && (n && -1 !== (u[Et] + "").indexOf("matrix") && (i = u[Et], n = 0), r = t.getAttribute("transform"), n && r && (r = t.transform.baseVal.consolidate().matrix, i = "matrix(" + r.a + "," + r.b + "," + r.c + "," + r.d + "," + r.e + "," + r.f + ")", n = 0)), n) return jt;
                            for (r = (i || "").match(y) || [], Tt = r.length; --Tt > -1;) o = Number(r[Tt]), r[Tt] = (a = o - (o |= 0)) ? (1e5 * a + (a < 0 ? -.5 : .5) | 0) / 1e5 + o : o;
                            return e && r.length > 6 ? [r[0], r[1], r[4], r[5], r[12], r[13]] : r
                        },
                        Xt = V.getTransform = function(t, n, i, r) {
                            if (t._gsTransform && i && !r) return t._gsTransform;
                            var o, s, l, u, c, h, p = i ? t._gsTransform || new At : new At,
                                f = p.scaleX < 0,
                                d = Rt ? parseFloat(Q(t, It, n, !1, "0 0 0").split(" ")[2]) || p.zOrigin || 0 : 0,
                                m = parseFloat(a.defaultTransformPerspective) || 0;
                            if (p.svg = !(!t.getCTM || !Ut(t)), p.svg && (Nt(t, Q(t, It, n, !1, "50% 50%") + "", p, t.getAttribute("data-svg-origin")), Mt = a.useSVGTransformAttr || Bt), (o = Wt(t)) !== jt) {
                                if (16 === o.length) {
                                    var g, _, y, v, b, x = o[0],
                                        T = o[1],
                                        w = o[2],
                                        S = o[3],
                                        P = o[4],
                                        M = o[5],
                                        C = o[6],
                                        E = o[7],
                                        O = o[8],
                                        I = o[9],
                                        R = o[10],
                                        A = o[12],
                                        k = o[13],
                                        L = o[14],
                                        D = o[11],
                                        B = Math.atan2(C, R);
                                    p.zOrigin && (L = -p.zOrigin, A = O * L - o[12], k = I * L - o[13], L = R * L + p.zOrigin - o[14]), p.rotationX = B * N, B && (v = Math.cos(-B), b = Math.sin(-B), g = P * v + O * b, _ = M * v + I * b, y = C * v + R * b, O = P * -b + O * v, I = M * -b + I * v, R = C * -b + R * v, D = E * -b + D * v, P = g, M = _, C = y), B = Math.atan2(-w, R), p.rotationY = B * N, B && (v = Math.cos(-B), b = Math.sin(-B), g = x * v - O * b, _ = T * v - I * b, y = w * v - R * b, I = T * b + I * v, R = w * b + R * v, D = S * b + D * v, x = g, T = _, w = y), B = Math.atan2(T, x), p.rotation = B * N, B && (v = Math.cos(B), b = Math.sin(B), g = x * v + T * b, _ = P * v + M * b, y = O * v + I * b, T = T * v - x * b, M = M * v - P * b, I = I * v - O * b, x = g, P = _, O = y), p.rotationX && Math.abs(p.rotationX) + Math.abs(p.rotation) > 359.9 && (p.rotationX = p.rotation = 0, p.rotationY = 180 - p.rotationY), B = Math.atan2(P, M), p.scaleX = (1e5 * Math.sqrt(x * x + T * T + w * w) + .5 | 0) / 1e5, p.scaleY = (1e5 * Math.sqrt(M * M + C * C) + .5 | 0) / 1e5, p.scaleZ = (1e5 * Math.sqrt(O * O + I * I + R * R) + .5 | 0) / 1e5, x /= p.scaleX, P /= p.scaleY, T /= p.scaleX, M /= p.scaleY, Math.abs(B) > 2e-5 ? (p.skewX = B * N, P = 0, "simple" !== p.skewType && (p.scaleY *= 1 / Math.cos(B))) : p.skewX = 0, p.perspective = D ? 1 / (D < 0 ? -D : D) : 0, p.x = A, p.y = k, p.z = L, p.svg && (p.x -= p.xOrigin - (p.xOrigin * x - p.yOrigin * P), p.y -= p.yOrigin - (p.yOrigin * T - p.xOrigin * M))
                                } else if (!Rt || r || !o.length || p.x !== o[4] || p.y !== o[5] || !p.rotationX && !p.rotationY) {
                                    var F = o.length >= 6,
                                        G = F ? o[0] : 1,
                                        U = o[1] || 0,
                                        j = o[2] || 0,
                                        W = F ? o[3] : 1;
                                    p.x = o[4] || 0, p.y = o[5] || 0, l = Math.sqrt(G * G + U * U), u = Math.sqrt(W * W + j * j), c = G || U ? Math.atan2(U, G) * N : p.rotation || 0, h = j || W ? Math.atan2(j, W) * N + c : p.skewX || 0, p.scaleX = l, p.scaleY = u, p.rotation = c, p.skewX = h, Rt && (p.rotationX = p.rotationY = p.z = 0, p.perspective = m, p.scaleZ = 1), p.svg && (p.x -= p.xOrigin - (p.xOrigin * G + p.yOrigin * j), p.y -= p.yOrigin - (p.xOrigin * U + p.yOrigin * W))
                                }
                                Math.abs(p.skewX) > 90 && Math.abs(p.skewX) < 270 && (f ? (p.scaleX *= -1, p.skewX += p.rotation <= 0 ? 180 : -180, p.rotation += p.rotation <= 0 ? 180 : -180) : (p.scaleY *= -1, p.skewX += p.skewX <= 0 ? 180 : -180)), p.zOrigin = d;
                                for (s in p) p[s] < 2e-5 && p[s] > -2e-5 && (p[s] = 0)
                            }
                            return i && (t._gsTransform = p, p.svg && (Mt && t.style[Et] ? e.delayedCall(.001, function() {
                                Yt(t.style, Et)
                            }) : !Mt && t.getAttribute("transform") && e.delayedCall(.001, function() {
                                t.removeAttribute("transform")
                            }))), p
                        },
                        Vt = function(t) {
                            var e, n, i = this.data,
                                r = -i.rotation * B,
                                o = r + i.skewX * B,
                                a = (Math.cos(r) * i.scaleX * 1e5 | 0) / 1e5,
                                s = (Math.sin(r) * i.scaleX * 1e5 | 0) / 1e5,
                                l = (Math.sin(o) * -i.scaleY * 1e5 | 0) / 1e5,
                                u = (Math.cos(o) * i.scaleY * 1e5 | 0) / 1e5,
                                c = this.t.style,
                                h = this.t.currentStyle;
                            if (h) {
                                n = s, s = -l, l = -n, e = h.filter, c.filter = "";
                                var p, f, d = this.t.offsetWidth,
                                    g = this.t.offsetHeight,
                                    _ = "absolute" !== h.position,
                                    y = "progid:DXImageTransform.Microsoft.Matrix(M11=" + a + ", M12=" + s + ", M21=" + l + ", M22=" + u,
                                    v = i.x + d * i.xPercent / 100,
                                    b = i.y + g * i.yPercent / 100;
                                if (null != i.ox && (p = (i.oxp ? d * i.ox * .01 : i.ox) - d / 2, f = (i.oyp ? g * i.oy * .01 : i.oy) - g / 2, v += p - (p * a + f * s), b += f - (p * l + f * u)), _ ? (p = d / 2, f = g / 2, y += ", Dx=" + (p - (p * a + f * s) + v) + ", Dy=" + (f - (p * l + f * u) + b) + ")") : y += ", sizingMethod='auto expand')", -1 !== e.indexOf("DXImageTransform.Microsoft.Matrix(") ? c.filter = e.replace(k, y) : c.filter = y + " " + e, 0 !== t && 1 !== t || 1 === a && 0 === s && 0 === l && 1 === u && (_ && -1 === y.indexOf("Dx=0, Dy=0") || w.test(e) && 100 !== parseFloat(RegExp.$1) || -1 === e.indexOf(e.indexOf("Alpha")) && c.removeAttribute("filter")), !_) {
                                    var x, S, P, M = m < 8 ? 1 : -1;
                                    for (p = i.ieOffsetX || 0, f = i.ieOffsetY || 0, i.ieOffsetX = Math.round((d - ((a < 0 ? -a : a) * d + (s < 0 ? -s : s) * g)) / 2 + v), i.ieOffsetY = Math.round((g - ((u < 0 ? -u : u) * g + (l < 0 ? -l : l) * d)) / 2 + b), Tt = 0; Tt < 4; Tt++) S = ot[Tt], x = h[S], n = -1 !== x.indexOf("px") ? parseFloat(x) : tt(this.t, S, parseFloat(x), x.replace(T, "")) || 0, P = n !== i[S] ? Tt < 2 ? -i.ieOffsetX : -i.ieOffsetY : Tt < 2 ? p - i.ieOffsetX : f - i.ieOffsetY, c[S] = (i[S] = Math.round(n - P * (0 === Tt || 2 === Tt ? 1 : M))) + "px"
                                }
                            }
                        },
                        Ht = V.set3DTransformRatio = V.setTransformRatio = function(t) {
                            var e, n, i, r, o, a, s, l, u, c, h, p, d, m, g, _, y, v, b, x, T, w, S, P = this.data,
                                M = this.t.style,
                                C = P.rotation,
                                E = P.rotationX,
                                O = P.rotationY,
                                I = P.scaleX,
                                R = P.scaleY,
                                A = P.scaleZ,
                                k = P.x,
                                L = P.y,
                                D = P.z,
                                N = P.svg,
                                F = P.perspective,
                                G = P.force3D,
                                U = P.skewY,
                                j = P.skewX;
                            if (U && (j += U, C += U), ((1 === t || 0 === t) && "auto" === G && (this.tween._totalTime === this.tween._totalDuration || !this.tween._totalTime) || !G) && !D && !F && !O && !E && 1 === A || Mt && N || !Rt) return void(C || j || N ? (C *= B, w = j * B, S = 1e5, n = Math.cos(C) * I, o = Math.sin(C) * I, i = Math.sin(C - w) * -R, a = Math.cos(C - w) * R, w && "simple" === P.skewType && (e = Math.tan(w - U * B), e = Math.sqrt(1 + e * e), i *= e, a *= e, U && (e = Math.tan(U * B), e = Math.sqrt(1 + e * e), n *= e, o *= e)), N && (k += P.xOrigin - (P.xOrigin * n + P.yOrigin * i) + P.xOffset, L += P.yOrigin - (P.xOrigin * o + P.yOrigin * a) + P.yOffset, Mt && (P.xPercent || P.yPercent) && (g = this.t.getBBox(), k += .01 * P.xPercent * g.width, L += .01 * P.yPercent * g.height), g = 1e-6, k < g && k > -g && (k = 0), L < g && L > -g && (L = 0)), b = (n * S | 0) / S + "," + (o * S | 0) / S + "," + (i * S | 0) / S + "," + (a * S | 0) / S + "," + k + "," + L + ")", N && Mt ? this.t.setAttribute("transform", "matrix(" + b) : M[Et] = (P.xPercent || P.yPercent ? "translate(" + P.xPercent + "%," + P.yPercent + "%) matrix(" : "matrix(") + b) : M[Et] = (P.xPercent || P.yPercent ? "translate(" + P.xPercent + "%," + P.yPercent + "%) matrix(" : "matrix(") + I + ",0,0," + R + "," + k + "," + L + ")");
                            if (f && (g = 1e-4, I < g && I > -g && (I = A = 2e-5), R < g && R > -g && (R = A = 2e-5), !F || P.z || P.rotationX || P.rotationY || (F = 0)), C || j) C *= B, _ = n = Math.cos(C), y = o = Math.sin(C), j && (C -= j * B, _ = Math.cos(C), y = Math.sin(C), "simple" === P.skewType && (e = Math.tan((j - U) * B), e = Math.sqrt(1 + e * e), _ *= e, y *= e, P.skewY && (e = Math.tan(U * B), e = Math.sqrt(1 + e * e), n *= e, o *= e))), i = -y, a = _;
                            else {
                                if (!(O || E || 1 !== A || F || N)) return void(M[Et] = (P.xPercent || P.yPercent ? "translate(" + P.xPercent + "%," + P.yPercent + "%) translate3d(" : "translate3d(") + k + "px," + L + "px," + D + "px)" + (1 !== I || 1 !== R ? " scale(" + I + "," + R + ")" : ""));
                                n = a = 1, i = o = 0
                            }
                            c = 1, r = s = l = u = h = p = 0, d = F ? -1 / F : 0, m = P.zOrigin, g = 1e-6, x = ",", T = "0", C = O * B, C && (_ = Math.cos(C), y = Math.sin(C), l = -y, h = d * -y, r = n * y, s = o * y, c = _, d *= _, n *= _, o *= _), C = E * B, C && (_ = Math.cos(C), y = Math.sin(C), e = i * _ + r * y, v = a * _ + s * y, u = c * y, p = d * y, r = i * -y + r * _, s = a * -y + s * _, c *= _, d *= _, i = e, a = v), 1 !== A && (r *= A, s *= A, c *= A, d *= A), 1 !== R && (i *= R, a *= R, u *= R, p *= R), 1 !== I && (n *= I, o *= I, l *= I, h *= I), (m || N) && (m && (k += r * -m, L += s * -m, D += c * -m + m), N && (k += P.xOrigin - (P.xOrigin * n + P.yOrigin * i) + P.xOffset, L += P.yOrigin - (P.xOrigin * o + P.yOrigin * a) + P.yOffset), k < g && k > -g && (k = T), L < g && L > -g && (L = T), D < g && D > -g && (D = 0)), b = P.xPercent || P.yPercent ? "translate(" + P.xPercent + "%," + P.yPercent + "%) matrix3d(" : "matrix3d(", b += (n < g && n > -g ? T : n) + x + (o < g && o > -g ? T : o) + x + (l < g && l > -g ? T : l), b += x + (h < g && h > -g ? T : h) + x + (i < g && i > -g ? T : i) + x + (a < g && a > -g ? T : a), E || O || 1 !== A ? (b += x + (u < g && u > -g ? T : u) + x + (p < g && p > -g ? T : p) + x + (r < g && r > -g ? T : r), b += x + (s < g && s > -g ? T : s) + x + (c < g && c > -g ? T : c) + x + (d < g && d > -g ? T : d) + x) : b += ",0,0,0,0,1,0,", b += k + x + L + x + D + x + (F ? 1 + -D / F : 1) + ")", M[Et] = b
                        };
                    u = At.prototype, u.x = u.y = u.z = u.skewX = u.skewY = u.rotation = u.rotationX = u.rotationY = u.zOrigin = u.xPercent = u.yPercent = u.xOffset = u.yOffset = 0, u.scaleX = u.scaleY = u.scaleZ = 1, St("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,svgOrigin,transformPerspective,directionalRotation,parseTransform,force3D,skewType,xPercent,yPercent,smoothOrigin", {
                        parser: function(t, e, n, i, o, s, l) {
                            if (i._lastParsedTransform === l) return o;
                            i._lastParsedTransform = l;
                            var u, c = l.scale && "function" == typeof l.scale ? l.scale : 0;
                            "function" == typeof l[n] && (u = l[n], l[n] = e), c && (l.scale = c(_, t));
                            var h, p, f, d, m, y, v, b, x, T = t._gsTransform,
                                w = t.style,
                                S = Ct.length,
                                P = l,
                                M = {},
                                C = Xt(t, r, !0, P.parseTransform),
                                E = P.transform && ("function" == typeof P.transform ? P.transform(_, g) : P.transform);
                            if (C.skewType = P.skewType || C.skewType || a.defaultSkewType, i._transform = C, E && "string" == typeof E && Et) p = W.style, p[Et] = E, p.display = "block", p.position = "absolute", U.body.appendChild(W), h = Xt(W, null, !1), "simple" === C.skewType && (h.scaleY *= Math.cos(h.skewX * B)), C.svg && (y = C.xOrigin, v = C.yOrigin, h.x -= C.xOffset, h.y -= C.yOffset, (P.transformOrigin || P.svgOrigin) && (E = {}, Nt(t, st(P.transformOrigin), E, P.svgOrigin, P.smoothOrigin, !0), y = E.xOrigin, v = E.yOrigin, h.x -= E.xOffset - C.xOffset, h.y -= E.yOffset - C.yOffset), (y || v) && (b = Wt(W, !0), h.x -= y - (y * b[0] + v * b[2]), h.y -= v - (y * b[1] + v * b[3]))), U.body.removeChild(W), h.perspective || (h.perspective = C.perspective), null != P.xPercent && (h.xPercent = ut(P.xPercent, C.xPercent)), null != P.yPercent && (h.yPercent = ut(P.yPercent, C.yPercent));
                            else if ("object" == typeof P) {
                                if (h = {
                                        scaleX: ut(null != P.scaleX ? P.scaleX : P.scale, C.scaleX),
                                        scaleY: ut(null != P.scaleY ? P.scaleY : P.scale, C.scaleY),
                                        scaleZ: ut(P.scaleZ, C.scaleZ),
                                        x: ut(P.x, C.x),
                                        y: ut(P.y, C.y),
                                        z: ut(P.z, C.z),
                                        xPercent: ut(P.xPercent, C.xPercent),
                                        yPercent: ut(P.yPercent, C.yPercent),
                                        perspective: ut(P.transformPerspective, C.perspective)
                                    }, null != (m = P.directionalRotation))
                                    if ("object" == typeof m)
                                        for (p in m) P[p] = m[p];
                                    else P.rotation = m;
                                "string" == typeof P.x && -1 !== P.x.indexOf("%") && (h.x = 0, h.xPercent = ut(P.x, C.xPercent)), "string" == typeof P.y && -1 !== P.y.indexOf("%") && (h.y = 0, h.yPercent = ut(P.y, C.yPercent)), h.rotation = ct("rotation" in P ? P.rotation : "shortRotation" in P ? P.shortRotation + "_short" : "rotationZ" in P ? P.rotationZ : C.rotation, C.rotation, "rotation", M), Rt && (h.rotationX = ct("rotationX" in P ? P.rotationX : "shortRotationX" in P ? P.shortRotationX + "_short" : C.rotationX || 0, C.rotationX, "rotationX", M), h.rotationY = ct("rotationY" in P ? P.rotationY : "shortRotationY" in P ? P.shortRotationY + "_short" : C.rotationY || 0, C.rotationY, "rotationY", M)), h.skewX = ct(P.skewX, C.skewX), h.skewY = ct(P.skewY, C.skewY)
                            }
                            for (Rt && null != P.force3D && (C.force3D = P.force3D, d = !0), f = C.force3D || C.z || C.rotationX || C.rotationY || h.z || h.rotationX || h.rotationY || h.perspective, f || null == P.scale || (h.scaleZ = 1); --S > -1;) x = Ct[S], ((E = h[x] - C[x]) > 1e-6 || E < -1e-6 || null != P[x] || null != F[x]) && (d = !0, o = new vt(C, x, C[x], E, o), x in M && (o.e = M[x]), o.xs0 = 0, o.plugin = s, i._overwriteProps.push(o.n));
                            return E = P.transformOrigin, C.svg && (E || P.svgOrigin) && (y = C.xOffset, v = C.yOffset, Nt(t, st(E), h, P.svgOrigin, P.smoothOrigin), o = bt(C, "xOrigin", (T ? C : h).xOrigin, h.xOrigin, o, "transformOrigin"), o = bt(C, "yOrigin", (T ? C : h).yOrigin, h.yOrigin, o, "transformOrigin"), y === C.xOffset && v === C.yOffset || (o = bt(C, "xOffset", T ? y : C.xOffset, C.xOffset, o, "transformOrigin"), o = bt(C, "yOffset", T ? v : C.yOffset, C.yOffset, o, "transformOrigin")), E = "0px 0px"), (E || Rt && f && C.zOrigin) && (Et ? (d = !0, x = It, E = (E || Q(t, x, r, !1, "50% 50%")) + "", o = new vt(w, x, 0, 0, o, -1, "transformOrigin"), o.b = w[x], o.plugin = s, Rt ? (p = C.zOrigin, E = E.split(" "), C.zOrigin = (E.length > 2 && (0 === p || "0px" !== E[2]) ? parseFloat(E[2]) : p) || 0, o.xs0 = o.e = E[0] + " " + (E[1] || "50%") + " 0px", o = new vt(C, "zOrigin", 0, 0, o, -1, o.n), o.b = p, o.xs0 = o.e = C.zOrigin) : o.xs0 = o.e = E) : st(E + "", C)), d && (i._transformType = C.svg && Mt || !f && 3 !== this._transformType ? 2 : 3), u && (l[n] = u), c && (l.scale = c), o
                        },
                        prefix: !0
                    }), St("boxShadow", {
                        defaultValue: "0px 0px 0px 0px #999",
                        prefix: !0,
                        color: !0,
                        multi: !0,
                        keyword: "inset"
                    }), St("borderRadius", {
                        defaultValue: "0px",
                        parser: function(t, e, n, o, a, s) {
                            e = this.format(e);
                            var l, u, c, h, p, f, d, m, g, _, y, v, b, x, T, w, S = ["borderTopLeftRadius", "borderTopRightRadius", "borderBottomRightRadius", "borderBottomLeftRadius"],
                                P = t.style;
                            for (g = parseFloat(t.offsetWidth), _ = parseFloat(t.offsetHeight), l = e.split(" "), u = 0; u < S.length; u++) this.p.indexOf("border") && (S[u] = $(S[u])), p = h = Q(t, S[u], r, !1, "0px"), -1 !== p.indexOf(" ") && (h = p.split(" "), p = h[0], h = h[1]), f = c = l[u], d = parseFloat(p), v = p.substr((d + "").length), b = "=" === f.charAt(1), b ? (m = parseInt(f.charAt(0) + "1", 10), f = f.substr(2), m *= parseFloat(f), y = f.substr((m + "").length - (m < 0 ? 1 : 0)) || "") : (m = parseFloat(f), y = f.substr((m + "").length)), "" === y && (y = i[n] || v), y !== v && (x = tt(t, "borderLeft", d, v), T = tt(t, "borderTop", d, v), "%" === y ? (p = x / g * 100 + "%", h = T / _ * 100 + "%") : "em" === y ? (w = tt(t, "borderLeft", 1, "em"), p = x / w + "em", h = T / w + "em") : (p = x + "px", h = T + "px"), b && (f = parseFloat(p) + m + y, c = parseFloat(h) + m + y)), a = xt(P, S[u], p + " " + h, f + " " + c, !1, "0px", a);
                            return a
                        },
                        prefix: !0,
                        formatter: gt("0px 0px 0px 0px", !1, !0)
                    }), St("borderBottomLeftRadius,borderBottomRightRadius,borderTopLeftRadius,borderTopRightRadius", {
                        defaultValue: "0px",
                        parser: function(t, e, n, i, o, a) {
                            return xt(t.style, n, this.format(Q(t, n, r, !1, "0px 0px")), this.format(e), !1, "0px", o)
                        },
                        prefix: !0,
                        formatter: gt("0px 0px", !1, !0)
                    }), St("backgroundPosition", {
                        defaultValue: "0 0",
                        parser: function(t, e, n, i, o, a) {
                            var s, l, u, c, h, p, f = "background-position",
                                d = r || Z(t, null),
                                g = this.format((d ? m ? d.getPropertyValue(f + "-x") + " " + d.getPropertyValue(f + "-y") : d.getPropertyValue(f) : t.currentStyle.backgroundPositionX + " " + t.currentStyle.backgroundPositionY) || "0 0"),
                                _ = this.format(e);
                            if (-1 !== g.indexOf("%") != (-1 !== _.indexOf("%")) && _.split(",").length < 2 && (p = Q(t, "backgroundImage").replace(O, "")) && "none" !== p) {
                                for (s = g.split(" "), l = _.split(" "), X.setAttribute("src", p), u = 2; --u > -1;) g = s[u], (c = -1 !== g.indexOf("%")) !== (-1 !== l[u].indexOf("%")) && (h = 0 === u ? t.offsetWidth - X.width : t.offsetHeight - X.height, s[u] = c ? parseFloat(g) / 100 * h + "px" : parseFloat(g) / h * 100 + "%");
                                g = s.join(" ")
                            }
                            return this.parseComplex(t.style, g, _, o, a)
                        },
                        formatter: st
                    }), St("backgroundSize", {
                        defaultValue: "0 0",
                        formatter: function(t) {
                            return t += "", st(-1 === t.indexOf(" ") ? t + " " + t : t)
                        }
                    }), St("perspective", {
                        defaultValue: "0px",
                        prefix: !0
                    }), St("perspectiveOrigin", {
                        defaultValue: "50% 50%",
                        prefix: !0
                    }), St("transformStyle", {
                        prefix: !0
                    }), St("backfaceVisibility", {
                        prefix: !0
                    }), St("userSelect", {
                        prefix: !0
                    }), St("margin", {
                        parser: _t("marginTop,marginRight,marginBottom,marginLeft")
                    }), St("padding", {
                        parser: _t("paddingTop,paddingRight,paddingBottom,paddingLeft")
                    }), St("clip", {
                        defaultValue: "rect(0px,0px,0px,0px)",
                        parser: function(t, e, n, i, o, a) {
                            var s, l, u;
                            return m < 9 ? (l = t.currentStyle, u = m < 8 ? " " : ",", s = "rect(" + l.clipTop + u + l.clipRight + u + l.clipBottom + u + l.clipLeft + ")", e = this.format(e).split(",").join(u)) : (s = this.format(Q(t, this.p, r, !1, this.dflt)), e = this.format(e)), this.parseComplex(t.style, s, e, o, a)
                        }
                    }), St("textShadow", {
                        defaultValue: "0px 0px 0px #999",
                        color: !0,
                        multi: !0
                    }), St("autoRound,strictUnits", {
                        parser: function(t, e, n, i, r) {
                            return r
                        }
                    }), St("border", {
                        defaultValue: "0px solid #000",
                        parser: function(t, e, n, i, o, a) {
                            var s = Q(t, "borderTopWidth", r, !1, "0px"),
                                l = this.format(e).split(" "),
                                u = l[0].replace(T, "");
                            return "px" !== u && (s = parseFloat(s) / tt(t, "borderTopWidth", 1, u) + u), this.parseComplex(t.style, this.format(s + " " + Q(t, "borderTopStyle", r, !1, "solid") + " " + Q(t, "borderTopColor", r, !1, "#000")), l.join(" "), o, a)
                        },
                        color: !0,
                        formatter: function(t) {
                            var e = t.split(" ");
                            return e[0] + " " + (e[1] || "solid") + " " + (t.match(mt) || ["#000"])[0]
                        }
                    }), St("borderWidth", {
                        parser: _t("borderTopWidth,borderRightWidth,borderBottomWidth,borderLeftWidth")
                    }), St("float,cssFloat,styleFloat", {
                        parser: function(t, e, n, i, r, o) {
                            var a = t.style,
                                s = "cssFloat" in a ? "cssFloat" : "styleFloat";
                            return new vt(a, s, 0, 0, r, -1, n, !1, 0, a[s], e)
                        }
                    });
                    var zt = function(t) {
                        var e, n = this.t,
                            i = n.filter || Q(this.data, "filter") || "",
                            r = this.s + this.c * t | 0;
                        100 === r && (-1 === i.indexOf("atrix(") && -1 === i.indexOf("radient(") && -1 === i.indexOf("oader(") ? (n.removeAttribute("filter"), e = !Q(this.data, "filter")) : (n.filter = i.replace(P, ""), e = !0)), e || (this.xn1 && (n.filter = i = i || "alpha(opacity=" + r + ")"), -1 === i.indexOf("pacity") ? 0 === r && this.xn1 || (n.filter = i + " alpha(opacity=" + r + ")") : n.filter = i.replace(w, "opacity=" + r))
                    };
                    St("opacity,alpha,autoAlpha", {
                        defaultValue: "1",
                        parser: function(t, e, n, i, o, a) {
                            var s = parseFloat(Q(t, "opacity", r, !1, "1")),
                                l = t.style,
                                u = "autoAlpha" === n;
                            return "string" == typeof e && "=" === e.charAt(1) && (e = ("-" === e.charAt(0) ? -1 : 1) * parseFloat(e.substr(2)) + s), u && 1 === s && "hidden" === Q(t, "visibility", r) && 0 !== e && (s = 0), z ? o = new vt(l, "opacity", s, e - s, o) : (o = new vt(l, "opacity", 100 * s, 100 * (e - s), o), o.xn1 = u ? 1 : 0, l.zoom = 1, o.type = 2, o.b = "alpha(opacity=" + o.s + ")", o.e = "alpha(opacity=" + (o.s + o.c) + ")", o.data = t, o.plugin = a, o.setRatio = zt), u && (o = new vt(l, "visibility", 0, 0, o, -1, null, !1, 0, 0 !== s ? "inherit" : "hidden", 0 === e ? "hidden" : "inherit"), o.xs0 = "inherit", i._overwriteProps.push(o.n), i._overwriteProps.push(n)), o
                        }
                    });
                    var Yt = function(t, e) {
                            e && (t.removeProperty ? ("ms" !== e.substr(0, 2) && "webkit" !== e.substr(0, 6) || (e = "-" + e), t.removeProperty(e.replace(C, "-$1").toLowerCase())) : t.removeAttribute(e))
                        },
                        qt = function(t) {
                            if (this.t._gsClassPT = this, 1 === t || 0 === t) {
                                this.t.setAttribute("class", 0 === t ? this.b : this.e);
                                for (var e = this.data, n = this.t.style; e;) e.v ? n[e.p] = e.v : Yt(n, e.p), e = e._next;
                                1 === t && this.t._gsClassPT === this && (this.t._gsClassPT = null)
                            } else this.t.getAttribute("class") !== this.e && this.t.setAttribute("class", this.e)
                        };
                    St("className", {
                        parser: function(t, e, i, o, a, s, l) {
                            var u, c, h, p, f, d = t.getAttribute("class") || "",
                                m = t.style.cssText;
                            if (a = o._classNamePT = new vt(t, i, 0, 0, a, 2), a.setRatio = qt, a.pr = -11, n = !0, a.b = d, c = nt(t, r), h = t._gsClassPT) {
                                for (p = {}, f = h.data; f;) p[f.p] = 1, f = f._next;
                                h.setRatio(1)
                            }
                            return t._gsClassPT = a, a.e = "=" !== e.charAt(1) ? e : d.replace(new RegExp("(?:\\s|^)" + e.substr(2) + "(?![\\w-])"), "") + ("+" === e.charAt(0) ? " " + e.substr(2) : ""), t.setAttribute("class", a.e), u = it(t, c, nt(t), l, p), t.setAttribute("class", d), a.data = u.firstMPT, t.style.cssText = m, a = a.xfirst = o.parse(t, u.difs, a, s)
                        }
                    });
                    var Jt = function(t) {
                        if ((1 === t || 0 === t) && this.data._totalTime === this.data._totalDuration && "isFromStart" !== this.data.data) {
                            var e, n, i, r, o, a = this.t.style,
                                s = l.transform.parse;
                            if ("all" === this.e) a.cssText = "", r = !0;
                            else
                                for (e = this.e.split(" ").join("").split(","), i = e.length; --i > -1;) n = e[i], l[n] && (l[n].parse === s ? r = !0 : n = "transformOrigin" === n ? It : l[n].p), Yt(a, n);
                            r && (Yt(a, Et), (o = this.t._gsTransform) && (o.svg && (this.t.removeAttribute("data-svg-origin"), this.t.removeAttribute("transform")), delete this.t._gsTransform))
                        }
                    };
                    for (St("clearProps", {
                            parser: function(t, e, i, r, o) {
                                return o = new vt(t, i, 0, 0, o, 2), o.setRatio = Jt, o.e = e, o.pr = -10, o.data = r._tween, n = !0, o
                            }
                        }), u = "bezier,throwProps,physicsProps,physics2D".split(","), Tt = u.length; Tt--;) Pt(u[Tt]);
                    u = a.prototype, u._firstPT = u._lastParsedTransform = u._transform = null, u._onInitTween = function(t, e, s, u) {
                        if (!t.nodeType) return !1;
                        this._target = g = t, this._tween = s, this._vars = e, _ = u, c = e.autoRound, n = !1, i = e.suffixMap || a.suffixMap, r = Z(t, ""), o = this._overwriteProps;
                        var f, m, y, v, b, x, T, w, P, M = t.style;
                        if (h && "" === M.zIndex && ("auto" !== (f = Q(t, "zIndex", r)) && "" !== f || this._addLazySet(M, "zIndex", 0)), "string" == typeof e && (v = M.cssText, f = nt(t, r), M.cssText = v + ";" + e, f = it(t, f, nt(t)).difs, !z && S.test(e) && (f.opacity = parseFloat(RegExp.$1)), e = f, M.cssText = v), e.className ? this._firstPT = m = l.className.parse(t, e.className, "className", this, null, null, e) : this._firstPT = m = this.parse(t, e, null), this._transformType) {
                            for (P = 3 === this._transformType, Et ? p && (h = !0, "" === M.zIndex && ("auto" !== (T = Q(t, "zIndex", r)) && "" !== T || this._addLazySet(M, "zIndex", 0)), d && this._addLazySet(M, "WebkitBackfaceVisibility", this._vars.WebkitBackfaceVisibility || (P ? "visible" : "hidden"))) : M.zoom = 1, y = m; y && y._next;) y = y._next;
                            w = new vt(t, "transform", 0, 0, null, 2), this._linkCSSP(w, null, y), w.setRatio = Et ? Ht : Vt, w.data = this._transform || Xt(t, r, !0), w.tween = s, w.pr = -1, o.pop()
                        }
                        if (n) {
                            for (; m;) {
                                for (x = m._next, y = v; y && y.pr > m.pr;) y = y._next;
                                (m._prev = y ? y._prev : b) ? m._prev._next = m: v = m, (m._next = y) ? y._prev = m : b = m, m = x
                            }
                            this._firstPT = v
                        }
                        return !0
                    }, u.parse = function(t, e, n, o) {
                        var a, s, u, h, p, f, d, m, y, v, b = t.style;
                        for (a in e) {
                            if (f = e[a], "function" == typeof f && (f = f(_, g)), s = l[a]) n = s.parse(t, f, a, this, n, o, e);
                            else {
                                if ("--" === a.substr(0, 2)) {
                                    this._tween._propLookup[a] = this._addTween.call(this._tween, t.style, "setProperty", Z(t).getPropertyValue(a) + "", f + "", a, !1, a);
                                    continue
                                }
                                p = Q(t, a, r) + "", y = "string" == typeof f, "color" === a || "fill" === a || "stroke" === a || -1 !== a.indexOf("Color") || y && M.test(f) ? (y || (f = ft(f), f = (f.length > 3 ? "rgba(" : "rgb(") + f.join(",") + ")"), n = xt(b, a, p, f, !0, "transparent", n, 0, o)) : y && D.test(f) ? n = xt(b, a, p, f, !0, null, n, 0, o) : (u = parseFloat(p), d = u || 0 === u ? p.substr((u + "").length) : "", "" !== p && "auto" !== p || ("width" === a || "height" === a ? (u = at(t, a, r), d = "px") : "left" === a || "top" === a ? (u = et(t, a, r), d = "px") : (u = "opacity" !== a ? 0 : 1, d = "")), v = y && "=" === f.charAt(1), v ? (h = parseInt(f.charAt(0) + "1", 10), f = f.substr(2), h *= parseFloat(f), m = f.replace(T, "")) : (h = parseFloat(f), m = y ? f.replace(T, "") : ""), "" === m && (m = a in i ? i[a] : d), f = h || 0 === h ? (v ? h + u : h) + m : e[a], d !== m && ("" === m && "lineHeight" !== a || (h || 0 === h) && u && (u = tt(t, a, u, d), "%" === m ? (u /= tt(t, a, 100, "%") / 100, !0 !== e.strictUnits && (p = u + "%")) : "em" === m || "rem" === m || "vw" === m || "vh" === m ? u /= tt(t, a, 1, m) : "px" !== m && (h = tt(t, a, h, m), m = "px"), v && (h || 0 === h) && (f = h + u + m))), v && (h += u), !u && 0 !== u || !h && 0 !== h ? void 0 !== b[a] && (f || f + "" != "NaN" && null != f) ? (n = new vt(b, a, h || u || 0, 0, n, -1, a, !1, 0, p, f), n.xs0 = "none" !== f || "display" !== a && -1 === a.indexOf("Style") ? f : p) : q(e[a]) : (n = new vt(b, a, u, h - u, n, 0, a, !1 !== c && ("px" === m || "zIndex" === a), 0, p, f), n.xs0 = m))
                            }
                            o && n && !n.plugin && (n.plugin = o)
                        }
                        return n
                    }, u.setRatio = function(t) {
                        var e, n, i, r = this._firstPT;
                        if (1 !== t || this._tween._time !== this._tween._duration && 0 !== this._tween._time)
                            if (t || this._tween._time !== this._tween._duration && 0 !== this._tween._time || -1e-6 === this._tween._rawPrevTime)
                                for (; r;) {
                                    if (e = r.c * t + r.s, r.r ? e = Math.round(e) : e < 1e-6 && e > -1e-6 && (e = 0), r.type)
                                        if (1 === r.type)
                                            if (2 === (i = r.l)) r.t[r.p] = r.xs0 + e + r.xs1 + r.xn1 + r.xs2;
                                            else if (3 === i) r.t[r.p] = r.xs0 + e + r.xs1 + r.xn1 + r.xs2 + r.xn2 + r.xs3;
                                    else if (4 === i) r.t[r.p] = r.xs0 + e + r.xs1 + r.xn1 + r.xs2 + r.xn2 + r.xs3 + r.xn3 + r.xs4;
                                    else if (5 === i) r.t[r.p] = r.xs0 + e + r.xs1 + r.xn1 + r.xs2 + r.xn2 + r.xs3 + r.xn3 + r.xs4 + r.xn4 + r.xs5;
                                    else {
                                        for (n = r.xs0 + e + r.xs1, i = 1; i < r.l; i++) n += r["xn" + i] + r["xs" + (i + 1)];
                                        r.t[r.p] = n
                                    } else -1 === r.type ? r.t[r.p] = r.xs0 : r.setRatio && r.setRatio(t);
                                    else r.t[r.p] = e + r.xs0;
                                    r = r._next
                                } else
                                    for (; r;) 2 !== r.type ? r.t[r.p] = r.b : r.setRatio(t), r = r._next;
                            else
                                for (; r;) {
                                    if (2 !== r.type)
                                        if (r.r && -1 !== r.type)
                                            if (e = Math.round(r.s + r.c), r.type) {
                                                if (1 === r.type) {
                                                    for (i = r.l, n = r.xs0 + e + r.xs1, i = 1; i < r.l; i++) n += r["xn" + i] + r["xs" + (i + 1)];
                                                    r.t[r.p] = n
                                                }
                                            } else r.t[r.p] = e + r.xs0;
                                    else r.t[r.p] = r.e;
                                    else r.setRatio(t);
                                    r = r._next
                                }
                    }, u._enableTransforms = function(t) {
                        this._transform = this._transform || Xt(this._target, r, !0), this._transformType = this._transform.svg && Mt || !t && 3 !== this._transformType ? 2 : 3
                    };
                    var Kt = function(t) {
                        this.t[this.p] = this.e, this.data._linkCSSP(this, this._next, null, !0)
                    };
                    u._addLazySet = function(t, e, n) {
                        var i = this._firstPT = new vt(t, e, 0, 0, this._firstPT, 2);
                        i.e = n, i.setRatio = Kt, i.data = this
                    }, u._linkCSSP = function(t, e, n, i) {
                        return t && (e && (e._prev = t), t._next && (t._next._prev = t._prev), t._prev ? t._prev._next = t._next : this._firstPT === t && (this._firstPT = t._next, i = !0), n ? n._next = t : i || null !== this._firstPT || (this._firstPT = t), t._next = e, t._prev = n), t
                    }, u._mod = function(t) {
                        for (var e = this._firstPT; e;) "function" == typeof t[e.p] && t[e.p] === Math.round && (e.r = 1), e = e._next
                    }, u._kill = function(e) {
                        var n, i, r, o = e;
                        if (e.autoAlpha || e.alpha) {
                            o = {};
                            for (i in e) o[i] = e[i];
                            o.opacity = 1, o.autoAlpha && (o.visibility = 1)
                        }
                        for (e.className && (n = this._classNamePT) && (r = n.xfirst, r && r._prev ? this._linkCSSP(r._prev, n._next, r._prev._prev) : r === this._firstPT && (this._firstPT = n._next), n._next && this._linkCSSP(n._next, n._next._next, r._prev), this._classNamePT = null), n = this._firstPT; n;) n.plugin && n.plugin !== i && n.plugin._kill && (n.plugin._kill(e), i = n.plugin), n = n._next;
                        return t.prototype._kill.call(this, o)
                    };
                    var $t = function(t, e, n) {
                        var i, r, o, a;
                        if (t.slice)
                            for (r = t.length; --r > -1;) $t(t[r], e, n);
                        else
                            for (i = t.childNodes, r = i.length; --r > -1;) o = i[r], a = o.type, o.style && (e.push(nt(o)), n && n.push(o)), 1 !== a && 9 !== a && 11 !== a || !o.childNodes.length || $t(o, e, n)
                    };
                    return a.cascadeTo = function(t, n, i) {
                        var r, o, a, s, l = e.to(t, n, i),
                            u = [l],
                            c = [],
                            h = [],
                            p = [],
                            f = e._internals.reservedProps;
                        for (t = l._targets || l.target, $t(t, c, p), l.render(n, !0, !0), $t(t, h), l.render(0, !0, !0), l._enabled(!0), r = p.length; --r > -1;)
                            if (o = it(p[r], c[r], h[r]), o.firstMPT) {
                                o = o.difs;
                                for (a in i) f[a] && (o[a] = i[a]);
                                s = {};
                                for (a in o) s[a] = c[r][a];
                                u.push(e.fromTo(p[r], n, s, o))
                            }
                        return u
                    }, t.activate([a]), a
                }, !0),
                function() {
                    var t = _gsScope._gsDefine.plugin({
                            propName: "roundProps",
                            version: "1.6.0",
                            priority: -1,
                            API: 2,
                            init: function(t, e, n) {
                                return this._tween = n, !0
                            }
                        }),
                        e = function(t) {
                            for (; t;) t.f || t.blob || (t.m = Math.round), t = t._next
                        },
                        n = t.prototype;
                    n._onInitAllProps = function() {
                        for (var t, n, i, r = this._tween, o = r.vars.roundProps.join ? r.vars.roundProps : r.vars.roundProps.split(","), a = o.length, s = {}, l = r._propLookup.roundProps; --a > -1;) s[o[a]] = Math.round;
                        for (a = o.length; --a > -1;)
                            for (t = o[a], n = r._firstPT; n;) i = n._next, n.pg ? n.t._mod(s) : n.n === t && (2 === n.f && n.t ? e(n.t._firstPT) : (this._add(n.t, t, n.s, n.c), i && (i._prev = n._prev), n._prev ? n._prev._next = i : r._firstPT === n && (r._firstPT = i), n._next = n._prev = null, r._propLookup[t] = l)), n = i;
                        return !1
                    }, n._add = function(t, e, n, i) {
                        this._addTween(t, e, n, n + i, e, Math.round), this._overwriteProps.push(e)
                    }
                }(),
                function() {
                    _gsScope._gsDefine.plugin({
                        propName: "attr",
                        API: 2,
                        version: "0.6.1",
                        init: function(t, e, n, i) {
                            var r, o;
                            if ("function" != typeof t.setAttribute) return !1;
                            for (r in e) o = e[r], "function" == typeof o && (o = o(i, t)), this._addTween(t, "setAttribute", t.getAttribute(r) + "", o + "", r, !1, r), this._overwriteProps.push(r);
                            return !0
                        }
                    })
                }(), _gsScope._gsDefine.plugin({
                    propName: "directionalRotation",
                    version: "0.3.1",
                    API: 2,
                    init: function(t, e, n, i) {
                        "object" != typeof e && (e = {
                            rotation: e
                        }), this.finals = {};
                        var r, o, a, s, l, u, c = !0 === e.useRadians ? 2 * Math.PI : 360;
                        for (r in e) "useRadians" !== r && (s = e[r], "function" == typeof s && (s = s(i, t)), u = (s + "").split("_"), o = u[0], a = parseFloat("function" != typeof t[r] ? t[r] : t[r.indexOf("set") || "function" != typeof t["get" + r.substr(3)] ? r : "get" + r.substr(3)]()), s = this.finals[r] = "string" == typeof o && "=" === o.charAt(1) ? a + parseInt(o.charAt(0) + "1", 10) * Number(o.substr(2)) : Number(o) || 0, l = s - a, u.length && (o = u.join("_"), -1 !== o.indexOf("short") && (l %= c) !== l % (c / 2) && (l = l < 0 ? l + c : l - c), -1 !== o.indexOf("_cw") && l < 0 ? l = (l + 9999999999 * c) % c - (l / c | 0) * c : -1 !== o.indexOf("ccw") && l > 0 && (l = (l - 9999999999 * c) % c - (l / c | 0) * c)), (l > 1e-6 || l < -1e-6) && (this._addTween(t, r, a, a + l, r), this._overwriteProps.push(r)));
                        return !0
                    },
                    set: function(t) {
                        var e;
                        if (1 !== t) this._super.setRatio.call(this, t);
                        else
                            for (e = this._firstPT; e;) e.f ? e.t[e.p](this.finals[e.p]) : e.t[e.p] = this.finals[e.p], e = e._next
                    }
                })._autoCSS = !0, _gsScope._gsDefine("easing.Back", ["easing.Ease"], function(t) {
                    var e, n, i, r, o = _gsScope.GreenSockGlobals || _gsScope,
                        a = o.com.greensock,
                        s = 2 * Math.PI,
                        l = Math.PI / 2,
                        u = a._class,
                        c = function(e, n) {
                            var i = u("easing." + e, function() {}, !0),
                                r = i.prototype = new t;
                            return r.constructor = i, r.getRatio = n, i
                        },
                        h = t.register || function() {},
                        p = function(t, e, n, i, r) {
                            var o = u("easing." + t, {
                                easeOut: new e,
                                easeIn: new n,
                                easeInOut: new i
                            }, !0);
                            return h(o, t), o
                        },
                        f = function(t, e, n) {
                            this.t = t, this.v = e, n && (this.next = n, n.prev = this, this.c = n.v - e, this.gap = n.t - t)
                        },
                        d = function(e, n) {
                            var i = u("easing." + e, function(t) {
                                    this._p1 = t || 0 === t ? t : 1.70158, this._p2 = 1.525 * this._p1
                                }, !0),
                                r = i.prototype = new t;
                            return r.constructor = i, r.getRatio = n, r.config = function(t) {
                                return new i(t)
                            }, i
                        },
                        m = p("Back", d("BackOut", function(t) {
                            return (t -= 1) * t * ((this._p1 + 1) * t + this._p1) + 1
                        }), d("BackIn", function(t) {
                            return t * t * ((this._p1 + 1) * t - this._p1)
                        }), d("BackInOut", function(t) {
                            return (t *= 2) < 1 ? .5 * t * t * ((this._p2 + 1) * t - this._p2) : .5 * ((t -= 2) * t * ((this._p2 + 1) * t + this._p2) + 2)
                        })),
                        g = u("easing.SlowMo", function(t, e, n) {
                            e = e || 0 === e ? e : .7, null == t ? t = .7 : t > 1 && (t = 1), this._p = 1 !== t ? e : 0, this._p1 = (1 - t) / 2, this._p2 = t, this._p3 = this._p1 + this._p2, this._calcEnd = !0 === n
                        }, !0),
                        _ = g.prototype = new t;
                    return _.constructor = g, _.getRatio = function(t) {
                        var e = t + (.5 - t) * this._p;
                        return t < this._p1 ? this._calcEnd ? 1 - (t = 1 - t / this._p1) * t : e - (t = 1 - t / this._p1) * t * t * t * e : t > this._p3 ? this._calcEnd ? 1 === t ? 0 : 1 - (t = (t - this._p3) / this._p1) * t : e + (t - e) * (t = (t - this._p3) / this._p1) * t * t * t : this._calcEnd ? 1 : e
                    }, g.ease = new g(.7, .7), _.config = g.config = function(t, e, n) {
                        return new g(t, e, n)
                    }, e = u("easing.SteppedEase", function(t, e) {
                        t = t || 1, this._p1 = 1 / t, this._p2 = t + (e ? 0 : 1), this._p3 = e ? 1 : 0
                    }, !0), _ = e.prototype = new t, _.constructor = e, _.getRatio = function(t) {
                        return t < 0 ? t = 0 : t >= 1 && (t = .999999999), ((this._p2 * t | 0) + this._p3) * this._p1
                    }, _.config = e.config = function(t, n) {
                        return new e(t, n)
                    }, n = u("easing.ExpoScaleEase", function(t, e, n) {
                        this._p1 = Math.log(e / t), this._p2 = e - t, this._p3 = t, this._ease = n
                    }, !0), _ = n.prototype = new t, _.constructor = n, _.getRatio = function(t) {
                        return this._ease && (t = this._ease.getRatio(t)), (this._p3 * Math.exp(this._p1 * t) - this._p3) / this._p2
                    }, _.config = n.config = function(t, e, i) {
                        return new n(t, e, i)
                    }, i = u("easing.RoughEase", function(e) {
                        e = e || {};
                        for (var n, i, r, o, a, s, l = e.taper || "none", u = [], c = 0, h = 0 | (e.points || 20), p = h, d = !1 !== e.randomize, m = !0 === e.clamp, g = e.template instanceof t ? e.template : null, _ = "number" == typeof e.strength ? .4 * e.strength : .4; --p > -1;) n = d ? Math.random() : 1 / h * p, i = g ? g.getRatio(n) : n, "none" === l ? r = _ : "out" === l ? (o = 1 - n, r = o * o * _) : "in" === l ? r = n * n * _ : n < .5 ? (o = 2 * n, r = o * o * .5 * _) : (o = 2 * (1 - n), r = o * o * .5 * _), d ? i += Math.random() * r - .5 * r : p % 2 ? i += .5 * r : i -= .5 * r, m && (i > 1 ? i = 1 : i < 0 && (i = 0)), u[c++] = {
                            x: n,
                            y: i
                        };
                        for (u.sort(function(t, e) {
                                return t.x - e.x
                            }), s = new f(1, 1, null), p = h; --p > -1;) a = u[p], s = new f(a.x, a.y, s);
                        this._prev = new f(0, 0, 0 !== s.t ? s : s.next)
                    }, !0), _ = i.prototype = new t, _.constructor = i, _.getRatio = function(t) {
                        var e = this._prev;
                        if (t > e.t) {
                            for (; e.next && t >= e.t;) e = e.next;
                            e = e.prev
                        } else
                            for (; e.prev && t <= e.t;) e = e.prev;
                        return this._prev = e, e.v + (t - e.t) / e.gap * e.c
                    }, _.config = function(t) {
                        return new i(t)
                    }, i.ease = new i, p("Bounce", c("BounceOut", function(t) {
                        return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375
                    }), c("BounceIn", function(t) {
                        return (t = 1 - t) < 1 / 2.75 ? 1 - 7.5625 * t * t : t < 2 / 2.75 ? 1 - (7.5625 * (t -= 1.5 / 2.75) * t + .75) : t < 2.5 / 2.75 ? 1 - (7.5625 * (t -= 2.25 / 2.75) * t + .9375) : 1 - (7.5625 * (t -= 2.625 / 2.75) * t + .984375)
                    }), c("BounceInOut", function(t) {
                        var e = t < .5;
                        return t = e ? 1 - 2 * t : 2 * t - 1, t < 1 / 2.75 ? t *= 7.5625 * t : t = t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375, e ? .5 * (1 - t) : .5 * t + .5
                    })), p("Circ", c("CircOut", function(t) {
                        return Math.sqrt(1 - (t -= 1) * t)
                    }), c("CircIn", function(t) {
                        return -(Math.sqrt(1 - t * t) - 1)
                    }), c("CircInOut", function(t) {
                        return (t *= 2) < 1 ? -.5 * (Math.sqrt(1 - t * t) - 1) : .5 * (Math.sqrt(1 - (t -= 2) * t) + 1)
                    })), r = function(e, n, i) {
                        var r = u("easing." + e, function(t, e) {
                                this._p1 = t >= 1 ? t : 1, this._p2 = (e || i) / (t < 1 ? t : 1), this._p3 = this._p2 / s * (Math.asin(1 / this._p1) || 0), this._p2 = s / this._p2
                            }, !0),
                            o = r.prototype = new t;
                        return o.constructor = r, o.getRatio = n, o.config = function(t, e) {
                            return new r(t, e)
                        }, r
                    }, p("Elastic", r("ElasticOut", function(t) {
                        return this._p1 * Math.pow(2, -10 * t) * Math.sin((t - this._p3) * this._p2) + 1
                    }, .3), r("ElasticIn", function(t) {
                        return -this._p1 * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - this._p3) * this._p2)
                    }, .3), r("ElasticInOut", function(t) {
                        return (t *= 2) < 1 ? this._p1 * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - this._p3) * this._p2) * -.5 : this._p1 * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - this._p3) * this._p2) * .5 + 1
                    }, .45)), p("Expo", c("ExpoOut", function(t) {
                        return 1 - Math.pow(2, -10 * t)
                    }), c("ExpoIn", function(t) {
                        return Math.pow(2, 10 * (t - 1)) - .001
                    }), c("ExpoInOut", function(t) {
                        return (t *= 2) < 1 ? .5 * Math.pow(2, 10 * (t - 1)) : .5 * (2 - Math.pow(2, -10 * (t - 1)))
                    })), p("Sine", c("SineOut", function(t) {
                        return Math.sin(t * l)
                    }), c("SineIn", function(t) {
                        return 1 - Math.cos(t * l)
                    }), c("SineInOut", function(t) {
                        return -.5 * (Math.cos(Math.PI * t) - 1)
                    })), u("easing.EaseLookup", {
                        find: function(e) {
                            return t.map[e]
                        }
                    }, !0), h(o.SlowMo, "SlowMo", "ease,"), h(i, "RoughEase", "ease,"), h(e, "SteppedEase", "ease,"), m
                }, !0)
        }), _gsScope._gsDefine && _gsScope._gsQueue.pop()(),
        function(t, e) {
            "use strict";
            var n = {},
                i = t.document,
                r = t.GreenSockGlobals = t.GreenSockGlobals || t;
            if (!r.TweenLite) {
                var o, a, s, l, u, c = function(t) {
                        var e, n = t.split("."),
                            i = r;
                        for (e = 0; e < n.length; e++) i[n[e]] = i = i[n[e]] || {};
                        return i
                    },
                    h = c("com.greensock"),
                    p = function(t) {
                        var e, n = [],
                            i = t.length;
                        for (e = 0; e !== i; n.push(t[e++]));
                        return n
                    },
                    f = function() {},
                    d = function() {
                        var t = Object.prototype.toString,
                            e = t.call([]);
                        return function(n) {
                            return null != n && (n instanceof Array || "object" == typeof n && !!n.push && t.call(n) === e)
                        }
                    }(),
                    m = {},
                    g = function(e, i, o, a) {
                        this.sc = m[e] ? m[e].sc : [], m[e] = this, this.gsClass = null, this.func = o;
                        var s = [];
                        this.check = function(l) {
                            for (var u, h, p, f, d = i.length, _ = d; --d > -1;)(u = m[i[d]] || new g(i[d], [])).gsClass ? (s[d] = u.gsClass, _--) : l && u.sc.push(this);
                            if (0 === _ && o) {
                                if (h = ("com.greensock." + e).split("."), p = h.pop(), f = c(h.join("."))[p] = this.gsClass = o.apply(o, s), a)
                                    if (r[p] = n[p] = f, "undefined" != typeof module && module.exports)
                                        if ("TweenMax" === e) {
                                            module.exports = n.TweenMax = f;
                                            for (d in n) f[d] = n[d]
                                        } else n.TweenMax && (n.TweenMax[p] = f);
                                else "function" == typeof define && define.amd && define((t.GreenSockAMDPath ? t.GreenSockAMDPath + "/" : "") + e.split(".").pop(), [], function() {
                                    return f
                                });
                                for (d = 0; d < this.sc.length; d++) this.sc[d].check()
                            }
                        }, this.check(!0)
                    },
                    _ = t._gsDefine = function(t, e, n, i) {
                        return new g(t, e, n, i)
                    },
                    y = h._class = function(t, e, n) {
                        return e = e || function() {}, _(t, [], function() {
                            return e
                        }, n), e
                    };
                _.globals = r;
                var v = [0, 0, 1, 1],
                    b = y("easing.Ease", function(t, e, n, i) {
                        this._func = t, this._type = n || 0, this._power = i || 0, this._params = e ? v.concat(e) : v
                    }, !0),
                    x = b.map = {},
                    T = b.register = function(t, e, n, i) {
                        for (var r, o, a, s, l = e.split(","), u = l.length, c = (n || "easeIn,easeOut,easeInOut").split(","); --u > -1;)
                            for (o = l[u], r = i ? y("easing." + o, null, !0) : h.easing[o] || {}, a = c.length; --a > -1;) s = c[a], x[o + "." + s] = x[s + o] = r[s] = t.getRatio ? t : t[s] || new t
                    };
                for (s = b.prototype, s._calcEnd = !1, s.getRatio = function(t) {
                        if (this._func) return this._params[0] = t, this._func.apply(null, this._params);
                        var e = this._type,
                            n = this._power,
                            i = 1 === e ? 1 - t : 2 === e ? t : t < .5 ? 2 * t : 2 * (1 - t);
                        return 1 === n ? i *= i : 2 === n ? i *= i * i : 3 === n ? i *= i * i * i : 4 === n && (i *= i * i * i * i), 1 === e ? 1 - i : 2 === e ? i : t < .5 ? i / 2 : 1 - i / 2
                    }, o = ["Linear", "Quad", "Cubic", "Quart", "Quint,Strong"], a = o.length; --a > -1;) s = o[a] + ",Power" + a, T(new b(null, null, 1, a), s, "easeOut", !0), T(new b(null, null, 2, a), s, "easeIn" + (0 === a ? ",easeNone" : "")), T(new b(null, null, 3, a), s, "easeInOut");
                x.linear = h.easing.Linear.easeIn, x.swing = h.easing.Quad.easeInOut;
                var w = y("events.EventDispatcher", function(t) {
                    this._listeners = {}, this._eventTarget = t || this
                });
                s = w.prototype, s.addEventListener = function(t, e, n, i, r) {
                    r = r || 0;
                    var o, a, s = this._listeners[t],
                        c = 0;
                    for (this !== l || u || l.wake(), null == s && (this._listeners[t] = s = []), a = s.length; --a > -1;) o = s[a], o.c === e && o.s === n ? s.splice(a, 1) : 0 === c && o.pr < r && (c = a + 1);
                    s.splice(c, 0, {
                        c: e,
                        s: n,
                        up: i,
                        pr: r
                    })
                }, s.removeEventListener = function(t, e) {
                    var n, i = this._listeners[t];
                    if (i)
                        for (n = i.length; --n > -1;)
                            if (i[n].c === e) return void i.splice(n, 1)
                }, s.dispatchEvent = function(t) {
                    var e, n, i, r = this._listeners[t];
                    if (r)
                        for (e = r.length, e > 1 && (r = r.slice(0)), n = this._eventTarget; --e > -1;)(i = r[e]) && (i.up ? i.c.call(i.s || n, {
                            type: t,
                            target: n
                        }) : i.c.call(i.s || n))
                };
                var S = t.requestAnimationFrame,
                    P = t.cancelAnimationFrame,
                    M = Date.now || function() {
                        return (new Date).getTime()
                    },
                    C = M();
                for (o = ["ms", "moz", "webkit", "o"], a = o.length; --a > -1 && !S;) S = t[o[a] + "RequestAnimationFrame"], P = t[o[a] + "CancelAnimationFrame"] || t[o[a] + "CancelRequestAnimationFrame"];
                y("Ticker", function(t, e) {
                    var n, r, o, a, s, c = this,
                        h = M(),
                        p = !(!1 === e || !S) && "auto",
                        d = 500,
                        m = 33,
                        g = function(t) {
                            var e, i, l = M() - C;
                            l > d && (h += l - m), C += l, c.time = (C - h) / 1e3, e = c.time - s, (!n || e > 0 || !0 === t) && (c.frame++, s += e + (e >= a ? .004 : a - e), i = !0), !0 !== t && (o = r(g)), i && c.dispatchEvent("tick")
                        };
                    w.call(c), c.time = c.frame = 0, c.tick = function() {
                        g(!0)
                    }, c.lagSmoothing = function(t, e) {
                        if (!arguments.length) return d < 1e10;
                        d = t || 1e10, m = Math.min(e, d, 0)
                    }, c.sleep = function() {
                        null != o && (p && P ? P(o) : clearTimeout(o), r = f, o = null, c === l && (u = !1))
                    }, c.wake = function(t) {
                        null !== o ? c.sleep() : t ? h += -C + (C = M()) : c.frame > 10 && (C = M() - d + 5), r = 0 === n ? f : p && S ? S : function(t) {
                            return setTimeout(t, 1e3 * (s - c.time) + 1 | 0)
                        }, c === l && (u = !0), g(2)
                    }, c.fps = function(t) {
                        if (!arguments.length) return n;
                        n = t, a = 1 / (n || 60), s = this.time + a, c.wake()
                    }, c.useRAF = function(t) {
                        if (!arguments.length) return p;
                        c.sleep(), p = t, c.fps(n)
                    }, c.fps(t), setTimeout(function() {
                        "auto" === p && c.frame < 5 && "hidden" !== (i || {}).visibilityState && c.useRAF(!1)
                    }, 1500)
                }), s = h.Ticker.prototype = new h.events.EventDispatcher, s.constructor = h.Ticker;
                var E = y("core.Animation", function(t, e) {
                    if (this.vars = e = e || {}, this._duration = this._totalDuration = t || 0, this._delay = Number(e.delay) || 0, this._timeScale = 1, this._active = !0 === e.immediateRender, this.data = e.data, this._reversed = !0 === e.reversed, q) {
                        u || l.wake();
                        var n = this.vars.useFrames ? Y : q;
                        n.add(this, n._time), this.vars.paused && this.paused(!0)
                    }
                });
                l = E.ticker = new h.Ticker, s = E.prototype, s._dirty = s._gc = s._initted = s._paused = !1, s._totalTime = s._time = 0, s._rawPrevTime = -1, s._next = s._last = s._onUpdate = s._timeline = s.timeline = null, s._paused = !1;
                var O = function() {
                    u && M() - C > 2e3 && ("hidden" !== (i || {}).visibilityState || !l.lagSmoothing()) && l.wake();
                    var t = setTimeout(O, 2e3);
                    t.unref && t.unref()
                };
                O(), s.play = function(t, e) {
                    return null != t && this.seek(t, e), this.reversed(!1).paused(!1)
                }, s.pause = function(t, e) {
                    return null != t && this.seek(t, e), this.paused(!0)
                }, s.resume = function(t, e) {
                    return null != t && this.seek(t, e), this.paused(!1)
                }, s.seek = function(t, e) {
                    return this.totalTime(Number(t), !1 !== e)
                }, s.restart = function(t, e) {
                    return this.reversed(!1).paused(!1).totalTime(t ? -this._delay : 0, !1 !== e, !0)
                }, s.reverse = function(t, e) {
                    return null != t && this.seek(t || this.totalDuration(), e), this.reversed(!0).paused(!1)
                }, s.render = function(t, e, n) {}, s.invalidate = function() {
                    return this._time = this._totalTime = 0, this._initted = this._gc = !1, this._rawPrevTime = -1, !this._gc && this.timeline || this._enabled(!0), this
                }, s.isActive = function() {
                    var t, e = this._timeline,
                        n = this._startTime;
                    return !e || !this._gc && !this._paused && e.isActive() && (t = e.rawTime(!0)) >= n && t < n + this.totalDuration() / this._timeScale - 1e-7
                }, s._enabled = function(t, e) {
                    return u || l.wake(), this._gc = !t, this._active = this.isActive(), !0 !== e && (t && !this.timeline ? this._timeline.add(this, this._startTime - this._delay) : !t && this.timeline && this._timeline._remove(this, !0)), !1
                }, s._kill = function(t, e) {
                    return this._enabled(!1, !1)
                }, s.kill = function(t, e) {
                    return this._kill(t, e), this
                }, s._uncache = function(t) {
                    for (var e = t ? this : this.timeline; e;) e._dirty = !0, e = e.timeline;
                    return this
                }, s._swapSelfInParams = function(t) {
                    for (var e = t.length, n = t.concat(); --e > -1;) "{self}" === t[e] && (n[e] = this);
                    return n
                }, s._callback = function(t) {
                    var e = this.vars,
                        n = e[t],
                        i = e[t + "Params"],
                        r = e[t + "Scope"] || e.callbackScope || this;
                    switch (i ? i.length : 0) {
                        case 0:
                            n.call(r);
                            break;
                        case 1:
                            n.call(r, i[0]);
                            break;
                        case 2:
                            n.call(r, i[0], i[1]);
                            break;
                        default:
                            n.apply(r, i)
                    }
                }, s.eventCallback = function(t, e, n, i) {
                    if ("on" === (t || "").substr(0, 2)) {
                        var r = this.vars;
                        if (1 === arguments.length) return r[t];
                        null == e ? delete r[t] : (r[t] = e, r[t + "Params"] = d(n) && -1 !== n.join("").indexOf("{self}") ? this._swapSelfInParams(n) : n, r[t + "Scope"] = i), "onUpdate" === t && (this._onUpdate = e)
                    }
                    return this
                }, s.delay = function(t) {
                    return arguments.length ? (this._timeline.smoothChildTiming && this.startTime(this._startTime + t - this._delay), this._delay = t, this) : this._delay
                }, s.duration = function(t) {
                    return arguments.length ? (this._duration = this._totalDuration = t, this._uncache(!0), this._timeline.smoothChildTiming && this._time > 0 && this._time < this._duration && 0 !== t && this.totalTime(this._totalTime * (t / this._duration), !0), this) : (this._dirty = !1, this._duration)
                }, s.totalDuration = function(t) {
                    return this._dirty = !1, arguments.length ? this.duration(t) : this._totalDuration
                }, s.time = function(t, e) {
                    return arguments.length ? (this._dirty && this.totalDuration(), this.totalTime(t > this._duration ? this._duration : t, e)) : this._time
                }, s.totalTime = function(t, e, n) {
                    if (u || l.wake(), !arguments.length) return this._totalTime;
                    if (this._timeline) {
                        if (t < 0 && !n && (t += this.totalDuration()), this._timeline.smoothChildTiming) {
                            this._dirty && this.totalDuration();
                            var i = this._totalDuration,
                                r = this._timeline;
                            if (t > i && !n && (t = i), this._startTime = (this._paused ? this._pauseTime : r._time) - (this._reversed ? i - t : t) / this._timeScale, r._dirty || this._uncache(!1), r._timeline)
                                for (; r._timeline;) r._timeline._time !== (r._startTime + r._totalTime) / r._timeScale && r.totalTime(r._totalTime, !0), r = r._timeline
                        }
                        this._gc && this._enabled(!0, !1), this._totalTime === t && 0 !== this._duration || (L.length && K(), this.render(t, e, !1), L.length && K())
                    }
                    return this
                }, s.progress = s.totalProgress = function(t, e) {
                    var n = this.duration();
                    return arguments.length ? this.totalTime(n * t, e) : n ? this._time / n : this.ratio
                }, s.startTime = function(t) {
                    return arguments.length ? (t !== this._startTime && (this._startTime = t, this.timeline && this.timeline._sortChildren && this.timeline.add(this, t - this._delay)), this) : this._startTime
                }, s.endTime = function(t) {
                    return this._startTime + (0 != t ? this.totalDuration() : this.duration()) / this._timeScale
                }, s.timeScale = function(t) {
                    if (!arguments.length) return this._timeScale;
                    var e, n;
                    for (t = t || 1e-10, this._timeline && this._timeline.smoothChildTiming && (e = this._pauseTime, n = e || 0 === e ? e : this._timeline.totalTime(), this._startTime = n - (n - this._startTime) * this._timeScale / t), this._timeScale = t, n = this.timeline; n && n.timeline;) n._dirty = !0, n.totalDuration(), n = n.timeline;
                    return this
                }, s.reversed = function(t) {
                    return arguments.length ? (t != this._reversed && (this._reversed = t, this.totalTime(this._timeline && !this._timeline.smoothChildTiming ? this.totalDuration() - this._totalTime : this._totalTime, !0)), this) : this._reversed
                }, s.paused = function(t) {
                    if (!arguments.length) return this._paused;
                    var e, n, i = this._timeline;
                    return t != this._paused && i && (u || t || l.wake(), e = i.rawTime(), n = e - this._pauseTime, !t && i.smoothChildTiming && (this._startTime += n, this._uncache(!1)), this._pauseTime = t ? e : null, this._paused = t, this._active = this.isActive(), !t && 0 !== n && this._initted && this.duration() && (e = i.smoothChildTiming ? this._totalTime : (e - this._startTime) / this._timeScale, this.render(e, e === this._totalTime, !0))), this._gc && !t && this._enabled(!0, !1), this
                };
                var I = y("core.SimpleTimeline", function(t) {
                    E.call(this, 0, t), this.autoRemoveChildren = this.smoothChildTiming = !0
                });
                s = I.prototype = new E, s.constructor = I, s.kill()._gc = !1, s._first = s._last = s._recent = null, s._sortChildren = !1, s.add = s.insert = function(t, e, n, i) {
                    var r, o;
                    if (t._startTime = Number(e || 0) + t._delay, t._paused && this !== t._timeline && (t._pauseTime = t._startTime + (this.rawTime() - t._startTime) / t._timeScale), t.timeline && t.timeline._remove(t, !0), t.timeline = t._timeline = this, t._gc && t._enabled(!0, !0), r = this._last, this._sortChildren)
                        for (o = t._startTime; r && r._startTime > o;) r = r._prev;
                    return r ? (t._next = r._next, r._next = t) : (t._next = this._first, this._first = t), t._next ? t._next._prev = t : this._last = t, t._prev = r, this._recent = t, this._timeline && this._uncache(!0), this
                }, s._remove = function(t, e) {
                    return t.timeline === this && (e || t._enabled(!1, !0), t._prev ? t._prev._next = t._next : this._first === t && (this._first = t._next), t._next ? t._next._prev = t._prev : this._last === t && (this._last = t._prev), t._next = t._prev = t.timeline = null, t === this._recent && (this._recent = this._last), this._timeline && this._uncache(!0)), this
                }, s.render = function(t, e, n) {
                    var i, r = this._first;
                    for (this._totalTime = this._time = this._rawPrevTime = t; r;) i = r._next, (r._active || t >= r._startTime && !r._paused && !r._gc) && (r._reversed ? r.render((r._dirty ? r.totalDuration() : r._totalDuration) - (t - r._startTime) * r._timeScale, e, n) : r.render((t - r._startTime) * r._timeScale, e, n)), r = i
                }, s.rawTime = function() {
                    return u || l.wake(), this._totalTime
                };
                var R = y("TweenLite", function(e, n, i) {
                        if (E.call(this, n, i), this.render = R.prototype.render, null == e) throw "Cannot tween a null target.";
                        this.target = e = "string" != typeof e ? e : R.selector(e) || e;
                        var r, o, a, s = e.jquery || e.length && e !== t && e[0] && (e[0] === t || e[0].nodeType && e[0].style && !e.nodeType),
                            l = this.vars.overwrite;
                        if (this._overwrite = l = null == l ? z[R.defaultOverwrite] : "number" == typeof l ? l >> 0 : z[l], (s || e instanceof Array || e.push && d(e)) && "number" != typeof e[0])
                            for (this._targets = a = p(e), this._propLookup = [], this._siblings = [], r = 0; r < a.length; r++) o = a[r], o ? "string" != typeof o ? o.length && o !== t && o[0] && (o[0] === t || o[0].nodeType && o[0].style && !o.nodeType) ? (a.splice(r--, 1), this._targets = a = a.concat(p(o))) : (this._siblings[r] = $(o, this, !1), 1 === l && this._siblings[r].length > 1 && Q(o, this, null, 1, this._siblings[r])) : "string" == typeof(o = a[r--] = R.selector(o)) && a.splice(r + 1, 1) : a.splice(r--, 1);
                        else this._propLookup = {}, this._siblings = $(e, this, !1), 1 === l && this._siblings.length > 1 && Q(e, this, null, 1, this._siblings);
                        (this.vars.immediateRender || 0 === n && 0 === this._delay && !1 !== this.vars.immediateRender) && (this._time = -1e-10, this.render(Math.min(0, -this._delay)))
                    }, !0),
                    A = function(e) {
                        return e && e.length && e !== t && e[0] && (e[0] === t || e[0].nodeType && e[0].style && !e.nodeType)
                    },
                    k = function(t, e) {
                        var n, i = {};
                        for (n in t) H[n] || n in e && "transform" !== n && "x" !== n && "y" !== n && "width" !== n && "height" !== n && "className" !== n && "border" !== n || !(!W[n] || W[n] && W[n]._autoCSS) || (i[n] = t[n], delete t[n]);
                        t.css = i
                    };
                s = R.prototype = new E, s.constructor = R, s.kill()._gc = !1, s.ratio = 0, s._firstPT = s._targets = s._overwrittenProps = s._startAt = null, s._notifyPluginsOfEnabled = s._lazy = !1, R.version = "1.20.4", R.defaultEase = s._ease = new b(null, null, 1, 1), R.defaultOverwrite = "auto", R.ticker = l, R.autoSleep = 120, R.lagSmoothing = function(t, e) {
                    l.lagSmoothing(t, e)
                }, R.selector = t.$ || t.jQuery || function(e) {
                    var n = t.$ || t.jQuery;
                    return n ? (R.selector = n, n(e)) : void 0 === i ? e : i.querySelectorAll ? i.querySelectorAll(e) : i.getElementById("#" === e.charAt(0) ? e.substr(1) : e)
                };
                var L = [],
                    D = {},
                    B = /(?:(-|-=|\+=)?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/gi,
                    N = /[\+-]=-?[\.\d]/,
                    F = function(t) {
                        for (var e, n = this._firstPT; n;) e = n.blob ? 1 === t && null != this.end ? this.end : t ? this.join("") : this.start : n.c * t + n.s, n.m ? e = n.m(e, this._target || n.t) : e < 1e-6 && e > -1e-6 && !n.blob && (e = 0), n.f ? n.fp ? n.t[n.p](n.fp, e) : n.t[n.p](e) : n.t[n.p] = e, n = n._next
                    },
                    G = function(t, e, n, i) {
                        var r, o, a, s, l, u, c, h = [],
                            p = 0,
                            f = "",
                            d = 0;
                        for (h.start = t, h.end = e, t = h[0] = t + "", e = h[1] = e + "", n && (n(h), t = h[0], e = h[1]), h.length = 0, r = t.match(B) || [], o = e.match(B) || [], i && (i._next = null, i.blob = 1, h._firstPT = h._applyPT = i), l = o.length, s = 0; s < l; s++) c = o[s], u = e.substr(p, e.indexOf(c, p) - p), f += u || !s ? u : ",", p += u.length, d ? d = (d + 1) % 5 : "rgba(" === u.substr(-5) && (d = 1), c === r[s] || r.length <= s ? f += c : (f && (h.push(f), f = ""), a = parseFloat(r[s]), h.push(a), h._firstPT = {
                            _next: h._firstPT,
                            t: h,
                            p: h.length - 1,
                            s: a,
                            c: ("=" === c.charAt(1) ? parseInt(c.charAt(0) + "1", 10) * parseFloat(c.substr(2)) : parseFloat(c) - a) || 0,
                            f: 0,
                            m: d && d < 4 ? Math.round : 0
                        }), p += c.length;
                        return f += e.substr(p), f && h.push(f), h.setRatio = F, N.test(e) && (h.end = null), h
                    },
                    U = function(t, e, n, i, r, o, a, s, l) {
                        "function" == typeof i && (i = i(l || 0, t));
                        var u, c = typeof t[e],
                            h = "function" !== c ? "" : e.indexOf("set") || "function" != typeof t["get" + e.substr(3)] ? e : "get" + e.substr(3),
                            p = "get" !== n ? n : h ? a ? t[h](a) : t[h]() : t[e],
                            f = "string" == typeof i && "=" === i.charAt(1),
                            d = {
                                t: t,
                                p: e,
                                s: p,
                                f: "function" === c,
                                pg: 0,
                                n: r || e,
                                m: o ? "function" == typeof o ? o : Math.round : 0,
                                pr: 0,
                                c: f ? parseInt(i.charAt(0) + "1", 10) * parseFloat(i.substr(2)) : parseFloat(i) - p || 0
                            };
                        if (("number" != typeof p || "number" != typeof i && !f) && (a || isNaN(p) || !f && isNaN(i) || "boolean" == typeof p || "boolean" == typeof i ? (d.fp = a, u = G(p, f ? parseFloat(d.s) + d.c + (d.s + "").replace(/[0-9\-\.]/g, "") : i, s || R.defaultStringFilter, d), d = {
                                t: u,
                                p: "setRatio",
                                s: 0,
                                c: 1,
                                f: 2,
                                pg: 0,
                                n: r || e,
                                pr: 0,
                                m: 0
                            }) : (d.s = parseFloat(p), f || (d.c = parseFloat(i) - d.s || 0))), d.c) return (d._next = this._firstPT) && (d._next._prev = d), this._firstPT = d, d
                    },
                    j = R._internals = {
                        isArray: d,
                        isSelector: A,
                        lazyTweens: L,
                        blobDif: G
                    },
                    W = R._plugins = {},
                    X = j.tweenLookup = {},
                    V = 0,
                    H = j.reservedProps = {
                        ease: 1,
                        delay: 1,
                        overwrite: 1,
                        onComplete: 1,
                        onCompleteParams: 1,
                        onCompleteScope: 1,
                        useFrames: 1,
                        runBackwards: 1,
                        startAt: 1,
                        onUpdate: 1,
                        onUpdateParams: 1,
                        onUpdateScope: 1,
                        onStart: 1,
                        onStartParams: 1,
                        onStartScope: 1,
                        onReverseComplete: 1,
                        onReverseCompleteParams: 1,
                        onReverseCompleteScope: 1,
                        onRepeat: 1,
                        onRepeatParams: 1,
                        onRepeatScope: 1,
                        easeParams: 1,
                        yoyo: 1,
                        immediateRender: 1,
                        repeat: 1,
                        repeatDelay: 1,
                        data: 1,
                        paused: 1,
                        reversed: 1,
                        autoCSS: 1,
                        lazy: 1,
                        onOverwrite: 1,
                        callbackScope: 1,
                        stringFilter: 1,
                        id: 1,
                        yoyoEase: 1
                    },
                    z = {
                        none: 0,
                        all: 1,
                        auto: 2,
                        concurrent: 3,
                        allOnStart: 4,
                        preexisting: 5,
                        true: 1,
                        false: 0
                    },
                    Y = E._rootFramesTimeline = new I,
                    q = E._rootTimeline = new I,
                    J = 30,
                    K = j.lazyRender = function() {
                        var t, e = L.length;
                        for (D = {}; --e > -1;)(t = L[e]) && !1 !== t._lazy && (t.render(t._lazy[0], t._lazy[1], !0), t._lazy = !1);
                        L.length = 0
                    };
                q._startTime = l.time, Y._startTime = l.frame, q._active = Y._active = !0, setTimeout(K, 1), E._updateRoot = R.render = function() {
                    var t, e, n;
                    if (L.length && K(), q.render((l.time - q._startTime) * q._timeScale, !1, !1), Y.render((l.frame - Y._startTime) * Y._timeScale, !1, !1), L.length && K(), l.frame >= J) {
                        J = l.frame + (parseInt(R.autoSleep, 10) || 120);
                        for (n in X) {
                            for (e = X[n].tweens, t = e.length; --t > -1;) e[t]._gc && e.splice(t, 1);
                            0 === e.length && delete X[n]
                        }
                        if ((!(n = q._first) || n._paused) && R.autoSleep && !Y._first && 1 === l._listeners.tick.length) {
                            for (; n && n._paused;) n = n._next;
                            n || l.sleep()
                        }
                    }
                }, l.addEventListener("tick", E._updateRoot);
                var $ = function(t, e, n) {
                        var i, r, o = t._gsTweenID;
                        if (X[o || (t._gsTweenID = o = "t" + V++)] || (X[o] = {
                                target: t,
                                tweens: []
                            }), e && (i = X[o].tweens, i[r = i.length] = e, n))
                            for (; --r > -1;) i[r] === e && i.splice(r, 1);
                        return X[o].tweens
                    },
                    Z = function(t, e, n, i) {
                        var r, o, a = t.vars.onOverwrite;
                        return a && (r = a(t, e, n, i)), a = R.onOverwrite, a && (o = a(t, e, n, i)), !1 !== r && !1 !== o
                    },
                    Q = function(t, e, n, i, r) {
                        var o, a, s, l;
                        if (1 === i || i >= 4) {
                            for (l = r.length, o = 0; o < l; o++)
                                if ((s = r[o]) !== e) s._gc || s._kill(null, t, e) && (a = !0);
                                else if (5 === i) break;
                            return a
                        }
                        var u, c = e._startTime + 1e-10,
                            h = [],
                            p = 0,
                            f = 0 === e._duration;
                        for (o = r.length; --o > -1;)(s = r[o]) === e || s._gc || s._paused || (s._timeline !== e._timeline ? (u = u || tt(e, 0, f), 0 === tt(s, u, f) && (h[p++] = s)) : s._startTime <= c && s._startTime + s.totalDuration() / s._timeScale > c && ((f || !s._initted) && c - s._startTime <= 2e-10 || (h[p++] = s)));
                        for (o = p; --o > -1;)
                            if (s = h[o], 2 === i && s._kill(n, t, e) && (a = !0), 2 !== i || !s._firstPT && s._initted) {
                                if (2 !== i && !Z(s, e)) continue;
                                s._enabled(!1, !1) && (a = !0)
                            }
                        return a
                    },
                    tt = function(t, e, n) {
                        for (var i = t._timeline, r = i._timeScale, o = t._startTime; i._timeline;) {
                            if (o += i._startTime, r *= i._timeScale, i._paused) return -100;
                            i = i._timeline
                        }
                        return o /= r, o > e ? o - e : n && o === e || !t._initted && o - e < 2e-10 ? 1e-10 : (o += t.totalDuration() / t._timeScale / r) > e + 1e-10 ? 0 : o - e - 1e-10
                    };
                s._init = function() {
                    var t, e, n, i, r, o, a = this.vars,
                        s = this._overwrittenProps,
                        l = this._duration,
                        u = !!a.immediateRender,
                        c = a.ease;
                    if (a.startAt) {
                        this._startAt && (this._startAt.render(-1, !0), this._startAt.kill()), r = {};
                        for (i in a.startAt) r[i] = a.startAt[i];
                        if (r.data = "isStart", r.overwrite = !1, r.immediateRender = !0, r.lazy = u && !1 !== a.lazy, r.startAt = r.delay = null, r.onUpdate = a.onUpdate, r.onUpdateParams = a.onUpdateParams, r.onUpdateScope = a.onUpdateScope || a.callbackScope || this, this._startAt = R.to(this.target, 0, r), u)
                            if (this._time > 0) this._startAt = null;
                            else if (0 !== l) return
                    } else if (a.runBackwards && 0 !== l)
                        if (this._startAt) this._startAt.render(-1, !0), this._startAt.kill(), this._startAt = null;
                        else {
                            0 !== this._time && (u = !1), n = {};
                            for (i in a) H[i] && "autoCSS" !== i || (n[i] = a[i]);
                            if (n.overwrite = 0, n.data = "isFromStart", n.lazy = u && !1 !== a.lazy, n.immediateRender = u, this._startAt = R.to(this.target, 0, n), u) {
                                if (0 === this._time) return
                            } else this._startAt._init(), this._startAt._enabled(!1), this.vars.immediateRender && (this._startAt = null)
                        }
                    if (this._ease = c = c ? c instanceof b ? c : "function" == typeof c ? new b(c, a.easeParams) : x[c] || R.defaultEase : R.defaultEase, a.easeParams instanceof Array && c.config && (this._ease = c.config.apply(c, a.easeParams)), this._easeType = this._ease._type, this._easePower = this._ease._power, this._firstPT = null, this._targets)
                        for (o = this._targets.length, t = 0; t < o; t++) this._initProps(this._targets[t], this._propLookup[t] = {}, this._siblings[t], s ? s[t] : null, t) && (e = !0);
                    else e = this._initProps(this.target, this._propLookup, this._siblings, s, 0);
                    if (e && R._onPluginEvent("_onInitAllProps", this), s && (this._firstPT || "function" != typeof this.target && this._enabled(!1, !1)), a.runBackwards)
                        for (n = this._firstPT; n;) n.s += n.c, n.c = -n.c, n = n._next;
                    this._onUpdate = a.onUpdate, this._initted = !0
                }, s._initProps = function(e, n, i, r, o) {
                    var a, s, l, u, c, h;
                    if (null == e) return !1;
                    D[e._gsTweenID] && K(), this.vars.css || e.style && e !== t && e.nodeType && W.css && !1 !== this.vars.autoCSS && k(this.vars, e);
                    for (a in this.vars)
                        if (h = this.vars[a], H[a]) h && (h instanceof Array || h.push && d(h)) && -1 !== h.join("").indexOf("{self}") && (this.vars[a] = h = this._swapSelfInParams(h, this));
                        else if (W[a] && (u = new W[a])._onInitTween(e, this.vars[a], this, o)) {
                        for (this._firstPT = c = {
                                _next: this._firstPT,
                                t: u,
                                p: "setRatio",
                                s: 0,
                                c: 1,
                                f: 1,
                                n: a,
                                pg: 1,
                                pr: u._priority,
                                m: 0
                            }, s = u._overwriteProps.length; --s > -1;) n[u._overwriteProps[s]] = this._firstPT;
                        (u._priority || u._onInitAllProps) && (l = !0), (u._onDisable || u._onEnable) && (this._notifyPluginsOfEnabled = !0), c._next && (c._next._prev = c)
                    } else n[a] = U.call(this, e, a, "get", h, a, 0, null, this.vars.stringFilter, o);
                    return r && this._kill(r, e) ? this._initProps(e, n, i, r, o) : this._overwrite > 1 && this._firstPT && i.length > 1 && Q(e, this, n, this._overwrite, i) ? (this._kill(n, e), this._initProps(e, n, i, r, o)) : (this._firstPT && (!1 !== this.vars.lazy && this._duration || this.vars.lazy && !this._duration) && (D[e._gsTweenID] = !0), l)
                }, s.render = function(t, e, n) {
                    var i, r, o, a, s = this._time,
                        l = this._duration,
                        u = this._rawPrevTime;
                    if (t >= l - 1e-7 && t >= 0) this._totalTime = this._time = l, this.ratio = this._ease._calcEnd ? this._ease.getRatio(1) : 1, this._reversed || (i = !0, r = "onComplete", n = n || this._timeline.autoRemoveChildren), 0 === l && (this._initted || !this.vars.lazy || n) && (this._startTime === this._timeline._duration && (t = 0), (u < 0 || t <= 0 && t >= -1e-7 || 1e-10 === u && "isPause" !== this.data) && u !== t && (n = !0, u > 1e-10 && (r = "onReverseComplete")), this._rawPrevTime = a = !e || t || u === t ? t : 1e-10);
                    else if (t < 1e-7) this._totalTime = this._time = 0, this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0, (0 !== s || 0 === l && u > 0) && (r = "onReverseComplete", i = this._reversed), t < 0 && (this._active = !1, 0 === l && (this._initted || !this.vars.lazy || n) && (u >= 0 && (1e-10 !== u || "isPause" !== this.data) && (n = !0), this._rawPrevTime = a = !e || t || u === t ? t : 1e-10)), (!this._initted || this._startAt && this._startAt.progress()) && (n = !0);
                    else if (this._totalTime = this._time = t, this._easeType) {
                        var c = t / l,
                            h = this._easeType,
                            p = this._easePower;
                        (1 === h || 3 === h && c >= .5) && (c = 1 - c), 3 === h && (c *= 2), 1 === p ? c *= c : 2 === p ? c *= c * c : 3 === p ? c *= c * c * c : 4 === p && (c *= c * c * c * c), this.ratio = 1 === h ? 1 - c : 2 === h ? c : t / l < .5 ? c / 2 : 1 - c / 2
                    } else this.ratio = this._ease.getRatio(t / l);
                    if (this._time !== s || n) {
                        if (!this._initted) {
                            if (this._init(), !this._initted || this._gc) return;
                            if (!n && this._firstPT && (!1 !== this.vars.lazy && this._duration || this.vars.lazy && !this._duration)) return this._time = this._totalTime = s, this._rawPrevTime = u, L.push(this), void(this._lazy = [t, e]);
                            this._time && !i ? this.ratio = this._ease.getRatio(this._time / l) : i && this._ease._calcEnd && (this.ratio = this._ease.getRatio(0 === this._time ? 0 : 1))
                        }
                        for (!1 !== this._lazy && (this._lazy = !1), this._active || !this._paused && this._time !== s && t >= 0 && (this._active = !0), 0 === s && (this._startAt && (t >= 0 ? this._startAt.render(t, !0, n) : r || (r = "_dummyGS")), this.vars.onStart && (0 === this._time && 0 !== l || e || this._callback("onStart"))), o = this._firstPT; o;) o.f ? o.t[o.p](o.c * this.ratio + o.s) : o.t[o.p] = o.c * this.ratio + o.s, o = o._next;
                        this._onUpdate && (t < 0 && this._startAt && -1e-4 !== t && this._startAt.render(t, !0, n), e || (this._time !== s || i || n) && this._callback("onUpdate")), r && (this._gc && !n || (t < 0 && this._startAt && !this._onUpdate && -1e-4 !== t && this._startAt.render(t, !0, n), i && (this._timeline.autoRemoveChildren && this._enabled(!1, !1), this._active = !1), !e && this.vars[r] && this._callback(r), 0 === l && 1e-10 === this._rawPrevTime && 1e-10 !== a && (this._rawPrevTime = 0)))
                    }
                }, s._kill = function(t, e, n) {
                    if ("all" === t && (t = null), null == t && (null == e || e === this.target)) return this._lazy = !1, this._enabled(!1, !1);
                    e = "string" != typeof e ? e || this._targets || this.target : R.selector(e) || e;
                    var i, r, o, a, s, l, u, c, h, p = n && this._time && n._startTime === this._startTime && this._timeline === n._timeline;
                    if ((d(e) || A(e)) && "number" != typeof e[0])
                        for (i = e.length; --i > -1;) this._kill(t, e[i], n) && (l = !0);
                    else {
                        if (this._targets) {
                            for (i = this._targets.length; --i > -1;)
                                if (e === this._targets[i]) {
                                    s = this._propLookup[i] || {}, this._overwrittenProps = this._overwrittenProps || [], r = this._overwrittenProps[i] = t ? this._overwrittenProps[i] || {} : "all";
                                    break
                                }
                        } else {
                            if (e !== this.target) return !1;
                            s = this._propLookup, r = this._overwrittenProps = t ? this._overwrittenProps || {} : "all"
                        }
                        if (s) {
                            if (u = t || s, c = t !== r && "all" !== r && t !== s && ("object" != typeof t || !t._tempKill), n && (R.onOverwrite || this.vars.onOverwrite)) {
                                for (o in u) s[o] && (h || (h = []), h.push(o));
                                if ((h || !t) && !Z(this, n, e, h)) return !1
                            }
                            for (o in u)(a = s[o]) && (p && (a.f ? a.t[a.p](a.s) : a.t[a.p] = a.s, l = !0), a.pg && a.t._kill(u) && (l = !0), a.pg && 0 !== a.t._overwriteProps.length || (a._prev ? a._prev._next = a._next : a === this._firstPT && (this._firstPT = a._next), a._next && (a._next._prev = a._prev), a._next = a._prev = null), delete s[o]), c && (r[o] = 1);
                            !this._firstPT && this._initted && this._enabled(!1, !1)
                        }
                    }
                    return l
                }, s.invalidate = function() {
                    return this._notifyPluginsOfEnabled && R._onPluginEvent("_onDisable", this), this._firstPT = this._overwrittenProps = this._startAt = this._onUpdate = null, this._notifyPluginsOfEnabled = this._active = this._lazy = !1, this._propLookup = this._targets ? {} : [], E.prototype.invalidate.call(this), this.vars.immediateRender && (this._time = -1e-10, this.render(Math.min(0, -this._delay))), this
                }, s._enabled = function(t, e) {
                    if (u || l.wake(), t && this._gc) {
                        var n, i = this._targets;
                        if (i)
                            for (n = i.length; --n > -1;) this._siblings[n] = $(i[n], this, !0);
                        else this._siblings = $(this.target, this, !0)
                    }
                    return E.prototype._enabled.call(this, t, e), !(!this._notifyPluginsOfEnabled || !this._firstPT) && R._onPluginEvent(t ? "_onEnable" : "_onDisable", this)
                }, R.to = function(t, e, n) {
                    return new R(t, e, n)
                }, R.from = function(t, e, n) {
                    return n.runBackwards = !0, n.immediateRender = 0 != n.immediateRender, new R(t, e, n)
                }, R.fromTo = function(t, e, n, i) {
                    return i.startAt = n, i.immediateRender = 0 != i.immediateRender && 0 != n.immediateRender, new R(t, e, i)
                }, R.delayedCall = function(t, e, n, i, r) {
                    return new R(e, 0, {
                        delay: t,
                        onComplete: e,
                        onCompleteParams: n,
                        callbackScope: i,
                        onReverseComplete: e,
                        onReverseCompleteParams: n,
                        immediateRender: !1,
                        lazy: !1,
                        useFrames: r,
                        overwrite: 0
                    })
                }, R.set = function(t, e) {
                    return new R(t, 0, e)
                }, R.getTweensOf = function(t, e) {
                    if (null == t) return [];
                    t = "string" != typeof t ? t : R.selector(t) || t;
                    var n, i, r, o;
                    if ((d(t) || A(t)) && "number" != typeof t[0]) {
                        for (n = t.length, i = []; --n > -1;) i = i.concat(R.getTweensOf(t[n], e));
                        for (n = i.length; --n > -1;)
                            for (o = i[n], r = n; --r > -1;) o === i[r] && i.splice(n, 1)
                    } else if (t._gsTweenID)
                        for (i = $(t).concat(), n = i.length; --n > -1;)(i[n]._gc || e && !i[n].isActive()) && i.splice(n, 1);
                    return i || []
                }, R.killTweensOf = R.killDelayedCallsTo = function(t, e, n) {
                    "object" == typeof e && (n = e, e = !1);
                    for (var i = R.getTweensOf(t, e), r = i.length; --r > -1;) i[r]._kill(n, t)
                };
                var et = y("plugins.TweenPlugin", function(t, e) {
                    this._overwriteProps = (t || "").split(","), this._propName = this._overwriteProps[0], this._priority = e || 0, this._super = et.prototype
                }, !0);
                if (s = et.prototype, et.version = "1.19.0", et.API = 2, s._firstPT = null, s._addTween = U, s.setRatio = F, s._kill = function(t) {
                        var e, n = this._overwriteProps,
                            i = this._firstPT;
                        if (null != t[this._propName]) this._overwriteProps = [];
                        else
                            for (e = n.length; --e > -1;) null != t[n[e]] && n.splice(e, 1);
                        for (; i;) null != t[i.n] && (i._next && (i._next._prev = i._prev), i._prev ? (i._prev._next = i._next, i._prev = null) : this._firstPT === i && (this._firstPT = i._next)), i = i._next;
                        return !1
                    }, s._mod = s._roundProps = function(t) {
                        for (var e, n = this._firstPT; n;) e = t[this._propName] || null != n.n && t[n.n.split(this._propName + "_").join("")], e && "function" == typeof e && (2 === n.f ? n.t._applyPT.m = e : n.m = e), n = n._next
                    }, R._onPluginEvent = function(t, e) {
                        var n, i, r, o, a, s = e._firstPT;
                        if ("_onInitAllProps" === t) {
                            for (; s;) {
                                for (a = s._next, i = r; i && i.pr > s.pr;) i = i._next;
                                (s._prev = i ? i._prev : o) ? s._prev._next = s: r = s, (s._next = i) ? i._prev = s : o = s, s = a
                            }
                            s = e._firstPT = r
                        }
                        for (; s;) s.pg && "function" == typeof s.t[t] && s.t[t]() && (n = !0), s = s._next;
                        return n
                    }, et.activate = function(t) {
                        for (var e = t.length; --e > -1;) t[e].API === et.API && (W[(new t[e])._propName] = t[e]);
                        return !0
                    }, _.plugin = function(t) {
                        if (!(t && t.propName && t.init && t.API)) throw "illegal plugin definition.";
                        var e, n = t.propName,
                            i = t.priority || 0,
                            r = t.overwriteProps,
                            o = {
                                init: "_onInitTween",
                                set: "setRatio",
                                kill: "_kill",
                                round: "_mod",
                                mod: "_mod",
                                initAll: "_onInitAllProps"
                            },
                            a = y("plugins." + n.charAt(0).toUpperCase() + n.substr(1) + "Plugin", function() {
                                et.call(this, n, i), this._overwriteProps = r || []
                            }, !0 === t.global),
                            s = a.prototype = new et(n);
                        s.constructor = a, a.API = t.API;
                        for (e in o) "function" == typeof t[e] && (s[o[e]] = t[e]);
                        return a.version = t.version, et.activate([a]), a
                    }, o = t._gsQueue) {
                    for (a = 0; a < o.length; a++) o[a]();
                    for (s in m) m[s].func || t.console.log("GSAP encountered missing dependency: " + s)
                }
                u = !1
            }
        }("undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window), define("com/gsap/TweenMax", function() {}), define("game/MightyReelSpin", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "com/gsap/TweenMax"], function(t, e, n) {
            function i(t) {
                f = new PIXI.Container, f.visible = !1
            }

            function r(t) {
                d = t, m = 3 * d
            }

            function o(t) {
                y = t, b = y[1].length, f.removeChildren(), x = [];
                for (var e = 0; e < b; e += 3) a(y[1][e], Math.floor(e / 3));
                a(y[1][0], Math.floor(e / 3)), e += 3, a(y[1][3], Math.floor(e / 3))
            }

            function a(t, e) {
                var n = -b * d,
                    i = new PIXI.Sprite.fromImage("t" + t);
                i.x = T, i.y = n + e * m + w, x.push(i), f.addChild(i)
            }

            function s() {
                g = {
                    y: b * d
                };
                var t = Math.abs(g.y / 7e3);
                _ && _.kill(), _ = TweenMax.to(g, t, {
                    y: 0,
                    onUpdate: p,
                    ease: Power0.easeNone,
                    repeat: -1
                }), f.updateTransform(), f.visible = !0
            }

            function l(t) {
                v = t;
                var e = v[1] * d;
                g.y < e && (g.y += b * d), g.y - e < 400 && (g.y += b * d);
                var n = Math.abs((g.y - e) / 2500);
                _.kill(), _ = TweenMax.to(g, n, {
                    y: e,
                    onUpdate: p,
                    onComplete: u,
                    ease: Power1.easeOut
                })
            }

            function u() {
                t.publish("MightyReelSpin.End")
            }

            function c() {
                f.visible = !1
            }

            function h() {
                return f
            }

            function p() {
                var t = b * d;
                f.y = t - g.y % t
            }
            var f, d, m, g, _, y, v, b, x = [],
                T = 160,
                w = -117;
            return t.subscribe("platformMsg/ClientService/Game.Init", i), {
                getContainer: h,
                init: r,
                setStrip: o,
                spinStart: s,
                spinEnd: l,
                hide: c
            }
        }), define("game/SymbolTrails", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/componentManchester/rgsModel/rgsModel", "skbJet/component/gladPixiRenderer/Sprite", "com/gsap/TweenLite", "com/gsap/plugins/PixiPlugin"], function(t, e, n, i) {
            function r(t) {
                p = new PIXI.Sprite, t.reelContainer.addChildAt(p, 0), u = 0, c = 0, h = {}
            }

            function o(t) {
                t.y >= -150 && t.y < 600 && u++ % d == 0 && (a(t), ++c >= f && (c = 0))
            }

            function a(t) {
                null != h[c] && s(c);
                var e = new PIXI.Sprite.fromImage(t.image + "_trail");
                e.transform.position.x = t.x + e.width / 2, e.transform.position.y = t.y + e.height / 2, e.anchor.set(.5), p.addChild(e), h[c] = {
                    spr: e,
                    tween: TweenLite.to(e, m, {
                        pixi: {
                            scaleX: 1.2,
                            scaleY: 1.2
                        },
                        alpha: 0,
                        ease: Power1.easeInOut,
                        onComplete: s,
                        onCompleteParams: [c]
                    })
                }
            }

            function s(t) {
                null != h[t] && (p.removeChild(h[t].spr), h[t].tween.kill(), h[t] = null)
            }

            function l() {
                for (var t = 0; t < f; t++) s(t)
            }
            var u, c, h, p, f = 30,
                d = 1,
                m = .75;
            return t.subscribe("trailSymbolPassed", o), {
                init: r,
                addTrail: o,
                killAll: l
            }
        }), define("game/ReelController", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/gladPixiRenderer/Sprite", "game/component/phoenixReel/reelspin", "skbJet/componentManchester/rgsModel/rgsModel", "game/Audio", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/currencyHelper/currencyHelper", "skbJet/componentManchester/commonUI/slot/betData", "game/autoSpin", "game/config", "game/winSequence", "game/Utils", "game/MightyReelSpin", "game/SymbolTrails", "game/transitions/SpinePlayer", "com/gsap/TimelineMax"], function(t, e, n, i, r, o, a, s, l, u, c, h, p, f, d, m, g) {
            function _(t) {
                var e = r.gameLogic.PopulationOutcome(t + ".Reels");
                return void 0 == e && (e = r.gameLogic.PopulationOutcome("BaseGame.Reels")), e.stop
            }

            function y(t) {
                t.symbolSlotWidth = s.formatFloat(e.lib._reels_0_1._currentStyle._left) - s.formatFloat(e.lib._reels_0_0._currentStyle._left), t.symbolSlotHeight = s.formatFloat(e.lib._reels_1_0._currentStyle._top) - s.formatFloat(e.lib._reels_0_0._currentStyle._top), t.options.pos.x = s.formatFloat(e.lib._reelSetBG._currentStyle._left), t.options.pos.y = s.formatFloat(e.lib._reelSetBG._currentStyle._top), t.symbolSpacingW = s.formatFloat(e.lib._reels_0_1._currentStyle._left) - s.formatFloat(e.lib._reels_0_0._currentStyle._left) - t.symbolSlotWidth, t.symbolSpacingH = 0;
                for (var n = 0; n < t.options.reels.length; n++) t.options.reels[n].x = s.formatFloat(e.lib["_reels_0_" + n]._currentStyle._left), t.options.reels[n].y = s.formatFloat(e.lib["_reels_0_" + n]._currentStyle._top);
                for (n = 0; n < t.symbolNames.length; n++) {
                    var i = t.symbolNames[n];
                    t.spriteMap[i] = i
                }
                t.options.clip = [{
                    x: s.formatFloat(e.lib._reelMask._currentStyle._left),
                    y: s.formatFloat(e.lib._reelMask._currentStyle._top),
                    w: s.formatFloat(e.lib._reelMask._currentStyle._width),
                    h: s.formatFloat(e.lib._reelMask._currentStyle._height)
                }], e.lib._reelMask.pixiContainer.visible = !1;
                var r;
                Array.isArray(lt.StripInfo) ? lt.StripInfo.forEach(function(e) {
                    r = e["@name"], t.StripInfo[r] = e.Strip
                }) : (r = lt.StripInfo["@name"], lt.StripInfo["@name"] = r, t.StripInfo[r] = lt.StripInfo.Strip), T("MightyReel.Reel1")
            }

            function v(t) {
                return "TombOfPower" == t || "TombOfMystery" == t || "FreeSpin" == t ? "FreeSpin" : "BaseGame"
            }

            function b() {
                var t, e = r.gameLogic.OutcomeDetail.NextStage;
                return void 0 == r.gameLogic.TriggerOutcome(e + ".ReelSetNextSpin") ? "ReelSet1" : (t = r.gameLogic.TriggerOutcome(e + ".ReelSetNextSpin").Triggers ? Object.keys(r.gameLogic.TriggerOutcome(e + ".ReelSetNextSpin").Triggers)[0] : Object.keys(r.gameLogic.TriggerOutcome(e + ".ReelSet").Triggers)[0], t = t.replace(e + ".", ""))
            }

            function x() {
                var t;
                return void 0 == r.gameLogic.TriggerOutcome(ut + ".ReelSet") ? "ReelSet1" : (t = Object.keys(r.gameLogic.TriggerOutcome(ut + ".ReelSet").Triggers)[0], t = t.replace(ut + ".", ""))
            }

            function T(t) {
                var e = O();
                e.StripInfo["MightyReel.Custom"] = [
                    [],
                    [],
                    [],
                    [],
                    []
                ];
                var n, i = e.StripInfo[t],
                    r = e.StripInfo["MightyReel.Custom"];
                i.forEach(function(t, e) {
                    for (r[e] = [], n = 0; n < t.length; n++) r[e][n] = t[n], r[e][n] = 1 == e || 2 == e || 3 == e ? "ts00" : t[n]
                })
            }

            function w(t) {
                var e = O();
                e.StripInfo["WaterfallStacks.Custom"] = [
                    [],
                    [],
                    [],
                    [],
                    []
                ];
                var n = e.StripInfo["WaterfallStacks.Reels"],
                    i = e.StripInfo["WaterfallStacks.Custom"];
                n.forEach(function(e, n) {
                    i[n] = [], e.forEach(function(e, r) {
                        i[n][r] = "r00" == e ? t : e
                    })
                })
            }

            function S(t) {
                var e = 1 == t ? ut : r.gameLogic.OutcomeDetail.NextStage,
                    n = 1 == t ? x() : b();
                return "BaseGame" == e && 0 == t && (n = P()), e + "." + n
            }

            function P() {
                var t = l.betPerPattern,
                    e = r.gameLogic.KeyValuePairOutcome("BaseGame.ReelSets")[t];
                return e || (e = r.gameLogic.KeyValuePairOutcome("BaseGame.ReelSets").default), e
            }

            function M() {
                var t = E();
                mt.reelContainer.visible = !0, t.setReels({
                    reelset: S(!0),
                    stopLocations: _(ut)
                });
                var n = e.getTicker();
                ct && (n.remove(ct), ct = null), ct = function() {
                    t.process(n.elapsedMS)
                }, n.add(ct)
            }

            function C() {
                var t = E();
                mt.reelContainer.visible = !0, t.setReels({
                    reelset: S(!1),
                    stopLocations: _(ut)
                });
                var n = e.getTicker();
                ct && (n.remove(ct), ct = null), ct = function() {
                    t.process(n.elapsedMS)
                }, n.add(ct)
            }

            function E() {
                return mt.reel
            }

            function O() {
                return mt.reelConfig
            }

            function I() {
                R(5)
            }

            function R(t) {
                if (t >= 5) at.visible = !1, at.stop();
                else {
                    var e = mt.reelConfig,
                        n = e.options.reels[t].x;
                    at.visible ? TweenLite.to(at.transform.position, .7, {
                        x: -42 + n,
                        ease: Power1.easeInOut
                    }) : (at.transform.position.x = -42 + n, at.visible = !0, at.alpha = 0, at.gotoAndPlay(0), TweenLite.to(at, 1, {
                        alpha: 1,
                        ease: Power1.easeInOut
                    }))
                }
            }

            function A(t) {
                st = t.GameLogicResponse, lt = t.PaytableResponse, ut = st.OutcomeDetail.Stage, mt.reelConfig = c.getBasicReelConfig(), y(mt.reelConfig), mt.reel = i(e.getPixiRenderer(), mt.reelConfig), mt.reelContainer = mt.reel.getContainer(), f.init(mt.reelConfig.symbolSlotHeight), it = f.getContainer(), mt.reelContainer.addChild(it), rt = new PIXI.Sprite.fromImage("reelMask"), rt.transform.position.x = -238, rt.transform.position.y = -138, e.lib._reelLayer.pixiContainer.addChild(mt.reelContainer, rt), mt.reelContainer.mask = rt, d.init(mt), e.lib._reelSetBG.pixiContainer.visible = !1, mt.winPresentation = mt.reel.getWinPresentationLayer(), h.onGameInit(t, {
                    config: mt.reelConfig,
                    showReelMask: k,
                    winPresentation: mt.winPresentation
                }), M(), ot = e.lib._reelAnticipation.pixiContainer, ot.removeChildren(), at = p.getAnimatedSprite("anticipationReel"), at.loop = !0, at.animationSpeed = .3, at.visible = !1, at.transform.scale.x = 1.2, at.transform.scale.y = 1.2, ot.addChild(at)
            }

            function k(t) {
                mt.reelContainer.mask = 1 == t ? rt : null, rt.visible = t
            }

            function L() {
                t.publish("nextState")
            }

            function D(t) {
                dt = t
            }

            function B(e) {
                k(!0);
                var n = S(!1),
                    i = [0, 0, 0, 0, 0];
                if ("MightyReel" == e.nextStage) {
                    0 == wt && V();
                    var a = "MightyReel.Reel" + String(wt - 1);
                    T(a), n = "MightyReel.Custom";
                    var s = O();
                    f.setStrip(s.StripInfo[a]), f.spinStart(), i = [0, 0, 0, 0, 0]
                } else "MightyReel" == e.response.OutcomeDetail.Stage && (0 == Tt && (V(!0), V(!0)), n = "MightyReel.Reel" + String(Tt - 1));
                var l = {
                    startTicks: i,
                    startBounce: [1, 3, 7, 12, 16, 22, 27, 31, 35, 37, 38, 36, 33, 26, 17, 4],
                    startTimer: [0, 0, 0, 0, 0],
                    reelSpeed: [-3400, -3400, -3400, -3400, -3400],
                    stopLocations: _(e.nextStage),
                    reelset: n
                };
                l.populationOutcome = null != dt ? dt : r.gameLogic.PopulationOutcome(ut + ".Reels").map, pt = 0;
                var u = E();
                h.resetAnimations(), "BaseGame" != e.response.OutcomeDetail.NextStage && "BaseGame" == v(e.response.OutcomeDetail.NextStage) || h.clearWinMeter(), nt = l, u.spin(l, L), t.publish("ReelController.spinStarted"), dt = null, TweenLite.delayedCall(.5, function() {
                    o.play("ReelSpinLoop", 2, !0)
                })
            }

            function N(t) {
                var e = E(),
                    n = "MightyReel.Reel" + String(Tt - 1);
                e.setReels({
                    reelset: n,
                    stopLocations: _(ut)
                }), k(!1)
            }

            function F(t, e) {
                var n = "b01Anim",
                    i = [1, null, 2, null, 3];
                "BaseGame" === ut ? "BOUNCE" === e ? (o.play(St[t][0], St[t][1]), _t[t] && _t[t] == i[t] && p.shakeScreen(1, 10 * i[t]), null != bt[t] && (o.play(ft[pt][0], ft[pt][1], !1), pt++), _t[t] && _t[t] == i[t] && o.play(Pt[t][0], Pt[t][1], !1)) : "STOPPED" === e && (_t[t] && _t[t] == i[t] && (4 == t && (n = "TombOfPower" == r.gameLogic.OutcomeDetail.NextStage ? "b02Anim" : "b03Anim"), h.playSymbolAnim(vt[t], n)), null != bt[t] && h.showModifierLand(bt[t]), null != xt && t >= xt && R(t + 1), t == xt && (o.play("BonusTransition", 1, !1), m.transitionIn("Modifier", U)), 4 == t && 1 == wt && m.transitionOut("Modifier"), 2 == t && yt.length >= 2 && 2 === yt[1] && (o.play("BonusTransition", 1, !1), m.transitionIn("BonusTrigger", j)), 4 == t && 2 == yt.length && 2 === yt[1] && m.transitionOut("BonusTrigger", G), 3 == t && yt.length >= 2 && 2 === yt[1] && R(4), 4 == t && I()) : "BOUNCE" === e && X(t)
            }

            function G() {
                m.setSky("BaseGame")
            }

            function U() {
                m.setSky("Modifier")
            }

            function j() {
                m.setSky("BonusTrigger")
            }

            function W() {
                var t = r.gameLogic.PopulationOutcome("BaseGame.Reels").map;
                for (var e in t)
                    if ("t01" == t[e]) return Number(e.charAt(3));
                return null
            }

            function X(t) {
                if ("TombOfPower" == ut)
                    for (var e = r.gameLogic.PopulationOutcome("TombOfPower.Reels"), n = 0; n < 3; n++) "w02" == e.map["L0C" + t + "R" + n] && o.play(Pt[4][0], Pt[4][1], !1)
            }

            function V(t) {
                if (xt = null, Tt = wt, wt = 0, bt = [null, null, null, null, null], "BaseGame" == ut || t) {
                    var e = W();
                    if (null != e) {
                        var n, i = r.gameLogic.HighlightOutcome("BaseGame.Scatter").Highlight.Scatter.cells;
                        i.forEach(function(t) {
                            n = Number(t.charAt(3)), bt[n] = t, ++wt
                        });
                        var o = 50;
                        xt = e;
                        var a, s = xt + 1;
                        for (a = s; a < 5; ++a) gt[a] = o, o += 50
                    }
                }
            }

            function H(t) {
                st = t.response, ut = st.OutcomeDetail.Stage, z();
                var e = "TombOfPower" == r.gameLogic.OutcomeDetail.NextStage ? "b02Anim" : "b03Anim";
                h.playSymbolAnim(vt[4], e)
            }

            function z() {
                _t = [], yt = [], vt = [];
                var t, e = ["b01", "b02", "b03"];
                t = void 0 === st.PopulationOutcome.length ? [st.PopulationOutcome] : st.PopulationOutcome;
                for (var n = 0; n < t.length; n++) {
                    var i = t[n];
                    if (i["@stage"] === ut) {
                        for (var r = 0, o = 0; o < i.Entry.length; o++) {
                            for (var a = i.Entry[o].Cell, s = !1, l = 0; l < a.length; l++)
                                if (-1 != e.indexOf(a[l]["#text"])) {
                                    s = !0, yt.push(o);
                                    break
                                }
                            s ? (r++, _t.push(r), vt.push(a[l]["@name"])) : (_t.push(null), vt.push(null))
                        }
                        break
                    }
                }
                yt.length >= 2 && 2 === yt[1] && (gt = [0, 8, 16, 24, 150])
            }

            function Y(e) {
                et = e, st = e.response, ut = st.OutcomeDetail.Stage, gt = "MightyReel" == ut ? [0, 0, 0, 0, 0] : [0, 8, 16, 24, 32], ht = !1;
                var n;
                e.specialSymbol ? (w(e.specialSymbol), n = "WaterfallStacks.Custom") : (n = S(!0), "MightyReel" == e.response.OutcomeDetail.Stage && (n = "MightyReel.Custom", ht = !0)), z(), V();
                var i = E(),
                    r = O();
                i.resolve({
                    stopTicks: gt,
                    stopTimer: J(r.options.reels, st),
                    stopLocations: _(ut),
                    stopBounce: [-6, -11, -15, -18, -19, -20, -20, -14, -9, -6, -3, -1, 0, 1, 1, 1, 0],
                    reelset: n
                }, function() {
                    ht ? f.spinEnd(_(ut)) : (k(!1), o.stopChannel(2), t.publish("ReelsResolved", e.response.OutcomeDetail.NextStage))
                }, F)
            }

            function q() {
                o.stopChannel(2), t.publish("ReelsResolved", et.response.OutcomeDetail.NextStage)
            }

            function J(t, e) {
                return "MightyReel" == ut ? [500, 10, 10, 10, 1e3] : [0, 50, 100, 150, 200]
            }

            function K() {
                o.stopAll()
            }

            function $(t) {
                E().cancelSpin(), h.showPopReels(nt.populationOutcome)
            }

            function Z(t) {
                st = t.response, ut = st.OutcomeDetail.NextStage, C(), h.showPopReels(r.gameLogic.PopulationOutcome(ut + ".Reels").map)
            }

            function Q(t) {
                st = t.response, ut = st.OutcomeDetail.Stage;
                var e = "onStartGameInitial" == t.state ? "BaseGame" : ut;
                "BaseGame" != ut && "BaseGame" == st.OutcomeDetail.NextStage && "BaseGame" == v(ut) && (e = ut), M(), h.showPopReels(r.gameLogic.PopulationOutcome(e + ".Reels").map)
            }

            function tt() {
                return mt
            }
            var et, nt, it, rt, ot, at, st = (window.location.search.match(/&?assetPack=([^&]+)&?/)[1], null),
                lt = null,
                ut = null,
                ct = null,
                ht = !1,
                pt = 0,
                ft = [
                    ["SymbolScatter1Land", 4],
                    ["SymbolScatter2Land", 6],
                    ["SymbolScatter3Land", 17],
                    ["SymbolScatter4Land", 18],
                    ["SymbolScatter5Land", 19]
                ],
                dt = null,
                mt = {
                    reel: null,
                    reelContainer: null,
                    winPresentation: null,
                    reelConfig: null
                },
                gt = [0, 18, 36, 54, 72],
                _t = [],
                yt = [],
                vt = [],
                bt = [],
                xt = null,
                Tt = 0,
                wt = 0,
                St = [
                    ["Reel1Land", 12],
                    ["Reel2Land", 13],
                    ["Reel3Land", 14],
                    ["Reel4Land", 15],
                    ["Reel5Land", 16]
                ],
                Pt = [
                    ["SymbolBonus1Land", 12],
                    [""],
                    ["SymbolBonus2Land", 13],
                    [""],
                    ["SymbolBonus3Land", 14]
                ];
            return t.subscribe("platformMsg/ClientService/Game.Init", A), t.subscribe("ReelController.setPopulationMap", D), t.subscribe("MightyReelSpin.End", q), {
                updateBG2Reel: Z,
                getReelsConfig: O,
                onBeforeShowStage: Q,
                onBeforeRequest: B,
                onResolveStage: Y,
                onAbortNextStage: K,
                onResetNextStage: $,
                onGameInit: A,
                resetMightyReels: N,
                getConfig: tt,
                stopAnticipationReel: I,
                gipBonusSymbols: H
            }
        }), define("game/MessageBar", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "com/gsap/TimelineMax", "game/Utils", "com/gsap/easing/EasePack", "com/gsap/TweenLite"], function(t, e, n, i) {
            function r(t) {
                s = e.lib._messageBar.pixiContainer, s.visible = !1, s.removeChildren();
                var n = new PIXI.TextStyle({
                    dropShadow: !0,
                    dropShadowAlpha: .8,
                    dropShadowBlur: 2,
                    dropShadowColor: "#2e1a6a",
                    dropShadowDistance: 3,
                    fill: "white",
                    fontFamily: "Oswald, Arial, sans-serif",
                    fontSize: 48,
                    fontWeight: "bold",
                    lineJoin: "round",
                    stroke: "#0d3288",
                    strokeThickness: 5
                });
                l = new PIXI.Text("", n), l.position.x = e.lib._messageBar._currentStyle._width / 2 - l.width / 2, s.addChild(l)
            }

            function o(t) {
                l.text = t, l.position.x = e.lib._messageBar._currentStyle._width / 2 - l.width / 2, s.alpha = 1, s.transform.scale.x = 1, s.transform.scale.y = 1, s.visible = !0, u && u.kill(), u = new n({
                    delay: 0,
                    repeat: -1,
                    paused: !1
                }), u.add(TweenLite.to(s, .5, {
                    alpha: 0,
                    ease: Power1.easeIn
                })), u.add(TweenLite.to(s, .5, {
                    alpha: 1,
                    ease: Power1.easeOut
                }))
            }

            function a() {
                u && u.kill(), s.visible = !1
            }
            var s, l, u = (window.location.search.match(/&?assetPack=([^&]+)&?/)[1], null);
            return t.subscribe("platformMsg/ClientService/Game.Init", r), {
                show: o,
                hide: a
            }
        }), define("game/Tutorials", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/resourceLoader/resourceLib", "skbJet/componentManchester/rgsModel/rgsModel", "skbJet/component/gladPixiRenderer/Sprite", "game/Utils", "game/ModifierReel", "game/Audio", "com/gsap/TweenLite", "com/gsap/TweenMax"], function(t, e, n, i, r, o, a, s) {
            function l(t) {
                v = e.lib._baseGame_tutorial.pixiContainer, P = e.lib._powerTutorialText.pixiContainer, M = e.lib._mysteryTutorialText.pixiContainer
            }

            function u(t) {
                e.lib._baseGame_tutorial_logo_mighty.pixiContainer.children[0].texture = a.getLogo("MightyReel"), e.lib._baseGame_tutorial_logo_obelisk.pixiContainer.children[0].texture = a.getLogo("ObeliskWilds"), e.lib._baseGame_tutorial_logo_sun.pixiContainer.children[0].texture = a.getLogo("SunbeamWilds"), e.lib._baseGame_tutorial_logo_water.pixiContainer.children[0].texture = a.getLogo("WaterfallStacks"), o.addButtonInteraction(e.lib._baseGame_tutorial_close, "desktop_playButton"), e.lib._baseGame_tutorial_magicTitleText.pixiContainer.removeChildren(), b = new PIXI.Text(n.i18n.game.Game.Tutorials.basegame_magicTitleText, new PIXI.TextStyle({
                    dropShadow: !0,
                    dropShadowAngle: .9,
                    dropShadowBlur: 5,
                    dropShadowColor: "#59470b",
                    dropShadowDistance: 3,
                    fill: ["#eaaf35", "#f9e67e", "#f6a159", "#ffffa8", "#efbc52", "#fcf1ad"],
                    fillGradientStops: [.3, .4, .5, .6, .7],
                    fontFamily: "Oswald, Arial, sans-serif",
                    fontSize: 50,
                    lineJoin: "round",
                    stroke: "#fdee97",
                    align: "center",
                    padding: 12,
                    strokeThickness: 3
                })), b.position.x = e.lib._baseGame_tutorial_magicTitleText._currentStyle._width / 2 - b.width / 2, e.lib._baseGame_tutorial_magicTitleText.pixiContainer.addChild(b), x = new PIXI.Text(n.i18n.game.Game.Tutorials.basegame_pyramidText, new PIXI.TextStyle({
                    dropShadow: !0,
                    dropShadowBlur: 7,
                    dropShadowColor: "#de4be2",
                    dropShadowDistance: 0,
                    fill: "white",
                    fontFamily: "Oswald, Arial, sans-serif",
                    fontSize: 30,
                    lineHeight: 40,
                    fontWeight: "bold",
                    lineJoin: "round",
                    stroke: "#df21e4",
                    align: "center",
                    padding: 7,
                    strokeThickness: 3
                })), x.position.x = e.lib._baseGame_tutorial_pyramidText._currentStyle._width / 2 - x.width / 2, e.lib._baseGame_tutorial_pyramidText.pixiContainer.removeChildren(), e.lib._baseGame_tutorial_pyramidText.pixiContainer.addChild(x), d();
                var i = new PIXI.TextStyle({
                    dropShadow: !0,
                    dropShadowBlur: 7,
                    dropShadowColor: "#384bcd",
                    dropShadowDistance: 0,
                    fill: "white",
                    fontFamily: "Oswald, Arial, sans-serif",
                    fontSize: 30,
                    lineHeight: 40,
                    fontWeight: "bold",
                    lineJoin: "round",
                    stroke: "#0d3288",
                    align: "center",
                    padding: 7,
                    strokeThickness: 3
                });
                T = new PIXI.Text(n.i18n.game.Game.Tutorials.basegame_mysteryText, i), T.position.x = e.lib._baseGame_tutorial_mysteryText._currentStyle._width / 2 - T.width / 2, e.lib._baseGame_tutorial_mysteryText.pixiContainer.removeChildren(), e.lib._baseGame_tutorial_mysteryText.pixiContainer.addChild(T), w = new PIXI.Text(n.i18n.game.Game.Tutorials.basegame_powerText, i), w.position.x = e.lib._baseGame_tutorial_powerText._currentStyle._width / 2 - w.width / 2, e.lib._baseGame_tutorial_powerText.pixiContainer.removeChildren(), e.lib._baseGame_tutorial_powerText.pixiContainer.addChild(w), o.addButtonInteraction(e.lib._freeSpin_tutorial_close, "desktop_playButton"), S = e.lib._freeSpinTutorial.pixiContainer, S.visible = !1;
                var r;
                r = o.standardTextStyle(40), r.align = "left";
                var s = new PIXI.Text(n.i18n.game.Game.Tutorials.power_leftText, r);
                s.position.x = e.lib._powerLeftText._currentStyle._width / 2 - s.width / 2, e.lib._powerLeftText.pixiContainer.removeChildren(), e.lib._powerLeftText.pixiContainer.addChild(s), r = o.standardTextStyle(40), r.align = "center";
                var l = new PIXI.Text(n.i18n.game.Game.Tutorials.power_middleText, r);
                l.position.x = e.lib._powerMiddleText._currentStyle._width / 2 - l.width / 2, e.lib._powerMiddleText.pixiContainer.removeChildren(), e.lib._powerMiddleText.pixiContainer.addChild(l), r = o.standardTextStyle(40), r.align = "right";
                var u = new PIXI.Text(n.i18n.game.Game.Tutorials.power_rightText, r);
                u.position.x = e.lib._powerRightText._currentStyle._width / 2 - u.width / 2, e.lib._powerRightText.pixiContainer.removeChildren(), e.lib._powerRightText.pixiContainer.addChild(u), r = o.standardTextStyle(40), r.align = "left";
                var c = new PIXI.Text(n.i18n.game.Game.Tutorials.mystery_leftText, r);
                c.position.x = e.lib._mysteryLeftText._currentStyle._width / 2 - c.width / 2, e.lib._mysteryLeftText.pixiContainer.removeChildren(), e.lib._mysteryLeftText.pixiContainer.addChild(c), r = o.standardTextStyle(40), r.align = "center";
                var h = new PIXI.Text(n.i18n.game.Game.Tutorials.mystery_middleText, r);
                h.position.x = e.lib._mysteryMiddleText._currentStyle._width / 2 - h.width / 2, e.lib._mysteryMiddleText.pixiContainer.removeChildren(), e.lib._mysteryMiddleText.pixiContainer.addChild(h), r = o.standardTextStyle(40), r.align = "right";
                var p = new PIXI.Text(n.i18n.game.Game.Tutorials.mystery_rightText, r);
                p.position.x = e.lib._mysteryRightText._currentStyle._width / 2 - p.width / 2, e.lib._mysteryRightText.pixiContainer.removeChildren(), e.lib._mysteryRightText.pixiContainer.addChild(p)
            }

            function c(t, n, i) {
                E = n, S.visible = !0, i ? S.children[0].visible = P.visible = M.visible = !1 : (S.children[0].visible = P.visible = M.visible = !0, "TombOfPower" == t ? (e.lib._mysteryTutorialText.pixiContainer.visible = !1, e.lib._powerTutorialText.pixiContainer.visible = !0, S.children[0].texture = new PIXI.Texture.fromImage("TOP_helpPlaque")) : (e.lib._mysteryTutorialText.pixiContainer.visible = !0, e.lib._powerTutorialText.pixiContainer.visible = !1, S.children[0].texture = new PIXI.Texture.fromImage("TOM_helpPlaque")));
                var r = e.lib._freeSpin_tutorial_close.pixiContainer;
                r.interactive = !0, r.buttonMode = !0, _(r), r.on("pointertap", function(t) {
                    "mouse" === t.data.pointerType && 0 !== t.data.button || (h(), g(), "BonusMusicLoop" !== s.currentPlaying(0) && s.play("BonusMusicLoop", 0, !0))
                })
            }

            function h() {
                S.visible = !1, e.lib._freeSpin_tutorial_close.pixiContainer.off("pointertap", h), E.call(!0)
            }

            function p(t) {
                "landscape" == t.orientation ? v.children[0].texture = new PIXI.Texture.fromImage("basegameSplash") : v.children[0].texture = new PIXI.Texture.fromImage("basegameSplash_port")
            }

            function f() {
                TweenLite.to(v, .25, {
                    alpha: 0,
                    onComplete: function() {
                        v.visible = !1
                    }
                })
            }

            function d() {
                v.visible = !1
            }

            function m(t) {
                v.visible = !0, E = t;
                var n = e.lib._baseGame_tutorial_close.pixiContainer;
                n.interactive = !0, n.buttonMode = !0, n.alpha = 1, _(n), n.on("pointertap", function(t) {
                    "mouse" === t.data.pointerType && 0 !== t.data.button || (y(), g(), s.play("MusicIntro", 11, !1, null, .5))
                })
            }

            function g() {
                C && (C.kill(), C = null)
            }

            function _(t) {
                g(), C = TweenMax.fromTo(t, .5, {
                    alpha: 1
                }, {
                    alpha: .5,
                    ease: Power1.easeIn,
                    repeat: -1,
                    yoyo: !0
                })
            }

            function y() {
                e.lib._baseGame_tutorial_close.pixiContainer.off("pointertap", y), E.call(!0)
            }
            var v, b, x, T, w, S, P, M, C, E = null;
            return t.subscribe("platformMsg/Kernel/System.Init", l), t.subscribe("platformMsg/ClientService/Game.Init", u), t.subscribe("Orientation.AfterChange", p), {
                fadeBaseGameTutorial: f,
                hideBaseGameTutorial: d,
                showBaseGameTutorial: m,
                showBonusTutorial: c
            }
        }), define("game/BaseGame", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/resourceLoader/resourceLib", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/componentManchester/rgsModel/rgsModel", "game/Audio", "skbJet/component/currencyHelper/currencyHelper", "game/ReelController", "game/betController", "game/winSequence", "game/autoSpin", "game/UI", "game/Utils", "game/transitions/SpinePlayer", "game/MessageBar", "game/Tutorials", "game/Logos", "game/AwardCap", "com/gsap/TweenLite"], function(t, e, n, i, r, o, a, s, l, u, c, h, p, f, d, m, g, _, y) {
            function v(t) {
                tt = r.lib._theReels.pixiContainer, et = r.lib._reelDividers.pixiContainer.children[0], nt = r.lib._reelDiv1.pixiContainer, it = r.lib._reelDiv2.pixiContainer, p.hide(), f.addButtonInteraction(r.lib._baseGame_tutorial_close, "desktop_playButton"), TweenLite.to(r.lib._blackLayer.pixiContainer, .5, {
                    alpha: 0,
                    delay: 1,
                    ease: Power1.easeInOut,
                    onComplete: function() {
                        r.lib._blackLayer.pixiContainer.visible = !1, r.lib._blackLayer.pixiContainer.removeChildren()
                    }
                })
            }

            function b(t) {
                Z = t.serverConfig.channel, rt = r.lib._baseGame_tutorial.pixiContainer
            }

            function x() {
                T(), at.length <= 0 && (at = ot.slice(), at = f.shuffleArray(at)), a.play(at.pop(), 3, !1)
            }

            function T() {
                "BaseMusicLoop" !== a.currentPlaying(0) && a.play("BaseMusicLoop", 0, !0), "MusicIntro" === a.currentPlaying(11) && a.fadeOut(11, 300)
            }

            function w() {
                et.texture = t.Texture.fromImage("reelDividers"), nt.alpha = 1, it.alpha = 1, 1 != tt.alpha && S(1), p.disableFS(), _.show("BaseGame")
            }

            function S(t, e) {
                e ? TweenLite.to(tt, .5, {
                    alpha: t,
                    ease: Power1.easeInOut,
                    onComplete: e
                }) : TweenLite.to(tt, .5, {
                    alpha: t,
                    ease: Power1.easeInOut
                }), p.fade(t)
            }

            function P(t) {
                t ? g.fadeBaseGameTutorial() : g.hideBaseGameTutorial(), p.show(), p.enableBaseGame()
            }

            function M(t) {
                B(t), "Initial" === o.gameLogic.OutcomeDetail.GameStatus ? o.gameLogic.OutcomeDetail.Stage.indexOf("BaseGame") < 0 ? (l.onBeforeShowStage(t), g.showBaseGameTutorial(P)) : g.showBaseGameTutorial(P) : P()
            }

            function C(t) {
                -1 == t.response.OutcomeDetail.Stage.indexOf("Tomb") ? E(t) : d.transitionOut("Bonus", function() {
                    l.updateBG2Reel(t), E(t)
                })
            }

            function E(t) {
                p.showBaseGame(), w(), TweenLite.delayedCall(1, function() {
                    -1 != t.response.OutcomeDetail.Stage.indexOf("Tomb") ? A() : e.publish("nextState")
                })
            }

            function O(t) {
                TweenLite.delayedCall(h.isActive() ? 1 : .01, function() {
                    l.onBeforeRequest(t), u.tellConsole2DeductBet()
                })
            }

            function I(t) {
                u.tellConsolePlayload(), e.publish("nextState")
            }

            function R(t) {
                l.onResolveStage(t)
            }

            function A() {
                o.gameLogic.AwardCapOutcome("AwardCap").AwardCapExceeded ? y.show("BaseGame") : o.gameLogic.PrizeOutcome("Game.Total").totalPay && "BaseGame" === o.gameLogic.OutcomeDetail.NextStage ? c.start("BaseGame") : e.publish("nextState")
            }

            function k() {
                "BaseGame" === o.gameLogic.OutcomeDetail.Stage && A()
            }

            function L(t) {
                Q = t, w(), l.onBeforeShowStage(t), e.publish("nextState")
            }

            function D(t) {
                e.publish("nextState")
            }

            function B(t) {
                "modifierTrigger_OUT" == d.getCurrentAnim() && c.resetModifierSymbols(), "modifierTrigger_IN" == d.getCurrentAnim() || "modifierTrigger_OUT" == d.getCurrentAnim() ? (d.transitionOut("Modifier", N), a.fadeOut(1, 1500)) : "bonusTrigger_IN" == d.getCurrentAnim() || "bonusTrigger_OUT" == d.getCurrentAnim() ? d.transitionOut("BonusTrigger", N) : N()
            }

            function N() {
                d.setSky("BaseGame")
            }

            function F(t) {
                "BaseGame" === o.gameLogic.OutcomeDetail.Stage && -1 != d.getCurrentAnim().indexOf("basegame") && (d.setSky("BaseGamePyramid", function() {
                    d.setSky("BaseGame")
                }), a.play("SymbolFlybyv2", 1, !1))
            }

            function G(t) {
                p.enableBaseGame(), B(t)
            }

            function U(t) {
                var n = t.response.OutcomeDetail.NextStage; - 1 == n.indexOf("Tomb") ? e.publish("nextState") : (_.fade(), p.cancelAutoSpin(), a.play("MusicIntro", 11, !1, null, .5), a.play("BonusMusicLoop", 0, !0), j(n))
            }

            function j(t) {
                c.transformBonusSymbols(t, W)
            }

            function W() {
                TweenLite.delayedCall(3, X)
            }

            function X() {
                "BaseGame" === o.gameLogic.OutcomeDetail.Stage && -1 != o.gameLogic.OutcomeDetail.NextStage.indexOf("Tomb") && (m.hide(), S(0, V))
            }

            function V() {
                a.play("BonusTransition", 1, !1), d.transitionIn("Bonus", function() {
                    e.publish("nextState")
                })
            }

            function H(t) {
                l.onAbortNextStage(t), p.cancelAutoSpin(), e.publish("nextState")
            }

            function z(t) {
                l.onResetNextStage(t), p.enableBaseGame()
            }

            function Y(t) {
                e.publish("nextState")
            }

            function q(t) {
                Q = t, p.show(), p.gameInProgress(), -1 == t.response.OutcomeDetail.NextStage.indexOf("Tomb") ? e.publish("nextState") : "INT" == Z && J(!0)
            }

            function J(t) {
                _.fade(), p.cancelAutoSpin(), t || (a.play("MusicIntro", 11, !1, null, .5), a.play("BonusMusicLoop", 0, !0)), TweenLite.delayedCall(1, function() {
                    Q ? (l.gipBonusSymbols(Q), j(Q.response.OutcomeDetail.NextStage)) : X()
                })
            }

            function K(t) {
                e.publish("nextState")
            }

            function $() {
                "InProgress" == o.gameLogic.OutcomeDetail.GameStatus && -1 != o.gameLogic.OutcomeDetail.Stage.indexOf("Tomb") || "InProgress" == o.gameLogic.OutcomeDetail.GameStatus && -1 != o.gameLogic.OutcomeDetail.NextStage.indexOf("Tomb") && "INT" != Z ? -1 != o.gameLogic.OutcomeDetail.Stage.indexOf("Tomb") ? e.publish("nextState") : J(!0) : o.gameLogic.OutcomeDetail.GameStatus
            }
            var Z, Q, tt, et, nt, it, rt, ot = ["UiSpin1", "UiSpin2", "UiSpin3", "UiSpin4", "UiSpin5", "UiSpin6"],
                at = [];
            return e.subscribe("platformMsg/ClientService/Game.Init", v), e.subscribe("platformMsg/Kernel/System.Init", b), e.subscribe("ReelsResolved", k), e.subscribe("onSpinButtonClicked", x), e.subscribe("onPlayButtonClicked", X), e.subscribe("pyramidSymbolPassed", F), e.subscribe("audioPlayer.playerSelectedWhenGameLaunch", $), {
                onStartGameInitial: M,
                onEnterNextStage: C,
                onBeforeShowStage: L,
                onBeforeRequest: O,
                onMakeRequest: I,
                onResolveStage: R,
                onEndGame: D,
                onExitStage: U,
                onBeginNewGame: G,
                onAbortNextStage: H,
                onResetNextStage: z,
                onInProgressStage: Y,
                onStartGameInProgressStage: q,
                onStartGameInProgressNextStage: K
            }
        }),
        function(t) {
            if ("object" == typeof exports && "undefined" != typeof module) module.exports = t();
            else if ("function" == typeof define && define.amd) define("com/pixijs/pixi-multistyle-text", [], t);
            else {
                var e;
                e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this, e.pixiMultistyleText = t()
            }
        }(function() {
            var t;
            return function t(e, n, i) {
                function r(a, s) {
                    if (!n[a]) {
                        if (!e[a]) {
                            var l = "function" == typeof require && require;
                            if (!s && l) return l(a, !0);
                            if (o) return o(a, !0);
                            var u = new Error("Cannot find module '" + a + "'");
                            throw u.code = "MODULE_NOT_FOUND", u
                        }
                        var c = n[a] = {
                            exports: {}
                        };
                        e[a][0].call(c.exports, function(t) {
                            var n = e[a][1][t];
                            return r(n || t)
                        }, c, c.exports, t, e, n, i)
                    }
                    return n[a].exports
                }
                for (var o = "function" == typeof require && require, a = 0; a < i.length; a++) r(i[a]);
                return r
            }({
                1: [function(e, n, i) {
                    (function(r) {
                        ! function(e) {
                            if ("object" == typeof i && void 0 !== n) n.exports = e();
                            else if ("function" == typeof t && t.amd) t([], e);
                            else {
                                var o;
                                o = "undefined" != typeof window ? window : void 0 !== r ? r : "undefined" != typeof self ? self : this, o.MultiStyleText = e()
                            }
                        }(function() {
                            var t;
                            return function t(n, i, r) {
                                function o(s, l) {
                                    if (!i[s]) {
                                        if (!n[s]) {
                                            var u = "function" == typeof e && e;
                                            if (!l && u) return u(s, !0);
                                            if (a) return a(s, !0);
                                            var c = new Error("Cannot find module '" + s + "'");
                                            throw c.code = "MODULE_NOT_FOUND", c
                                        }
                                        var h = i[s] = {
                                            exports: {}
                                        };
                                        n[s][0].call(h.exports, function(t) {
                                            var e = n[s][1][t];
                                            return o(e || t)
                                        }, h, h.exports, t, n, i, r)
                                    }
                                    return i[s].exports
                                }
                                for (var a = "function" == typeof e && e, s = 0; s < r.length; s++) o(r[s]);
                                return o
                            }({
                                1: [function(t, e) {
                                    e.exports = t("./pixi-multistyle-text").default
                                }, {
                                    "./pixi-multistyle-text": 2
                                }],
                                2: [function(e, n, i) {
                                    var r = this && this.__extends || function(t, e) {
                                        function n() {
                                            this.constructor = t
                                        }
                                        for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]);
                                        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype, new n)
                                    };
                                    ! function(r) {
                                        if ("object" == typeof n && "object" == typeof n.exports) {
                                            var o = r(e, i);
                                            void 0 !== o && (n.exports = o)
                                        } else "function" == typeof t && t.amd && t(["require", "exports"], r)
                                    }(function(t, e) {
                                        "use strict";
                                        var n = function(t) {
                                            function e(e, n) {
                                                var i = t.call(this, e) || this;
                                                return i.styles = n, i
                                            }
                                            return r(e, t), Object.defineProperty(e.prototype, "styles", {
                                                set: function(t) {
                                                    this.textStyles = {}, this.textStyles.default = this.assign({}, e.DEFAULT_TAG_STYLE);
                                                    for (var n in t) "default" === n ? this.assign(this.textStyles.default, t[n]) : this.textStyles[n] = this.assign({}, t[n]);
                                                    this._style = new PIXI.TextStyle(this.textStyles.default), this.dirty = !0
                                                },
                                                enumerable: !0,
                                                configurable: !0
                                            }), e.prototype.setTagStyle = function(t, e) {
                                                t in this.textStyles ? this.assign(this.textStyles[t], e) : this.textStyles[t] = this.assign({}, e), this._style = new PIXI.TextStyle(this.textStyles.default), this.dirty = !0
                                            }, e.prototype.deleteTagStyle = function(t) {
                                                "default" === t ? this.textStyles.default = this.assign({}, e.DEFAULT_TAG_STYLE) : delete this.textStyles[t], this._style = new PIXI.TextStyle(this.textStyles.default), this.dirty = !0
                                            }, e.prototype._getTextDataPerLine = function(t) {
                                                for (var e = [], n = Object.keys(this.textStyles).join("|"), i = new RegExp("</?(" + n + ")>", "g"), r = [this.assign({}, this.textStyles.default)], o = 0; o < t.length; o++) {
                                                    for (var a = [], s = [], l = void 0; l = i.exec(t[o]);) s.push(l);
                                                    if (0 === s.length) a.push(this.createTextData(t[o], r[r.length - 1]));
                                                    else {
                                                        for (var u = 0, c = 0; c < s.length; c++) s[c].index > u && a.push(this.createTextData(t[o].substring(u, s[c].index), r[r.length - 1])), "/" === s[c][0][1] ? r.length > 1 && r.pop() : r.push(this.assign({}, r[r.length - 1], this.textStyles[s[c][1]])), u = s[c].index + s[c][0].length;
                                                        u < t[o].length && a.push(this.createTextData(t[o].substring(u), r[r.length - 1]))
                                                    }
                                                    e.push(a)
                                                }
                                                return e
                                            }, e.prototype.createTextData = function(t, e) {
                                                return {
                                                    text: t,
                                                    style: e,
                                                    width: 0,
                                                    height: 0,
                                                    fontProperties: void 0
                                                }
                                            }, e.prototype.getDropShadowPadding = function() {
                                                var t = this,
                                                    e = 0,
                                                    n = 0;
                                                return Object.keys(this.textStyles).forEach(function(i) {
                                                    var r = t.textStyles[i],
                                                        o = r.dropShadowDistance,
                                                        a = r.dropShadowBlur;
                                                    e = Math.max(e, o || 0), n = Math.max(n, a || 0)
                                                }), e + n
                                            }, e.prototype.updateText = function() {
                                                var t = this;
                                                if (this.dirty) {
                                                    this.texture.baseTexture.resolution = this.resolution;
                                                    var e = this.textStyles,
                                                        n = this.text;
                                                    this._style.wordWrap && (n = this.wordWrap(this.text));
                                                    for (var i = n.split(/(?:\r\n|\r|\n)/), r = this._getTextDataPerLine(i), o = [], a = [], s = 0, l = 0; l < i.length; l++) {
                                                        for (var u = 0, c = 0, h = 0; h < r[l].length; h++) {
                                                            var p = r[l][h].style;
                                                            this.context.font = PIXI.Text.getFontStyle(p), r[l][h].width = this.context.measureText(r[l][h].text).width, 0 === r[l][h].text.length && (r[l][h].width += (r[l][h].text.length - 1) * p.letterSpacing, h > 0 && (u += p.letterSpacing / 2), h < r[l].length - 1 && (u += p.letterSpacing / 2)), u += r[l][h].width, r[l][h].fontProperties = PIXI.Text.calculateFontProperties(this.context.font), r[l][h].height = r[l][h].fontProperties.fontSize + r[l][h].style.strokeThickness, c = Math.max(c, r[l][h].height)
                                                        }
                                                        o[l] = u, a[l] = c, s = Math.max(s, u)
                                                    }
                                                    var f = Object.keys(e).map(function(t) {
                                                            return e[t]
                                                        }),
                                                        d = f.reduce(function(t, e) {
                                                            return Math.max(t, e.strokeThickness || 0)
                                                        }, 0),
                                                        m = this.getDropShadowPadding(),
                                                        g = a.reduce(function(t, e) {
                                                            return Math.max(t, e)
                                                        }, 0),
                                                        _ = s + d + 2 * m,
                                                        y = g * i.length + 2 * m;
                                                    this.canvas.width = (_ + this.context.lineWidth) * this.resolution, this.canvas.height = y * this.resolution, this.context.scale(this.resolution, this.resolution), this.context.textBaseline = "alphabetic", this.context.lineJoin = "round";
                                                    for (var v = m, b = [], l = 0; l < r.length; l++) {
                                                        var x = r[l],
                                                            T = void 0;
                                                        switch (this._style.align) {
                                                            case "left":
                                                                T = m;
                                                                break;
                                                            case "center":
                                                                T = m + (s - o[l]) / 2;
                                                                break;
                                                            case "right":
                                                                T = m + s - o[l]
                                                        }
                                                        for (var h = 0; h < x.length; h++) {
                                                            var w = x[h],
                                                                S = w.style,
                                                                P = w.text,
                                                                M = w.fontProperties;
                                                            T += d / 2;
                                                            var C = d / 2 + v + M.ascent;
                                                            if ("bottom" === S.valign ? C += a[l] - x[h].height - (d - S.strokeThickness) / 2 : "middle" === S.valign && (C += (a[l] - x[h].height) / 2 - (d - S.strokeThickness) / 2), 0 === S.letterSpacing) b.push({
                                                                text: P,
                                                                style: S,
                                                                x: T,
                                                                y: C
                                                            }), T += x[h].width;
                                                            else {
                                                                this.context.font = PIXI.Text.getFontStyle(x[h].style);
                                                                for (var E = 0; E < P.length; E++)(E > 0 || h > 0) && (T += S.letterSpacing / 2), b.push({
                                                                    text: P.charAt(E),
                                                                    style: S,
                                                                    x: T,
                                                                    y: C
                                                                }), T += this.context.measureText(P.charAt(E)).width, (E < P.length - 1 || h < x.length - 1) && (T += S.letterSpacing / 2)
                                                            }
                                                            T -= d / 2
                                                        }
                                                        v += a[l]
                                                    }
                                                    this.context.save(), b.forEach(function(e) {
                                                        var n = e.style,
                                                            i = e.text,
                                                            r = e.x,
                                                            o = e.y;
                                                        if (n.dropShadow) {
                                                            t.context.font = PIXI.Text.getFontStyle(n);
                                                            var a = n.dropShadowColor;
                                                            "number" == typeof a && (a = PIXI.utils.hex2string(a)), t.context.shadowColor = a, t.context.shadowBlur = n.dropShadowBlur, t.context.shadowOffsetX = Math.cos(n.dropShadowAngle) * n.dropShadowDistance * t.resolution, t.context.shadowOffsetY = Math.sin(n.dropShadowAngle) * n.dropShadowDistance * t.resolution, t.context.fillText(i, r, o)
                                                        }
                                                    }), this.context.restore(), b.forEach(function(e) {
                                                        var n = e.style,
                                                            i = e.text,
                                                            r = e.x,
                                                            o = e.y;
                                                        t.context.font = PIXI.Text.getFontStyle(n);
                                                        var a = n.stroke;
                                                        "number" == typeof a && (a = PIXI.utils.hex2string(a)), t.context.strokeStyle = a, t.context.lineWidth = n.strokeThickness;
                                                        var s = n.fill;
                                                        if ("number" == typeof s) s = PIXI.utils.hex2string(s);
                                                        else if (Array.isArray(s))
                                                            for (var l = 0; l < s.length; l++) {
                                                                var u = s[l];
                                                                "number" == typeof u && (s[l] = PIXI.utils.hex2string(u))
                                                            }
                                                        t.context.fillStyle = t._generateFillStyle(new PIXI.TextStyle(n), [i]), n.stroke && n.strokeThickness && t.context.strokeText(i, r, o), n.fill && t.context.fillText(i, r, o)
                                                    }), this.updateTexture()
                                                }
                                            }, e.prototype.wordWrap = function(t) {
                                                var e = "",
                                                    n = Object.keys(this.textStyles).join("|"),
                                                    i = new RegExp("(</?(" + n + ")>)", "g"),
                                                    r = t.split("\n"),
                                                    o = this._style.wordWrapWidth,
                                                    a = [this.assign({}, this.textStyles.default)];
                                                this.context.font = PIXI.Text.getFontStyle(this.textStyles.default);
                                                for (var s = 0; s < r.length; s++) {
                                                    for (var l = o, u = r[s].split(" "), c = 0; c < u.length; c++)
                                                        for (var h = u[c].split(i), p = 0; p < h.length; p++)
                                                            if (i.test(h[p])) e += h[p], "/" === h[p][1] ? (p++, a.pop()) : (p++, a.push(this.assign({}, a[a.length - 1], this.textStyles[h[p]]))), this.context.font = PIXI.Text.getFontStyle(a[a.length - 1]);
                                                            else {
                                                                var f = this.context.measureText(h[p]).width;
                                                                if (this._style.breakWords && f > o) {
                                                                    var d = h[p].split("");
                                                                    c > 0 && 0 === p && (e += " ", l -= this.context.measureText(" ").width);
                                                                    for (var m = 0; m < d.length; m++) {
                                                                        var g = this.context.measureText(d[m]).width;
                                                                        g > l ? (e += "\n" + d[m], l = o - g) : (c > 0 && 0 === p && 0 === m && (e += " "), e += d[m], l -= g)
                                                                    }
                                                                } else {
                                                                    var _ = f + (0 === p ? this.context.measureText(" ").width : 0);
                                                                    0 === c || _ > l ? (c > 0 && (e += "\n"), e += h[p], l = o - f) : (l -= _, 0 === p && (e += " "), e += h[p])
                                                                }
                                                            }
                                                    s < r.length - 1 && (e += "\n")
                                                }
                                                return e
                                            }, e.prototype.updateTexture = function() {
                                                var t = this._texture,
                                                    e = this.getDropShadowPadding();
                                                t.baseTexture.hasLoaded = !0, t.baseTexture.resolution = this.resolution, t.baseTexture.realWidth = this.canvas.width, t.baseTexture.realHeight = this.canvas.height, t.baseTexture.width = this.canvas.width / this.resolution, t.baseTexture.height = this.canvas.height / this.resolution, t.trim.width = t.frame.width = this.canvas.width / this.resolution, t.trim.height = t.frame.height = this.canvas.height / this.resolution, t.trim.x = -this._style.padding - e, t.trim.y = -this._style.padding - e, t.orig.width = t.frame.width - 2 * (this._style.padding + e), t.orig.height = t.frame.height - 2 * (this._style.padding + e), this._onTextureUpdate(), t.baseTexture.emit("update", t.baseTexture), this.dirty = !1
                                            }, e.prototype.assign = function(t) {
                                                for (var e = [], n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
                                                for (var i = 0, r = e; i < r.length; i++) {
                                                    var o = r[i];
                                                    for (var a in o) t[a] = o[a]
                                                }
                                                return t
                                            }, e
                                        }(PIXI.Text);
                                        n.DEFAULT_TAG_STYLE = {
                                            align: "left",
                                            breakWords: !1,
                                            dropShadow: !1,
                                            dropShadowAngle: Math.PI / 6,
                                            dropShadowBlur: 0,
                                            dropShadowColor: "#000000",
                                            dropShadowDistance: 5,
                                            fill: "black",
                                            fillGradientType: PIXI.TEXT_GRADIENT.LINEAR_VERTICAL,
                                            fontFamily: "Arial",
                                            fontSize: 26,
                                            fontStyle: "normal",
                                            fontVariant: "normal",
                                            fontWeight: "normal",
                                            letterSpacing: 0,
                                            lineHeight: 0,
                                            lineJoin: "miter",
                                            miterLimit: 10,
                                            padding: 0,
                                            stroke: "black",
                                            strokeThickness: 0,
                                            textBaseline: "alphabetic",
                                            wordWrap: !1,
                                            wordWrapWidth: 100
                                        }, Object.defineProperty(e, "__esModule", {
                                            value: !0
                                        }), e.default = n
                                    })
                                }, {}]
                            }, {}, [1])(1)
                        })
                    }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
                }, {
                    "./pixi-multistyle-text": 1
                }]
            }, {}, [1])(1)
        }), define("game/PowerWild", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/componentManchester/rgsModel/rgsModel", "com/pixijs/pixi-multistyle-text", "game/Audio", "skbJet/component/gladPixiRenderer/Sprite", "game/Utils", "game/UI", "game/config", "game/winSequence", "com/gsap/TweenLite"], function(t, e, n, i, r, o, a, s, l, u, c) {
            function h() {
                p(), C = n.lib._graphicLayer.pixiContainer, d()
            }

            function p() {
                k = n.lib._TOPPlaque.pixiContainer, k.visible = !1, n.lib._TOPText1.pixiContainer.removeChildren();
                var t, i, o, a = s.standardTextStyle(76);
                a.fill = ["#e8c53c"], a.dropShadow = !0, a.dropShadowAlpha = .7, a.dropShadowAngle = .6, a.dropShadowBlur = 2, a.dropShadowDistance = 4, t = s.standardTextStyle(66), t.dropShadow = !0, t.dropShadowAlpha = .7, t.dropShadowAngle = .6, t.dropShadowBlur = 2, t.dropShadowDistance = 4, t.fill = ["#6696ba"], o = s.standardTextStyle(76), o.dropShadow = !0, o.dropShadowAlpha = .7, o.dropShadowAngle = .6, o.dropShadowBlur = 2, o.dropShadowDistance = 4, o.fill = ["#6696ba"], i = s.standardTextStyle(76), i.dropShadow = !0, i.dropShadowAlpha = .7, i.dropShadowAngle = .6, i.dropShadowBlur = 2, i.dropShadowDistance = 4, L = new r(e.i18n.Game.TOPPlaque.TOPText1, {
                    default: t,
                    large: i,
                    largedull: o,
                    gold: a
                }), L.anchor.set(.5, 0), L.position.x = n.lib._TOPText1._currentStyle._width / 2, n.lib._TOPText1.pixiContainer.addChild(L)
            }

            function f(t) {
                L.text = e.i18n.Game.TOPPlaque.TOPText1.replace("{0}", "1").replace("{1}", String(t))
            }

            function d() {
                M ? M.clear() : (M = new PIXI.Graphics, M.blendMode = PIXI.BLEND_MODES.SCREEN, TweenLite.to(M, .1, {
                    pixi: {
                        blur: D
                    }
                }))
            }

            function m() {
                var t = i.gameLogic.PopulationOutcome("TombOfPower.Reels").map;
                for (var e in t)
                    if ("w02" == t[e]) return e;
                return null
            }

            function g() {
                var t = i.gameLogic.TriggerOutcome("TombOfPower.PowerWildLocations").Triggers;
                O = [];
                for (var e in t) O.push({
                    name: e,
                    pnt: n.lib[u.symbolLocationLookup[e]].pixiContainer
                });
                O = O.reverse()
            }

            function _() {
                C.addChild(M), C.visible = !0;
                var t = m();
                E = {
                    name: t,
                    pnt: n.lib[u.symbolLocationLookup[t]].pixiContainer
                }, g(), R = [], R.push({
                    start: {
                        pnt: n.lib._fsPowerMeterValue.pixiContainer
                    },
                    end: E,
                    duration: 1
                }), R.push({
                    start: E,
                    end: {
                        pnt: l.spinsGlobalPos()
                    },
                    duration: 1,
                    updateMeters: !0
                }), f(O.length);
                for (var e, i = E; O.length > 0;) e = O.pop(), R.push({
                    start: i,
                    end: e,
                    duration: 1
                }), i = e;
                R = R.reverse(), TweenLite.delayedCall(1.5, function() {
                    k.visible = !0
                }), TweenLite.delayedCall(6, function() {
                    k.visible = !1, y()
                })
            }

            function y() {
                R.length > 0 ? (o.play("BonusWildPower", 8, !1), A = R.pop(), TweenLite.to(X, A.duration, {
                    x: 0,
                    onStart: x,
                    onUpdate: w,
                    onComplete: function() {
                        d(), y()
                    }
                })) : (d(), C.removeChildren(), C.visible = !1, v())
            }

            function v() {
                I = !1, g();
                var t = {
                    name: m()
                };
                O.push(t), O.forEach(function(t) {
                    c.playSymbolAnim(t.name, "w02AnimTransform", !1, b)
                })
            }

            function b() {
                0 == I && (c.resetAnimations(), I = !0, S())
            }

            function x() {
                A.end.name && c.playSymbolAnim(A.end.name, "w02Anim", !0), A.updateMeters && l.setFreeSpinOf("TombOfPower.FreeSpinOutcome"), t.publish("PowerWild.flash")
            }

            function T(t, e, n) {
                return n * (1 - Math.abs(t - e) / e)
            }

            function w() {
                d();
                var t, e = s.generate2dBezierPoints({
                    sx: s.toGlobal(A.start.pnt).x,
                    sy: s.toGlobal(A.start.pnt).y,
                    ex: s.toGlobal(A.end.pnt).x,
                    ey: s.toGlobal(A.end.pnt).y,
                    steps: 9,
                    rand: Math.random() * W
                });
                for (M.moveTo(s.toGlobal(A.start.pnt).x, s.toGlobal(A.start.pnt).y), t = 0; t < e.length; t++) M.lineStyle(T(t, 5, B), N, F), M.lineTo(e[t].x, e[t].y);
                for (M.moveTo(s.toGlobal(A.start.pnt).x, s.toGlobal(A.start.pnt).y), t = 0; t < e.length; t++) M.lineStyle(T(t, 5, G), U, j), M.lineTo(e[t].x, e[t].y)
            }

            function S() {
                c.showModifiedReels("TombOfPower"), t.publish("PowerWild.complete")
            }

            function P(t) {
                d()
            }
            var M, C, E, O, I, R, A, k, L, D = (window.location.search.match(/&?assetPack=([^&]+)&?/)[1], 3),
                B = 60,
                N = 8599287,
                F = .5,
                G = 18,
                U = 16777215,
                j = 1,
                W = 60,
                X = {
                    x: 0
                };
            return t.subscribe("platformMsg/ClientService/Game.Init", h), t.subscribe("Orientation.AfterChange", P), {
                checkPowerWild: m,
                showWilds: _
            }
        }), define("game/WinPlaque", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/resourceLoader/resourceLib", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/componentManchester/rgsModel/rgsModel", "skbJet/component/currencyHelper/currencyHelper", "game/Utils", "com/gsap/TimelineMax", "com/gsap/easing/EasePack", "com/gsap/plugins/PixiPlugin"], function(t, e, n, i, r, o, a, s, l) {
            function u() {
                d = {
                    TombOfMystery: PIXI.Texture.fromImage("TOM_winPlaque"),
                    TombOfPower: PIXI.Texture.fromImage("TOP_winPlaque")
                }, f = n.lib._winPlaque.pixiContainer;
                var t, i;
                t = n.lib._winPlaqueValue.pixiContainer, t.removeChildren(), g = new PIXI.extras.BitmapText("", {
                    font: "200px pyramidionBW_font-export",
                    align: "centre"
                }), g.position.x = n.lib._winPlaqueValue._currentStyle._width / 2 - g.width / 2, t.addChild(g), i = o.standardTextStyle("62px"), t = n.lib._winPlaqueLabel.pixiContainer, t.removeChildren(), m = new PIXI.Text(e.i18n.game.Game.Dialog["YOU HAVE WON"], i), m.position.x = n.lib._winPlaqueLabel._currentStyle._width / 2 - m.width / 2, t.addChild(m), p()
            }

            function c() {
                var t = i.gameLogic.PrizeOutcome("Bonus.Total").totalPay;
                0 == t ? (m.text = e.i18n.game.Game.Dialog["BONUS COMPLETE"], m.position.x = n.lib._winPlaqueLabel._currentStyle._width / 2 - m.width / 2, g.text = "") : (m.text = e.i18n.game.Game.Dialog["YOU HAVE WON"], m.position.x = n.lib._winPlaqueLabel._currentStyle._width / 2 - m.width / 2, g.text = r.formatBalance(r.fromStakeUnits(t)), o.fitBitmapText(g, n.lib._winPlaqueValue._currentStyle._width - 200, 200), g.position.x = n.lib._winPlaqueValue._currentStyle._width / 2 - g.width / 2)
            }

            function h(t, e) {
                v = e, f.children[0].texture = d[t], f.alpha = 0, f.scale.x = _, f.scale.y = _, c(), TweenLite.to(f, 3, {
                    pixi: {
                        alpha: 1,
                        scaleX: y,
                        scaleY: y
                    },
                    delay: .2,
                    ease: Power2.easeOut,
                    onStart: function() {
                        f.visible = !0
                    },
                    onComplete: function() {
                        TweenLite.delayedCall(1, p)
                    }
                })
            }

            function p() {
                null == v ? f.visible = !1 : TweenLite.to(f, 2, {
                    pixi: {
                        alpha: 0,
                        scaleX: _,
                        scaleY: _
                    },
                    ease: Power2.easeIn,
                    onComplete: function() {
                        f.visible = !1, v.call(), v = null
                    }
                })
            }
            var f, d, m, g, _ = .8,
                y = 1.4,
                v = null;
            return t.subscribe("platformMsg/ClientService/Game.Init", u), {
                show: h,
                hide: p
            }
        }), define("game/TombOfPower", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/resourceLoader/resourceLib", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/componentManchester/rgsModel/rgsModel", "game/Audio", "skbJet/component/currencyHelper/currencyHelper", "game/ReelController", "game/betController", "game/winSequence", "game/transitions/SpinePlayer", "game/UI", "game/Utils", "game/PowerWild", "game/WinPlaque", "game/Tutorials", "game/Logos", "com/gsap/TweenLite"], function(t, e, n, i, r, o, a, s, l, u, c, h, p, f, d, m, g, _) {
            function y(e) {
                K = r.lib._theReels.pixiContainer, $ = r.lib._reelDividers.pixiContainer.children[0], Z = r.lib._reelDiv1.pixiContainer, Q = r.lib._reelDiv2.pixiContainer, tt = r.lib._fsPowerMeter.pixiContainer, et = r.lib._fsPowerMeterSymbol.pixiContainer, r.lib._fsPowerMeterValue.pixiContainer.removeChildren(), nt = new t.extras.BitmapText("", {
                    font: "120px pyramidionBW_font-export",
                    align: "centre"
                }), nt.position.x = r.lib._fsPowerMeterValue._currentStyle._width / 2 - nt.width / 2, r.lib._fsPowerMeterValue.pixiContainer.addChild(nt), r.lib._fsPowerMeterLabel.pixiContainer.removeChildren();
                var i = f.standardTextStyle(30);
                it = new t.Text(n.i18n.game.Game.powerWilds, i), f.fitText(it, r.lib._fsPowerMeterLabel._currentStyle._width, 30), it.position.x = r.lib._fsPowerMeterLabel._currentStyle._width / 2 - it.width / 2, r.lib._fsPowerMeterLabel.pixiContainer.addChild(it), rt = new t.Sprite.from("w02MeterStatic"), rt.visible = !0, ot = f.getAnimatedSprite("powerWildSymbolLoop"), ot.animationSpeed = .25, ot.visible = !1, ot.stop(), ot.onComplete = function() {
                    v({
                        static: !0
                    })
                }, et.removeChildren(), et.addChild(rt, ot), v({
                    static: !0
                }), at = !0
            }

            function v(t) {
                1 == t.static ? (rt.visible = !0, ot.visible = !1, ot.stop()) : (rt.visible = !1, ot.visible = !0, ot.loop = t.loop || !1, ot.gotoAndPlay(1))
            }

            function b() {
                a.play("BonusNumberIncrease", 8, !1), v({
                    static: !1,
                    loop: !1
                });
                var t = o.gameLogic.TriggerOutcome("TombOfPower.PowerMeter") ? Number(Object.keys(o.gameLogic.TriggerOutcome("TombOfPower.PowerMeter").Triggers)[0]) : 0;
                ++t, x(Number(t))
            }

            function x(t) {
                Number(t) > 14 && (t = 14), nt.text = Number(t), nt.position.x = r.lib._fsPowerMeterValue._currentStyle._width / 2 - nt.width / 2
            }

            function T(t) {
                q = t.serverConfig.channel
            }

            function w(e) {
                K.alpha = 0, $.texture = t.Texture.fromImage("bonusReelDivs"), Z.alpha = 0, Q.alpha = 0, e || (tt.alpha = 0, nt.text = ""), p.disableBaseGame(), _.show("TombOfPower")
            }

            function S(t) {
                TweenLite.to(K, 1, {
                    alpha: 0,
                    ease: Power1.easeInOut,
                    onComplete: t
                }), p.fade(0)
            }

            function P(t) {
                J = t, p.clearFreeSpinWinMeter(), p.setFreeSpinNum("TombOfPower.FreeSpinOutcome", -1), h.transitionIn("TombOfPower", M)
            }

            function M(t, e) {
                h.setSky("TombOfPower"), C(), w(e), TweenLite.to(tt, .5, {
                    alpha: 1,
                    ease: Power1.easeInOut
                }), TweenLite.to(K, .5, {
                    alpha: 1,
                    ease: Power1.easeInOut
                }), p.enableFS(!0), p.showHideFSSkip(!1), e && p.fade(1), g.showBonusTutorial("TombOfPower", function() {
                    E(t), "BonusMusicLoop" !== a.currentPlaying(0) && a.play("BonusMusicLoop", 0, !0)
                }, e)
            }

            function C() {
                null == d.checkPowerWild() ? l.updateBG2Reel(J) : c.showPopReels(o.gameLogic.PopulationOutcome("TombOfPower.TransformReels").map, {
                    w02: "w01"
                })
            }

            function E(t) {
                p.fade(1), p.enableFS(!0, t), t || TweenLite.delayedCall(2, function() {
                    e.publish("nextState")
                })
            }

            function O(t) {
                p.setFreeSpinNum("TombOfPower.FreeSpinOutcome"), b(), l.onBeforeRequest(t)
            }

            function I(t) {
                u.tellConsolePlayload(), e.publish("nextState")
            }

            function R(t) {
                l.onResolveStage(t)
            }

            function A() {
                "TombOfPower" === o.gameLogic.OutcomeDetail.Stage && k()
            }

            function k() {
                null == d.checkPowerWild() ? B() : (v({
                    static: !1,
                    loop: !0
                }), d.showWilds())
            }

            function L() {
                h.transitionIn("TombOfPowerFlash", D)
            }

            function D() {
                h.setSky("TombOfPower")
            }

            function B() {
                v({
                    static: !0
                }), N(), c.start("TombOfPower")
            }

            function N() {
                var t = o.gameLogic.PrizeOutcome("TombOfPower.Lines").totalPay,
                    e = o.gameLogic.PrizeOutcome("Bonus.Total").totalPay;
                t && (p.updateFreeSpinsWinMeter(t), p.updateFreeSpinsTotalWinMeter(e))
            }

            function F(t) {
                h.setSky("TombOfPower"), w(!1), e.publish("nextState")
            }

            function G(t) {
                e.publish("nextState")
            }

            function U(t) {
                S(j), tt.alpha = 0
            }

            function j() {
                a.play("MusicIntro", 11, !1, null, .5), a.play("BaseMusicLoop", 0, !0), o.gameLogic.AwardCapOutcome("AwardCap").AwardCapExceeded ? W() : m.show("TombOfPower", W)
            }

            function W() {
                p.clearFreeSpinsTotalWinMeter(), _.fade(), h.transitionOut("TombOfPower", function() {
                    e.publish("nextState")
                })
            }

            function X(t) {
                l.onAbortNextStage(t), e.publish("nextState")
            }

            function V(t) {
                l.onResetNextStage(t)
            }

            function H(t) {
                e.publish("nextState")
            }

            function z(t) {
                h.setSky("TombOfPower"), at = !1, "INT" === q && e.publish("nextState")
            }

            function Y(t) {
                if (J = t, p.hideBaseGame(), p.setFreeSpinNum("TombOfPower.FreeSpinOutcome", -1), o.gameLogic.TriggerOutcome("TombOfPower.PowerMeter") && x(Object.keys(o.gameLogic.TriggerOutcome("TombOfPower.PowerMeter").Triggers)[0]), o.gameLogic.PrizeOutcome("Bonus.Total")) {
                    var e = o.gameLogic.PrizeOutcome("Bonus.Total").totalPay;
                    p.updateFreeSpinsTotalWinMeter(e)
                }
                p.show(), at ? h.transitionIn("TombOfPower", M) : M(!1, !at)
            }
            var q, J, K, $, Z, Q, tt, et, nt, it, rt, ot, at;
            return e.subscribe("platformMsg/ClientService/Game.Init", y), e.subscribe("platformMsg/Kernel/System.Init", T), e.subscribe("ReelsResolved", A), e.subscribe("PowerWild.flash", L), e.subscribe("PowerWild.complete", B), {
                onEnterNextStage: P,
                onBeforeShowStage: F,
                onBeforeRequest: O,
                onMakeRequest: I,
                onResolveStage: R,
                onEndGame: G,
                onExitStage: U,
                onAbortNextStage: X,
                onResetNextStage: V,
                onInProgressStage: H,
                onStartGameInProgressStage: z,
                onStartGameInProgressNextStage: Y
            }
        }), define("game/MysteryReel", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "game/Audio", "skbJet/componentManchester/rgsModel/rgsModel", "skbJet/component/gladPixiRenderer/Sprite", "game/ReelController", "game/Utils", "game/ParticleConfigs", "com/gsap/easing/EasePack", "com/gsap/plugins/PixiPlugin", "com/gsap/TweenLite", "com/gsap/TimelineMax"], function(t, e, n, i, r, o, a, s) {
            function l() {
                S.update(.001 * B.elapsedMS)
            }

            function u(t) {
                P = e.lib._mysteryReel.pixiContainer, P.visible = !1, M = e.lib._mysteryOverlay.pixiContainer, A = e.lib._mysteryMiniReel.pixiContainer, A.transform.position.y = j, C = e.lib._mysteryStrip.pixiContainer, E = e.lib._mysteryStripContainer.pixiContainer, D = e.lib._plusOneOverlay.pixiContainer, D.visible = !1;
                var n = e.lib._stripSymbol1.pixiContainer;
                O = n.height, I = n.height * U;
                var i = new PIXI.Graphics;
                i.beginFill(16777215), i.drawRect(0, 0, n.width, n.height), i.endFill(), C.mask = i, C.addChild(i), G.y = 0, R = 0, k = e.lib._mysteryOverlayMeter.pixiContainer, k.removeChildren(), L = new PIXI.extras.BitmapText("", {
                    font: "120px pyramidionBW_font-export",
                    align: "centre"
                }), L.position.x = e.lib._mysteryOverlayMeter._currentStyle._width / 2 - L.width / 2, L.position.y = e.lib._mysteryOverlayMeter._currentStyle._height / 2 - L.height / 2, k.addChild(L), S = new PIXI.particles.Emitter(F, [PIXI.Texture.fromImage("particle")], s.getData().wildReelTrail), e.lib._wildReelEmitter.pixiContainer.addChild(F), B = e.getTicker(), N && (B.remove(N), N = null), S.emit = !1, N = l, B.add(N), c(), p()
            }

            function c() {
                S.spawnPos = new PIXI.Point(P.transform.position.x + 270, P.transform.position.y + 165)
            }

            function h(t) {
                K = new TimelineMax({
                    paused: !1,
                    autoRemoveChildren: !0,
                    onStart: function() {
                        D.alpha = J.startAlpha, D.transform.position.y = J.startPosY, D.transform.scale.x = J.startScale, D.transform.scale.y = J.startScale, D.visible = !0
                    },
                    onComplete: function() {
                        D.visible = !1, p(), n.play("SymbolScatter5Land", 19, !1), (new TimelineMax).to(k, .2, {
                            pixi: {
                                scaleX: .8,
                                scaleY: .8
                            },
                            ease: Power4.easeOut
                        }).to(k, .5, {
                            pixi: {
                                scaleX: 1,
                                scaleY: 1
                            },
                            ease: Elastic.easeOut.config(1, .2)
                        }), t.call()
                    }
                }), K.to(D, .5, {
                    pixi: {
                        alpha: J.midAlpha,
                        positionY: J.midPosY,
                        scaleX: J.midScale,
                        scaleY: J.midScale
                    },
                    ease: Power1.easeOut
                }).to(D, .75, {
                    pixi: {
                        alpha: J.endAlpha,
                        positionY: J.endPosY,
                        scaleX: J.endScale,
                        scaleY: J.endScale
                    },
                    ease: Power1.easeIn
                })
            }

            function p() {
                var t = "1";
                i.gameLogic.MultiplierOutcome("TombOfMystery.Multiplier.NextSpin") && i.gameLogic.MultiplierOutcome("TombOfMystery.Multiplier.NextSpin").Multiplier() ? t = i.gameLogic.MultiplierOutcome("TombOfMystery.Multiplier.NextSpin").Multiplier() : void 0 != i.gameLogic.MultiplierOutcome("TombOfMystery.Multiplier") && (t = i.gameLogic.MultiplierOutcome("TombOfMystery.Multiplier").Multiplier()), L.text = String(t + "x"), L.position.x = e.lib._mysteryOverlayMeter._currentStyle._width / 2 - L.width / 2, L.position.y = e.lib._mysteryOverlayMeter._currentStyle._height / 2 - L.height / 2
            }

            function f(t) {
                G.y = R = z[t] * O, m()
            }

            function d(t, e) {
                TweenLite.to(C, .5, {
                    alpha: 1,
                    delay: .5,
                    ease: Power1.easeOut
                }), TweenLite.to(A.transform.position, .5, {
                    y: 10,
                    ease: Power1.easeOut,
                    onComplete: function() {
                        G.y = R;
                        var i = I * X + z[t] * O;
                        n.play("BonusModifierSpin", 2, !1), TweenLite.to(G, W + 1 * Math.random(), {
                            y: i,
                            ease: Back.easeOut.config(.5 + .25 * Math.random()),
                            onUpdate: m,
                            onComplete: function() {
                                n.play("BonusModifierSpinStop", 2, !1), e.call(), TweenLite.to(C, .5, {
                                    alpha: .3,
                                    delay: 1.5,
                                    ease: Power1.easeOut
                                })
                            }
                        })
                    }
                })
            }

            function m() {
                R = G.y % I, E.transform.position.y = R + 10
            }

            function g(t) {
                var e = o.getConfig().reelConfig,
                    n = V + e.options.reels[t].x;
                P.transform.position.x = n, c(), y(t)
            }

            function _(t) {
                e.lib._stripSymbol3.pixiContainer.children[0].texture = PIXI.Texture.fromImage(q[t]), e.lib._stripSymbol2.pixiContainer.alpha = 0 == t ? .4 : 1;
                var n = U - 1;
                0 == t && (n = U);
                var i = e.lib._stripSymbol1.pixiContainer;
                I = i.height * n
            }

            function y(t) {
                M.children[0].texture = PIXI.Texture.fromImage(Y[t]), _(t)
            }

            function v(t, e) {
                var n = o.getConfig().reelConfig,
                    i = V + n.options.reels[t].x;
                S.emit = !0, TweenLite.to(P.transform.position, 1, {
                    x: i,
                    ease: Power1.easeInOut,
                    onUpdate: c,
                    onComplete: function() {
                        y(t), S.emit = !1, e.call()
                    }
                })
            }

            function b(t) {
                A.transform.position.y = j, P.visible = t || !1, C.alpha = .3, p(), f("hold"), g(4)
            }

            function x(t) {
                P.transform.position.y = -2e3, P.visible = !0, TweenLite.to(P.transform.position, .7, {
                    y: H,
                    ease: Power1.easeIn,
                    onUpdate: c,
                    onComplete: function() {
                        a.shakeScreen(1.6, 50), t.call()
                    }
                })
            }

            function T() {
                P.visible = !1
            }

            function w() {
                P.visible = !0
            }
            var S, P, M, C, E, O, I, R, A, k, L, D, B = (window.location.search.match(/&?assetPack=([^&]+)&?/)[1], Math.PI, null),
                N = null,
                F = new PIXI.Container,
                G = {
                    y: 0
                },
                U = 3,
                j = 166,
                W = 3,
                X = 6,
                V = 40,
                H = -114,
                z = {
                    hold: 0,
                    move: 1,
                    exit: 2
                },
                Y = {
                    4: "TOM_wildReel",
                    3: "TOM_wildReel",
                    2: "TOM_wildReel",
                    1: "TOM_wildReel",
                    0: "TOM_wildReel"
                },
                q = {
                    4: "wildReelSymbol_1x",
                    3: "wildReelSymbol_1x",
                    2: "wildReelSymbol_1x",
                    1: "wildReelSymbol_1x",
                    0: "wildReelSymbol_end"
                },
                J = {
                    startPosY: 100,
                    midPosY: 20,
                    endPosY: 864,
                    startScale: 1,
                    midScale: 2,
                    endScale: .7,
                    startAlpha: 1,
                    midAlpha: 1,
                    endAlpha: .7
                },
                K = null;
            return t.subscribe("platformMsg/ClientService/Game.Init", u), {
                dropIn: x,
                reset: b,
                setSpin: f,
                spinTo: d,
                setReel: g,
                moveToReel: v,
                showPlusOne: h,
                updateWildMeter: p,
                hide: T,
                show: w
            }
        }), define("game/TombOfMystery", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/componentManchester/rgsModel/rgsModel", "game/Audio", "skbJet/component/currencyHelper/currencyHelper", "game/ReelController", "game/betController", "game/winSequence", "game/transitions/SpinePlayer", "game/UI", "game/MysteryReel", "game/WinPlaque", "game/Tutorials", "game/Logos", "com/gsap/TweenLite"], function(t, e, n, i, r, o, a, s, l, u, c, h, p, f, d, m) {
            function g(t) {
                X = i.lib._theReels.pixiContainer, V = i.lib._reelDividers.pixiContainer.children[0], H = i.lib._reelDiv1.pixiContainer, z = i.lib._reelDiv2.pixiContainer, J = !0
            }

            function _(t) {
                j = t.serverConfig.channel
            }

            function y() {
                return r.gameLogic.TriggerOutcome("TombOfMystery.MysteryReelNextSpin") && r.gameLogic.TriggerOutcome("TombOfMystery.MysteryReelNextSpin").Triggers ? Number(Object.keys(r.gameLogic.TriggerOutcome("TombOfMystery.MysteryReelNextSpin").Triggers)[0].charAt(4) - 1) : r.gameLogic.TriggerOutcome("TombOfMystery.MysteryReel") && r.gameLogic.TriggerOutcome("TombOfMystery.MysteryReel").Triggers ? Number(Object.keys(r.gameLogic.TriggerOutcome("TombOfMystery.MysteryReel").Triggers)[0].charAt(4) - 1) : 4
            }

            function v() {
                Y = y(), X.alpha = 0, V.texture = t.Texture.fromImage("bonusReelDivs"), H.alpha = 0, z.alpha = 0, h.disableBaseGame(), h.disableFS(), m.show("TombOfMystery")
            }

            function b(t) {
                TweenLite.to(X, 1, {
                    alpha: 0,
                    ease: Power1.easeInOut,
                    onComplete: t
                }), h.fade(0)
            }

            function x(t) {
                W = t, h.clearFreeSpinWinMeter(), h.setFreeSpinCount("TombOfMystery.FreeSpinOutcome"), p.reset(), c.transitionIn("TombOfMystery", T)
            }

            function T(t, e) {
                c.setSky("TombOfMystery"), s.updateBG2Reel(W), v(), TweenLite.to(X, 1, {
                    alpha: 1,
                    ease: Power1.easeInOut
                }), h.enableFS(!1), h.showHideFSSkip(!1), e && h.fade(1), d.showBonusTutorial("TombOfMystery", function() {
                    w(t, e), "BonusMusicLoop" !== o.currentPlaying(0) && o.play("BonusMusicLoop", 0, !0)
                }, e)
            }

            function w(t, n) {
                h.fade(1), n ? (h.enableFS(!1, t), t || TweenLite.delayedCall(2, function() {
                    e.publish("nextState")
                })) : (TweenLite.delayedCall(.5, function() {
                    o.play("BonusWildFall", 8, !1)
                }), p.dropIn(function() {
                    h.enableFS(!1, t), t || TweenLite.delayedCall(2, function() {
                        e.publish("nextState")
                    })
                }))
            }

            function S(t) {
                h.setFreeSpinCount("TombOfMystery.FreeSpinOutcome", 1), s.onBeforeRequest(t)
            }

            function P(t) {
                l.tellConsolePlayload(), e.publish("nextState")
            }

            function M(t) {
                s.onResolveStage(t)
            }

            function C() {
                var t = r.gameLogic.PrizeOutcome("TombOfMystery.Lines").totalPay,
                    e = r.gameLogic.PrizeOutcome("Bonus.Total").totalPay;
                t && (h.updateFreeSpinsWinMeter(t), h.updateFreeSpinsTotalWinMeter(e))
            }

            function E() {
                "TombOfMystery" === r.gameLogic.OutcomeDetail.Stage && (C(), u.start("TombOfMystery"))
            }

            function O(t) {
                v(), e.publish("nextState")
            }

            function I(t) {
                e.publish("nextState")
            }

            function R(t) {
                r.gameLogic.AwardCapOutcome("AwardCap").AwardCapExceeded ? b(A) : TweenLite.delayedCall(1, function() {
                    p.spinTo("exit", function() {
                        b(A)
                    })
                })
            }

            function A() {
                o.play("MusicIntro", 11, !1, null, .5), o.play("BaseMusicLoop", 0, !0), r.gameLogic.AwardCapOutcome("AwardCap").AwardCapExceeded ? k() : f.show("TombOfMystery", k)
            }

            function k() {
                h.clearFreeSpinsTotalWinMeter(), m.fade(), c.transitionOut("TombOfMystery", function() {
                    e.publish("nextState")
                })
            }

            function L(t) {
                s.onAbortNextStage(t), e.publish("nextState")
            }

            function D(t) {
                e.publish("nextState")
            }

            function B(t) {
                N()
            }

            function N() {
                void 0 != r.gameLogic.TriggerOutcome("TombOfMystery.ReelMovement") ? (q = Object.keys(r.gameLogic.TriggerOutcome("TombOfMystery.ReelMovement").Triggers)[0], TweenLite.delayedCall(1, function() {
                    p.spinTo(q, F)
                })) : e.publish("nextState")
            }

            function F() {
                switch (q) {
                    case "hold":
                        p.showPlusOne(function() {
                            e.publish("nextState")
                        });
                        break;
                    case "move":
                        TweenLite.delayedCall(1, function() {
                            --Y, o.play("BonusWildSlide", 8, !1), p.moveToReel(Y, function() {
                                e.publish("nextState")
                            })
                        })
                }
            }

            function G(t) {
                c.setSky("TombOfMystery"), J = !1, "INT" === j && e.publish("nextState")
            }

            function U(t) {
                if (W = t, h.hideBaseGame(), h.setFreeSpinCount("TombOfMystery.FreeSpinOutcome"), r.gameLogic.PrizeOutcome("Bonus.Total")) {
                    var e = r.gameLogic.PrizeOutcome("Bonus.Total").totalPay;
                    h.updateFreeSpinsTotalWinMeter(e)
                }
                p.reset(!0), p.setReel(y()), p.updateWildMeter(), h.show(), J ? c.transitionIn("TombOfMystery", T) : T(!1, !J)
            }
            var j, W, X, V, H, z, Y, q, J;
            return e.subscribe("platformMsg/ClientService/Game.Init", g), e.subscribe("platformMsg/Kernel/System.Init", _), e.subscribe("ReelsResolved", E), {
                onEnterNextStage: x,
                onBeforeShowStage: O,
                onBeforeRequest: S,
                onMakeRequest: P,
                onResolveStage: M,
                onEndGame: I,
                onExitStage: R,
                onAbortNextStage: L,
                onResetNextStage: D,
                onInProgressStage: B,
                onStartGameInProgressStage: G,
                onStartGameInProgressNextStage: U
            }
        }), define("game/transitions/ModifierPlayer", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/resourceLoader/resourceLib", "com/pixijs/pixi-spine", "game/transitions/SpineEvents"], function(t, e, n, i, r, o, a) {
            function s() {
                g = i.lib._modifierReels.pixiContainer, g.visible = !1
            }

            function l(e) {
                g.removeChildren();
                for (var n = i.lib._reels_0_1.pixiContainer.transform.position.x - i.lib._reels_0_0.pixiContainer.transform.position.x, o = 0; o < y.length; o++) y[o] = new t.spine.Spine(r.spine[e].spineData), y[o].transform.position.x = o * n, y[o].visible = !1, g.addChild(y[o]);
                g.visible = !0
            }

            function u(e) {
                g.removeChildren(), _ = new t.spine.Spine(r.spine[e.name].spineData), e.x && (_.transform.position.x = e.x), e.y && (_.transform.position.y = e.y), g.addChild(_), g.visible = !1
            }

            function c(t) {
                _ && (h(), t.x && (_.transform.position.x = t.x), t.y && (_.transform.position.y = t.y), _.state.onEvent = function(t, e) {
                    a.newEvent(e)
                }, _.state.setAnimation(0, t.anim, t.loop || !1), _.state.tracks[0].listener = {
                    complete: t.onComplete ? function(e, n) {
                        t.onComplete()
                    } : function() {}
                }, _.visible = !0, g.visible = !0)
            }

            function h() {
                _ && (_.skeleton.setToSetupPose(), _.state.tracks = [])
            }

            function p() {
                _ && (_.visible = !1)
            }

            function f(t) {
                for (var e = 0; e < y.length; e++) t.reel = e, d(t)
            }

            function d(t) {
                y[t.reel] && (t.onComplete ? y[t.reel].state.onComplete = function() {
                    t.onComplete(t.reel)
                } : y[t.reel].state.onComplete = null, y[t.reel].state.onEvent = function(t, e) {
                    a.newEvent(e)
                }, y[t.reel].state.setAnimation(0, t.anim, t.loop || !1), y[t.reel].visible = !0)
            }

            function m(t) {
                y[t.reel] && (y[t.reel].skeleton.setToSetupPose(), y[t.reel].state.tracks = [])
            }
            var g, _, y = [null, null, null, null, null];
            return e.subscribe("platformMsg/ClientService/Game.Init", s), {
                initialise: l,
                allPlay: f,
                singlePlay: d,
                singleStop: m,
                initSpecial: u,
                playSpecial: c,
                stopSpecial: h,
                hideSpecial: p
            }
        }), define("game/WaterfallStacks", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/componentManchester/rgsModel/rgsModel", "game/Audio", "skbJet/component/currencyHelper/currencyHelper", "game/ReelController", "game/betController", "game/winSequence", "game/UI", "game/transitions/SpinePlayer", "game/transitions/ModifierPlayer", "game/Logos", "com/gsap/TweenLite"], function(t, e, n, i, r, o, a, s, l, u, c, h, p, f) {
            function d(t) {}

            function m(t) {}

            function g(t) {
                TweenLite.delayedCall(.5, function() {
                    u.start("BaseGame")
                })
            }

            function _(t) {
                G = t, u.showModifiersTransform("WaterfallStacks", y)
            }

            function y() {
                h.setSky("WaterfallStacks"), s.onBeforeRequest(G)
            }

            function v(t) {
                l.tellConsolePlayload(), e.publish("nextState")
            }

            function b(t) {
                G = t, T()
            }

            function x() {
                U = [0, 0, 0, 0, 0];
                for (var t, e, n, i = r.gameLogic.PopulationOutcome("WaterfallStacks.Reels"), o = r.gameLogic.PopulationOutcome("WaterfallStacks.TransformReels"), a = 0; a < 5; a++) e = "L0C" + Number(a) + "R", n = i.map[e + "0"] == o.map[e + "0"] && i.map[e + "1"] == o.map[e + "1"] && i.map[e + "2"] == o.map[e + "2"], o.map[e + "0"] == o.map[e + "1"] && o.map[e + "0"] == o.map[e + "2"] && 0 == n && (U[a] = 1, t = o.map[e + "0"]);
                G.specialSymbol = t
            }

            function T() {
                p.initialise("waterfallAnim_spine"), x(), o.play("WaterfallStacksRain", 5, !1);
                for (var t = 0; t < 5; t++) TweenLite.delayedCall(1 + .5 * t, w, [t])
            }

            function w(t) {
                p.singlePlay({
                    anim: "waterfallStart",
                    reel: t,
                    loop: !1,
                    onComplete: S
                })
            }

            function S(t) {
                p.singlePlay({
                    anim: "waterfallLoop",
                    reel: t,
                    loop: !0
                }), 4 == t && TweenLite.delayedCall(1, P)
            }

            function P() {
                for (var t = 0; t < U.length; t++) 1 != U[t] && p.singlePlay({
                    anim: "waterfallEnd",
                    reel: t,
                    loop: !1
                });
                TweenLite.delayedCall(2, M)
            }

            function M() {
                s.onResolveStage(G)
            }

            function C() {
                o.stopChannel(6), o.fadeOut(5, 1500);
                for (var t = 0; t < 5; t++) 1 == U[t] && p.singlePlay({
                    anim: "waterfallEnd",
                    reel: t,
                    loop: !1
                });
                u.showModifiedReels("WaterfallStacks"), TweenLite.delayedCall(1, function() {
                    u.start("WaterfallStacks"), i.lib._modifierReels.pixiContainer.visible = !1
                })
            }

            function E() {
                r.gameLogic.PrizeOutcome("Modifier.Total") && r.gameLogic.PrizeOutcome("Modifier.Total").totalPay && "WaterfallStacks" === r.gameLogic.OutcomeDetail.Stage && C()
            }

            function O(t) {
                e.publish("nextState")
            }

            function I(t) {
                e.publish("nextState")
            }

            function R(t) {
                f.fade(), h.transitionOut("WaterfallStacks", function() {
                    "BaseMusicLoop" !== o.currentPlaying(0) && o.play("BaseMusicLoop", 0, !0), e.publish("nextState")
                })
            }

            function A(t) {
                s.onAbortNextStage(t), e.publish("nextState")
            }

            function k(t) {
                e.publish("nextState")
            }

            function L(t) {
                e.publish("nextState")
            }

            function D(t) {
                e.publish("nextState")
            }

            function B(t) {
                c.show(), c.gameInProgress(), f.fade(), h.transitionIn("Modifier", N)
            }

            function N() {
                h.setSky("Modifier"), c.enablePlayButton()
            }

            function F() {
                "BaseGame" === r.gameLogic.OutcomeDetail.Stage && "WaterfallStacks" === r.gameLogic.OutcomeDetail.NextStage && g()
            }
            var G, U = [0, 0, 0, 0, 0];
            return e.subscribe("onPlayButtonClicked", F), e.subscribe("platformMsg/ClientService/Game.Init", d), e.subscribe("platformMsg/Kernel/System.Init", m), e.subscribe("ReelsResolved", E), {
                onEnterNextStage: g,
                onBeforeShowStage: O,
                onBeforeRequest: _,
                onMakeRequest: v,
                onResolveStage: b,
                onEndGame: I,
                onExitStage: R,
                onAbortNextStage: A,
                onResetNextStage: k,
                onInProgressStage: L,
                onStartGameInProgressStage: D,
                onStartGameInProgressNextStage: B
            }
        }), define("game/SunbeamRays", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/resourceLoader/resourceLib", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "com/gsap/TimelineMax", "com/gsap/easing/EasePack", "com/gsap/plugins/PixiPlugin", "game/Utils", "game/transitions/ModifierPlayer", "game/config"], function(t, e, n, i, r, o, a, s, l) {
            function u() {
                m = n.lib._modifierReels.pixiContainer, _ = n.lib._theReels.pixiContainer, s.initSpecial({
                    name: "sunMod_spine"
                })
            }

            function c(t) {
                g = a.shuffleArray(t), h()
            }

            function h() {
                var t = g.pop(),
                    e = n.lib[l.symbolLocationLookup[t]].pixiContainer,
                    i = {
                        x: e.x + _.x - 10,
                        y: e.y + _.y - 10
                    };
                s.playSpecial({
                    anim: "sunRay_IN",
                    x: i.x,
                    y: i.y,
                    onComplete: function() {
                        p(i)
                    }
                })
            }

            function p(e) {
                f(e), s.playSpecial({
                    anim: "sunRay_OUT",
                    onComplete: function() {
                        g.length > 0 ? TweenLite.delayedCall(.65, h) : t.publish("SunbeamRays.complete")
                    }
                })
            }

            function f(t) {
                var e = new PIXI.Sprite.fromImage("w01");
                e.visible = !1, e.anchor.set(.5, .5), e.scale.set(.25, .25), e.transform.position.x = t.x, e.transform.position.y = t.y, m.addChildAt(e, 0), TweenLite.to(e.scale, 1.25, {
                    x: 1,
                    y: 1,
                    ease: Elastic.easeOut.config(1, .2),
                    onStart: function() {
                        e.visible = !0
                    }
                })
            }

            function d() {
                m.removeChildren(), m.visible = !1
            }
            var m, g, _;
            return {
                init: u,
                drawBeams: c,
                clear: d
            }
        }), define("game/SunbeamWilds", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/componentManchester/rgsModel/rgsModel", "game/Audio", "skbJet/component/currencyHelper/currencyHelper", "game/ReelController", "game/betController", "game/winSequence", "game/UI", "game/transitions/SpinePlayer", "game/SunbeamRays", "game/Logos", "com/gsap/TweenLite"], function(t, e, n, i, r, o, a, s, l, u, c, h, p, f) {
            function d(t) {}

            function m(t) {}

            function g(t) {
                TweenLite.delayedCall(.5, function() {
                    u.start("BaseGame")
                })
            }

            function _(t) {
                B = t, u.showModifiersTransform("SunbeamWilds", y)
            }

            function y() {
                p.init(), h.setSky("SunbeamWilds"), s.onBeforeRequest(B)
            }

            function v(t) {
                l.tellConsolePlayload(), e.publish("nextState")
            }

            function b(t) {
                B = t, T()
            }

            function x() {
                s.onResolveStage(B)
            }

            function T() {
                var t = [],
                    e = r.gameLogic.PopulationOutcome("SunbeamWilds.TransformReels").map;
                Object.keys(e).forEach(function(n) {
                    "w01" == e[n] && t.push(n)
                }), t = t.reverse(), p.drawBeams(t)
            }

            function w() {
                o.stopChannel(6), u.showModifiedReels("SunbeamWilds"), p.clear(), TweenLite.delayedCall(.25, S)
            }

            function S() {
                u.start("SunbeamWilds")
            }

            function P() {
                r.gameLogic.PrizeOutcome("Modifier.Total") && r.gameLogic.PrizeOutcome("Modifier.Total").totalPay && "SunbeamWilds" === r.gameLogic.OutcomeDetail.Stage && TweenLite.delayedCall(.25, w)
            }

            function M(t) {
                e.publish("nextState")
            }

            function C(t) {
                e.publish("nextState")
            }

            function E(t) {
                f.fade(), h.transitionOut("SunbeamWilds", function() {
                    "BaseMusicLoop" !== o.currentPlaying(0) && o.play("BaseMusicLoop", 0, !0), e.publish("nextState")
                })
            }

            function O(t) {
                s.onAbortNextStage(t), e.publish("nextState")
            }

            function I(t) {
                e.publish("nextState")
            }

            function R(t) {
                e.publish("nextState")
            }

            function A(t) {
                e.publish("nextState")
            }

            function k(t) {
                c.show(), c.gameInProgress(), f.fade(), h.transitionIn("Modifier", L)
            }

            function L() {
                o.play("BonusTransition", 1, !1), h.setSky("Modifier"), c.enablePlayButton()
            }

            function D() {
                "BaseGame" === r.gameLogic.OutcomeDetail.Stage && "SunbeamWilds" === r.gameLogic.OutcomeDetail.NextStage && g()
            }
            var B;
            window.location.search.match(/&?assetPack=([^&]+)&?/)[1];
            return e.subscribe("onPlayButtonClicked", D), e.subscribe("platformMsg/ClientService/Game.Init", d), e.subscribe("platformMsg/Kernel/System.Init", m), e.subscribe("ReelsResolved", P), e.subscribe("SunbeamRays.complete", x), {
                onEnterNextStage: g,
                onBeforeShowStage: M,
                onBeforeRequest: _,
                onMakeRequest: v,
                onResolveStage: b,
                onEndGame: C,
                onExitStage: E,
                onAbortNextStage: O,
                onResetNextStage: I,
                onInProgressStage: R,
                onStartGameInProgressStage: A,
                onStartGameInProgressNextStage: k
            }
        }), define("game/ObeliskWilds", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/componentManchester/rgsModel/rgsModel", "game/Audio", "skbJet/component/currencyHelper/currencyHelper", "game/ReelController", "game/betController", "game/winSequence", "game/UI", "game/Utils", "game/transitions/SpinePlayer", "game/transitions/ModifierPlayer", "game/Logos", "com/gsap/TweenLite"], function(t, e, n, i, r, o, a, s, l, u, c, h, p, f, d) {
            function m(t) {}

            function g(t) {}

            function _(t) {
                TweenLite.delayedCall(.5, function() {
                    u.start("BaseGame")
                })
            }

            function y(t) {
                U = t, u.showModifiersTransform("ObeliskWilds", v)
            }

            function v() {
                p.setSky("ObeliskWilds"), s.onBeforeRequest(U)
            }

            function b(t) {
                l.tellConsolePlayload(), e.publish("nextState")
            }

            function x(t) {
                U = t, w()
            }

            function T() {
                V = [0, 0, 0, 0, 0];
                for (var t, e = r.gameLogic.PopulationOutcome("ObeliskWilds.TransformReels"), n = 0; n < 5; n++) t = "L0C" + Number(n) + "R", "w01" == e.map[t + "0"] && "w01" == e.map[t + "1"] && "w01" == e.map[t + "2"] && (V[n] = 1, X = n)
            }

            function w() {
                f.initialise("obeliskReel_spine"), i.lib._modifierReels.pixiContainer.visible = !0, i.lib._modifierReels.pixiContainer.alpha = 1, T();
                for (var t = 0; t < 5; t++) 1 == V[t] && TweenLite.delayedCall(1 + 1.5 * t, S, [t])
            }

            function S(t) {
                f.singlePlay({
                    anim: "obeliskRise",
                    reel: t,
                    loop: !1,
                    onComplete: P
                }), h.shakeScreen(1)
            }

            function P(t) {
                t == X && s.onResolveStage(U)
            }

            function M() {
                j = !1, W = !1, o.play("ObeliskWildsHighlight", 1, !1);
                for (var t = 0; t < 5; t++) 1 == V[t] && f.singlePlay({
                    anim: "obeliskGlow_IN",
                    reel: t,
                    loop: !1,
                    onComplete: C
                })
            }

            function C() {
                if (0 == j) {
                    j = !0, u.showModifiedReels("ObeliskWilds");
                    for (var t = 0; t < 5; t++) 1 == V[t] && f.singlePlay({
                        anim: "obeliskGlow_OUT",
                        reel: t,
                        loop: !1,
                        onComplete: E
                    })
                }
            }

            function E() {
                0 == W && (W = !0, TweenLite.to(i.lib._modifierReels.pixiContainer, .5, {
                    alpha: 0,
                    ease: Power1.easeInOut,
                    onComplete: function() {
                        i.lib._modifierReels.pixiContainer.visible = !1, i.lib._modifierReels.pixiContainer.alpha = 1
                    }
                }), TweenLite.delayedCall(1, function() {
                    u.start("ObeliskWilds")
                }))
            }

            function O() {
                r.gameLogic.PrizeOutcome("Modifier.Total") && r.gameLogic.PrizeOutcome("Modifier.Total").totalPay && "ObeliskWilds" === r.gameLogic.OutcomeDetail.Stage && M()
            }

            function I(t) {
                e.publish("nextState")
            }

            function R(t) {
                e.publish("nextState")
            }

            function A(t) {
                d.fade(), p.transitionOut("ObeliskWilds", function() {
                    "BaseMusicLoop" !== o.currentPlaying(0) && o.play("BaseMusicLoop", 0, !0), e.publish("nextState")
                })
            }

            function k(t) {
                s.onAbortNextStage(t), e.publish("nextState")
            }

            function L(t) {
                e.publish("nextState")
            }

            function D(t) {
                e.publish("nextState")
            }

            function B(t) {
                e.publish("nextState")
            }

            function N(t) {
                c.show(), c.gameInProgress(), d.fade(), p.transitionIn("Modifier", F)
            }

            function F() {
                p.setSky("Modifier"), c.enablePlayButton()
            }

            function G() {
                "BaseGame" === r.gameLogic.OutcomeDetail.Stage && "ObeliskWilds" === r.gameLogic.OutcomeDetail.NextStage && _()
            }
            var U, j, W, X, V = [0, 0, 0, 0, 0];
            return e.subscribe("onPlayButtonClicked", G), e.subscribe("platformMsg/ClientService/Game.Init", m), e.subscribe("platformMsg/Kernel/System.Init", g), e.subscribe("ReelsResolved", O), {
                onEnterNextStage: _,
                onBeforeShowStage: I,
                onBeforeRequest: y,
                onMakeRequest: b,
                onResolveStage: x,
                onEndGame: R,
                onExitStage: A,
                onAbortNextStage: k,
                onResetNextStage: L,
                onInProgressStage: D,
                onStartGameInProgressStage: B,
                onStartGameInProgressNextStage: N
            }
        }), define("game/MightyReel", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/componentManchester/rgsModel/rgsModel", "game/Audio", "skbJet/component/currencyHelper/currencyHelper", "game/ReelController", "game/betController", "game/winSequence", "game/UI", "game/Utils", "game/transitions/SpinePlayer", "game/transitions/ModifierPlayer", "game/Logos", "game/MightyReelSpin", "com/gsap/TweenLite"], function(t, e, n, i, r, o, a, s, l, u, c, h, p, f, d, m) {
            function g(t) {}

            function _(t) {
                N = i.lib._reelDiv1.pixiContainer, F = i.lib._reelDiv2.pixiContainer
            }

            function y(t) {
                TweenLite.delayedCall(.5, function() {
                    u.start("BaseGame")
                })
            }

            function v(t) {
                G = t, u.showModifiersTransform("MightyReel", b)
            }

            function b() {
                TweenLite.to(N, .5, {
                    alpha: 0,
                    ease: Power1.easeInOut
                }), TweenLite.to(F, .5, {
                    alpha: 0,
                    ease: Power1.easeInOut
                }), o.play("MightyReelThunder", 4, !1), p.setSky("MightyReel"), f.initSpecial({
                    name: "mightyReelClearAnim",
                    x: 960,
                    y: 540
                }), TweenLite.delayedCall(1, function() {
                    h.shakeScreen(1.6, 50), f.playSpecial({
                        anim: "mightyReelClear_IN",
                        onComplete: function() {
                            s.onBeforeRequest(G), o.play("MightyReelLoop", 5, !0)
                        }
                    })
                })
            }

            function x(t) {
                f.playSpecial({
                    anim: "mightyReelClear_OUT",
                    onComplete: function() {
                        l.tellConsolePlayload(), e.publish("nextState")
                    }
                })
            }

            function T(t) {
                G = t, w()
            }

            function w() {
                TweenLite.delayedCall(1, S)
            }

            function S() {
                s.onResolveStage(G)
            }

            function P() {
                TweenLite.to(N, .5, {
                    alpha: 1,
                    ease: Power1.easeInOut
                }), TweenLite.to(F, .5, {
                    alpha: 1,
                    ease: Power1.easeInOut
                }), h.shakeScreen(1.6, 50), i.lib._modifierReels.pixiContainer.visible = !0, i.lib._modifierReels.pixiContainer.alpha = 1, f.playSpecial({
                    anim: "mightyReelClear_IN",
                    onComplete: function() {
                        m.hide(), u.showModifiedReels("MightyReel"), s.resetMightyReels(), TweenLite.delayedCall(.1, function() {
                            f.playSpecial({
                                anim: "mightyReelClear_OUT",
                                onComplete: function() {
                                    TweenLite.delayedCall(1, function() {
                                        u.start("MightyReel"), i.lib._modifierReels.pixiContainer.visible = !1
                                    })
                                }
                            })
                        })
                    }
                })
            }

            function M() {
                r.gameLogic.PrizeOutcome("Modifier.Total") && r.gameLogic.PrizeOutcome("Modifier.Total").totalPay && "MightyReel" === r.gameLogic.OutcomeDetail.Stage && (o.play("MightyReelLoopStop", 5, !1), TweenLite.delayedCall(.5, P))
            }

            function C(t) {
                e.publish("nextState")
            }

            function E(t) {
                e.publish("nextState")
            }

            function O(t) {
                d.fade(), p.transitionOut("MightyReel", function() {
                    "BaseMusicLoop" !== o.currentPlaying(0) && o.play("BaseMusicLoop", 0, !0), e.publish("nextState")
                })
            }

            function I(t) {
                s.onAbortNextStage(t), e.publish("nextState")
            }

            function R(t) {
                e.publish("nextState")
            }

            function A(t) {
                e.publish("nextState")
            }

            function k(t) {
                e.publish("nextState")
            }

            function L(t) {
                c.show(), c.gameInProgress(), d.fade(), p.transitionIn("Modifier", D)
            }

            function D() {
                p.setSky("Modifier"), c.enablePlayButton()
            }

            function B() {
                "BaseGame" === r.gameLogic.OutcomeDetail.Stage && "MightyReel" === r.gameLogic.OutcomeDetail.NextStage && y()
            }
            var N, F, G;
            window.location.search.match(/&?assetPack=([^&]+)&?/)[1];
            return e.subscribe("onPlayButtonClicked", B), e.subscribe("platformMsg/ClientService/Game.Init", g), e.subscribe("platformMsg/Kernel/System.Init", _), e.subscribe("ReelsResolved", M), {
                onEnterNextStage: y,
                onBeforeShowStage: C,
                onBeforeRequest: v,
                onMakeRequest: x,
                onResolveStage: T,
                onEndGame: E,
                onExitStage: O,
                onAbortNextStage: I,
                onResetNextStage: R,
                onInProgressStage: A,
                onStartGameInProgressStage: k,
                onStartGameInProgressNextStage: L
            }
        }), define("game/loadController", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "game/component/howlerAudioPlayer/HowlerAudioSubLoader", "game/Audio", "skbJet/componentManchester/webfontLoader/FontSubLoader", "skbJet/componentManchester/spineLoader/SpineSubLoader", "skbJet/component/resourceLoader/ResourceLoader", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/componentManchester/rgsModel/rgsModel", "game/betController", "game/BaseGame", "game/TombOfPower", "game/TombOfMystery", "game/WaterfallStacks", "game/SunbeamWilds", "game/ObeliskWilds", "game/MightyReel", "game/Logos", "game/transitions/SpinePlayer", "game/transitions/ModifierPlayer"], function(t, e, n, i, r, o, a, s, l, u, c, h, p, f, d, m, g, _, y, v, b) {
            function x(n) {
                function i() {
                    e.publish("toPlatform", {
                        channel: "Kernel",
                        topic: "LoadProgress",
                        data: {
                            id: "game",
                            items: n.total + 1,
                            current: n.total + 1,
                            complete: !0
                        }
                    })
                }
                t.loader.add("fontBW", "assetPacks/" + P + "/bitmapFonts/pyramidionBW_font-export.xml").load(i)
            }

            function T(n) {
                e.publish("toPlatform", {
                    channel: "Kernel",
                    topic: "LoadProgress",
                    data: {
                        id: "game",
                        items: n.total + 1,
                        current: n.current,
                        complete: !1
                    }
                }), n.complete && (navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform) && !window.MSStream && (t.settings.PRECISION_FRAGMENT = t.PRECISION.HIGH), l.init(null, null, null), l.getPixiRenderer().roundPixels = !1, l.showScene("_GameScene"), x(n))
            }

            function w(t) {
                var n = t.state,
                    i = t.response;
                return "onBeforeShowStage" == n ? void("InProgress" == i.OutcomeDetail.GameStatus ? E._callHandler("onBeforeShowStage", i.OutcomeDetail.Stage, t) : E._callHandler("onBeforeShowStage", i.OutcomeDetail.NextStage, t)) : "onStartGameInProgressStage" == n ? void("InProgress" == i.OutcomeDetail.GameStatus ? E._callHandler("onStartGameInProgressStage", i.OutcomeDetail.Stage, t) : e.publish("NextStage")) : "onStartGameInProgressNextStage" == n ? void("InProgress" == i.OutcomeDetail.GameStatus ? E._callHandler("onStartGameInProgressNextStage", i.OutcomeDetail.NextStage, t) : e.publish("NextStage")) : "onStartGameInitial" == n ? void("Initial" == i.OutcomeDetail.GameStatus ? E._callHandler("onStartGameInitial", i.OutcomeDetail.NextStage, t) : e.publish("NextStage")) : "onBeforeRequest" == n ? void E._callHandler("onBeforeRequest", i.OutcomeDetail.NextStage, t) : "onMakeRequest" == n ? void E._callHandler("onMakeRequest", i.OutcomeDetail.NextStage, t) : "onAbortNextStage" == n ? void E._callHandler("onAbortNextStage", i.OutcomeDetail.NextStage, t) : "onResetNextStage" == t.state ? void E._callHandler("onResetNextStage", i.OutcomeDetail.NextStage, t) : "onResolveStage" == n ? void E._callHandler("onResolveStage", i.OutcomeDetail.Stage, t) : "onInProgressStage" == n ? void("InProgress" == i.OutcomeDetail.GameStatus && i.OutcomeDetail.Stage === i.OutcomeDetail.NextStage ? E._callHandler("onInProgressStage", i.OutcomeDetail.Stage, t) : e.publish("nextState")) : "onExitStage" == n ? void(i.OutcomeDetail.Stage !== i.OutcomeDetail.NextStage ? E._callHandler("onExitStage", i.OutcomeDetail.Stage, t) : e.publish("nextState")) : "onEnterNextStage" == n ? void(i.OutcomeDetail.Stage !== i.OutcomeDetail.NextStage ? E._callHandler("onEnterNextStage", i.OutcomeDetail.NextStage, t) : e.publish("nextState")) : "onEndGame" == n ? void("Start" === i.OutcomeDetail.GameStatus ? E._callHandler("onEndGame", i.OutcomeDetail.NextStage, t) : e.publish("nextState")) : "onBeginNewGame" == n ? void("Start" === i.OutcomeDetail.GameStatus ? E._callHandler("onBeginNewGame", i.OutcomeDetail.NextStage, t) : e.publish("nextState")) : void 0
            }

            function S(t) {}
            var P = window.location.search.match(/&?assetPack=([^&]+)&?/)[1],
                M = window.location.search.match(/&?language=([^&]+)&?/)[1],
                C = window.location.search.match(/&?skincode=([^&]+)&?/)[1],
                E = Object.freeze({
                    _setHandler: function(t, e, n) {
                        if (!O[t]) throw new Error("No such phase");
                        if (O[t][e]) throw new Error("A handler for this phase is already set and cannot be defined again");
                        if (!(n instanceof Function)) throw new Error("handler is not a function or is not defined in this window");
                        return O[t][e] = n, this
                    },
                    _callHandler: function(t, e, n) {
                        var i = O[t][e];
                        if (!i) throw new Error('No handler for phase "' + t + "[" + e + ']"');
                        i(n)
                    }
                }),
                O = Object.freeze({
                    onStartGameInitial: {},
                    onStartGameInProgressStage: {},
                    onStartGameInProgressNextStage: {},
                    onBeforeShowStage: {},
                    onBeforeRequest: {},
                    onMakeRequest: {},
                    onAbortNextStage: {},
                    onResetNextStage: {},
                    onResolveStage: {},
                    onExitStage: {},
                    onInProgressStage: {},
                    onEnterNextStage: {},
                    onJackpot: {},
                    onEndGame: {},
                    onBeginNewGame: {}
                });
            return E._setHandler("onStartGameInitial", "BaseGame", h.onStartGameInitial), E._setHandler("onBeforeShowStage", "BaseGame", h.onBeforeShowStage), E._setHandler("onBeforeRequest", "BaseGame", h.onBeforeRequest), E._setHandler("onMakeRequest", "BaseGame", h.onMakeRequest), E._setHandler("onResolveStage", "BaseGame", h.onResolveStage), E._setHandler("onExitStage", "BaseGame", h.onExitStage), E._setHandler("onEnterNextStage", "BaseGame", h.onEnterNextStage), E._setHandler("onEndGame", "BaseGame", h.onEndGame), E._setHandler("onBeginNewGame", "BaseGame", h.onBeginNewGame), E._setHandler("onAbortNextStage", "BaseGame", h.onAbortNextStage), E._setHandler("onResetNextStage", "BaseGame", h.onResetNextStage), E._setHandler("onInProgressStage", "BaseGame", h.onInProgressStage), E._setHandler("onStartGameInProgressStage", "BaseGame", h.onStartGameInProgressStage), E._setHandler("onStartGameInProgressNextStage", "BaseGame", h.onStartGameInProgressNextStage), E._setHandler("onBeforeShowStage", "TombOfPower", p.onBeforeShowStage), E._setHandler("onBeforeRequest", "TombOfPower", p.onBeforeRequest), E._setHandler("onMakeRequest", "TombOfPower", p.onMakeRequest), E._setHandler("onResolveStage", "TombOfPower", p.onResolveStage), E._setHandler("onExitStage", "TombOfPower", p.onExitStage), E._setHandler("onEnterNextStage", "TombOfPower", p.onEnterNextStage), E._setHandler("onEndGame", "TombOfPower", p.onEndGame), E._setHandler("onAbortNextStage", "TombOfPower", p.onAbortNextStage), E._setHandler("onResetNextStage", "TombOfPower", p.onResetNextStage), E._setHandler("onInProgressStage", "TombOfPower", p.onInProgressStage), E._setHandler("onStartGameInProgressStage", "TombOfPower", p.onStartGameInProgressStage), E._setHandler("onStartGameInProgressNextStage", "TombOfPower", p.onStartGameInProgressNextStage), E._setHandler("onBeforeShowStage", "TombOfMystery", f.onBeforeShowStage), E._setHandler("onBeforeRequest", "TombOfMystery", f.onBeforeRequest), E._setHandler("onMakeRequest", "TombOfMystery", f.onMakeRequest), E._setHandler("onResolveStage", "TombOfMystery", f.onResolveStage), E._setHandler("onExitStage", "TombOfMystery", f.onExitStage), E._setHandler("onEnterNextStage", "TombOfMystery", f.onEnterNextStage), E._setHandler("onEndGame", "TombOfMystery", f.onEndGame), E._setHandler("onAbortNextStage", "TombOfMystery", f.onAbortNextStage), E._setHandler("onResetNextStage", "TombOfMystery", f.onResetNextStage), E._setHandler("onInProgressStage", "TombOfMystery", f.onInProgressStage), E._setHandler("onStartGameInProgressStage", "TombOfMystery", f.onStartGameInProgressStage), E._setHandler("onStartGameInProgressNextStage", "TombOfMystery", f.onStartGameInProgressNextStage), E._setHandler("onBeforeShowStage", "WaterfallStacks", d.onBeforeShowStage), E._setHandler("onBeforeRequest", "WaterfallStacks", d.onBeforeRequest), E._setHandler("onMakeRequest", "WaterfallStacks", d.onMakeRequest), E._setHandler("onResolveStage", "WaterfallStacks", d.onResolveStage), E._setHandler("onExitStage", "WaterfallStacks", d.onExitStage), E._setHandler("onEnterNextStage", "WaterfallStacks", d.onEnterNextStage), E._setHandler("onEndGame", "WaterfallStacks", d.onEndGame), E._setHandler("onAbortNextStage", "WaterfallStacks", d.onAbortNextStage), E._setHandler("onResetNextStage", "WaterfallStacks", d.onResetNextStage), E._setHandler("onInProgressStage", "WaterfallStacks", d.onInProgressStage), E._setHandler("onStartGameInProgressStage", "WaterfallStacks", d.onStartGameInProgressStage), E._setHandler("onStartGameInProgressNextStage", "WaterfallStacks", d.onStartGameInProgressNextStage), E._setHandler("onBeforeShowStage", "SunbeamWilds", m.onBeforeShowStage), E._setHandler("onBeforeRequest", "SunbeamWilds", m.onBeforeRequest), E._setHandler("onMakeRequest", "SunbeamWilds", m.onMakeRequest), E._setHandler("onResolveStage", "SunbeamWilds", m.onResolveStage), E._setHandler("onExitStage", "SunbeamWilds", m.onExitStage), E._setHandler("onEnterNextStage", "SunbeamWilds", m.onEnterNextStage), E._setHandler("onEndGame", "SunbeamWilds", m.onEndGame), E._setHandler("onAbortNextStage", "SunbeamWilds", m.onAbortNextStage), E._setHandler("onResetNextStage", "SunbeamWilds", m.onResetNextStage), E._setHandler("onInProgressStage", "SunbeamWilds", m.onInProgressStage), E._setHandler("onStartGameInProgressStage", "SunbeamWilds", m.onStartGameInProgressStage), E._setHandler("onStartGameInProgressNextStage", "SunbeamWilds", m.onStartGameInProgressNextStage), E._setHandler("onBeforeShowStage", "ObeliskWilds", g.onBeforeShowStage), E._setHandler("onBeforeRequest", "ObeliskWilds", g.onBeforeRequest), E._setHandler("onMakeRequest", "ObeliskWilds", g.onMakeRequest), E._setHandler("onResolveStage", "ObeliskWilds", g.onResolveStage), E._setHandler("onExitStage", "ObeliskWilds", g.onExitStage), E._setHandler("onEnterNextStage", "ObeliskWilds", g.onEnterNextStage), E._setHandler("onEndGame", "ObeliskWilds", g.onEndGame), E._setHandler("onAbortNextStage", "ObeliskWilds", g.onAbortNextStage), E._setHandler("onResetNextStage", "ObeliskWilds", g.onResetNextStage), E._setHandler("onInProgressStage", "ObeliskWilds", g.onInProgressStage), E._setHandler("onStartGameInProgressStage", "ObeliskWilds", g.onStartGameInProgressStage), E._setHandler("onStartGameInProgressNextStage", "ObeliskWilds", g.onStartGameInProgressNextStage), E._setHandler("onBeforeShowStage", "MightyReel", _.onBeforeShowStage), E._setHandler("onBeforeRequest", "MightyReel", _.onBeforeRequest), E._setHandler("onMakeRequest", "MightyReel", _.onMakeRequest), E._setHandler("onResolveStage", "MightyReel", _.onResolveStage), E._setHandler("onExitStage", "MightyReel", _.onExitStage), E._setHandler("onEnterNextStage", "MightyReel", _.onEnterNextStage), E._setHandler("onEndGame", "MightyReel", _.onEndGame), E._setHandler("onAbortNextStage", "MightyReel", _.onAbortNextStage), E._setHandler("onResetNextStage", "MightyReel", _.onResetNextStage), E._setHandler("onInProgressStage", "MightyReel", _.onInProgressStage), E._setHandler("onStartGameInProgressStage", "MightyReel", _.onStartGameInProgressStage), E._setHandler("onStartGameInProgressNextStage", "MightyReel", _.onStartGameInProgressNextStage), e.subscribe("resourceLoader.loadProgress", T), e.subscribe("platformMsg/ClientService/Game.Init", S), Object.keys(O).forEach(function(t) {
                e.subscribe(t, w)
            }), s.load("assetPacks/" + P, M, C), a.getDefault().addSubLoader("sounds", new n({
                type: "sounds"
            })), a.getDefault().addSubLoader("fonts", new r), a.getDefault().addSubLoader("spine", new o), {}
        }), define("skbJet/componentManchester/paylineDiagrams/PaylineDiagrams", [], function() {
            function t(t) {
                if (t.cellWidth = t.cellWidth || 10, t.cellHeight = t.cellHeight || 10, !t.reels) {
                    t.reels = [];
                    for (var e = 0; e < t.columns; e += 1) t.reels.push({
                        x: e * t.cellWidth,
                        y: 0,
                        h: t.rows
                    })
                }
                t.canvasH = 0, t.canvasW = 0, t.reels.forEach(function(e) {
                    var n = e.y + e.h * t.cellHeight + 1;
                    t.canvasH = Math.max(t.canvasH, n);
                    var i = e.x + t.cellWidth + 1;
                    t.canvasW = Math.max(t.canvasW, i)
                }), this.dimensions = t
            }
            return t.prototype.renderDiagram = function(t, e, n) {
                var i = window.devicePixelRatio || 1,
                    r = document.createElement("canvas"),
                    o = r.getContext("2d");
                r.width = this.dimensions.canvasW * i, r.height = this.dimensions.canvasH * i, r.style.width = this.dimensions.canvasW + "px", r.style.height = this.dimensions.canvasH + "px", o.scale(i, i), o.fillStyle = "#fff", o.fillRect(1, 1, this.dimensions.canvasW, this.dimensions.canvasH);
                for (var a = 0, s = 0; s < this.dimensions.reels.length; s += 1)
                    for (var l = this.dimensions.reels[s], u = 0; u < l.h; u += 1) {
                        var c = l.x,
                            h = l.y + u * this.dimensions.cellHeight;
                        o.fillStyle = "#333", o.fillRect(c, h, this.dimensions.cellWidth + 1, this.dimensions.cellHeight + 1), o.fillStyle = t.locations.indexOf(a) > -1 ? n : "#fff", o.fillRect(c + 1, h + 1, this.dimensions.cellWidth - 1, this.dimensions.cellHeight - 1), a += 1
                    }
                var p = document.createElement("div"),
                    f = document.createElement("div");
                return p.className = "paylineDiagram", f.className = "paylineCaption", f.textContent = e, p.appendChild(f), p.appendChild(r), p
            }, t.prototype.render = function(t, e) {
                e = e || "#36a9e2";
                var n = document.createElement("div");
                n.className = "paylineWrapper";
                for (var i = 0; i < t.length; i += 1) {
                    var r = this.renderDiagram(t[i], i + 1, e);
                    n.appendChild(r)
                }
                return n
            }, t
        }), define("game/helpAndPaytable", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/currencyHelper/currencyHelper", "game/WinlineHelper", "game/Audio", "skbJet/componentManchester/paylineDiagrams/PaylineDiagrams", "skbJet/componentManchester/commonUI/slot/slotUI"], function(t, e, n, i, r, o, a, s) {
            function l() {
                for (var t = document.getElementsByTagName("article"), e = 0; e < t.length; e++) t[e].addEventListener("mousedown", u, !1);
                document.addEventListener("mousemove", u, !1)
            }

            function u(t) {
                var e = t || window.event;
                e.returnValue = !1, e.preventDefault()
            }

            function c(t) {
                E = t.PaytableResponse.AwardCapInfo.CurrencyCap.AwardCap, "true" === t.PaytableResponse.PaytableStatistics["@singleRTP"] ? (O = t.PaytableResponse.PaytableStatistics["@maxSingleRTP"], I = t.PaytableResponse.PaytableStatistics["@minSingleRTP"]) : (O = t.PaytableResponse.PaytableStatistics["@maxRTP"], I = t.PaytableResponse.PaytableStatistics["@minRTP"]), O === I ? (n.i18n.Paytable.RTPvalue = n.i18n.Paytable.RTPvalue.replace("{@minRTP}", I), R = n.i18n.Paytable.RTPvalue) : (n.i18n.Paytable.RTPrange = n.i18n.Paytable.RTPrange.replace("{@minRTP}", I), n.i18n.Paytable.RTPrange = n.i18n.Paytable.RTPrange.replace("{@maxRTP}", O), R = n.i18n.Paytable.RTPrange), d()
            }

            function h() {
                _(), y(), b()
            }

            function p(t) {
                "BaseGame" === t.response.OutcomeDetail.NextStage && (L = !1, g())
            }

            function f() {
                L = !0, s.baseGame.autoSpin.enabled ? g() : m()
            }

            function d() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Register",
                    data: {
                        options: [{
                            type: "command",
                            name: "paytable",
                            text: n.i18n.MenuCommand.payTable,
                            enabled: 0
                        }]
                    }
                }), t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Register",
                    data: {
                        options: [{
                            type: "command",
                            name: "howToPlay",
                            text: n.i18n.MenuCommand.howToPlay,
                            enabled: 0
                        }]
                    }
                })
            }

            function m() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "howToPlay",
                        event: "enable",
                        params: [1]
                    }
                }), t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "paytable",
                        event: "enable",
                        params: [1]
                    }
                })
            }

            function g() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "howToPlay",
                        event: "enable",
                        params: [0]
                    }
                }), t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "paytable",
                        event: "enable",
                        params: [0]
                    }
                })
            }

            function _() {
                var t = document.getElementById("gameRulesHeader"),
                    e = document.getElementById("paytableHeader");
                t.innerHTML = n.i18n.Game.gameRules, e.innerHTML = n.i18n.Game.payTable
            }

            function y() {
                var t = n.i18n.paytableHTML.replace(/\"/g, "'");
                t = t.replace("<winlinediagrams/>", A), t = t.replace("{awardCap}", i.formatBalance(E)), t = t.replace("{RTP}", R), t = v(t), document.getElementById("paytableArticle").innerHTML = t;
                var e = n.i18n.helpHTML.replace(/\"/g, "'"),
                    o = document.getElementById("gameRulesArticle");
                e = v(e), o.innerHTML = e;
                var a = r.getLocations();
                document.getElementById("payLinesContainer").appendChild(k.render(a))
            }

            function v(t) {
                return t = t.replace(/{w01}/g, n.getImgObj("w01").outerHTML), t = t.replace(/{w02}/g, n.getImgObj("w02").outerHTML), t = t.replace(/{b01}/g, n.getImgObj("b01").outerHTML), t = t.replace(/{b02}/g, n.getImgObj("b02").outerHTML), t = t.replace(/{b03}/g, n.getImgObj("b03").outerHTML), t = t.replace(/{s01}/g, n.getImgObj("s01").outerHTML), t = t.replace(/{s02}/g, n.getImgObj("s02").outerHTML), t = t.replace(/{s03}/g, n.getImgObj("s03").outerHTML), t = t.replace(/{s04}/g, n.getImgObj("s04").outerHTML), t = t.replace(/{s05}/g, n.getImgObj("s05").outerHTML), t = t.replace(/{s06}/g, n.getImgObj("s06").outerHTML), t = t.replace(/{s07}/g, n.getImgObj("s07").outerHTML), t = t.replace(/{s08}/g, n.getImgObj("s08").outerHTML), t = t.replace(/{s09}/g, n.getImgObj("s09").outerHTML), t = t.replace(/{t01}/g, n.getImgObj("t01").outerHTML), t = t.replace(/{M_MR}/g, n.getImgObj("M_MR").outerHTML), t = t.replace(/{M_OW}/g, n.getImgObj("M_OW").outerHTML), t = t.replace(/{M_SW}/g, n.getImgObj("M_SW").outerHTML), t = t.replace(/{M_WS}/g, n.getImgObj("M_WS").outerHTML)
            }

            function b() {
                var t = document.getElementsByClassName("closeBtn");
                Array.prototype.forEach.call(t, function(t) {
                    t.innerHTML = n.i18n.Game.buttonClose, t.onclick = function() {
                        x("game"), o.play("UiClose", 10, !1)
                    }
                })
            }

            function x(t) {
                for (var e = document.getElementsByClassName("tab"), n = 0; n < e.length; n++) e[n].style.display = "none";
                document.getElementById(t).style.display = "block"
            }

            function T() {
                L = !1, g()
            }

            function w(t) {
                if ("paytable" === t.option || "howToPlay" === t.option) {
                    var e = "howToPlay" === t.option ? "gameRules" : "paytable";
                    "block" === document.getElementById(e).style.display ? x("game") : (x(e), o.play("UiOpen", 10, !1))
                }
            }

            function S() {
                g()
            }

            function P(t) {
                "BaseGame" === t.response.OutcomeDetail.NextStage && (L = !0, m())
            }

            function M() {
                g()
            }

            function C() {
                L && m()
            }
            var E, O, I, R, A, k = new a({
                    columns: 5,
                    rows: 3
                }),
                L = !0;
            return t.subscribe("platformMsg/Kernel/System.Init", l), t.subscribe("platformMsg/ClientService/Game.Init", c), t.subscribe("onBeforeShowStage", h), t.subscribe("onBeforeRequest", p), t.subscribe("onBeginNewGame", f), t.subscribe("onAbortNextStage", S), t.subscribe("onResetNextStage", P), t.subscribe("platformMsg/ConsoleService/Game.Control", w), t.subscribe("onStartGameInProgressStage", T), t.subscribe("helpFiles.enableConsole", m), t.subscribe("AutoSpin.enabled", M), t.subscribe("AutoSpin.disabled", C), t.subscribe("UI.AutoSpinDialogueOpen", g), t.subscribe("UI.AutoSpinDialogueClose", m), {}
        }), require(["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gameMsgBus/PlatformMsgBusAdapter", "game/GameSizeController", "game/loadController", "game/UI", "game/helpAndPaytable"], function(t, e) {
            function n(t) {}

            function i() {}

            function r(e) {
                var n = e.PaytableResponse.VersionInfo;
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.InitDone",
                    data: {
                        version: {
                            gameVersion: window._cacheFlag.gameVersion,
                            gleVersion: n && n.GameLogicVersion || "dev"
                        }
                    }
                })
            }
            t.subscribe("platformMsg/Kernel/System.Init", n), t.subscribe("platformMsg/ClientService/Game.Init", r), t.subscribe("onBeforeShowStage", i)
        }), define("game", function() {})
}();