From c1488e027864086ad12ded7f822d154bad051ec4 Mon Sep 17 00:00:00 2001 From: Kevin Destrem Date: Thu, 29 Jun 2017 23:56:05 +0900 Subject: [PATCH] Fix log --- build/fatina.d.ts | 6 +++--- build/fatina.js | 6 +++--- build/fatina.js.map | 2 +- build/fatina.min.js | 2 +- build/fatina.min.js.map | 2 +- src/fatina/core/enum/log.ts | 6 +++--- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/build/fatina.d.ts b/build/fatina.d.ts index afdba49..185eb89 100644 --- a/build/fatina.d.ts +++ b/build/fatina.d.ts @@ -24,9 +24,9 @@ export function Ticker(): ITicker; export function LoadPlugin(newPlugin: IPlugin): void; export enum Log { - None = "none", - Info = "info", - Debug = "debug", + None = 0, + Info = 1, + Debug = 2, } export interface IControl { diff --git a/build/fatina.js b/build/fatina.js index ab86d9e..270bc4c 100644 --- a/build/fatina.js +++ b/build/fatina.js @@ -338,9 +338,9 @@ exports.BaseTween = BaseTween; Object.defineProperty(exports, "__esModule", { value: true }); var Log; (function (Log) { - Log["None"] = "none"; - Log["Info"] = "info"; - Log["Debug"] = "debug"; + Log[Log["None"] = 0] = "None"; + Log[Log["Info"] = 1] = "Info"; + Log[Log["Debug"] = 2] = "Debug"; })(Log = exports.Log || (exports.Log = {})); diff --git a/build/fatina.js.map b/build/fatina.js.map index d272f24..7c05f54 100644 --- a/build/fatina.js.map +++ b/build/fatina.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 9bf4abdedce92a24e68c","webpack:///./src/fatina/core/enum/state.ts","webpack:///./src/fatina/tweens/baseTween.ts","webpack:///./src/fatina/core/enum/log.ts","webpack:///./src/fatina/easing/easingType.ts","webpack:///./src/fatina/tweens/delay.ts","webpack:///./src/fatina/tweens/sequence.ts","webpack:///./src/fatina/index.ts","webpack:///./src/fatina/ticker.ts","webpack:///./src/fatina/core/eventList.ts","webpack:///./src/fatina/tweens/callback.ts","webpack:///./src/fatina/tweens/tween.ts","webpack:///./src/fatina/easing/easing.ts"],"names":[],"mappings":"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","file":"fatina.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Fatina\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Fatina\"] = factory();\n\telse\n\t\troot[\"Fatina\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 6);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 9bf4abdedce92a24e68c","/**\r\n * Possible states of a Tween / Sequence\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum State {\r\n\tIdle,\r\n\tRun,\r\n\tPause,\r\n\tFinished,\r\n\tKilled\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/core/enum/state.ts","import { Log } from '../core/enum/log';\nimport { State } from '../core/enum/state';\nimport { ITicker } from '../core/interfaces/ITicker';\n\n/**\n * Shared behaviors between different types of tweens and sequence\n * Used mostly to manage:\n * - events\n * - state\n * - loop and restart\n *\n * @export\n * @abstract\n * @class BaseTween\n */\nexport abstract class BaseTween> {\n\t// events\n\tprotected eventStart: {(): void}[] | undefined;\n\tprotected eventRestart: {(): void}[] | undefined;\n\tprotected eventUpdate: {(dt: number, progress: number): void}[] | undefined;\n\tprotected eventKill: {(): void}[] | undefined;\n\tprotected eventComplete: {(): void}[] | undefined;\n\n\t// public properties\n\tpublic elapsed = 0;\n\tpublic duration = 0;\n\tpublic timescale = 1;\n\tpublic state: State = State.Idle;\n\n\t// private properties\n\tprotected loopOriginal = 1;\n\tprotected loop = 1;\n\tprotected yoyoOriginal = 0;\n\tprotected yoyo = 0;\n\tprotected parent: ITicker;\n\tprotected tickCb: (dt: number) => void;\n\tprivate firstStart = true;\n\tprivate recycled = false;\n\tprivate safe = true;\n\tprivate logLevel = Log.None;\n\n\t/**\n\t * Method used to start a tween\n\t *\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Start(): T {\n\t\tif (this.state !== State.Idle) {\n\t\t\treturn this as any;\n\t\t}\n\n\t\tif (this.firstStart) {\n\t\t\tthis.Validate();\n\t\t} else {\n\t\t\tthis.CheckPosition();\n\t\t}\n\n\t\tthis.state = State.Run;\n\t\tif (this.recycled) {\n\t\t\tif (!this.parent.CheckTickListener(this.tickCb)) {\n\t\t\t\tthis.parent.AddTickListener(this.tickCb);\n\t\t\t}\n\t\t\tthis.recycled = false;\n\t\t} else {\n\t\t\tthis.parent.AddTickListener(this.tickCb);\n\t\t}\n\n\t\tif (this.firstStart) {\n\t\t\tthis.EmitEvent(this.eventStart);\n\t\t\tthis.firstStart = false;\n\t\t}\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Reset a tween to be reusable (with start)\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Recycle() {\n\t\tthis.Reset(true);\n\t\tthis.firstStart = true;\n\t\tthis.recycled = true;\n\t}\n\n\t/**\n\t * To Reset a Tween already finished (example looping sequence)\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Reset(skipParent?: boolean): void {\n\t\tthis.state = State.Idle;\n\n\t\tif (!skipParent) {\n\t\t\tthis.RemoveParentListener();\n\t\t}\n\n\t\tthis.loop = this.loopOriginal;\n\t\tthis.LoopInit();\n\t\tthis.EmitEvent(this.eventRestart);\n\t}\n\n\t/**\n\t * To immediately Reset a tween without stopping/restarting it\n\t * This is faster than calling manually Reset() & Start() & Tick()\n\t *\n\t * @param {number} dtRemains\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic ResetAndStart(dtRemains: number) {\n\t\tthis.LoopInit();\n\t\tthis.EmitEvent(this.eventRestart);\n\n\t\tthis.state = State.Run;\n\t\tif (dtRemains > 0) {\n\t\t\tthis.tickCb(dtRemains);\n\t\t}\n\t}\n\n\t/**\n\t * Method used to define the ticker of this tween\n\t * When Fatina.Tween is used, the main ticker is automatically defined as parent\n\t *\n\t * @param {ITicker} ticker\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic SetParent(ticker: ITicker): T {\n\t\tthis.RemoveParentListener();\n\t\tthis.parent = ticker;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Method used to change the timescale of the tween\n\t *\n\t * @param {number} scale\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic SetTimescale(scale: number): T {\n\t\tthis.timescale = scale;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Method used to pause a tween or a sequence (only work if the tween runs)\n\t *\n\t * @returns {void}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Pause(): void {\n\t\tif (this.state !== State.Run) {\n\t\t\tthis.Info(Log.Info, 'Cannot pause this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = State.Pause;\n\t\tthis.RemoveParentListener();\n\t}\n\n\t/**\n\t * Method used to resume a tween or a sequence (only work if the tween is paused)\n\t *\n\t * @returns {void}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Resume(): void {\n\t\tif (this.state !== State.Pause) {\n\t\t\tthis.Info(Log.Info, 'Cannot resume this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = State.Run;\n\t\tthis.parent.AddTickListener(this.tickCb);\n\t}\n\n\t/**\n\t * Method used to Skip this tween or sequence and directly finish it\n\t *\n\t * @param {boolean} [finalValue]\n\t * @returns {void}\n\t * @memberOf BaseTween\n\t */\n\tpublic Skip(finalValue?: boolean): void {\n\t\tif (this.state === State.Killed || this.state === State.Finished) {\n\t\t\tthis.Info(Log.Info, 'Cannot skip this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.state === State.Idle) {\n\t\t\tthis.EmitEvent(this.eventStart);\n\t\t}\n\n\t\tif (finalValue) {\n\t\t\tthis.tickCb(this.duration - this.elapsed + (this.yoyo * this.duration));\n\t\t\treturn;\n\t\t}\n\n\t\tthis.elapsed = this.duration;\n\t\tthis.Complete();\n\t}\n\n\t/**\n\t * Method used to Stop/Kill a tween or a sequence\n\t *\n\t * @returns {void}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Kill(): void {\n\t\tif (this.state === State.Killed) {\n\t\t\tthis.Info(Log.Info, 'Cannot kill this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = State.Killed;\n\t\tthis.RemoveParentListener();\n\t\tthis.EmitEvent(this.eventKill);\n\t}\n\n\t/**\n\t * Method used to define how many time the tween has to loop\n\t * Extra: if -1 the tween will loop forever\n\t *\n\t * @param {number} loop\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic SetLoop(loop: number): T {\n\t\tthis.loopOriginal = Math.round(loop);\n\t\tthis.loop = this.loopOriginal;\n\t\treturn this as any;\n\t}\n\n\tpublic IsIdle(): boolean {\n\t\treturn this.state === State.Idle;\n\t}\n\n\tpublic IsRunning(): boolean {\n\t\treturn this.state === State.Run;\n\t}\n\n\tpublic IsFinished(): boolean {\n\t\treturn this.state === State.Killed || this.state === State.Finished;\n\t}\n\n\tpublic IsPaused(): boolean {\n\t\treturn this. state === State.Pause;\n\t}\n\n\tprotected Complete(): void {\n\t\tif (this.state === State.Killed || this.state === State.Finished) {\n\t\t\tthis.Info(Log.Info, 'Cannot complete this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = State.Finished;\n\t\tthis.RemoveParentListener();\n\t\tthis.EmitEvent(this.eventComplete);\n\t}\n\n\tprotected RemoveParentListener() {\n\t\tif (this.parent) {\n\t\t\tthis.parent.RemoveTickListener(this.tickCb);\n\t\t}\n\t}\n\n\tprotected CheckPosition(): void {}\n\tprotected Validate(): void {}\n\tprotected LoopInit(): void {\n\t\tthis.elapsed = 0;\n\t}\n\n\tpublic SetSafe(safe: boolean): T {\n\t\tthis.safe = safe;\n\t\treturn this as any;\n\t}\n\n\tpublic SetLog(level: Log): T {\n\t\tthis.logLevel = level;\n\t\treturn this as any;\n\t}\n\n\tprotected Info(level: Log, message: string, data?: any) {\n\t\tif (level > this.logLevel) {\n\t\t\treturn;\n\t\t}\n\t\tif (data) {\n\t\t\tconsole.log(message, data);\n\t\t} else {\n\t\t\tconsole.log(message);\n\t\t}\n\t}\n\n\tprivate Emit(func: any, args: any) {\n\t\tif (!this.safe) {\n\t\t\treturn func.apply(this, args);\n\t\t}\n\t\ttry {\n\t\t\tfunc.apply(this, args);\n\t\t} catch (e) {\n\t\t\tconsole.warn(e);\n\t\t}\n\t}\n\n\tprotected EmitEvent(listeners: any, args?: any) {\n\t\tif (!listeners) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < listeners.length; i++) {\n\t\t\tthis.Emit(listeners[i], args);\n\t\t}\n\t}\n\n\t/**\n\t * Callback called when the tween started\n\t *\n\t * @param {() => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnStart(cb: () => void): T {\n\t\tif (!this.eventStart) {\n\t\t\tthis.eventStart = new Array(0);\n\t\t}\n\t\tthis.eventStart[this.eventStart.length] = cb;\n\t\tthis.Info(Log.Debug, 'onStart');\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Callback called when the tween restart (loop)\n\t *\n\t * @param {() => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnRestart(cb: () => void): T {\n\t\tif (!this.eventRestart) {\n\t\t\tthis.eventRestart = new Array(0);\n\t\t}\n\t\tthis.eventRestart[this.eventRestart.length] = cb;\n\t\tthis.Info(Log.Debug, 'onRestart');\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Callback called when the tween is updated\n\t *\n\t * @param {(dt: number, progress: number) => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnUpdate(cb: (dt: number, progress: number) => void): T {\n\t\tif (!this.eventUpdate) {\n\t\t\tthis.eventUpdate = new Array(0);\n\t\t}\n\t\tthis.eventUpdate[this.eventUpdate.length] = cb;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Callback called when the tween is manually killed\n\t *\n\t * @param {() => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnKilled(cb: () => void): T {\n\t\tif (!this.eventKill) {\n\t\t\tthis.eventKill = new Array(0);\n\t\t}\n\t\tthis.eventKill[this.eventKill.length] = cb;\n\t\tthis.Info(Log.Debug, 'onKilled');\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Callback called when the tween is finished\n\t *\n\t * @param {() => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnComplete(cb: () => void): T {\n\t\tif (!this.eventComplete) {\n\t\t\tthis.eventComplete = new Array(0);\n\t\t}\n\t\tthis.eventComplete[this.eventComplete.length] = cb;\n\t\tthis.Info(Log.Debug, 'onComplete');\n\t\treturn this as any;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/baseTween.ts","/**\n * Enum use to set the verbosity level of fatina and tweens\n *\n * @export\n * @enum {number}\n */\nexport enum Log {\n\tNone = 'none',\n\tInfo = 'info',\n\tDebug = 'debug'\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/core/enum/log.ts","\r\n/**\r\n * List of all easing methods\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum EasingType {\r\n\tLinear = 'linear',\r\n\tInQuad = 'inQuad',\r\n\tOutQuad = 'outQuad',\r\n\tInOutQuad = 'inOutQuad',\r\n\tInCubic = 'inCubic',\r\n\tOutCubic = 'outCubic',\r\n\tInOutCubic = 'inOutCubic',\r\n\tInQuart = 'inQuart',\r\n\tOutQuart = 'outQuart',\r\n\tInOutQuart = 'inOutQuart',\r\n\tInSine = 'inSine',\r\n\tOutSine = 'outSine',\r\n\tInOutSine = 'inOutSine',\r\n\tInCirc = 'inCirc',\r\n\tOutCirc = 'outCirc',\r\n\tInOutCirc = 'inOutCirc',\r\n\tInQuint = 'inQuint',\r\n\tOutQuint = 'outQuint',\r\n\tInOutQuint = 'inOutQuint',\r\n\tInExponential = 'inExponential',\r\n\tOutExponential = 'outExponential',\r\n\tInOutExponential = 'inOutExponential',\r\n\tInElastic = 'inElastic',\r\n\tOutElastic = 'outElastic',\r\n\tInOutElastic = 'inOutElastic',\r\n\tInBack = 'inBack',\r\n\tOutBack = 'outBack',\r\n\tInOutBack = 'inOutBack',\r\n\tInBounce = 'inBounce',\r\n\tOutBounce = 'outBounce',\r\n\tInOutBounce = 'inOutBounce'\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/easing/easingType.ts","import { IPlayable } from '../core/interfaces/IPlayable';\r\nimport { BaseTween } from './baseTween';\r\n\r\n/**\r\n * Fake tween used to delay other tweens in a sequence\r\n *\r\n * @export\r\n * @class Delay\r\n * @extends {BaseTween}\r\n * @implements {IPlayable}\r\n */\r\nexport class Delay extends BaseTween implements IPlayable {\r\n\tprivate remainsDt: number;\r\n\r\n\tconstructor(duration: number) {\r\n\t\tsuper();\r\n\t\tthis.duration = duration;\r\n\t\tthis.tickCb = this.Tick.bind(this);\r\n\t}\r\n\r\n\tprivate Tick(dt: number) {\r\n\t\tthis.remainsDt = dt * this.timescale;\r\n\r\n\t\twhile (this.remainsDt > 0) {\r\n\t\t\tthis.elapsed += this.remainsDt;\r\n\t\t\tconst progress = Math.max(Math.min(this.elapsed / this.duration, 1), 0);\r\n\t\t\tthis.EmitEvent(this.eventUpdate, [this.remainsDt, progress]);\r\n\r\n\t\t\tif (this.elapsed < this.duration) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.remainsDt = this.elapsed - this.duration;\r\n\t\t\tthis.loop--;\r\n\t\t\tif (this.loop === 0) {\r\n\t\t\t\tthis.Complete();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.ResetAndStart(0);\r\n\t\t}\r\n\t}\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/delay.ts","import { Log } from '../core/enum/log';\nimport { State } from '../core/enum/state';\nimport { IPlayable } from '../core/interfaces/IPlayable';\nimport { ISequence } from '../core/interfaces/ISequence';\nimport { ITicker } from '../core/interfaces/ITicker';\nimport { ITween } from '../core/interfaces/ITween';\nimport { BaseTween } from './baseTween';\nimport { Callback } from './callback';\nimport { Delay } from './delay';\n\n/**\n * Sequence: used to animate other tweens or sequence\n * Can play them sequentially or in parallel\n *\n * @export\n * @class Sequence\n * @extends {BaseTween}\n * @implements {ISequence}\n * @implements {ITicker}\n * @implements {IPlayable}\n */\nexport class Sequence extends BaseTween implements ISequence, ITicker, IPlayable {\n\t// events\n\tprivate eventStepStart: {(tween: ITween | IPlayable): void}[] | undefined;\n\tprivate eventStepEnd: {(tween: ITween | IPlayable): void}[] | undefined;\n\n\t// public properties\n\tpublic currentTween: (ITween | IPlayable)[] | undefined;\n\n\t// private properties\n\tprivate eventTick: {(dt: number): void}[] = [];\n\tprivate tweens: ((ITween | IPlayable)[])[] = [];\n\tprivate sequenceIndex = 0;\n\n\tpublic get Count(): number {\n\t\treturn this.tweens.length;\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.tickCb = this.Tick.bind(this);\n\t}\n\n\tprotected LoopInit() {\n\t\tthis.sequenceIndex = 0;\n\t\tfor (let i = 0; i < this.tweens.length; i++) {\n\t\t\tconst tweenArray = this.tweens[i];\n\t\t\tfor (let j = 0; j < tweenArray.length; j++) {\n\t\t\t\ttweenArray[j].Reset();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic AddTickListener(cb: (dt: number) => void): void {\n\t\tthis.eventTick.unshift(cb);\n\t}\n\n\tpublic RemoveTickListener(cb: (dt: number) => void): void {\n\t\tconst index = this.eventTick.indexOf(cb);\n\t\tif (index !== -1) {\n\t\t\tthis.eventTick.splice(index, 1);\n\t\t}\n\t}\n\n\tpublic CheckTickListener(cb: (dt: number) => void): boolean {\n\t\treturn false;\n\t}\n\n\tprivate Tick(dt: number) {\n\t\tif (this.state === State.Finished || this.state === State.Killed) {\n\t\t\treturn;\n\t\t}\n\t\tconst localDt = dt * this.timescale;\n\t\tthis.elapsed += localDt;\n\t\tthis.LocalTick(localDt);\n\t}\n\n\tprivate LocalTick(dt: number, remains?: boolean) {\n\t\t// If no current tween, take the first one and start it\n\t\tif (!this.currentTween) {\n\t\t\tthis.NextTween();\n\t\t}\n\n\t\tif (this.currentTween) {\n\t\t\t// Tick every listener\n\t\t\tfor (let i = this.eventTick.length - 1; i >= 0; i--) {\n\t\t\t\tthis.eventTick[i](dt);\n\t\t\t}\n\n\t\t\t// Dont emit update event for remains dt\n\t\t\tif (remains !== true) {\n\t\t\t\tthis.EmitEvent(this.eventUpdate, [dt, 0]);\n\t\t\t}\n\t\t}\n\n\t\tlet remainsDt = dt;\n\n\t\t// Current tween over\n\t\tif (this.currentTween) {\n\t\t\tfor (let i = 0; i < this.currentTween.length; i++) {\n\t\t\t\tif (this.currentTween[i].state !== State.Finished) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst first = this.currentTween[0];\n\t\t\tremainsDt = first.elapsed - first.duration;\n\n\t\t\tthis.EmitEvent(this.eventStepEnd, [this.currentTween[0]]);\n\t\t\tthis.Info(Log.Debug, 'OnStepEnd', this.eventStepEnd);\n\t\t\tthis.currentTween = undefined;\n\t\t\tthis.sequenceIndex++;\n\n\t\t\tif (remainsDt > 0.01) {\n\t\t\t\tthis.LocalTick(remainsDt, true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Complete\n\t\tif (!this.currentTween && this.tweens.length === this.sequenceIndex) {\n\t\t\tthis.loop--;\n\t\t\tif (this.loop === 0) {\n\t\t\t\tthis.Complete();\n\t\t\t} else {\n\t\t\t\tthis.ResetAndStart(remainsDt);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate NextTween() {\n\t\tthis.currentTween = this.tweens[this.sequenceIndex];\n\t\tif (this.currentTween) {\n\t\t\tfor (let i = 0; i < this.currentTween.length; i++) {\n\t\t\t\tconst tween = this.currentTween[i];\n\t\t\t\ttween.Start();\n\t\t\t}\n\n\t\t\tthis.EmitEvent(this.eventStepStart, [this.currentTween[0]]);\n\t\t\tthis.Info(Log.Debug, 'OnStepStart', this.eventStepStart);\n\t\t}\n\t}\n\n\tpublic Append(tween: ITween | ISequence): ISequence {\n\t\ttween.SetParent(this);\n\t\tthis.tweens[this.tweens.length] = [tween];\n\t\treturn this;\n\t}\n\n\tpublic AppendCallback(cb: () => void): ISequence {\n\t\tconst playable = new Callback(cb);\n\t\tplayable.SetParent(this);\n\t\tthis.tweens[this.tweens.length] = [playable];\n\t\treturn this;\n\t}\n\n\tpublic AppendInterval(duration: number): ISequence {\n\t\tconst playable = new Delay(duration);\n\t\tplayable.SetParent(this);\n\t\tthis.tweens[this.tweens.length] = [playable];\n\t\treturn this;\n\t}\n\n\tpublic Prepend(tween: ITween | ISequence): ISequence {\n\t\ttween.SetParent(this);\n\t\tthis.tweens.unshift([tween]);\n\t\treturn this;\n\t}\n\n\tpublic PrependCallback(cb: () => void): ISequence {\n\t\tconst playable = new Callback(cb);\n\t\tplayable.SetParent(this);\n\t\tthis.tweens.unshift([playable]);\n\t\treturn this;\n\t}\n\n\tpublic PrependInterval(duration: number): ISequence {\n\t\tconst playable = new Delay(duration);\n\t\tplayable.SetParent(this);\n\t\tthis.tweens.unshift([playable]);\n\t\treturn this;\n\t}\n\n\tpublic Skip(finalValue?: boolean): void {\n\t\tif (this.state === State.Killed || this.state === State.Finished) {\n\t\t\tthis.Info(Log.Info, 'Cannot skip this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < this.tweens.length; i++) {\n\t\t\tconst tweenArray = this.tweens[i];\n\t\t\tfor (let j = 0; j < tweenArray.length; j++) {\n\t\t\t\tconst tween = tweenArray[j];\n\t\t\t\tif (tween.elapsed === 0) {\n\t\t\t\t\tthis.EmitEvent(this.eventStepStart, [tween]);\n\t\t\t\t\tthis.Info(Log.Debug, 'OnStepStart', this.eventStepStart);\n\t\t\t\t}\n\t\t\t\ttween.Skip(finalValue);\n\t\t\t\tthis.EmitEvent(this.eventStepEnd, [tween]);\n\t\t\t\tthis.Info(Log.Debug, 'OnStepEnd', this.eventStepEnd);\n\t\t\t}\n\t\t}\n\t\tsuper.Skip();\n\t}\n\n\tpublic Kill(): void {\n\t\tif (this.state === State.Killed) {\n\t\t\tthis.Info(Log.Info, 'Cannot kill this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < this.tweens.length; i++) {\n\t\t\tconst tweenArray = this.tweens[i];\n\t\t\tfor (let j = 0; j < tweenArray.length; j++) {\n\t\t\t\ttweenArray[j].Kill();\n\t\t\t}\n\t\t}\n\n\t\tsuper.Kill();\n\t}\n\n\tpublic Join(tween: ITween | ISequence): ISequence {\n\t\tif (this.tweens.length === 0) {\n\t\t\treturn this.Append(tween);\n\t\t}\n\t\ttween.SetParent(this);\n\t\tthis.tweens[this.tweens.length - 1].push(tween);\n\t\treturn this;\n\t}\n\n\tpublic OnStepStart(cb: (index: ITween | IPlayable) => void): ISequence {\n\t\tif (!this.eventStepStart) {\n\t\t\tthis.eventStepStart = new Array(0);\n\t\t}\n\t\tthis.eventStepStart[this.eventStepStart.length] = cb;\n\t\treturn this;\n\t}\n\n\tpublic OnStepEnd(cb: (index: ITween | IPlayable) => void): ISequence {\n\t\tif (!this.eventStepEnd) {\n\t\t\tthis.eventStepEnd = new Array(0);\n\t\t}\n\t\tthis.eventStepEnd[this.eventStepEnd.length] = cb;\n\t\treturn this;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/sequence.ts","import { Log } from './core/enum/log';\nimport { IControl } from './core/interfaces/IControl';\nimport { IPlayable } from './core/interfaces/IPlayable';\nimport { IPlugin } from './core/interfaces/IPlugin';\nimport { ISequence } from './core/interfaces/ISequence';\nimport { ITicker } from './core/interfaces/ITicker';\nimport { ITween } from './core/interfaces/ITween';\nimport { EasingType } from './easing/easingType';\nimport { Ticker as ticker } from './ticker';\nimport { Delay as delay } from './tweens/delay';\nimport { Sequence as sequence } from './tweens/sequence';\nimport { Tween as tween } from './tweens/tween';\n\nlet tickerManager: ticker;\nlet initialized = false;\nlet isFirstUpdate = true;\nlet lastFrame: any;\nlet lastTime = 0;\nlet logLevel = Log.None;\nlet safe = true;\nconst eventCreated: {(control: IControl): void}[] = [];\n\nconst loadedPlugins: IPlugin[] = [];\n\n// Area for plugins to add helpers / dynamic method\nexport let plugin: any = {};\n\n// Expose the easing enum\nexport { EasingType as Easing };\n\n// real time of Fatina (not affected by timescale, pause, ...)\nexport let time = 0;\n\n// time updated internally (affected by timescale, pause, ...)\nexport function Elapsed(): number {\n\treturn tickerManager.elapsed;\n}\n\nexport function MainTicker(): ITicker {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\treturn tickerManager;\n}\n\n/**\n * Add a listener method on tween/sequence creation\n *\n * @export\n * @param {(control: IControl) => void} cb\n */\nexport function AddListenerCreated(cb: (control: IControl) => void): void {\n\teventCreated.push(cb);\n}\n\n/**\n * Remove a listener method on tween/sequence creation\n *\n * @export\n * @param {(control: IControl) => void} cb\n */\nexport function RemoveListenerCreated(cb: (control: IControl) => void): void {\n\tconst index = eventCreated.indexOf(cb);\n\tif (index !== -1) {\n\t\teventCreated.splice(index, 1);\n\t}\n}\n\n/**\n * Method used when Fatina is used for the first time.\n * Can take few ms. (pool initialization & object creation)\n *\n * @export\n * @param {boolean} [disableAutoTick]\n * @returns {boolean}\n */\nexport function Init(disableAutoTick?: boolean): boolean {\n\tif (initialized) {\n\t\treturn false;\n\t}\n\n\tif (!tickerManager) {\n\t\ttickerManager = new ticker();\n\t\ttickerManager.Start();\n\t}\n\n\tif (typeof(window) !== 'undefined' && !disableAutoTick) {\n\t\tlastFrame = requestFrame(updateLoop);\n\t}\n\n\tinitialized = true;\n\treturn true;\n}\n\n/**\n * Used to change the timescale of the whole game\n *\n * @export\n * @param {number} scale\n */\nexport function SetTimescale(scale: number): void {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\ttickerManager.SetTimescale(scale);\n}\n\n/**\n * This method pause the update loop (update are not called anymore)\n *\n * @export\n */\nexport function Pause(): void {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\ttickerManager.Pause();\n}\n\n/**\n * This method resume the update loop (works only if the game was paused before)\n *\n * @export\n */\nexport function Resume(): void {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\ttickerManager.Resume();\n}\n\n/**\n * This method is used to change the log level\n *\n * @export\n * @param {Log} level\n */\nexport function SetLog(level: Log) {\n\tlogLevel = level;\n}\n\n/**\n * This method is used to enable / disable the callback try/catch\n *\n * @export\n * @param {boolean} isSafe\n */\nexport function SetSafe(isSafe: boolean) {\n\tsafe = isSafe;\n}\n\n/**\n * This method kill the main ticker, the pool of tween and stop any requestAnimationFrame\n *\n * @export\n */\nexport function Destroy() {\n\tif (tickerManager) {\n\t\ttickerManager.Kill();\n\t}\n\n\tif (lastFrame) {\n\t\tcancelFrame(lastFrame);\n\t}\n\n\tinitialized = false;\n}\n\n/**\n * Method used to tick all the child (tween or sequence)\n * This takes cares of recycling the old tween/sequence\n *\n * @export\n * @param {number} timestamp\n * @returns {*}\n */\nexport function Update(timestamp: number): any {\n\tif (!initialized || !tickerManager) {\n\t\treturn;\n\t}\n\ttickerManager.Tick(timestamp);\n\ttime += timestamp;\n}\n\n/**\n * Helper to create a tween (use the tween pool)\n *\n * @export\n * @param {*} obj\n * @param {string[]} properties\n * @returns {ITween}\n */\nexport function Tween(obj: any, properties: string[]): ITween {\n\tconst t = new tween(obj, properties);\n\tAddContext(t);\n\tInfo(Log.Debug, '[Fatina.Manager] Tween Instantiated', t);\n\treturn t;\n}\n\n/**\n * Helper to create a Sequence (use the sequence pool)\n *\n * @export\n * @returns {ISequence}\n */\nexport function Sequence(): ISequence {\n\tconst s = new sequence();\n\tAddContext(s);\n\tInfo(Log.Debug, '[Fatina.Manager] Sequence Instantiated', s);\n\treturn s;\n}\n\n/**\n * Helper to create a Delay\n *\n * @export\n * @param {number} duration\n * @returns {IPlayable}\n */\nexport function Delay(duration: number): IPlayable {\n\tconst d = new delay(duration);\n\tAddContext(d);\n\tInfo(Log.Debug, '[Fatina.Manager] Sequence Instantiated', d);\n\treturn d;\n}\n\n/**\n * Helper used to replace usage of normal js setTimeout() by a tween\n * https://www.w3schools.com/jsref/met_win_settimeout.asp\n *\n * @export\n * @param {() => void} fn\n * @param {number} duration\n * @returns {IPlayable}\n */\nexport function SetTimeout(fn: () => void, duration: number): IPlayable {\n\tconst timeout = new delay(duration).OnComplete(fn);\n\tAddContext(timeout);\n\tInfo(Log.Debug, '[Fatina.Manager] SetTimeout Instantiated', timeout);\n\treturn timeout.Start();\n}\n\n/**\n * Helper used to replace usage of normal js setInterval() by a tween\n * https://www.w3schools.com/jsref/met_win_setinterval.asp\n *\n * @export\n * @param {() => void} fn\n * @param {number} duration\n * @returns {IPlayable}\n */\nexport function SetInterval(fn: () => void, duration: number): IPlayable {\n\tconst interval = new delay(duration).OnRestart(fn).SetLoop(-1);\n\tAddContext(interval);\n\tInfo(Log.Debug, '[Fatina.Manager] SetInterval Instantiated', interval);\n\treturn interval.Start();\n}\n\n/**\n * Private method to set common data to every object (the parent ticker, safe mode, verbose mode)\n *\n * @param {(IPlayable | ITween | ISequence)} obj\n */\nfunction AddContext(obj: IPlayable | ITween | ISequence): void {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\n\tobj.SetParent(tickerManager as ITicker);\n\n\tif (logLevel !== Log.None) {\n\t\tobj.SetLog(logLevel);\n\t}\n\n\tif (!safe) {\n\t\tobj.SetSafe(safe);\n\t}\n\n\tEmitCreated(obj);\n}\n\n/**\n * Create or Get a ticker with a defined name\n * This ticker is a child of the main ticker\n *\n * @export\n * @param {string} name\n * @returns {ITicker}\n */\nexport function Ticker(): ITicker {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\n\tconst tick = new ticker();\n\tconst handler = tick.Tick.bind(tick);\n\ttick.SetParent(tickerManager, handler);\n\ttickerManager.AddTickListener(handler);\n\ttick.Start();\n\n\tEmitCreated(tick);\n\tInfo(Log.Debug, '[Fatina.Manager] Ticker Instantiated', tick);\n\treturn tick;\n}\n\n/**\n * Initialize a plugin by passing fatina object to it\n *\n * @export\n * @param {IPlugin} newPlugin\n */\nexport function LoadPlugin(newPlugin: IPlugin) {\n\tnewPlugin.Init(this);\n\tloadedPlugins.push(newPlugin);\n\tInfo(Log.Debug, '[Fatina.Manager] Plugin Loaded', newPlugin.name);\n}\n\nfunction Info(level: Log, message: string, data?: any) {\n\tif (level > logLevel) {\n\t\treturn;\n\t}\n\tif (data) {\n\t\tconsole.log(message, data);\n\t} else {\n\t\tconsole.log(message);\n\t}\n}\n\nfunction Emit(func: any, tween: IControl) {\n\tif (!safe) {\n\t\treturn func(tween);\n\t}\n\n\ttry {\n\t\tfunc(tween);\n\t} catch (e) {\n\t\tconsole.warn(e);\n\t}\n}\n\nfunction EmitCreated(tween: IControl) {\n\tfor (let i = 0; i < eventCreated.length; i++) {\n\t\tEmit(eventCreated[i], tween);\n\t}\n}\n\n/**\n * This part manage the auto-update loop if necessary (browser only)\n */\nlet requestFrame: any;\nlet cancelFrame: any;\nif (typeof(window) !== 'undefined') {\n\trequestFrame = window.requestAnimationFrame || (window as any).mozRequestAnimationFrame || window.webkitRequestAnimationFrame || (window as any).msRequestAnimationFrame;\n\tcancelFrame = window.cancelAnimationFrame || (window as any).mozCancelAnimationFrame;\n}\n\nfunction updateLoop(timestamp: number) {\n\tlet dt = timestamp - lastTime;\n\tif (isFirstUpdate) {\n\t\tdt = 1;\n\t\tisFirstUpdate = false;\n\t}\n\n\t// cap to 500 ms\n\tif (dt > 500) {\n\t\tconsole.warn('[Fatina] Delta between two update was too high ' + Math.round(dt) + 'ms. , Capped to 500ms.');\n\t\tdt = 500;\n\t}\n\n\tUpdate(dt);\n\tlastTime = timestamp;\n\tlastFrame = requestFrame(updateLoop);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/index.ts","import { State } from './core/enum/state';\r\nimport { EventList } from './core/eventList';\r\nimport { ITicker } from './core/interfaces/ITicker';\r\n\r\n/**\r\n * Main Fatina Ticker\r\n * Parent of all the normal tween and sequence\r\n *\r\n * @export\r\n * @class Ticker\r\n * @extends {EventList}\r\n * @implements {ITicker}\r\n */\r\nexport class Ticker extends EventList implements ITicker {\r\n\tpublic state = State.Idle;\r\n\tprivate timescale = 1;\r\n\tpublic elapsed = 0;\r\n\tpublic duration = 0;\r\n\tprivate update = 0;\r\n\tprivate eventToAdd: { (dt: number): void }[] = [];\r\n\tprivate eventToRemove: { (dt: number): void }[] = [];\r\n\tpublic tick: (dt: number) => void | undefined;\r\n\tprivate parent: ITicker;\r\n\r\n\tpublic SetParent(parent: ITicker, tick: (dt: number) => void) {\r\n\t\tthis.tick = tick;\r\n\t\tthis.parent = parent;\r\n\t}\r\n\r\n\t/**\r\n\t * Method used to change the timescale\r\n\t *\r\n\t * @param {number} scale\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic SetTimescale(scale: number): void {\r\n\t\tthis.timescale = scale;\r\n\t}\r\n\r\n\t/**\r\n\t * Method used by the child to be updated\r\n\t *\r\n\t * @param {(dt: number) => void} cb\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic AddTickListener(cb: (dt: number) => void): void {\r\n\t\tthis.eventToAdd.push(cb);\r\n\t}\r\n\r\n\t/**\r\n\t * Method used by the child to not receive update anymore\r\n\t *\r\n\t * @param {(dt: number) => void} cb\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic RemoveTickListener(cb: (dt: number) => void): void {\r\n\t\tthis.eventToRemove.push(cb);\r\n\t}\r\n\r\n\t/**\r\n\t * Internal method used to cancel a stop (restart in the same frame)\r\n\t *\r\n\t * @param {(dt: number) => void} cb\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic CheckTickListener(cb: (dt: number) => void): boolean {\r\n\t\tlet found = false;\r\n\t\twhile (true) {\r\n\t\t\tconst index = this.eventToRemove.indexOf(cb);\r\n\t\t\tif (index === -1) {\r\n\t\t\t\treturn found;\r\n\t\t\t}\r\n\t\t\tthis.eventToRemove.splice(index, 1);\r\n\t\t\tfound = true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Method used to update the array of listener\r\n\t * This is mostly for performance reason, being able to batch this operation in the updateLoop\r\n\t *\r\n\t * @private\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tprivate UpdateListener() {\r\n\t\tif (this.eventToAdd.length > 0) {\r\n\t\t\tfor (let i = 0; i < this.eventToAdd.length; i++) {\r\n\t\t\t\tthis.Add(this.eventToAdd[i]);\r\n\t\t\t}\r\n\t\t\tthis.eventToAdd = [];\r\n\t\t}\r\n\r\n\t\tif (this.eventToRemove.length > 0) {\r\n\t\t\tfor (let i = 0; i < this.eventToRemove.length; i++) {\r\n\t\t\t\tthis.Remove(this.eventToRemove[i]);\r\n\t\t\t}\r\n\t\t\tthis.eventToRemove = [];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Method used to tick all the child (tick listeners)\r\n\t *\r\n\t * @param {number} dt\r\n\t * @returns\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic Tick(dt: number) {\r\n\t\tif (this.state !== State.Run) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.UpdateListener();\r\n\r\n\t\tconst localDt = dt * this.timescale;\r\n\t\tfor (let tick: any = this.first; tick; tick = tick.node_next) {\r\n\t\t\ttick(localDt);\r\n\t\t}\r\n\t\tthis.elapsed += localDt;\r\n\t\tthis.update++;\r\n\r\n\t\tthis.UpdateListener();\r\n\t}\r\n\r\n\tpublic Start(): void {\r\n\t\tif (this.state === State.Idle) {\r\n\t\t\tthis.state = State.Run;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Pause(): void {\r\n\t\tif (this.state === State.Run) {\r\n\t\t\tthis.state = State.Pause;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Resume(): void {\r\n\t\tif (this.state === State.Pause) {\r\n\t\t\tthis.state = State.Run;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Kill(): void {\r\n\t\tif (this.state === State.Killed || this.state === State.Finished) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.parent && this.tick) {\r\n\t\t\tthis.parent.RemoveTickListener(this.tick);\r\n\t\t}\r\n\r\n\t\tthis.state = State.Killed;\r\n\t}\r\n\r\n\tpublic Skip(): void {\r\n\t\tthrow new Error('The main ticker cannot be skipped');\r\n\t}\r\n\r\n\tpublic Reset(): void {\r\n\t\tthis.state = State.Idle;\r\n\t}\r\n\r\n\tpublic IsIdle(): boolean {\r\n\t\treturn this.state === State.Idle;\r\n\t}\r\n\r\n\tpublic IsRunning(): boolean {\r\n\t\treturn this.state === State.Run;\r\n\t}\r\n\r\n\tpublic IsFinished(): boolean {\r\n\t\treturn this.state === State.Killed || this.state === State.Finished;\r\n\t}\r\n\r\n\tpublic IsPaused(): boolean {\r\n\t\treturn this. state === State.Pause;\r\n\t}\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/ticker.ts","/**\r\n * Simple DoublyList used for events management\r\n * Not really reusable, optimized only to append, remove and iterate\r\n *\r\n * @export\r\n * @abstract\r\n * @class EventList\r\n */\r\nexport abstract class EventList {\r\n\tpublic first: INode | undefined;\r\n\tpublic last: INode | undefined;\r\n\tpublic length = 0;\r\n\r\n\tpublic Add(obj: any): void {\r\n\t\tconst newNode = this.GetNode(obj, this.last, undefined, this);\r\n\t\tif (this.first === undefined) {\r\n\t\t\tthis.first = newNode;\r\n\t\t\tthis.last = newNode;\r\n\t\t} else if (this.last !== undefined) {\r\n\t\t\tthis.last.node_next = newNode;\r\n\t\t\tthis.last = newNode;\r\n\t\t}\r\n\t\tthis.length += 1;\r\n\t}\r\n\r\n\tpublic Remove(obj: any): void {\r\n\t\tconst node = obj as INode;\r\n\t\tif (node === undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (node.node_list !== this) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Removing any existing reference to the node\r\n\t\tif (node.node_next === undefined) {\r\n\t\t\tthis.last = node.node_previous;\r\n\t\t} else {\r\n\t\t\tnode.node_next.node_previous = node.node_previous;\r\n\t\t}\r\n\r\n\t\tif (node.node_previous === undefined) {\r\n\t\t\tthis.first = node.node_next;\r\n\t\t} else {\r\n\t\t\tnode.node_previous.node_next = node.node_next;\r\n\t\t}\r\n\r\n\t\t// Removing any existing reference from the node\r\n\t\tnode.node_valid = false;\r\n\t\tnode.node_previous = undefined;\r\n\t\tnode.node_next = undefined;\r\n\t\tnode.node_list = undefined;\r\n\r\n\t\t// One less node in the list\r\n\t\tthis.length -= 1;\r\n\t}\r\n\r\n\tprivate GetNode(obj: any, previous: INode | undefined, next: INode | undefined, list: EventList): INode {\r\n\t\tconst node = obj as INode;\r\n\t\tif (!node.node_valid) {\r\n\t\t\tnode.node_valid = true;\r\n\t\t\tnode.node_previous = previous;\r\n\t\t\tnode.node_next = next;\r\n\t\t\tnode.node_list = list;\r\n\t\t}\r\n\t\treturn node;\r\n\t}\r\n}\r\n\r\nexport interface INode {\r\n\tnode_valid: boolean;\r\n\tnode_previous: INode | undefined;\r\n\tnode_next: INode | undefined;\r\n\tnode_list: EventList | undefined;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/core/eventList.ts","import { IPlayable } from '../core/interfaces/IPlayable';\r\nimport { BaseTween } from './baseTween';\r\n\r\n/**\r\n * Fake tween used to append or join callback in a sequence\r\n *\r\n * @export\r\n * @class Callback\r\n * @extends {BaseTween}\r\n * @implements {IPlayable}\r\n */\r\nexport class Callback extends BaseTween implements IPlayable {\r\n\tprivate callback: () => void;\r\n\r\n\tconstructor(cb: () => void) {\r\n\t\tsuper();\r\n\t\tthis.callback = cb;\r\n\t\tthis.tickCb = this.Tick.bind(this);\r\n\t}\r\n\r\n\tprivate Tick(dt: number) {\r\n\t\tthis.elapsed += dt;\r\n\t\tthis.duration = 0;\r\n\t\tthis.callback();\r\n\t\tthis.EmitEvent(this.eventUpdate, [dt, 1]);\r\n\t\tthis.Complete();\r\n\t}\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/callback.ts","import { State } from '../core/enum/state';\nimport { ISequence } from '../core/interfaces/ISequence';\nimport { ITween } from '../core/interfaces/ITween';\nimport { easeNames } from '../easing/easing';\nimport { EasingType } from '../easing/easingType';\nimport { BaseTween } from './baseTween';\nimport { Sequence } from './sequence';\n\n/**\n * Tween: Used to animate values of an object\n *\n * @export\n * @class Tween\n * @extends {BaseTween}\n * @implements {ITween}\n */\nexport class Tween extends BaseTween implements ITween {\n\tprivate object: any;\n\tprivate properties: string[];\n\tprivate from: any;\n\tprivate to: any;\n\tprivate steps = 0;\n\tprivate currentFrom: any;\n\tprivate currentTo: any;\n\tprivate remainsDt: number;\n\tprivate relative = false;\n\tprivate ease: (t: number) => number;\n\tprivate easeId: EasingType | string;\n\n\tconstructor(object: any, properties: string[]) {\n\t\tsuper();\n\n\t\tthis.object = object;\n\t\tthis.properties = properties;\n\t\tthis.tickCb = this.Tick.bind(this);\n\t}\n\n\t/**\n\t * Used to define the object and the properties modified by this tween\n\t *\n\t * @param {*} object\n\t * @param {string[]} properties\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic Init(object: any, properties: string[]) {\n\t\tthis.object = object;\n\t\tthis.properties = properties;\n\t}\n\n\t/**\n\t * Method used on start to check the values of this tween\n\t *\n\t * @protected\n\t *\n\t * @memberOf Tween\n\t */\n\tprotected Validate() {\n\t\t// Check the object\n\t\tif (!this.object) {\n\t\t\tthrow new Error('Cant Tween a undefined object');\n\t\t}\n\n\t\t// Check the properties of that object\n\t\tfor (let i = 0; i < this.properties.length; i++) {\n\t\t\tconst prop = this.properties[i];\n\t\t\tif (!(prop in this.object)) {\n\t\t\t\tthrow new Error('Cant Tween an unknown property' + prop);\n\t\t\t}\n\t\t}\n\n\t\t// Check this tween will be updated\n\t\tif (!this.parent) {\n\t\t\tthrow new Error('Cant Start a tween without ticker');\n\t\t}\n\n\t\t// Easing\n\t\tif (!this.ease) {\n\t\t\tthis.easeId = EasingType.Linear;\n\t\t\tthis.ease = easeNames[EasingType.Linear];\n\t\t}\n\n\t\tthis.CheckPosition();\n\t}\n\n\t/**\n\t * Method used to calculate currentFrom/currentTo based on the config\n\t *\n\t * @protected\n\t *\n\t * @memberOf Tween\n\t */\n\tprotected CheckPosition() {\n\t\tif (!this.currentFrom) {\n\t\t\tthis.currentFrom = {};\n\t\t}\n\t\tif (!this.currentTo) {\n\t\t\tthis.currentTo = {};\n\t\t}\n\n\t\tfor (let i = 0; i < this.properties.length; i++) {\n\t\t\tconst prop = this.properties[i];\n\n\t\t\t// From\n\t\t\tif (!this.from) {\n\t\t\t\tthis.currentFrom[prop] = this.object[prop];\n\t\t\t} else {\n\t\t\t\tthis.currentFrom[prop] = this.from[prop];\n\t\t\t\tthis.object[prop] = this.from[prop];\n\t\t\t}\n\n\t\t\t// Relative\n\t\t\tif (this.relative) {\n\t\t\t\tthis.currentTo[prop] = this.object[prop] + this.to[prop];\n\t\t\t} else {\n\t\t\t\tthis.currentTo[prop] = this.to[prop];\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate Tick(dt: number) {\n\t\tif (this.state === State.Finished || this.state === State.Killed) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.remainsDt = dt * this.timescale;\n\t\twhile (this.remainsDt > 0) {\n\t\t\tthis.elapsed += this.remainsDt;\n\t\t\tconst progress = Math.max(Math.min(this.elapsed / this.duration, 1), 0);\n\t\t\tlet val = this.ease(progress);\n\n\t\t\t// Yoyo easing (need to be reversed)\n\t\t\tif ((this.yoyoOriginal - this.yoyo) % 2 === 1) {\n\t\t\t\tval = 1 - this.ease(1 - progress);\n\t\t\t}\n\n\t\t\t// Steps behaviour\n\t\t\tif (this.steps !== 0) {\n\t\t\t\tval = Math.round(val * this.steps) / this.steps;\n\t\t\t}\n\n\t\t\t// Update if the object still exist\n\t\t\tif (this.object) {\n\t\t\t\tfor (let i = 0; i < this.properties.length; i++) {\n\t\t\t\t\tconst prop = this.properties[i];\n\t\t\t\t\tthis.object[prop] = this.currentFrom[prop] + (this.currentTo[prop] - this.currentFrom[prop]) * val;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.EmitEvent(this.eventUpdate, [this.remainsDt, progress]);\n\n\t\t\tif (this.elapsed < this.duration) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.remainsDt = this.elapsed - this.duration;\n\n\t\t\t// Yoyo effect ( A -> B -> A )\n\t\t\tif (this.yoyo > 0) {\n\t\t\t\tthis.Reverse();\n\t\t\t\tthis.ResetAndStart(0);\n\t\t\t\tthis.yoyo--;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Loop management\n\t\t\tthis.loop--;\n\t\t\tif (this.loop === 0) {\n\t\t\t\tthis.Complete();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.CheckPosition();\n\t\t\tthis.ResetAndStart(0);\n\t\t}\n\t}\n\n\t/**\n\t * Method used to set the values at the beginning of the tween\n\t *\n\t * @param {*} from\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic From(from: any): ITween {\n\t\tthis.from = from;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used to set the values at the end of the tween\n\t *\n\t * @param {*} to\n\t * @param {number} duration\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic To(to: any, duration: number): ITween {\n\t\tthis.to = to;\n\t\tthis.duration = duration;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used to define if the tween as to work in relative or not\n\t *\n\t * @param {boolean} relative\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic SetRelative(relative: boolean): ITween {\n\t\tthis.relative = relative;\n\t\treturn this;\n\t}\n\n\t/**\n\t * To apply a modifier on a current tween\n\t *\n\t * @param {*} diff\n\t * @param {boolean} updateTo\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic Modify(diff: any, updateTo: boolean): void {\n\t\tfor (let i = 0; i < this.properties.length; i++) {\n\t\t\tconst prop = this.properties[i];\n\t\t\tif (!diff.hasOwnProperty(prop)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthis.object[prop] += diff[prop];\n\n\t\t\tif (updateTo) {\n\t\t\t\tthis.currentTo[prop] += diff[prop];\n\t\t\t} else {\n\t\t\t\tthis.currentFrom[prop] += diff[prop];\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Overwrite the Reset (just for yoyo)\n\t *\n\t * @param {boolean} [skipParent]\n\t * @memberOf Tween\n\t */\n\tpublic Reset(skipParent?: boolean): void {\n\t\tif ((this.yoyoOriginal - this.yoyo) % 2 === 1) {\n\t\t\tlet previous = this.currentFrom;\n\t\t\tthis.currentFrom = this.currentTo;\n\t\t\tthis.currentTo = previous;\n\n\t\t\tprevious = this.from;\n\t\t\tthis.from = this.to;\n\t\t\tthis.to = previous;\n\n\t\t\tconst elapsed = (1 - (this.elapsed / this.duration)) * this.duration;\n\t\t\tthis.elapsed = Math.round(elapsed * 1000) / 1000;\n\t\t}\n\t\tthis.yoyo = this.yoyoOriginal;\n\t\tsuper.Reset(skipParent);\n\t}\n\n\t/**\n\t * Method used to reverse the tween\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic Reverse(): void {\n\t\tlet previous = this.currentFrom;\n\t\tthis.currentFrom = this.currentTo;\n\t\tthis.currentTo = previous;\n\n\t\tprevious = this.from;\n\t\tthis.from = this.to;\n\t\tthis.to = previous;\n\n\t\tconst elapsed = (1 - (this.elapsed / this.duration)) * this.duration;\n\t\tthis.elapsed = Math.round(elapsed * 1000) / 1000;\n\n\t\tif (this.state === State.Finished) {\n\t\t\tthis.Reset(true);\n\t\t\tthis.Start();\n\t\t}\n\t}\n\n\t/**\n\t * Method used to reverse the tween N times at the end\n\t *\n\t * @param {number} time\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic Yoyo(time: number): ITween {\n\t\tthis.yoyoOriginal = time;\n\t\tthis.yoyo = time;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used to Quantify the tween value to a certain amount of steps\n\t *\n\t * @param {number} steps\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic SetSteps(steps: number): ITween {\n\t\tthis.steps = steps;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used to create a sequence with this tween as first value.\n\t * Usually used with .AppendInterval(1250) or .PrependInterval(160) to add a delay\n\t *\n\t * @returns {ISequence}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic ToSequence(): ISequence {\n\t\tif (!this.parent) {\n\t\t\tthrow new Error('Cant convert to a sequence, parent ticker not defined');\n\t\t}\n\t\treturn new Sequence().SetParent(this.parent).Append(this);\n\t}\n\n\t/**\n\t * Private easing method (resolve the right method and set it)\n\t *\n\t * @private\n\t * @param {(EasingType | string)} type\n\t * @returns {(t: number) => number}\n\t *\n\t * @memberOf Tween\n\t */\n\tprivate Easing(type: EasingType | string): (t: number) => number {\n\t\tconst name = type as string;\n\n\t\tif (name in easeNames) {\n\t\t\treturn easeNames[name];\n\t\t}\n\n\t\tthrow new Error('Unknown ease method ' + type);\n\t}\n\n\t/**\n\t * Method used to set the type of easing for this tween\n\t *\n\t * @param {(EasingType | string)} type\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic SetEasing(type: EasingType | string): ITween {\n\t\tthis.easeId = type;\n\t\tthis.ease = this.Easing(type);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used when the tween is reset (loop)\n\t *\n\t * @protected\n\t *\n\t * @memberOf Tween\n\t */\n\tprotected LoopInit() {\n\t\tthis.elapsed = 0;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/tween.ts","/**\r\n * List of easing method\r\n *\r\n * Mostly based on http://easings.net/\r\n */\r\nimport { EasingType } from './easingType';\r\n\r\nconst PI = Math.PI;\r\nconst PI_OVER_TWO = Math.PI / 2;\r\nconst BACK = 1.70158;\r\nconst easingByName: { [id: string]: (t: number) => number } = {};\r\n\r\n// Linear\r\neasingByName[EasingType.Linear] = (t: number): number => {\r\n\treturn t;\r\n};\r\n\r\n// Quad\r\neasingByName[EasingType.InQuad] = (t: number): number => {\r\n\treturn t * t;\r\n};\r\n\r\neasingByName[EasingType.OutQuad] = (t: number): number => {\r\n\treturn 2 * t - t * t;\r\n};\r\n\r\neasingByName[EasingType.InOutQuad] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn 2 * t * t;\r\n\t} else {\r\n\t\treturn 2 * (2 * t - t * t) - 1;\r\n\t}\r\n};\r\n\r\n// Cubic\r\neasingByName[EasingType.InCubic] = (t: number): number => {\r\n\treturn t * t * t;\r\n};\r\n\r\neasingByName[EasingType.OutCubic] = (t: number): number => {\r\n\treturn 3 * t - 3 * t * t + t * t * t;\r\n};\r\n\r\neasingByName[EasingType.InOutCubic] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn 4 * t * t * t;\r\n\t} else {\r\n\t\treturn 4 * (3 * t - 3 * t * t + t * t * t) - 3;\r\n\t}\r\n};\r\n\r\n// Quart\r\neasingByName[EasingType.InQuart] = (t: number): number => {\r\n\treturn t * t * t * t;\r\n};\r\n\r\neasingByName[EasingType.OutQuart] = (t: number): number => {\r\n\tconst t2 = t * t;\r\n\treturn 4 * t - 6 * t2 + 4 * t2 * t - t2 * t2;\r\n};\r\n\r\neasingByName[EasingType.InOutQuart] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn 8 * t * t * t * t;\r\n\t} else {\r\n\t\tconst t2 = t * t;\r\n\t\treturn 8 * (4 * t - 6 * t2 + 4 * t2 * t - t2 * t2) - 7;\r\n\t}\r\n};\r\n\r\n// Sine\r\neasingByName[EasingType.InSine] = (t: number): number => {\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\treturn 1 - Math.cos(PI_OVER_TWO * t);\r\n};\r\n\r\neasingByName[EasingType.OutSine] = (t: number): number => {\r\n\treturn Math.sin(PI_OVER_TWO * t);\r\n};\r\n\r\neasingByName[EasingType.InOutSine] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn (1 - Math.cos(PI * t)) / 2;\r\n\t} else {\r\n\t\treturn (1 + Math.sin(PI * (t - 0.5))) / 2;\r\n\t}\r\n};\r\n\r\n// Circular\r\neasingByName[EasingType.InCirc] = (t: number): number => {\r\n\treturn 1 - Math.sqrt(1 - Math.pow(t, 2));\r\n};\r\n\r\neasingByName[EasingType.OutCirc] = (t: number): number => {\r\n\treturn Math.sqrt(1 - Math.pow(1 - t, 2));\r\n};\r\n\r\neasingByName[EasingType.InOutCirc] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn (1 - Math.sqrt(1 - 4 * t * t)) / 2;\r\n\t} else {\r\n\t\treturn (1 + Math.sqrt(-3 + 8 * t - 4 * t * t)) / 2;\r\n\t}\r\n};\r\n\r\n// Quint\r\neasingByName[EasingType.InQuint] = (t: number): number => {\r\n\treturn t * t * t * t * t;\r\n};\r\n\r\neasingByName[EasingType.OutQuint] = (t: number): number => {\r\n\treturn --t * t * t * t * t + 1;\r\n};\r\n\r\neasingByName[EasingType.InOutQuint] = (t: number): number => {\r\n\tt *= 2;\r\n\tif (t < 1) {\r\n\t\treturn 0.5 * t * t * t * t * t;\r\n\t}\r\n\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n};\r\n\r\n// Exponential\r\neasingByName[EasingType.InExponential] = (t: number): number => {\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\treturn t === 0 ? 0 : Math.pow(1024, t - 1);\r\n};\r\n\r\neasingByName[EasingType.OutExponential] = (t: number): number => {\r\n\treturn t === 1 ? 1 : 1 - Math.pow(2, - 10 * t);\r\n};\r\n\r\neasingByName[EasingType.InOutExponential] = (t: number): number => {\r\n\tif (t === 0) {\r\n\t\treturn 0;\r\n\t}\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\tt *= 2;\r\n\tif (t < 1) {\r\n\t\treturn 0.5 * Math.pow(1024, t - 1);\r\n\t}\r\n\treturn 0.5 * (- Math.pow(2, - 10 * (t - 1)) + 2);\r\n};\r\n\r\n// Elastic\r\neasingByName[EasingType.InElastic] = (t: number): number => {\r\n\tif (t === 0) {\r\n\t\treturn 0;\r\n\t}\r\n\treturn -Math.pow(2, 10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI);\r\n};\r\n\r\neasingByName[EasingType.OutElastic] = (t: number): number => {\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\treturn Math.pow(2, -10 * t) * Math.sin((t - 0.1) * 5 * Math.PI) + 1;\r\n};\r\n\r\neasingByName[EasingType.InOutElastic] = (t: number): number => {\r\n\tif (t === 0) {\r\n\t\treturn 0;\r\n\t}\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\tt *= 2;\r\n\tif (t < 1) {\r\n\t\treturn -0.5 * Math.pow(2, 10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI);\r\n\t}\r\n\r\n\treturn 0.5 * Math.pow(2, -10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI) + 1;\r\n};\r\n\r\n// Back\r\neasingByName[EasingType.InBack] = (t: number): number => {\r\n\tconst s = BACK;\r\n\treturn t === 1 ? 1 : t * t * ((s + 1) * t - s);\r\n\r\n};\r\n\r\neasingByName[EasingType.OutBack] = (t: number): number => {\r\n\tconst s = BACK;\r\n\treturn t === 0 ? 0 : --t * t * ((s + 1) * t + s) + 1;\r\n};\r\n\r\neasingByName[EasingType.InOutBack] = (t: number): number => {\r\n\tconst s = BACK * 1.525;\r\n\tt *= 2;\r\n\tif (t < 1) {\r\n\t\treturn 0.5 * (t * t * ((s + 1) * t - s));\r\n\t}\r\n\treturn 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\r\n};\r\n\r\n// Bounce\r\neasingByName[EasingType.OutBounce] = (t: number): number => {\r\n\tif (t < (1 / 2.75)) {\r\n\t\treturn 7.5625 * t * t;\r\n\t} else if (t < (2 / 2.75)) {\r\n\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n\t} else if (t < (2.5 / 2.75)) {\r\n\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n\t} else {\r\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n\t}\r\n};\r\n\r\neasingByName[EasingType.InBounce] = (t: number): number => {\r\n\treturn 1 - easingByName[EasingType.OutBounce](1 - t);\r\n};\r\n\r\neasingByName[EasingType.InOutBounce] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn easingByName[EasingType.InBounce](t * 2) * 0.5;\r\n\t}\r\n\treturn easingByName[EasingType.OutBounce](t * 2 - 1) * 0.5 + 0.5;\r\n};\r\n\r\nexport let easeNames = easingByName;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/easing/easing.ts"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 982c366558f39c21212f","webpack:///./src/fatina/core/enum/state.ts","webpack:///./src/fatina/tweens/baseTween.ts","webpack:///./src/fatina/core/enum/log.ts","webpack:///./src/fatina/easing/easingType.ts","webpack:///./src/fatina/tweens/delay.ts","webpack:///./src/fatina/tweens/sequence.ts","webpack:///./src/fatina/index.ts","webpack:///./src/fatina/ticker.ts","webpack:///./src/fatina/core/eventList.ts","webpack:///./src/fatina/tweens/callback.ts","webpack:///./src/fatina/tweens/tween.ts","webpack:///./src/fatina/easing/easing.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;ACvDA,IAAY,KAMX;AAND,WAAY,KAAK;IAChB,iCAAI;IACJ,+BAAG;IACH,mCAAK;IACL,yCAAQ;IACR,qCAAM;AACP,CAAC,EANW,KAAK,GAAL,aAAK,KAAL,aAAK,QAMhB;;;;;;;;;;ACZD,mCAAuC;AACvC,qCAA2C;AAc3C;IAAA;QASQ,YAAO,GAAG,CAAC,CAAC;QACZ,aAAQ,GAAG,CAAC,CAAC;QACb,cAAS,GAAG,CAAC,CAAC;QACd,UAAK,GAAU,aAAK,CAAC,IAAI,CAAC;QAGvB,iBAAY,GAAG,CAAC,CAAC;QACjB,SAAI,GAAG,CAAC,CAAC;QACT,iBAAY,GAAG,CAAC,CAAC;QACjB,SAAI,GAAG,CAAC,CAAC;QAGX,eAAU,GAAG,IAAI,CAAC;QAClB,aAAQ,GAAG,KAAK,CAAC;QACjB,SAAI,GAAG,IAAI,CAAC;QACZ,aAAQ,GAAG,SAAG,CAAC,IAAI,CAAC;IAgX7B,CAAC;IAvWO,yBAAK,GAAZ;QACC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,IAAW,CAAC;QACpB,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjB,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,aAAK,CAAC,GAAG,CAAC;QACvB,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACjD,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1C,CAAC;YACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACvB,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACzB,CAAC;QACD,MAAM,CAAC,IAAW,CAAC;IACpB,CAAC;IAOM,2BAAO,GAAd;QACC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,CAAC;IAOM,yBAAK,GAAZ,UAAa,UAAoB;QAChC,IAAI,CAAC,KAAK,GAAG,aAAK,CAAC,IAAI,CAAC;QAExB,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;QAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;IAUM,iCAAa,GAApB,UAAqB,SAAiB;QACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,GAAG,aAAK,CAAC,GAAG,CAAC;QACvB,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;IACF,CAAC;IAWM,6BAAS,GAAhB,UAAiB,MAAe;QAC/B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,CAAC,IAAW,CAAC;IACpB,CAAC;IAUM,gCAAY,GAAnB,UAAoB,KAAa;QAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,MAAM,CAAC,IAAW,CAAC;IACpB,CAAC;IASM,yBAAK,GAAZ;QACC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,SAAG,CAAC,IAAI,EAAE,0BAA0B,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5D,MAAM,CAAC;QACR,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,aAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC7B,CAAC;IASM,0BAAM,GAAb;QACC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,SAAG,CAAC,IAAI,EAAE,2BAA2B,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7D,MAAM,CAAC;QACR,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,aAAK,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IASM,wBAAI,GAAX,UAAY,UAAoB;QAC/B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,IAAI,CAAC,SAAG,CAAC,IAAI,EAAE,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3D,MAAM,CAAC;QACR,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;QAED,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxE,MAAM,CAAC;QACR,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjB,CAAC;IASM,wBAAI,GAAX;QACC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,SAAG,CAAC,IAAI,EAAE,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3D,MAAM,CAAC;QACR,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,aAAK,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAWM,2BAAO,GAAd,UAAe,IAAY;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;QAC9B,MAAM,CAAC,IAAW,CAAC;IACpB,CAAC;IAEM,0BAAM,GAAb;QACC,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,IAAI,CAAC;IAClC,CAAC;IAEM,6BAAS,GAAhB;QACC,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,GAAG,CAAC;IACjC,CAAC;IAEM,8BAAU,GAAjB;QACC,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,QAAQ,CAAC;IACrE,CAAC;IAEM,4BAAQ,GAAf;QACC,MAAM,CAAC,IAAI,CAAE,KAAK,KAAK,aAAK,CAAC,KAAK,CAAC;IACpC,CAAC;IAES,4BAAQ,GAAlB;QACC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,IAAI,CAAC,SAAG,CAAC,IAAI,EAAE,6BAA6B,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/D,MAAM,CAAC;QACR,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,aAAK,CAAC,QAAQ,CAAC;QAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;IAES,wCAAoB,GAA9B;QACC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;IACF,CAAC;IAES,iCAAa,GAAvB,cAAiC,CAAC;IACxB,4BAAQ,GAAlB,cAA4B,CAAC;IACnB,4BAAQ,GAAlB;QACC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IAClB,CAAC;IAEM,2BAAO,GAAd,UAAe,IAAa;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,CAAC,IAAW,CAAC;IACpB,CAAC;IAEM,0BAAM,GAAb,UAAc,KAAU;QACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,MAAM,CAAC,IAAW,CAAC;IACpB,CAAC;IAES,wBAAI,GAAd,UAAe,KAAU,EAAE,OAAe,EAAE,IAAU;QACrD,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC;QACR,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IAEO,wBAAI,GAAZ,UAAa,IAAS,EAAE,IAAS;QAChC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC;YACJ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxB,CAAC;QAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC;IAES,6BAAS,GAAnB,UAAoB,SAAc,EAAE,IAAU;QAC7C,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC;QACR,CAAC;QAED,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC;IAUM,2BAAO,GAAd,UAAe,EAAc;QAC5B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,SAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAChC,MAAM,CAAC,IAAW,CAAC;IACpB,CAAC;IAUM,6BAAS,GAAhB,UAAiB,EAAc;QAC9B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,SAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAClC,MAAM,CAAC,IAAW,CAAC;IACpB,CAAC;IAUM,4BAAQ,GAAf,UAAgB,EAA0C;QACzD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAC/C,MAAM,CAAC,IAAW,CAAC;IACpB,CAAC;IAUM,4BAAQ,GAAf,UAAgB,EAAc;QAC7B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,SAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACjC,MAAM,CAAC,IAAW,CAAC;IACpB,CAAC;IAUM,8BAAU,GAAjB,UAAkB,EAAc;QAC/B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,SAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACnC,MAAM,CAAC,IAAW,CAAC;IACpB,CAAC;IACF,gBAAC;AAAD,CAAC;AAxYqB,8BAAS;;;;;;;;;;ACT/B,IAAY,GAIX;AAJD,WAAY,GAAG;IACd,6BAAQ;IACR,6BAAQ;IACR,+BAAS;AACV,CAAC,EAJW,GAAG,GAAH,WAAG,KAAH,WAAG,QAId;;;;;;;;;;ACHD,IAAY,UAgCX;AAhCD,WAAY,UAAU;IACrB,+BAAiB;IACjB,+BAAiB;IACjB,iCAAmB;IACnB,qCAAuB;IACvB,iCAAmB;IACnB,mCAAqB;IACrB,uCAAyB;IACzB,iCAAmB;IACnB,mCAAqB;IACrB,uCAAyB;IACzB,+BAAiB;IACjB,iCAAmB;IACnB,qCAAuB;IACvB,+BAAiB;IACjB,iCAAmB;IACnB,qCAAuB;IACvB,iCAAmB;IACnB,mCAAqB;IACrB,uCAAyB;IACzB,6CAA+B;IAC/B,+CAAiC;IACjC,mDAAqC;IACrC,qCAAuB;IACvB,uCAAyB;IACzB,2CAA6B;IAC7B,+BAAiB;IACjB,iCAAmB;IACnB,qCAAuB;IACvB,mCAAqB;IACrB,qCAAuB;IACvB,yCAA2B;AAC5B,CAAC,EAhCW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAgCrB;;;;;;;;;;;;;;;;;;;;ACtCD,yCAAwC;AAUxC;IAA2B,yBAAgB;IAG1C,eAAY,QAAgB;QAA5B,YACC,iBAAO,SAGP;QAFA,KAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,KAAI,CAAC,MAAM,GAAG,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;;IACpC,CAAC;IAEO,oBAAI,GAAZ,UAAa,EAAU;QACtB,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAErC,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC;YAC/B,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;YAE7D,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAClC,MAAM,CAAC;YACR,CAAC;YAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,MAAM,CAAC;YACR,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACF,CAAC;IACF,YAAC;AAAD,CAAC,CA9B0B,qBAAS,GA8BnC;AA9BY,sBAAK;;;;;;;;;;;;;;;;;;;;ACXlB,mCAAuC;AACvC,qCAA2C;AAK3C,yCAAwC;AACxC,wCAAsC;AACtC,qCAAgC;AAahC;IAA8B,4BAAmB;IAiBhD;QAAA,YACC,iBAAO,SAEP;QAXO,eAAS,GAA2B,EAAE,CAAC;QACvC,YAAM,GAA+B,EAAE,CAAC;QACxC,mBAAa,GAAG,CAAC,CAAC;QAQzB,KAAI,CAAC,MAAM,GAAG,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;;IACpC,CAAC;IAPD,sBAAW,2BAAK;aAAhB;YACC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3B,CAAC;;;OAAA;IAOS,2BAAQ,GAAlB;QACC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,IAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAClC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;QACF,CAAC;IACF,CAAC;IAEM,kCAAe,GAAtB,UAAuB,EAAwB;QAC9C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAEM,qCAAkB,GAAzB,UAA0B,EAAwB;QACjD,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC;IACF,CAAC;IAEM,oCAAiB,GAAxB,UAAyB,EAAwB;QAChD,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAEO,uBAAI,GAAZ,UAAa,EAAU;QACtB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC;QACR,CAAC;QACD,IAAM,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAEO,4BAAS,GAAjB,UAAkB,EAAU,EAAE,OAAiB;QAE9C,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,SAAS,EAAE,CAAC;QAClB,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAEvB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACvB,CAAC;YAGD,EAAE,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC;QACF,CAAC;QAED,IAAI,SAAS,GAAG,EAAE,CAAC;QAGnB,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACvB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,aAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACnD,MAAM,CAAC;gBACR,CAAC;YACF,CAAC;YAED,IAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACnC,SAAS,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;YAE3C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,SAAG,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACrD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,EAAE,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAChC,MAAM,CAAC;YACR,CAAC;QACF,CAAC;QAGD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACrE,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;IACF,CAAC;IAEO,4BAAS,GAAjB;QACC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACvB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,IAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACnC,KAAK,CAAC,KAAK,EAAE,CAAC;YACf,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,IAAI,CAAC,SAAG,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1D,CAAC;IACF,CAAC;IAEM,yBAAM,GAAb,UAAc,KAAyB;QACtC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAEM,iCAAc,GAArB,UAAsB,EAAc;QACnC,IAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC;QAClC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAEM,iCAAc,GAArB,UAAsB,QAAgB;QACrC,IAAM,QAAQ,GAAG,IAAI,aAAK,CAAC,QAAQ,CAAC,CAAC;QACrC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAEM,0BAAO,GAAd,UAAe,KAAyB;QACvC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAEM,kCAAe,GAAtB,UAAuB,EAAc;QACpC,IAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC;QAClC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAEM,kCAAe,GAAtB,UAAuB,QAAgB;QACtC,IAAM,QAAQ,GAAG,IAAI,aAAK,CAAC,QAAQ,CAAC,CAAC;QACrC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAEM,uBAAI,GAAX,UAAY,UAAoB;QAC/B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,IAAI,CAAC,SAAG,CAAC,IAAI,EAAE,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3D,MAAM,CAAC;QACR,CAAC;QAED,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,IAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAClC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,IAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC5B,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;oBACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC7C,IAAI,CAAC,IAAI,CAAC,SAAG,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC1D,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC3C,IAAI,CAAC,IAAI,CAAC,SAAG,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACtD,CAAC;QACF,CAAC;QACD,iBAAM,IAAI,WAAE,CAAC;IACd,CAAC;IAEM,uBAAI,GAAX;QACC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,SAAG,CAAC,IAAI,EAAE,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3D,MAAM,CAAC;QACR,CAAC;QAED,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,IAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAClC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtB,CAAC;QACF,CAAC;QAED,iBAAM,IAAI,WAAE,CAAC;IACd,CAAC;IAEM,uBAAI,GAAX,UAAY,KAAyB;QACpC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QACD,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAEM,8BAAW,GAAlB,UAAmB,EAAuC;QACzD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAEM,4BAAS,GAAhB,UAAiB,EAAuC;QACvD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IACF,eAAC;AAAD,CAAC,CAhO6B,qBAAS,GAgOtC;AAhOY,4BAAQ;;;;;;;;;;ACrBrB,mCAAsC;AAOtC,0CAAiD;AAqB1B,iBArBd,uBAAU,CAqBU;AApB7B,sCAA4C;AAC5C,qCAAgD;AAChD,wCAAyD;AACzD,sCAAgD;AAEhD,IAAI,aAAqB,CAAC;AAC1B,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,IAAI,aAAa,GAAG,IAAI,CAAC;AACzB,IAAI,SAAc,CAAC;AACnB,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,IAAI,QAAQ,GAAG,SAAG,CAAC,IAAI,CAAC;AACxB,IAAI,IAAI,GAAG,IAAI,CAAC;AAChB,IAAM,YAAY,GAAkC,EAAE,CAAC;AAEvD,IAAM,aAAa,GAAc,EAAE,CAAC;AAGzB,cAAM,GAAQ,EAAE,CAAC;AAMjB,YAAI,GAAG,CAAC,CAAC;AAGpB;IACC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;AAC9B,CAAC;AAFD,0BAEC;AAED;IACC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAClB,IAAI,EAAE,CAAC;IACR,CAAC;IACD,MAAM,CAAC,aAAa,CAAC;AACtB,CAAC;AALD,gCAKC;AAQD,4BAAmC,EAA+B;IACjE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvB,CAAC;AAFD,gDAEC;AAQD,+BAAsC,EAA+B;IACpE,IAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACvC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC;AACF,CAAC;AALD,sDAKC;AAUD,cAAqB,eAAyB;IAC7C,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAED,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACpB,aAAa,GAAG,IAAI,eAAM,EAAE,CAAC;QAC7B,aAAa,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,EAAE,CAAC,CAAC,OAAM,CAAC,MAAM,CAAC,KAAK,WAAW,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACxD,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,WAAW,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,IAAI,CAAC;AACb,CAAC;AAhBD,oBAgBC;AAQD,sBAA6B,KAAa;IACzC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAClB,IAAI,EAAE,CAAC;IACR,CAAC;IACD,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AALD,oCAKC;AAOD;IACC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAClB,IAAI,EAAE,CAAC;IACR,CAAC;IACD,aAAa,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC;AALD,sBAKC;AAOD;IACC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAClB,IAAI,EAAE,CAAC;IACR,CAAC;IACD,aAAa,CAAC,MAAM,EAAE,CAAC;AACxB,CAAC;AALD,wBAKC;AAQD,gBAAuB,KAAU;IAChC,QAAQ,GAAG,KAAK,CAAC;AAClB,CAAC;AAFD,wBAEC;AAQD,iBAAwB,MAAe;IACtC,IAAI,GAAG,MAAM,CAAC;AACf,CAAC;AAFD,0BAEC;AAOD;IACC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACnB,aAAa,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QACf,WAAW,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;IAED,WAAW,GAAG,KAAK,CAAC;AACrB,CAAC;AAVD,0BAUC;AAUD,gBAAuB,SAAiB;IACvC,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC;IACR,CAAC;IACD,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,YAAI,IAAI,SAAS,CAAC;AACnB,CAAC;AAND,wBAMC;AAUD,eAAsB,GAAQ,EAAE,UAAoB;IACnD,IAAM,CAAC,GAAG,IAAI,aAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACrC,UAAU,CAAC,CAAC,CAAC,CAAC;IACd,IAAI,CAAC,SAAG,CAAC,KAAK,EAAE,qCAAqC,EAAE,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,CAAC,CAAC;AACV,CAAC;AALD,sBAKC;AAQD;IACC,IAAM,CAAC,GAAG,IAAI,mBAAQ,EAAE,CAAC;IACzB,UAAU,CAAC,CAAC,CAAC,CAAC;IACd,IAAI,CAAC,SAAG,CAAC,KAAK,EAAE,wCAAwC,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,CAAC,CAAC;AACV,CAAC;AALD,4BAKC;AASD,eAAsB,QAAgB;IACrC,IAAM,CAAC,GAAG,IAAI,aAAK,CAAC,QAAQ,CAAC,CAAC;IAC9B,UAAU,CAAC,CAAC,CAAC,CAAC;IACd,IAAI,CAAC,SAAG,CAAC,KAAK,EAAE,wCAAwC,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,CAAC,CAAC;AACV,CAAC;AALD,sBAKC;AAWD,oBAA2B,EAAc,EAAE,QAAgB;IAC1D,IAAM,OAAO,GAAG,IAAI,aAAK,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACnD,UAAU,CAAC,OAAO,CAAC,CAAC;IACpB,IAAI,CAAC,SAAG,CAAC,KAAK,EAAE,0CAA0C,EAAE,OAAO,CAAC,CAAC;IACrE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC;AALD,gCAKC;AAWD,qBAA4B,EAAc,EAAE,QAAgB;IAC3D,IAAM,QAAQ,GAAG,IAAI,aAAK,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrB,IAAI,CAAC,SAAG,CAAC,KAAK,EAAE,2CAA2C,EAAE,QAAQ,CAAC,CAAC;IACvE,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACzB,CAAC;AALD,kCAKC;AAOD,oBAAoB,GAAmC;IACtD,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAClB,IAAI,EAAE,CAAC;IACR,CAAC;IAED,GAAG,CAAC,SAAS,CAAC,aAAwB,CAAC,CAAC;IAExC,EAAE,CAAC,CAAC,QAAQ,KAAK,SAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3B,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAED,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACX,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,WAAW,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC;AAUD;IACC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAClB,IAAI,EAAE,CAAC;IACR,CAAC;IAED,IAAM,IAAI,GAAG,IAAI,eAAM,EAAE,CAAC;IAC1B,IAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACvC,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC;IAEb,WAAW,CAAC,IAAI,CAAC,CAAC;IAClB,IAAI,CAAC,SAAG,CAAC,KAAK,EAAE,sCAAsC,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,CAAC,IAAI,CAAC;AACb,CAAC;AAdD,wBAcC;AAQD,oBAA2B,SAAkB;IAC5C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,IAAI,CAAC,SAAG,CAAC,KAAK,EAAE,gCAAgC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC;AAJD,gCAIC;AAED,cAAc,KAAU,EAAE,OAAe,EAAE,IAAU;IACpD,EAAE,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC;QACtB,MAAM,CAAC;IACR,CAAC;IACD,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,IAAI,CAAC,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;AACF,CAAC;AAED,cAAc,IAAS,EAAE,KAAe;IACvC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACX,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,CAAC;QACJ,IAAI,CAAC,KAAK,CAAC,CAAC;IACb,CAAC;IAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC;AAED,qBAAqB,KAAe;IACnC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;AACF,CAAC;AAKD,IAAI,YAAiB,CAAC;AACtB,IAAI,WAAgB,CAAC;AACrB,EAAE,CAAC,CAAC,OAAM,CAAC,MAAM,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC;IACpC,YAAY,GAAG,MAAM,CAAC,qBAAqB,IAAK,MAAc,CAAC,wBAAwB,IAAI,MAAM,CAAC,2BAA2B,IAAK,MAAc,CAAC,uBAAuB,CAAC;IACzK,WAAW,GAAG,MAAM,CAAC,oBAAoB,IAAK,MAAc,CAAC,uBAAuB,CAAC;AACtF,CAAC;AAED,oBAAoB,SAAiB;IACpC,IAAI,EAAE,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC9B,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACnB,EAAE,GAAG,CAAC,CAAC;QACP,aAAa,GAAG,KAAK,CAAC;IACvB,CAAC;IAGD,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,iDAAiD,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC5G,EAAE,GAAG,GAAG,CAAC;IACV,CAAC;IAED,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,QAAQ,GAAG,SAAS,CAAC;IACrB,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;AACtC,CAAC;;;;;;;;;;;;;;;;;;;;ACpXD,qCAA0C;AAC1C,yCAA6C;AAY7C;IAA4B,0BAAS;IAArC;QAAA,qEA0KC;QAzKO,WAAK,GAAG,aAAK,CAAC,IAAI,CAAC;QAClB,eAAS,GAAG,CAAC,CAAC;QACf,aAAO,GAAG,CAAC,CAAC;QACZ,cAAQ,GAAG,CAAC,CAAC;QACZ,YAAM,GAAG,CAAC,CAAC;QACX,gBAAU,GAA6B,EAAE,CAAC;QAC1C,mBAAa,GAA6B,EAAE,CAAC;;IAmKtD,CAAC;IA/JO,0BAAS,GAAhB,UAAiB,MAAe,EAAE,IAA0B;QAC3D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IASM,6BAAY,GAAnB,UAAoB,KAAa;QAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACxB,CAAC;IASM,gCAAe,GAAtB,UAAuB,EAAwB;QAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IASM,mCAAkB,GAAzB,UAA0B,EAAwB;QACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IASM,kCAAiB,GAAxB,UAAyB,EAAwB;QAChD,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,OAAO,IAAI,EAAE,CAAC;YACb,IAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7C,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClB,MAAM,CAAC,KAAK,CAAC;YACd,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpC,KAAK,GAAG,IAAI,CAAC;QACd,CAAC;IACF,CAAC;IAUO,+BAAc,GAAtB;QACC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAChC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACtB,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACnC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACzB,CAAC;IACF,CAAC;IAUM,qBAAI,GAAX,UAAY,EAAU;QACrB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC;QACR,CAAC;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAM,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACpC,GAAG,CAAC,CAAC,IAAI,IAAI,GAAQ,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9D,IAAI,CAAC,OAAO,CAAC,CAAC;QACf,CAAC;QACD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC;QACxB,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,IAAI,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC;IAEM,sBAAK,GAAZ;QACC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,GAAG,aAAK,CAAC,GAAG,CAAC;QACxB,CAAC;IACF,CAAC;IAEM,sBAAK,GAAZ;QACC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,aAAK,CAAC,KAAK,CAAC;QAC1B,CAAC;IACF,CAAC;IAEM,uBAAM,GAAb;QACC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,GAAG,aAAK,CAAC,GAAG,CAAC;QACxB,CAAC;IACF,CAAC;IAEM,qBAAI,GAAX;QACC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC;QACR,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,aAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAEM,qBAAI,GAAX;QACC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACtD,CAAC;IAEM,sBAAK,GAAZ;QACC,IAAI,CAAC,KAAK,GAAG,aAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAEM,uBAAM,GAAb;QACC,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,IAAI,CAAC;IAClC,CAAC;IAEM,0BAAS,GAAhB;QACC,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,GAAG,CAAC;IACjC,CAAC;IAEM,2BAAU,GAAjB;QACC,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,QAAQ,CAAC;IACrE,CAAC;IAEM,yBAAQ,GAAf;QACC,MAAM,CAAC,IAAI,CAAE,KAAK,KAAK,aAAK,CAAC,KAAK,CAAC;IACpC,CAAC;IACF,aAAC;AAAD,CAAC,CA1K2B,qBAAS,GA0KpC;AA1KY,wBAAM;;;;;;;;;;ACLnB;IAAA;QAGQ,WAAM,GAAG,CAAC,CAAC;IAyDnB,CAAC;IAvDO,uBAAG,GAAV,UAAW,GAAQ;QAClB,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9D,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;YACrB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QACrB,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;YAC9B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAClB,CAAC;IAEM,0BAAM,GAAb,UAAc,GAAQ;QACrB,IAAM,IAAI,GAAG,GAAY,CAAC;QAC1B,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC;QACR,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC;QACR,CAAC;QAGD,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;QAChC,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACnD,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/C,CAAC;QAGD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAG3B,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAClB,CAAC;IAEO,2BAAO,GAAf,UAAgB,GAAQ,EAAE,QAA2B,EAAE,IAAuB,EAAE,IAAe;QAC9F,IAAM,IAAI,GAAG,GAAY,CAAC;QAC1B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;YAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IACF,gBAAC;AAAD,CAAC;AA5DqB,8BAAS;;;;;;;;;;;;;;;;;;;;ACP/B,yCAAwC;AAUxC;IAA8B,4BAAmB;IAGhD,kBAAY,EAAc;QAA1B,YACC,iBAAO,SAGP;QAFA,KAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,KAAI,CAAC,MAAM,GAAG,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;;IACpC,CAAC;IAEO,uBAAI,GAAZ,UAAa,EAAU;QACtB,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjB,CAAC;IACF,eAAC;AAAD,CAAC,CAhB6B,qBAAS,GAgBtC;AAhBY,4BAAQ;;;;;;;;;;;;;;;;;;;;ACXrB,qCAA2C;AAG3C,uCAA6C;AAC7C,0CAAkD;AAClD,yCAAwC;AACxC,wCAAsC;AAUtC;IAA2B,yBAAgB;IAa1C,eAAY,MAAW,EAAE,UAAoB;QAA7C,YACC,iBAAO,SAKP;QAdO,WAAK,GAAG,CAAC,CAAC;QAIV,cAAQ,GAAG,KAAK,CAAC;QAOxB,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,KAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,KAAI,CAAC,MAAM,GAAG,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;;IACpC,CAAC;IAUM,oBAAI,GAAX,UAAY,MAAW,EAAE,UAAoB;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9B,CAAC;IASS,wBAAQ,GAAlB;QAEC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAClD,CAAC;QAGD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,IAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,IAAI,CAAC,CAAC;YAC1D,CAAC;QACF,CAAC;QAGD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACtD,CAAC;QAGD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,MAAM,GAAG,uBAAU,CAAC,MAAM,CAAC;YAChC,IAAI,CAAC,IAAI,GAAG,kBAAS,CAAC,uBAAU,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IASS,6BAAa,GAAvB;QACC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACvB,CAAC;QACD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACrB,CAAC;QAED,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,IAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAGhC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;YAGD,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1D,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;QACF,CAAC;IACF,CAAC;IAEO,oBAAI,GAAZ,UAAa,EAAU;QACtB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC;QACR,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACrC,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC;YAC/B,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxE,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAG9B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/C,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;YACnC,CAAC;YAGD,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACjD,CAAC;YAGD,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACjB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACjD,IAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;gBACpG,CAAC;YACF,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;YAE7D,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAClC,MAAM,CAAC;YACR,CAAC;YAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;YAG9C,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,QAAQ,CAAC;YACV,CAAC;YAGD,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,MAAM,CAAC;YACR,CAAC;YAED,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACF,CAAC;IAUM,oBAAI,GAAX,UAAY,IAAS;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAWM,kBAAE,GAAT,UAAU,EAAO,EAAE,QAAgB;QAClC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAUM,2BAAW,GAAlB,UAAmB,QAAiB;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAUM,sBAAM,GAAb,UAAc,IAAS,EAAE,QAAiB;QACzC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,IAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChC,QAAQ,CAAC;YACV,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;YAEhC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;QACF,CAAC;IACF,CAAC;IAQM,qBAAK,GAAZ,UAAa,UAAoB;QAChC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;YAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;YAClC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAE1B,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC;YAEnB,IAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YACrE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;QAC9B,iBAAM,KAAK,YAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IAOM,uBAAO,GAAd;QACC,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC;QAEnB,IAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACrE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAEjD,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC;IACF,CAAC;IAUM,oBAAI,GAAX,UAAY,IAAY;QACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAUM,wBAAQ,GAAf,UAAgB,KAAa;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAUM,0BAAU,GAAjB;QACC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,CAAC,IAAI,mBAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAWO,sBAAM,GAAd,UAAe,IAAyB;QACvC,IAAM,IAAI,GAAG,IAAc,CAAC;QAE5B,EAAE,CAAC,CAAC,IAAI,IAAI,kBAAS,CAAC,CAAC,CAAC;YACvB,MAAM,CAAC,kBAAS,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IAChD,CAAC;IAUM,yBAAS,GAAhB,UAAiB,IAAyB;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IASS,wBAAQ,GAAlB;QACC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IAClB,CAAC;IACF,YAAC;AAAD,CAAC,CAtW0B,qBAAS,GAsWnC;AAtWY,sBAAK;;;;;;;;;;ACXlB,0CAA0C;AAE1C,IAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AACnB,IAAM,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAChC,IAAM,IAAI,GAAG,OAAO,CAAC;AACrB,IAAM,YAAY,GAA4C,EAAE,CAAC;AAGjE,YAAY,CAAC,uBAAU,CAAC,MAAM,CAAC,GAAG,UAAC,CAAS;IAC3C,MAAM,CAAC,CAAC,CAAC;AACV,CAAC,CAAC;AAGF,YAAY,CAAC,uBAAU,CAAC,MAAM,CAAC,GAAG,UAAC,CAAS;IAC3C,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AACd,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,OAAO,CAAC,GAAG,UAAC,CAAS;IAC5C,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,SAAS,CAAC,GAAG,UAAC,CAAS;IAC9C,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAAC,IAAI,CAAC,CAAC;QACP,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;AACF,CAAC,CAAC;AAGF,YAAY,CAAC,uBAAU,CAAC,OAAO,CAAC,GAAG,UAAC,CAAS;IAC5C,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,QAAQ,CAAC,GAAG,UAAC,CAAS;IAC7C,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,UAAU,CAAC,GAAG,UAAC,CAAS;IAC/C,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAAC,IAAI,CAAC,CAAC;QACP,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;AACF,CAAC,CAAC;AAGF,YAAY,CAAC,uBAAU,CAAC,OAAO,CAAC,GAAG,UAAC,CAAS;IAC5C,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,QAAQ,CAAC,GAAG,UAAC,CAAS;IAC7C,IAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AAC9C,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,UAAU,CAAC,GAAG,UAAC,CAAS;IAC/C,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,IAAI,CAAC,CAAC;QACP,IAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;AACF,CAAC,CAAC;AAGF,YAAY,CAAC,uBAAU,CAAC,MAAM,CAAC,GAAG,UAAC,CAAS;IAC3C,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,CAAC,CAAC;IACV,CAAC;IACD,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,OAAO,CAAC,GAAG,UAAC,CAAS;IAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,SAAS,CAAC,GAAG,UAAC,CAAS;IAC9C,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAAC,IAAI,CAAC,CAAC;QACP,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;AACF,CAAC,CAAC;AAGF,YAAY,CAAC,uBAAU,CAAC,MAAM,CAAC,GAAG,UAAC,CAAS;IAC3C,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,OAAO,CAAC,GAAG,UAAC,CAAS;IAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,SAAS,CAAC,GAAG,UAAC,CAAS;IAC9C,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAAC,IAAI,CAAC,CAAC;QACP,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;AACF,CAAC,CAAC;AAGF,YAAY,CAAC,uBAAU,CAAC,OAAO,CAAC,GAAG,UAAC,CAAS;IAC5C,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,QAAQ,CAAC,GAAG,UAAC,CAAS;IAC7C,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,UAAU,CAAC,GAAG,UAAC,CAAS;IAC/C,CAAC,IAAI,CAAC,CAAC;IACP,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACX,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC;AAGF,YAAY,CAAC,uBAAU,CAAC,aAAa,CAAC,GAAG,UAAC,CAAS;IAClD,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,CAAC,CAAC;IACV,CAAC;IACD,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,cAAc,CAAC,GAAG,UAAC,CAAS;IACnD,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,EAAE,GAAG,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,gBAAgB,CAAC,GAAG,UAAC,CAAS;IACrD,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,CAAC,CAAC;IACV,CAAC;IACD,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,CAAC,CAAC;IACV,CAAC;IACD,CAAC,IAAI,CAAC,CAAC;IACP,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACX,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC;AAGF,YAAY,CAAC,uBAAU,CAAC,SAAS,CAAC,GAAG,UAAC,CAAS;IAC9C,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,CAAC,CAAC;IACV,CAAC;IACD,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,UAAU,CAAC,GAAG,UAAC,CAAS;IAC/C,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,CAAC,CAAC;IACV,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACrE,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,YAAY,CAAC,GAAG,UAAC,CAAS;IACjD,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,CAAC,CAAC;IACV,CAAC;IACD,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,CAAC,CAAC;IACV,CAAC;IACD,CAAC,IAAI,CAAC,CAAC;IACP,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACX,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjF,CAAC,CAAC;AAGF,YAAY,CAAC,uBAAU,CAAC,MAAM,CAAC,GAAG,UAAC,CAAS;IAC3C,IAAM,CAAC,GAAG,IAAI,CAAC;IACf,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAEhD,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,OAAO,CAAC,GAAG,UAAC,CAAS;IAC5C,IAAM,CAAC,GAAG,IAAI,CAAC;IACf,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,SAAS,CAAC,GAAG,UAAC,CAAS;IAC9C,IAAM,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;IACvB,CAAC,IAAI,CAAC,CAAC;IACP,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACX,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,CAAC,CAAC;AAGF,YAAY,CAAC,uBAAU,CAAC,SAAS,CAAC,GAAG,UAAC,CAAS;IAC9C,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAChD,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IACnD,CAAC;IAAC,IAAI,CAAC,CAAC;QACP,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;IACtD,CAAC;AACF,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,QAAQ,CAAC,GAAG,UAAC,CAAS;IAC7C,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,uBAAU,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,YAAY,CAAC,uBAAU,CAAC,WAAW,CAAC,GAAG,UAAC,CAAS;IAChD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,YAAY,CAAC,uBAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACvD,CAAC;IACD,MAAM,CAAC,YAAY,CAAC,uBAAU,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;AAClE,CAAC,CAAC;AAES,iBAAS,GAAG,YAAY,CAAC","file":"fatina.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Fatina\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Fatina\"] = factory();\n\telse\n\t\troot[\"Fatina\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 6);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 982c366558f39c21212f","/**\r\n * Possible states of a Tween / Sequence\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum State {\r\n\tIdle,\r\n\tRun,\r\n\tPause,\r\n\tFinished,\r\n\tKilled\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/core/enum/state.ts","import { Log } from '../core/enum/log';\nimport { State } from '../core/enum/state';\nimport { ITicker } from '../core/interfaces/ITicker';\n\n/**\n * Shared behaviors between different types of tweens and sequence\n * Used mostly to manage:\n * - events\n * - state\n * - loop and restart\n *\n * @export\n * @abstract\n * @class BaseTween\n */\nexport abstract class BaseTween> {\n\t// events\n\tprotected eventStart: {(): void}[] | undefined;\n\tprotected eventRestart: {(): void}[] | undefined;\n\tprotected eventUpdate: {(dt: number, progress: number): void}[] | undefined;\n\tprotected eventKill: {(): void}[] | undefined;\n\tprotected eventComplete: {(): void}[] | undefined;\n\n\t// public properties\n\tpublic elapsed = 0;\n\tpublic duration = 0;\n\tpublic timescale = 1;\n\tpublic state: State = State.Idle;\n\n\t// private properties\n\tprotected loopOriginal = 1;\n\tprotected loop = 1;\n\tprotected yoyoOriginal = 0;\n\tprotected yoyo = 0;\n\tprotected parent: ITicker;\n\tprotected tickCb: (dt: number) => void;\n\tprivate firstStart = true;\n\tprivate recycled = false;\n\tprivate safe = true;\n\tprivate logLevel = Log.None;\n\n\t/**\n\t * Method used to start a tween\n\t *\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Start(): T {\n\t\tif (this.state !== State.Idle) {\n\t\t\treturn this as any;\n\t\t}\n\n\t\tif (this.firstStart) {\n\t\t\tthis.Validate();\n\t\t} else {\n\t\t\tthis.CheckPosition();\n\t\t}\n\n\t\tthis.state = State.Run;\n\t\tif (this.recycled) {\n\t\t\tif (!this.parent.CheckTickListener(this.tickCb)) {\n\t\t\t\tthis.parent.AddTickListener(this.tickCb);\n\t\t\t}\n\t\t\tthis.recycled = false;\n\t\t} else {\n\t\t\tthis.parent.AddTickListener(this.tickCb);\n\t\t}\n\n\t\tif (this.firstStart) {\n\t\t\tthis.EmitEvent(this.eventStart);\n\t\t\tthis.firstStart = false;\n\t\t}\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Reset a tween to be reusable (with start)\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Recycle() {\n\t\tthis.Reset(true);\n\t\tthis.firstStart = true;\n\t\tthis.recycled = true;\n\t}\n\n\t/**\n\t * To Reset a Tween already finished (example looping sequence)\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Reset(skipParent?: boolean): void {\n\t\tthis.state = State.Idle;\n\n\t\tif (!skipParent) {\n\t\t\tthis.RemoveParentListener();\n\t\t}\n\n\t\tthis.loop = this.loopOriginal;\n\t\tthis.LoopInit();\n\t\tthis.EmitEvent(this.eventRestart);\n\t}\n\n\t/**\n\t * To immediately Reset a tween without stopping/restarting it\n\t * This is faster than calling manually Reset() & Start() & Tick()\n\t *\n\t * @param {number} dtRemains\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic ResetAndStart(dtRemains: number) {\n\t\tthis.LoopInit();\n\t\tthis.EmitEvent(this.eventRestart);\n\n\t\tthis.state = State.Run;\n\t\tif (dtRemains > 0) {\n\t\t\tthis.tickCb(dtRemains);\n\t\t}\n\t}\n\n\t/**\n\t * Method used to define the ticker of this tween\n\t * When Fatina.Tween is used, the main ticker is automatically defined as parent\n\t *\n\t * @param {ITicker} ticker\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic SetParent(ticker: ITicker): T {\n\t\tthis.RemoveParentListener();\n\t\tthis.parent = ticker;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Method used to change the timescale of the tween\n\t *\n\t * @param {number} scale\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic SetTimescale(scale: number): T {\n\t\tthis.timescale = scale;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Method used to pause a tween or a sequence (only work if the tween runs)\n\t *\n\t * @returns {void}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Pause(): void {\n\t\tif (this.state !== State.Run) {\n\t\t\tthis.Info(Log.Info, 'Cannot pause this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = State.Pause;\n\t\tthis.RemoveParentListener();\n\t}\n\n\t/**\n\t * Method used to resume a tween or a sequence (only work if the tween is paused)\n\t *\n\t * @returns {void}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Resume(): void {\n\t\tif (this.state !== State.Pause) {\n\t\t\tthis.Info(Log.Info, 'Cannot resume this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = State.Run;\n\t\tthis.parent.AddTickListener(this.tickCb);\n\t}\n\n\t/**\n\t * Method used to Skip this tween or sequence and directly finish it\n\t *\n\t * @param {boolean} [finalValue]\n\t * @returns {void}\n\t * @memberOf BaseTween\n\t */\n\tpublic Skip(finalValue?: boolean): void {\n\t\tif (this.state === State.Killed || this.state === State.Finished) {\n\t\t\tthis.Info(Log.Info, 'Cannot skip this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.state === State.Idle) {\n\t\t\tthis.EmitEvent(this.eventStart);\n\t\t}\n\n\t\tif (finalValue) {\n\t\t\tthis.tickCb(this.duration - this.elapsed + (this.yoyo * this.duration));\n\t\t\treturn;\n\t\t}\n\n\t\tthis.elapsed = this.duration;\n\t\tthis.Complete();\n\t}\n\n\t/**\n\t * Method used to Stop/Kill a tween or a sequence\n\t *\n\t * @returns {void}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Kill(): void {\n\t\tif (this.state === State.Killed) {\n\t\t\tthis.Info(Log.Info, 'Cannot kill this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = State.Killed;\n\t\tthis.RemoveParentListener();\n\t\tthis.EmitEvent(this.eventKill);\n\t}\n\n\t/**\n\t * Method used to define how many time the tween has to loop\n\t * Extra: if -1 the tween will loop forever\n\t *\n\t * @param {number} loop\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic SetLoop(loop: number): T {\n\t\tthis.loopOriginal = Math.round(loop);\n\t\tthis.loop = this.loopOriginal;\n\t\treturn this as any;\n\t}\n\n\tpublic IsIdle(): boolean {\n\t\treturn this.state === State.Idle;\n\t}\n\n\tpublic IsRunning(): boolean {\n\t\treturn this.state === State.Run;\n\t}\n\n\tpublic IsFinished(): boolean {\n\t\treturn this.state === State.Killed || this.state === State.Finished;\n\t}\n\n\tpublic IsPaused(): boolean {\n\t\treturn this. state === State.Pause;\n\t}\n\n\tprotected Complete(): void {\n\t\tif (this.state === State.Killed || this.state === State.Finished) {\n\t\t\tthis.Info(Log.Info, 'Cannot complete this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = State.Finished;\n\t\tthis.RemoveParentListener();\n\t\tthis.EmitEvent(this.eventComplete);\n\t}\n\n\tprotected RemoveParentListener() {\n\t\tif (this.parent) {\n\t\t\tthis.parent.RemoveTickListener(this.tickCb);\n\t\t}\n\t}\n\n\tprotected CheckPosition(): void {}\n\tprotected Validate(): void {}\n\tprotected LoopInit(): void {\n\t\tthis.elapsed = 0;\n\t}\n\n\tpublic SetSafe(safe: boolean): T {\n\t\tthis.safe = safe;\n\t\treturn this as any;\n\t}\n\n\tpublic SetLog(level: Log): T {\n\t\tthis.logLevel = level;\n\t\treturn this as any;\n\t}\n\n\tprotected Info(level: Log, message: string, data?: any) {\n\t\tif (level > this.logLevel) {\n\t\t\treturn;\n\t\t}\n\t\tif (data) {\n\t\t\tconsole.log(message, data);\n\t\t} else {\n\t\t\tconsole.log(message);\n\t\t}\n\t}\n\n\tprivate Emit(func: any, args: any) {\n\t\tif (!this.safe) {\n\t\t\treturn func.apply(this, args);\n\t\t}\n\t\ttry {\n\t\t\tfunc.apply(this, args);\n\t\t} catch (e) {\n\t\t\tconsole.warn(e);\n\t\t}\n\t}\n\n\tprotected EmitEvent(listeners: any, args?: any) {\n\t\tif (!listeners) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < listeners.length; i++) {\n\t\t\tthis.Emit(listeners[i], args);\n\t\t}\n\t}\n\n\t/**\n\t * Callback called when the tween started\n\t *\n\t * @param {() => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnStart(cb: () => void): T {\n\t\tif (!this.eventStart) {\n\t\t\tthis.eventStart = new Array(0);\n\t\t}\n\t\tthis.eventStart[this.eventStart.length] = cb;\n\t\tthis.Info(Log.Debug, 'onStart');\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Callback called when the tween restart (loop)\n\t *\n\t * @param {() => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnRestart(cb: () => void): T {\n\t\tif (!this.eventRestart) {\n\t\t\tthis.eventRestart = new Array(0);\n\t\t}\n\t\tthis.eventRestart[this.eventRestart.length] = cb;\n\t\tthis.Info(Log.Debug, 'onRestart');\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Callback called when the tween is updated\n\t *\n\t * @param {(dt: number, progress: number) => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnUpdate(cb: (dt: number, progress: number) => void): T {\n\t\tif (!this.eventUpdate) {\n\t\t\tthis.eventUpdate = new Array(0);\n\t\t}\n\t\tthis.eventUpdate[this.eventUpdate.length] = cb;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Callback called when the tween is manually killed\n\t *\n\t * @param {() => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnKilled(cb: () => void): T {\n\t\tif (!this.eventKill) {\n\t\t\tthis.eventKill = new Array(0);\n\t\t}\n\t\tthis.eventKill[this.eventKill.length] = cb;\n\t\tthis.Info(Log.Debug, 'onKilled');\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Callback called when the tween is finished\n\t *\n\t * @param {() => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnComplete(cb: () => void): T {\n\t\tif (!this.eventComplete) {\n\t\t\tthis.eventComplete = new Array(0);\n\t\t}\n\t\tthis.eventComplete[this.eventComplete.length] = cb;\n\t\tthis.Info(Log.Debug, 'onComplete');\n\t\treturn this as any;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/baseTween.ts","/**\n * Enum use to set the verbosity level of fatina and tweens\n *\n * @export\n * @enum {number}\n */\nexport enum Log {\n\tNone = 0,\n\tInfo = 1,\n\tDebug = 2\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/core/enum/log.ts","\r\n/**\r\n * List of all easing methods\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum EasingType {\r\n\tLinear = 'linear',\r\n\tInQuad = 'inQuad',\r\n\tOutQuad = 'outQuad',\r\n\tInOutQuad = 'inOutQuad',\r\n\tInCubic = 'inCubic',\r\n\tOutCubic = 'outCubic',\r\n\tInOutCubic = 'inOutCubic',\r\n\tInQuart = 'inQuart',\r\n\tOutQuart = 'outQuart',\r\n\tInOutQuart = 'inOutQuart',\r\n\tInSine = 'inSine',\r\n\tOutSine = 'outSine',\r\n\tInOutSine = 'inOutSine',\r\n\tInCirc = 'inCirc',\r\n\tOutCirc = 'outCirc',\r\n\tInOutCirc = 'inOutCirc',\r\n\tInQuint = 'inQuint',\r\n\tOutQuint = 'outQuint',\r\n\tInOutQuint = 'inOutQuint',\r\n\tInExponential = 'inExponential',\r\n\tOutExponential = 'outExponential',\r\n\tInOutExponential = 'inOutExponential',\r\n\tInElastic = 'inElastic',\r\n\tOutElastic = 'outElastic',\r\n\tInOutElastic = 'inOutElastic',\r\n\tInBack = 'inBack',\r\n\tOutBack = 'outBack',\r\n\tInOutBack = 'inOutBack',\r\n\tInBounce = 'inBounce',\r\n\tOutBounce = 'outBounce',\r\n\tInOutBounce = 'inOutBounce'\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/easing/easingType.ts","import { IPlayable } from '../core/interfaces/IPlayable';\r\nimport { BaseTween } from './baseTween';\r\n\r\n/**\r\n * Fake tween used to delay other tweens in a sequence\r\n *\r\n * @export\r\n * @class Delay\r\n * @extends {BaseTween}\r\n * @implements {IPlayable}\r\n */\r\nexport class Delay extends BaseTween implements IPlayable {\r\n\tprivate remainsDt: number;\r\n\r\n\tconstructor(duration: number) {\r\n\t\tsuper();\r\n\t\tthis.duration = duration;\r\n\t\tthis.tickCb = this.Tick.bind(this);\r\n\t}\r\n\r\n\tprivate Tick(dt: number) {\r\n\t\tthis.remainsDt = dt * this.timescale;\r\n\r\n\t\twhile (this.remainsDt > 0) {\r\n\t\t\tthis.elapsed += this.remainsDt;\r\n\t\t\tconst progress = Math.max(Math.min(this.elapsed / this.duration, 1), 0);\r\n\t\t\tthis.EmitEvent(this.eventUpdate, [this.remainsDt, progress]);\r\n\r\n\t\t\tif (this.elapsed < this.duration) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.remainsDt = this.elapsed - this.duration;\r\n\t\t\tthis.loop--;\r\n\t\t\tif (this.loop === 0) {\r\n\t\t\t\tthis.Complete();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.ResetAndStart(0);\r\n\t\t}\r\n\t}\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/delay.ts","import { Log } from '../core/enum/log';\nimport { State } from '../core/enum/state';\nimport { IPlayable } from '../core/interfaces/IPlayable';\nimport { ISequence } from '../core/interfaces/ISequence';\nimport { ITicker } from '../core/interfaces/ITicker';\nimport { ITween } from '../core/interfaces/ITween';\nimport { BaseTween } from './baseTween';\nimport { Callback } from './callback';\nimport { Delay } from './delay';\n\n/**\n * Sequence: used to animate other tweens or sequence\n * Can play them sequentially or in parallel\n *\n * @export\n * @class Sequence\n * @extends {BaseTween}\n * @implements {ISequence}\n * @implements {ITicker}\n * @implements {IPlayable}\n */\nexport class Sequence extends BaseTween implements ISequence, ITicker, IPlayable {\n\t// events\n\tprivate eventStepStart: {(tween: ITween | IPlayable): void}[] | undefined;\n\tprivate eventStepEnd: {(tween: ITween | IPlayable): void}[] | undefined;\n\n\t// public properties\n\tpublic currentTween: (ITween | IPlayable)[] | undefined;\n\n\t// private properties\n\tprivate eventTick: {(dt: number): void}[] = [];\n\tprivate tweens: ((ITween | IPlayable)[])[] = [];\n\tprivate sequenceIndex = 0;\n\n\tpublic get Count(): number {\n\t\treturn this.tweens.length;\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.tickCb = this.Tick.bind(this);\n\t}\n\n\tprotected LoopInit() {\n\t\tthis.sequenceIndex = 0;\n\t\tfor (let i = 0; i < this.tweens.length; i++) {\n\t\t\tconst tweenArray = this.tweens[i];\n\t\t\tfor (let j = 0; j < tweenArray.length; j++) {\n\t\t\t\ttweenArray[j].Reset();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic AddTickListener(cb: (dt: number) => void): void {\n\t\tthis.eventTick.unshift(cb);\n\t}\n\n\tpublic RemoveTickListener(cb: (dt: number) => void): void {\n\t\tconst index = this.eventTick.indexOf(cb);\n\t\tif (index !== -1) {\n\t\t\tthis.eventTick.splice(index, 1);\n\t\t}\n\t}\n\n\tpublic CheckTickListener(cb: (dt: number) => void): boolean {\n\t\treturn false;\n\t}\n\n\tprivate Tick(dt: number) {\n\t\tif (this.state === State.Finished || this.state === State.Killed) {\n\t\t\treturn;\n\t\t}\n\t\tconst localDt = dt * this.timescale;\n\t\tthis.elapsed += localDt;\n\t\tthis.LocalTick(localDt);\n\t}\n\n\tprivate LocalTick(dt: number, remains?: boolean) {\n\t\t// If no current tween, take the first one and start it\n\t\tif (!this.currentTween) {\n\t\t\tthis.NextTween();\n\t\t}\n\n\t\tif (this.currentTween) {\n\t\t\t// Tick every listener\n\t\t\tfor (let i = this.eventTick.length - 1; i >= 0; i--) {\n\t\t\t\tthis.eventTick[i](dt);\n\t\t\t}\n\n\t\t\t// Dont emit update event for remains dt\n\t\t\tif (remains !== true) {\n\t\t\t\tthis.EmitEvent(this.eventUpdate, [dt, 0]);\n\t\t\t}\n\t\t}\n\n\t\tlet remainsDt = dt;\n\n\t\t// Current tween over\n\t\tif (this.currentTween) {\n\t\t\tfor (let i = 0; i < this.currentTween.length; i++) {\n\t\t\t\tif (this.currentTween[i].state !== State.Finished) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst first = this.currentTween[0];\n\t\t\tremainsDt = first.elapsed - first.duration;\n\n\t\t\tthis.EmitEvent(this.eventStepEnd, [this.currentTween[0]]);\n\t\t\tthis.Info(Log.Debug, 'OnStepEnd', this.eventStepEnd);\n\t\t\tthis.currentTween = undefined;\n\t\t\tthis.sequenceIndex++;\n\n\t\t\tif (remainsDt > 0.01) {\n\t\t\t\tthis.LocalTick(remainsDt, true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Complete\n\t\tif (!this.currentTween && this.tweens.length === this.sequenceIndex) {\n\t\t\tthis.loop--;\n\t\t\tif (this.loop === 0) {\n\t\t\t\tthis.Complete();\n\t\t\t} else {\n\t\t\t\tthis.ResetAndStart(remainsDt);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate NextTween() {\n\t\tthis.currentTween = this.tweens[this.sequenceIndex];\n\t\tif (this.currentTween) {\n\t\t\tfor (let i = 0; i < this.currentTween.length; i++) {\n\t\t\t\tconst tween = this.currentTween[i];\n\t\t\t\ttween.Start();\n\t\t\t}\n\n\t\t\tthis.EmitEvent(this.eventStepStart, [this.currentTween[0]]);\n\t\t\tthis.Info(Log.Debug, 'OnStepStart', this.eventStepStart);\n\t\t}\n\t}\n\n\tpublic Append(tween: ITween | ISequence): ISequence {\n\t\ttween.SetParent(this);\n\t\tthis.tweens[this.tweens.length] = [tween];\n\t\treturn this;\n\t}\n\n\tpublic AppendCallback(cb: () => void): ISequence {\n\t\tconst playable = new Callback(cb);\n\t\tplayable.SetParent(this);\n\t\tthis.tweens[this.tweens.length] = [playable];\n\t\treturn this;\n\t}\n\n\tpublic AppendInterval(duration: number): ISequence {\n\t\tconst playable = new Delay(duration);\n\t\tplayable.SetParent(this);\n\t\tthis.tweens[this.tweens.length] = [playable];\n\t\treturn this;\n\t}\n\n\tpublic Prepend(tween: ITween | ISequence): ISequence {\n\t\ttween.SetParent(this);\n\t\tthis.tweens.unshift([tween]);\n\t\treturn this;\n\t}\n\n\tpublic PrependCallback(cb: () => void): ISequence {\n\t\tconst playable = new Callback(cb);\n\t\tplayable.SetParent(this);\n\t\tthis.tweens.unshift([playable]);\n\t\treturn this;\n\t}\n\n\tpublic PrependInterval(duration: number): ISequence {\n\t\tconst playable = new Delay(duration);\n\t\tplayable.SetParent(this);\n\t\tthis.tweens.unshift([playable]);\n\t\treturn this;\n\t}\n\n\tpublic Skip(finalValue?: boolean): void {\n\t\tif (this.state === State.Killed || this.state === State.Finished) {\n\t\t\tthis.Info(Log.Info, 'Cannot skip this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < this.tweens.length; i++) {\n\t\t\tconst tweenArray = this.tweens[i];\n\t\t\tfor (let j = 0; j < tweenArray.length; j++) {\n\t\t\t\tconst tween = tweenArray[j];\n\t\t\t\tif (tween.elapsed === 0) {\n\t\t\t\t\tthis.EmitEvent(this.eventStepStart, [tween]);\n\t\t\t\t\tthis.Info(Log.Debug, 'OnStepStart', this.eventStepStart);\n\t\t\t\t}\n\t\t\t\ttween.Skip(finalValue);\n\t\t\t\tthis.EmitEvent(this.eventStepEnd, [tween]);\n\t\t\t\tthis.Info(Log.Debug, 'OnStepEnd', this.eventStepEnd);\n\t\t\t}\n\t\t}\n\t\tsuper.Skip();\n\t}\n\n\tpublic Kill(): void {\n\t\tif (this.state === State.Killed) {\n\t\t\tthis.Info(Log.Info, 'Cannot kill this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < this.tweens.length; i++) {\n\t\t\tconst tweenArray = this.tweens[i];\n\t\t\tfor (let j = 0; j < tweenArray.length; j++) {\n\t\t\t\ttweenArray[j].Kill();\n\t\t\t}\n\t\t}\n\n\t\tsuper.Kill();\n\t}\n\n\tpublic Join(tween: ITween | ISequence): ISequence {\n\t\tif (this.tweens.length === 0) {\n\t\t\treturn this.Append(tween);\n\t\t}\n\t\ttween.SetParent(this);\n\t\tthis.tweens[this.tweens.length - 1].push(tween);\n\t\treturn this;\n\t}\n\n\tpublic OnStepStart(cb: (index: ITween | IPlayable) => void): ISequence {\n\t\tif (!this.eventStepStart) {\n\t\t\tthis.eventStepStart = new Array(0);\n\t\t}\n\t\tthis.eventStepStart[this.eventStepStart.length] = cb;\n\t\treturn this;\n\t}\n\n\tpublic OnStepEnd(cb: (index: ITween | IPlayable) => void): ISequence {\n\t\tif (!this.eventStepEnd) {\n\t\t\tthis.eventStepEnd = new Array(0);\n\t\t}\n\t\tthis.eventStepEnd[this.eventStepEnd.length] = cb;\n\t\treturn this;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/sequence.ts","import { Log } from './core/enum/log';\nimport { IControl } from './core/interfaces/IControl';\nimport { IPlayable } from './core/interfaces/IPlayable';\nimport { IPlugin } from './core/interfaces/IPlugin';\nimport { ISequence } from './core/interfaces/ISequence';\nimport { ITicker } from './core/interfaces/ITicker';\nimport { ITween } from './core/interfaces/ITween';\nimport { EasingType } from './easing/easingType';\nimport { Ticker as ticker } from './ticker';\nimport { Delay as delay } from './tweens/delay';\nimport { Sequence as sequence } from './tweens/sequence';\nimport { Tween as tween } from './tweens/tween';\n\nlet tickerManager: ticker;\nlet initialized = false;\nlet isFirstUpdate = true;\nlet lastFrame: any;\nlet lastTime = 0;\nlet logLevel = Log.None;\nlet safe = true;\nconst eventCreated: {(control: IControl): void}[] = [];\n\nconst loadedPlugins: IPlugin[] = [];\n\n// Area for plugins to add helpers / dynamic method\nexport let plugin: any = {};\n\n// Expose the easing enum\nexport { EasingType as Easing };\n\n// real time of Fatina (not affected by timescale, pause, ...)\nexport let time = 0;\n\n// time updated internally (affected by timescale, pause, ...)\nexport function Elapsed(): number {\n\treturn tickerManager.elapsed;\n}\n\nexport function MainTicker(): ITicker {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\treturn tickerManager;\n}\n\n/**\n * Add a listener method on tween/sequence creation\n *\n * @export\n * @param {(control: IControl) => void} cb\n */\nexport function AddListenerCreated(cb: (control: IControl) => void): void {\n\teventCreated.push(cb);\n}\n\n/**\n * Remove a listener method on tween/sequence creation\n *\n * @export\n * @param {(control: IControl) => void} cb\n */\nexport function RemoveListenerCreated(cb: (control: IControl) => void): void {\n\tconst index = eventCreated.indexOf(cb);\n\tif (index !== -1) {\n\t\teventCreated.splice(index, 1);\n\t}\n}\n\n/**\n * Method used when Fatina is used for the first time.\n * Can take few ms. (pool initialization & object creation)\n *\n * @export\n * @param {boolean} [disableAutoTick]\n * @returns {boolean}\n */\nexport function Init(disableAutoTick?: boolean): boolean {\n\tif (initialized) {\n\t\treturn false;\n\t}\n\n\tif (!tickerManager) {\n\t\ttickerManager = new ticker();\n\t\ttickerManager.Start();\n\t}\n\n\tif (typeof(window) !== 'undefined' && !disableAutoTick) {\n\t\tlastFrame = requestFrame(updateLoop);\n\t}\n\n\tinitialized = true;\n\treturn true;\n}\n\n/**\n * Used to change the timescale of the whole game\n *\n * @export\n * @param {number} scale\n */\nexport function SetTimescale(scale: number): void {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\ttickerManager.SetTimescale(scale);\n}\n\n/**\n * This method pause the update loop (update are not called anymore)\n *\n * @export\n */\nexport function Pause(): void {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\ttickerManager.Pause();\n}\n\n/**\n * This method resume the update loop (works only if the game was paused before)\n *\n * @export\n */\nexport function Resume(): void {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\ttickerManager.Resume();\n}\n\n/**\n * This method is used to change the log level\n *\n * @export\n * @param {Log} level\n */\nexport function SetLog(level: Log) {\n\tlogLevel = level;\n}\n\n/**\n * This method is used to enable / disable the callback try/catch\n *\n * @export\n * @param {boolean} isSafe\n */\nexport function SetSafe(isSafe: boolean) {\n\tsafe = isSafe;\n}\n\n/**\n * This method kill the main ticker, the pool of tween and stop any requestAnimationFrame\n *\n * @export\n */\nexport function Destroy() {\n\tif (tickerManager) {\n\t\ttickerManager.Kill();\n\t}\n\n\tif (lastFrame) {\n\t\tcancelFrame(lastFrame);\n\t}\n\n\tinitialized = false;\n}\n\n/**\n * Method used to tick all the child (tween or sequence)\n * This takes cares of recycling the old tween/sequence\n *\n * @export\n * @param {number} timestamp\n * @returns {*}\n */\nexport function Update(timestamp: number): any {\n\tif (!initialized || !tickerManager) {\n\t\treturn;\n\t}\n\ttickerManager.Tick(timestamp);\n\ttime += timestamp;\n}\n\n/**\n * Helper to create a tween (use the tween pool)\n *\n * @export\n * @param {*} obj\n * @param {string[]} properties\n * @returns {ITween}\n */\nexport function Tween(obj: any, properties: string[]): ITween {\n\tconst t = new tween(obj, properties);\n\tAddContext(t);\n\tInfo(Log.Debug, '[Fatina.Manager] Tween Instantiated', t);\n\treturn t;\n}\n\n/**\n * Helper to create a Sequence (use the sequence pool)\n *\n * @export\n * @returns {ISequence}\n */\nexport function Sequence(): ISequence {\n\tconst s = new sequence();\n\tAddContext(s);\n\tInfo(Log.Debug, '[Fatina.Manager] Sequence Instantiated', s);\n\treturn s;\n}\n\n/**\n * Helper to create a Delay\n *\n * @export\n * @param {number} duration\n * @returns {IPlayable}\n */\nexport function Delay(duration: number): IPlayable {\n\tconst d = new delay(duration);\n\tAddContext(d);\n\tInfo(Log.Debug, '[Fatina.Manager] Sequence Instantiated', d);\n\treturn d;\n}\n\n/**\n * Helper used to replace usage of normal js setTimeout() by a tween\n * https://www.w3schools.com/jsref/met_win_settimeout.asp\n *\n * @export\n * @param {() => void} fn\n * @param {number} duration\n * @returns {IPlayable}\n */\nexport function SetTimeout(fn: () => void, duration: number): IPlayable {\n\tconst timeout = new delay(duration).OnComplete(fn);\n\tAddContext(timeout);\n\tInfo(Log.Debug, '[Fatina.Manager] SetTimeout Instantiated', timeout);\n\treturn timeout.Start();\n}\n\n/**\n * Helper used to replace usage of normal js setInterval() by a tween\n * https://www.w3schools.com/jsref/met_win_setinterval.asp\n *\n * @export\n * @param {() => void} fn\n * @param {number} duration\n * @returns {IPlayable}\n */\nexport function SetInterval(fn: () => void, duration: number): IPlayable {\n\tconst interval = new delay(duration).OnRestart(fn).SetLoop(-1);\n\tAddContext(interval);\n\tInfo(Log.Debug, '[Fatina.Manager] SetInterval Instantiated', interval);\n\treturn interval.Start();\n}\n\n/**\n * Private method to set common data to every object (the parent ticker, safe mode, verbose mode)\n *\n * @param {(IPlayable | ITween | ISequence)} obj\n */\nfunction AddContext(obj: IPlayable | ITween | ISequence): void {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\n\tobj.SetParent(tickerManager as ITicker);\n\n\tif (logLevel !== Log.None) {\n\t\tobj.SetLog(logLevel);\n\t}\n\n\tif (!safe) {\n\t\tobj.SetSafe(safe);\n\t}\n\n\tEmitCreated(obj);\n}\n\n/**\n * Create or Get a ticker with a defined name\n * This ticker is a child of the main ticker\n *\n * @export\n * @param {string} name\n * @returns {ITicker}\n */\nexport function Ticker(): ITicker {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\n\tconst tick = new ticker();\n\tconst handler = tick.Tick.bind(tick);\n\ttick.SetParent(tickerManager, handler);\n\ttickerManager.AddTickListener(handler);\n\ttick.Start();\n\n\tEmitCreated(tick);\n\tInfo(Log.Debug, '[Fatina.Manager] Ticker Instantiated', tick);\n\treturn tick;\n}\n\n/**\n * Initialize a plugin by passing fatina object to it\n *\n * @export\n * @param {IPlugin} newPlugin\n */\nexport function LoadPlugin(newPlugin: IPlugin) {\n\tnewPlugin.Init(this);\n\tloadedPlugins.push(newPlugin);\n\tInfo(Log.Debug, '[Fatina.Manager] Plugin Loaded', newPlugin.name);\n}\n\nfunction Info(level: Log, message: string, data?: any) {\n\tif (level > logLevel) {\n\t\treturn;\n\t}\n\tif (data) {\n\t\tconsole.log(message, data);\n\t} else {\n\t\tconsole.log(message);\n\t}\n}\n\nfunction Emit(func: any, tween: IControl) {\n\tif (!safe) {\n\t\treturn func(tween);\n\t}\n\n\ttry {\n\t\tfunc(tween);\n\t} catch (e) {\n\t\tconsole.warn(e);\n\t}\n}\n\nfunction EmitCreated(tween: IControl) {\n\tfor (let i = 0; i < eventCreated.length; i++) {\n\t\tEmit(eventCreated[i], tween);\n\t}\n}\n\n/**\n * This part manage the auto-update loop if necessary (browser only)\n */\nlet requestFrame: any;\nlet cancelFrame: any;\nif (typeof(window) !== 'undefined') {\n\trequestFrame = window.requestAnimationFrame || (window as any).mozRequestAnimationFrame || window.webkitRequestAnimationFrame || (window as any).msRequestAnimationFrame;\n\tcancelFrame = window.cancelAnimationFrame || (window as any).mozCancelAnimationFrame;\n}\n\nfunction updateLoop(timestamp: number) {\n\tlet dt = timestamp - lastTime;\n\tif (isFirstUpdate) {\n\t\tdt = 1;\n\t\tisFirstUpdate = false;\n\t}\n\n\t// cap to 500 ms\n\tif (dt > 500) {\n\t\tconsole.warn('[Fatina] Delta between two update was too high ' + Math.round(dt) + 'ms. , Capped to 500ms.');\n\t\tdt = 500;\n\t}\n\n\tUpdate(dt);\n\tlastTime = timestamp;\n\tlastFrame = requestFrame(updateLoop);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/index.ts","import { State } from './core/enum/state';\r\nimport { EventList } from './core/eventList';\r\nimport { ITicker } from './core/interfaces/ITicker';\r\n\r\n/**\r\n * Main Fatina Ticker\r\n * Parent of all the normal tween and sequence\r\n *\r\n * @export\r\n * @class Ticker\r\n * @extends {EventList}\r\n * @implements {ITicker}\r\n */\r\nexport class Ticker extends EventList implements ITicker {\r\n\tpublic state = State.Idle;\r\n\tprivate timescale = 1;\r\n\tpublic elapsed = 0;\r\n\tpublic duration = 0;\r\n\tprivate update = 0;\r\n\tprivate eventToAdd: { (dt: number): void }[] = [];\r\n\tprivate eventToRemove: { (dt: number): void }[] = [];\r\n\tpublic tick: (dt: number) => void | undefined;\r\n\tprivate parent: ITicker;\r\n\r\n\tpublic SetParent(parent: ITicker, tick: (dt: number) => void) {\r\n\t\tthis.tick = tick;\r\n\t\tthis.parent = parent;\r\n\t}\r\n\r\n\t/**\r\n\t * Method used to change the timescale\r\n\t *\r\n\t * @param {number} scale\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic SetTimescale(scale: number): void {\r\n\t\tthis.timescale = scale;\r\n\t}\r\n\r\n\t/**\r\n\t * Method used by the child to be updated\r\n\t *\r\n\t * @param {(dt: number) => void} cb\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic AddTickListener(cb: (dt: number) => void): void {\r\n\t\tthis.eventToAdd.push(cb);\r\n\t}\r\n\r\n\t/**\r\n\t * Method used by the child to not receive update anymore\r\n\t *\r\n\t * @param {(dt: number) => void} cb\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic RemoveTickListener(cb: (dt: number) => void): void {\r\n\t\tthis.eventToRemove.push(cb);\r\n\t}\r\n\r\n\t/**\r\n\t * Internal method used to cancel a stop (restart in the same frame)\r\n\t *\r\n\t * @param {(dt: number) => void} cb\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic CheckTickListener(cb: (dt: number) => void): boolean {\r\n\t\tlet found = false;\r\n\t\twhile (true) {\r\n\t\t\tconst index = this.eventToRemove.indexOf(cb);\r\n\t\t\tif (index === -1) {\r\n\t\t\t\treturn found;\r\n\t\t\t}\r\n\t\t\tthis.eventToRemove.splice(index, 1);\r\n\t\t\tfound = true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Method used to update the array of listener\r\n\t * This is mostly for performance reason, being able to batch this operation in the updateLoop\r\n\t *\r\n\t * @private\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tprivate UpdateListener() {\r\n\t\tif (this.eventToAdd.length > 0) {\r\n\t\t\tfor (let i = 0; i < this.eventToAdd.length; i++) {\r\n\t\t\t\tthis.Add(this.eventToAdd[i]);\r\n\t\t\t}\r\n\t\t\tthis.eventToAdd = [];\r\n\t\t}\r\n\r\n\t\tif (this.eventToRemove.length > 0) {\r\n\t\t\tfor (let i = 0; i < this.eventToRemove.length; i++) {\r\n\t\t\t\tthis.Remove(this.eventToRemove[i]);\r\n\t\t\t}\r\n\t\t\tthis.eventToRemove = [];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Method used to tick all the child (tick listeners)\r\n\t *\r\n\t * @param {number} dt\r\n\t * @returns\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic Tick(dt: number) {\r\n\t\tif (this.state !== State.Run) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.UpdateListener();\r\n\r\n\t\tconst localDt = dt * this.timescale;\r\n\t\tfor (let tick: any = this.first; tick; tick = tick.node_next) {\r\n\t\t\ttick(localDt);\r\n\t\t}\r\n\t\tthis.elapsed += localDt;\r\n\t\tthis.update++;\r\n\r\n\t\tthis.UpdateListener();\r\n\t}\r\n\r\n\tpublic Start(): void {\r\n\t\tif (this.state === State.Idle) {\r\n\t\t\tthis.state = State.Run;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Pause(): void {\r\n\t\tif (this.state === State.Run) {\r\n\t\t\tthis.state = State.Pause;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Resume(): void {\r\n\t\tif (this.state === State.Pause) {\r\n\t\t\tthis.state = State.Run;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Kill(): void {\r\n\t\tif (this.state === State.Killed || this.state === State.Finished) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.parent && this.tick) {\r\n\t\t\tthis.parent.RemoveTickListener(this.tick);\r\n\t\t}\r\n\r\n\t\tthis.state = State.Killed;\r\n\t}\r\n\r\n\tpublic Skip(): void {\r\n\t\tthrow new Error('The main ticker cannot be skipped');\r\n\t}\r\n\r\n\tpublic Reset(): void {\r\n\t\tthis.state = State.Idle;\r\n\t}\r\n\r\n\tpublic IsIdle(): boolean {\r\n\t\treturn this.state === State.Idle;\r\n\t}\r\n\r\n\tpublic IsRunning(): boolean {\r\n\t\treturn this.state === State.Run;\r\n\t}\r\n\r\n\tpublic IsFinished(): boolean {\r\n\t\treturn this.state === State.Killed || this.state === State.Finished;\r\n\t}\r\n\r\n\tpublic IsPaused(): boolean {\r\n\t\treturn this. state === State.Pause;\r\n\t}\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/ticker.ts","/**\r\n * Simple DoublyList used for events management\r\n * Not really reusable, optimized only to append, remove and iterate\r\n *\r\n * @export\r\n * @abstract\r\n * @class EventList\r\n */\r\nexport abstract class EventList {\r\n\tpublic first: INode | undefined;\r\n\tpublic last: INode | undefined;\r\n\tpublic length = 0;\r\n\r\n\tpublic Add(obj: any): void {\r\n\t\tconst newNode = this.GetNode(obj, this.last, undefined, this);\r\n\t\tif (this.first === undefined) {\r\n\t\t\tthis.first = newNode;\r\n\t\t\tthis.last = newNode;\r\n\t\t} else if (this.last !== undefined) {\r\n\t\t\tthis.last.node_next = newNode;\r\n\t\t\tthis.last = newNode;\r\n\t\t}\r\n\t\tthis.length += 1;\r\n\t}\r\n\r\n\tpublic Remove(obj: any): void {\r\n\t\tconst node = obj as INode;\r\n\t\tif (node === undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (node.node_list !== this) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Removing any existing reference to the node\r\n\t\tif (node.node_next === undefined) {\r\n\t\t\tthis.last = node.node_previous;\r\n\t\t} else {\r\n\t\t\tnode.node_next.node_previous = node.node_previous;\r\n\t\t}\r\n\r\n\t\tif (node.node_previous === undefined) {\r\n\t\t\tthis.first = node.node_next;\r\n\t\t} else {\r\n\t\t\tnode.node_previous.node_next = node.node_next;\r\n\t\t}\r\n\r\n\t\t// Removing any existing reference from the node\r\n\t\tnode.node_valid = false;\r\n\t\tnode.node_previous = undefined;\r\n\t\tnode.node_next = undefined;\r\n\t\tnode.node_list = undefined;\r\n\r\n\t\t// One less node in the list\r\n\t\tthis.length -= 1;\r\n\t}\r\n\r\n\tprivate GetNode(obj: any, previous: INode | undefined, next: INode | undefined, list: EventList): INode {\r\n\t\tconst node = obj as INode;\r\n\t\tif (!node.node_valid) {\r\n\t\t\tnode.node_valid = true;\r\n\t\t\tnode.node_previous = previous;\r\n\t\t\tnode.node_next = next;\r\n\t\t\tnode.node_list = list;\r\n\t\t}\r\n\t\treturn node;\r\n\t}\r\n}\r\n\r\nexport interface INode {\r\n\tnode_valid: boolean;\r\n\tnode_previous: INode | undefined;\r\n\tnode_next: INode | undefined;\r\n\tnode_list: EventList | undefined;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/core/eventList.ts","import { IPlayable } from '../core/interfaces/IPlayable';\r\nimport { BaseTween } from './baseTween';\r\n\r\n/**\r\n * Fake tween used to append or join callback in a sequence\r\n *\r\n * @export\r\n * @class Callback\r\n * @extends {BaseTween}\r\n * @implements {IPlayable}\r\n */\r\nexport class Callback extends BaseTween implements IPlayable {\r\n\tprivate callback: () => void;\r\n\r\n\tconstructor(cb: () => void) {\r\n\t\tsuper();\r\n\t\tthis.callback = cb;\r\n\t\tthis.tickCb = this.Tick.bind(this);\r\n\t}\r\n\r\n\tprivate Tick(dt: number) {\r\n\t\tthis.elapsed += dt;\r\n\t\tthis.duration = 0;\r\n\t\tthis.callback();\r\n\t\tthis.EmitEvent(this.eventUpdate, [dt, 1]);\r\n\t\tthis.Complete();\r\n\t}\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/callback.ts","import { State } from '../core/enum/state';\nimport { ISequence } from '../core/interfaces/ISequence';\nimport { ITween } from '../core/interfaces/ITween';\nimport { easeNames } from '../easing/easing';\nimport { EasingType } from '../easing/easingType';\nimport { BaseTween } from './baseTween';\nimport { Sequence } from './sequence';\n\n/**\n * Tween: Used to animate values of an object\n *\n * @export\n * @class Tween\n * @extends {BaseTween}\n * @implements {ITween}\n */\nexport class Tween extends BaseTween implements ITween {\n\tprivate object: any;\n\tprivate properties: string[];\n\tprivate from: any;\n\tprivate to: any;\n\tprivate steps = 0;\n\tprivate currentFrom: any;\n\tprivate currentTo: any;\n\tprivate remainsDt: number;\n\tprivate relative = false;\n\tprivate ease: (t: number) => number;\n\tprivate easeId: EasingType | string;\n\n\tconstructor(object: any, properties: string[]) {\n\t\tsuper();\n\n\t\tthis.object = object;\n\t\tthis.properties = properties;\n\t\tthis.tickCb = this.Tick.bind(this);\n\t}\n\n\t/**\n\t * Used to define the object and the properties modified by this tween\n\t *\n\t * @param {*} object\n\t * @param {string[]} properties\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic Init(object: any, properties: string[]) {\n\t\tthis.object = object;\n\t\tthis.properties = properties;\n\t}\n\n\t/**\n\t * Method used on start to check the values of this tween\n\t *\n\t * @protected\n\t *\n\t * @memberOf Tween\n\t */\n\tprotected Validate() {\n\t\t// Check the object\n\t\tif (!this.object) {\n\t\t\tthrow new Error('Cant Tween a undefined object');\n\t\t}\n\n\t\t// Check the properties of that object\n\t\tfor (let i = 0; i < this.properties.length; i++) {\n\t\t\tconst prop = this.properties[i];\n\t\t\tif (!(prop in this.object)) {\n\t\t\t\tthrow new Error('Cant Tween an unknown property' + prop);\n\t\t\t}\n\t\t}\n\n\t\t// Check this tween will be updated\n\t\tif (!this.parent) {\n\t\t\tthrow new Error('Cant Start a tween without ticker');\n\t\t}\n\n\t\t// Easing\n\t\tif (!this.ease) {\n\t\t\tthis.easeId = EasingType.Linear;\n\t\t\tthis.ease = easeNames[EasingType.Linear];\n\t\t}\n\n\t\tthis.CheckPosition();\n\t}\n\n\t/**\n\t * Method used to calculate currentFrom/currentTo based on the config\n\t *\n\t * @protected\n\t *\n\t * @memberOf Tween\n\t */\n\tprotected CheckPosition() {\n\t\tif (!this.currentFrom) {\n\t\t\tthis.currentFrom = {};\n\t\t}\n\t\tif (!this.currentTo) {\n\t\t\tthis.currentTo = {};\n\t\t}\n\n\t\tfor (let i = 0; i < this.properties.length; i++) {\n\t\t\tconst prop = this.properties[i];\n\n\t\t\t// From\n\t\t\tif (!this.from) {\n\t\t\t\tthis.currentFrom[prop] = this.object[prop];\n\t\t\t} else {\n\t\t\t\tthis.currentFrom[prop] = this.from[prop];\n\t\t\t\tthis.object[prop] = this.from[prop];\n\t\t\t}\n\n\t\t\t// Relative\n\t\t\tif (this.relative) {\n\t\t\t\tthis.currentTo[prop] = this.object[prop] + this.to[prop];\n\t\t\t} else {\n\t\t\t\tthis.currentTo[prop] = this.to[prop];\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate Tick(dt: number) {\n\t\tif (this.state === State.Finished || this.state === State.Killed) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.remainsDt = dt * this.timescale;\n\t\twhile (this.remainsDt > 0) {\n\t\t\tthis.elapsed += this.remainsDt;\n\t\t\tconst progress = Math.max(Math.min(this.elapsed / this.duration, 1), 0);\n\t\t\tlet val = this.ease(progress);\n\n\t\t\t// Yoyo easing (need to be reversed)\n\t\t\tif ((this.yoyoOriginal - this.yoyo) % 2 === 1) {\n\t\t\t\tval = 1 - this.ease(1 - progress);\n\t\t\t}\n\n\t\t\t// Steps behaviour\n\t\t\tif (this.steps !== 0) {\n\t\t\t\tval = Math.round(val * this.steps) / this.steps;\n\t\t\t}\n\n\t\t\t// Update if the object still exist\n\t\t\tif (this.object) {\n\t\t\t\tfor (let i = 0; i < this.properties.length; i++) {\n\t\t\t\t\tconst prop = this.properties[i];\n\t\t\t\t\tthis.object[prop] = this.currentFrom[prop] + (this.currentTo[prop] - this.currentFrom[prop]) * val;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.EmitEvent(this.eventUpdate, [this.remainsDt, progress]);\n\n\t\t\tif (this.elapsed < this.duration) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.remainsDt = this.elapsed - this.duration;\n\n\t\t\t// Yoyo effect ( A -> B -> A )\n\t\t\tif (this.yoyo > 0) {\n\t\t\t\tthis.Reverse();\n\t\t\t\tthis.ResetAndStart(0);\n\t\t\t\tthis.yoyo--;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Loop management\n\t\t\tthis.loop--;\n\t\t\tif (this.loop === 0) {\n\t\t\t\tthis.Complete();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.CheckPosition();\n\t\t\tthis.ResetAndStart(0);\n\t\t}\n\t}\n\n\t/**\n\t * Method used to set the values at the beginning of the tween\n\t *\n\t * @param {*} from\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic From(from: any): ITween {\n\t\tthis.from = from;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used to set the values at the end of the tween\n\t *\n\t * @param {*} to\n\t * @param {number} duration\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic To(to: any, duration: number): ITween {\n\t\tthis.to = to;\n\t\tthis.duration = duration;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used to define if the tween as to work in relative or not\n\t *\n\t * @param {boolean} relative\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic SetRelative(relative: boolean): ITween {\n\t\tthis.relative = relative;\n\t\treturn this;\n\t}\n\n\t/**\n\t * To apply a modifier on a current tween\n\t *\n\t * @param {*} diff\n\t * @param {boolean} updateTo\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic Modify(diff: any, updateTo: boolean): void {\n\t\tfor (let i = 0; i < this.properties.length; i++) {\n\t\t\tconst prop = this.properties[i];\n\t\t\tif (!diff.hasOwnProperty(prop)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthis.object[prop] += diff[prop];\n\n\t\t\tif (updateTo) {\n\t\t\t\tthis.currentTo[prop] += diff[prop];\n\t\t\t} else {\n\t\t\t\tthis.currentFrom[prop] += diff[prop];\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Overwrite the Reset (just for yoyo)\n\t *\n\t * @param {boolean} [skipParent]\n\t * @memberOf Tween\n\t */\n\tpublic Reset(skipParent?: boolean): void {\n\t\tif ((this.yoyoOriginal - this.yoyo) % 2 === 1) {\n\t\t\tlet previous = this.currentFrom;\n\t\t\tthis.currentFrom = this.currentTo;\n\t\t\tthis.currentTo = previous;\n\n\t\t\tprevious = this.from;\n\t\t\tthis.from = this.to;\n\t\t\tthis.to = previous;\n\n\t\t\tconst elapsed = (1 - (this.elapsed / this.duration)) * this.duration;\n\t\t\tthis.elapsed = Math.round(elapsed * 1000) / 1000;\n\t\t}\n\t\tthis.yoyo = this.yoyoOriginal;\n\t\tsuper.Reset(skipParent);\n\t}\n\n\t/**\n\t * Method used to reverse the tween\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic Reverse(): void {\n\t\tlet previous = this.currentFrom;\n\t\tthis.currentFrom = this.currentTo;\n\t\tthis.currentTo = previous;\n\n\t\tprevious = this.from;\n\t\tthis.from = this.to;\n\t\tthis.to = previous;\n\n\t\tconst elapsed = (1 - (this.elapsed / this.duration)) * this.duration;\n\t\tthis.elapsed = Math.round(elapsed * 1000) / 1000;\n\n\t\tif (this.state === State.Finished) {\n\t\t\tthis.Reset(true);\n\t\t\tthis.Start();\n\t\t}\n\t}\n\n\t/**\n\t * Method used to reverse the tween N times at the end\n\t *\n\t * @param {number} time\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic Yoyo(time: number): ITween {\n\t\tthis.yoyoOriginal = time;\n\t\tthis.yoyo = time;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used to Quantify the tween value to a certain amount of steps\n\t *\n\t * @param {number} steps\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic SetSteps(steps: number): ITween {\n\t\tthis.steps = steps;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used to create a sequence with this tween as first value.\n\t * Usually used with .AppendInterval(1250) or .PrependInterval(160) to add a delay\n\t *\n\t * @returns {ISequence}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic ToSequence(): ISequence {\n\t\tif (!this.parent) {\n\t\t\tthrow new Error('Cant convert to a sequence, parent ticker not defined');\n\t\t}\n\t\treturn new Sequence().SetParent(this.parent).Append(this);\n\t}\n\n\t/**\n\t * Private easing method (resolve the right method and set it)\n\t *\n\t * @private\n\t * @param {(EasingType | string)} type\n\t * @returns {(t: number) => number}\n\t *\n\t * @memberOf Tween\n\t */\n\tprivate Easing(type: EasingType | string): (t: number) => number {\n\t\tconst name = type as string;\n\n\t\tif (name in easeNames) {\n\t\t\treturn easeNames[name];\n\t\t}\n\n\t\tthrow new Error('Unknown ease method ' + type);\n\t}\n\n\t/**\n\t * Method used to set the type of easing for this tween\n\t *\n\t * @param {(EasingType | string)} type\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic SetEasing(type: EasingType | string): ITween {\n\t\tthis.easeId = type;\n\t\tthis.ease = this.Easing(type);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used when the tween is reset (loop)\n\t *\n\t * @protected\n\t *\n\t * @memberOf Tween\n\t */\n\tprotected LoopInit() {\n\t\tthis.elapsed = 0;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/tween.ts","/**\r\n * List of easing method\r\n *\r\n * Mostly based on http://easings.net/\r\n */\r\nimport { EasingType } from './easingType';\r\n\r\nconst PI = Math.PI;\r\nconst PI_OVER_TWO = Math.PI / 2;\r\nconst BACK = 1.70158;\r\nconst easingByName: { [id: string]: (t: number) => number } = {};\r\n\r\n// Linear\r\neasingByName[EasingType.Linear] = (t: number): number => {\r\n\treturn t;\r\n};\r\n\r\n// Quad\r\neasingByName[EasingType.InQuad] = (t: number): number => {\r\n\treturn t * t;\r\n};\r\n\r\neasingByName[EasingType.OutQuad] = (t: number): number => {\r\n\treturn 2 * t - t * t;\r\n};\r\n\r\neasingByName[EasingType.InOutQuad] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn 2 * t * t;\r\n\t} else {\r\n\t\treturn 2 * (2 * t - t * t) - 1;\r\n\t}\r\n};\r\n\r\n// Cubic\r\neasingByName[EasingType.InCubic] = (t: number): number => {\r\n\treturn t * t * t;\r\n};\r\n\r\neasingByName[EasingType.OutCubic] = (t: number): number => {\r\n\treturn 3 * t - 3 * t * t + t * t * t;\r\n};\r\n\r\neasingByName[EasingType.InOutCubic] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn 4 * t * t * t;\r\n\t} else {\r\n\t\treturn 4 * (3 * t - 3 * t * t + t * t * t) - 3;\r\n\t}\r\n};\r\n\r\n// Quart\r\neasingByName[EasingType.InQuart] = (t: number): number => {\r\n\treturn t * t * t * t;\r\n};\r\n\r\neasingByName[EasingType.OutQuart] = (t: number): number => {\r\n\tconst t2 = t * t;\r\n\treturn 4 * t - 6 * t2 + 4 * t2 * t - t2 * t2;\r\n};\r\n\r\neasingByName[EasingType.InOutQuart] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn 8 * t * t * t * t;\r\n\t} else {\r\n\t\tconst t2 = t * t;\r\n\t\treturn 8 * (4 * t - 6 * t2 + 4 * t2 * t - t2 * t2) - 7;\r\n\t}\r\n};\r\n\r\n// Sine\r\neasingByName[EasingType.InSine] = (t: number): number => {\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\treturn 1 - Math.cos(PI_OVER_TWO * t);\r\n};\r\n\r\neasingByName[EasingType.OutSine] = (t: number): number => {\r\n\treturn Math.sin(PI_OVER_TWO * t);\r\n};\r\n\r\neasingByName[EasingType.InOutSine] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn (1 - Math.cos(PI * t)) / 2;\r\n\t} else {\r\n\t\treturn (1 + Math.sin(PI * (t - 0.5))) / 2;\r\n\t}\r\n};\r\n\r\n// Circular\r\neasingByName[EasingType.InCirc] = (t: number): number => {\r\n\treturn 1 - Math.sqrt(1 - Math.pow(t, 2));\r\n};\r\n\r\neasingByName[EasingType.OutCirc] = (t: number): number => {\r\n\treturn Math.sqrt(1 - Math.pow(1 - t, 2));\r\n};\r\n\r\neasingByName[EasingType.InOutCirc] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn (1 - Math.sqrt(1 - 4 * t * t)) / 2;\r\n\t} else {\r\n\t\treturn (1 + Math.sqrt(-3 + 8 * t - 4 * t * t)) / 2;\r\n\t}\r\n};\r\n\r\n// Quint\r\neasingByName[EasingType.InQuint] = (t: number): number => {\r\n\treturn t * t * t * t * t;\r\n};\r\n\r\neasingByName[EasingType.OutQuint] = (t: number): number => {\r\n\treturn --t * t * t * t * t + 1;\r\n};\r\n\r\neasingByName[EasingType.InOutQuint] = (t: number): number => {\r\n\tt *= 2;\r\n\tif (t < 1) {\r\n\t\treturn 0.5 * t * t * t * t * t;\r\n\t}\r\n\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n};\r\n\r\n// Exponential\r\neasingByName[EasingType.InExponential] = (t: number): number => {\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\treturn t === 0 ? 0 : Math.pow(1024, t - 1);\r\n};\r\n\r\neasingByName[EasingType.OutExponential] = (t: number): number => {\r\n\treturn t === 1 ? 1 : 1 - Math.pow(2, - 10 * t);\r\n};\r\n\r\neasingByName[EasingType.InOutExponential] = (t: number): number => {\r\n\tif (t === 0) {\r\n\t\treturn 0;\r\n\t}\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\tt *= 2;\r\n\tif (t < 1) {\r\n\t\treturn 0.5 * Math.pow(1024, t - 1);\r\n\t}\r\n\treturn 0.5 * (- Math.pow(2, - 10 * (t - 1)) + 2);\r\n};\r\n\r\n// Elastic\r\neasingByName[EasingType.InElastic] = (t: number): number => {\r\n\tif (t === 0) {\r\n\t\treturn 0;\r\n\t}\r\n\treturn -Math.pow(2, 10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI);\r\n};\r\n\r\neasingByName[EasingType.OutElastic] = (t: number): number => {\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\treturn Math.pow(2, -10 * t) * Math.sin((t - 0.1) * 5 * Math.PI) + 1;\r\n};\r\n\r\neasingByName[EasingType.InOutElastic] = (t: number): number => {\r\n\tif (t === 0) {\r\n\t\treturn 0;\r\n\t}\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\tt *= 2;\r\n\tif (t < 1) {\r\n\t\treturn -0.5 * Math.pow(2, 10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI);\r\n\t}\r\n\r\n\treturn 0.5 * Math.pow(2, -10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI) + 1;\r\n};\r\n\r\n// Back\r\neasingByName[EasingType.InBack] = (t: number): number => {\r\n\tconst s = BACK;\r\n\treturn t === 1 ? 1 : t * t * ((s + 1) * t - s);\r\n\r\n};\r\n\r\neasingByName[EasingType.OutBack] = (t: number): number => {\r\n\tconst s = BACK;\r\n\treturn t === 0 ? 0 : --t * t * ((s + 1) * t + s) + 1;\r\n};\r\n\r\neasingByName[EasingType.InOutBack] = (t: number): number => {\r\n\tconst s = BACK * 1.525;\r\n\tt *= 2;\r\n\tif (t < 1) {\r\n\t\treturn 0.5 * (t * t * ((s + 1) * t - s));\r\n\t}\r\n\treturn 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\r\n};\r\n\r\n// Bounce\r\neasingByName[EasingType.OutBounce] = (t: number): number => {\r\n\tif (t < (1 / 2.75)) {\r\n\t\treturn 7.5625 * t * t;\r\n\t} else if (t < (2 / 2.75)) {\r\n\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n\t} else if (t < (2.5 / 2.75)) {\r\n\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n\t} else {\r\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n\t}\r\n};\r\n\r\neasingByName[EasingType.InBounce] = (t: number): number => {\r\n\treturn 1 - easingByName[EasingType.OutBounce](1 - t);\r\n};\r\n\r\neasingByName[EasingType.InOutBounce] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn easingByName[EasingType.InBounce](t * 2) * 0.5;\r\n\t}\r\n\treturn easingByName[EasingType.OutBounce](t * 2 - 1) * 0.5 + 0.5;\r\n};\r\n\r\nexport let easeNames = easingByName;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/easing/easing.ts"],"sourceRoot":""} \ No newline at end of file diff --git a/build/fatina.min.js b/build/fatina.min.js index c1823e7..da31199 100644 --- a/build/fatina.min.js +++ b/build/fatina.min.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("Fatina",[],e):"object"==typeof exports?exports.Fatina=e():t.Fatina=e()}(this,function(){return function(t){function e(i){if(n[i])return n[i].exports;var o=n[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,i){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=6)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});!function(t){t[t.Idle=0]="Idle",t[t.Run=1]="Run",t[t.Pause=2]="Pause",t[t.Finished=3]="Finished",t[t.Killed=4]="Killed"}(e.State||(e.State={}))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(0),s=function(){function t(){this.elapsed=0,this.duration=0,this.timescale=1,this.state=o.State.Idle,this.loopOriginal=1,this.loop=1,this.yoyoOriginal=0,this.yoyo=0,this.firstStart=!0,this.recycled=!1,this.safe=!0,this.logLevel=i.Log.None}return t.prototype.Start=function(){return this.state!==o.State.Idle?this:(this.firstStart?this.Validate():this.CheckPosition(),this.state=o.State.Run,this.recycled?(this.parent.CheckTickListener(this.tickCb)||this.parent.AddTickListener(this.tickCb),this.recycled=!1):this.parent.AddTickListener(this.tickCb),this.firstStart&&(this.EmitEvent(this.eventStart),this.firstStart=!1),this)},t.prototype.Recycle=function(){this.Reset(!0),this.firstStart=!0,this.recycled=!0},t.prototype.Reset=function(t){this.state=o.State.Idle,t||this.RemoveParentListener(),this.loop=this.loopOriginal,this.LoopInit(),this.EmitEvent(this.eventRestart)},t.prototype.ResetAndStart=function(t){this.LoopInit(),this.EmitEvent(this.eventRestart),this.state=o.State.Run,t>0&&this.tickCb(t)},t.prototype.SetParent=function(t){return this.RemoveParentListener(),this.parent=t,this},t.prototype.SetTimescale=function(t){return this.timescale=t,this},t.prototype.Pause=function(){if(this.state!==o.State.Run)return void this.Info(i.Log.Info,"Cannot pause this tween ",this.state);this.state=o.State.Pause,this.RemoveParentListener()},t.prototype.Resume=function(){if(this.state!==o.State.Pause)return void this.Info(i.Log.Info,"Cannot resume this tween ",this.state);this.state=o.State.Run,this.parent.AddTickListener(this.tickCb)},t.prototype.Skip=function(t){return this.state===o.State.Killed||this.state===o.State.Finished?void this.Info(i.Log.Info,"Cannot skip this tween ",this.state):(this.state===o.State.Idle&&this.EmitEvent(this.eventStart),t?void this.tickCb(this.duration-this.elapsed+this.yoyo*this.duration):(this.elapsed=this.duration,void this.Complete()))},t.prototype.Kill=function(){if(this.state===o.State.Killed)return void this.Info(i.Log.Info,"Cannot kill this tween ",this.state);this.state=o.State.Killed,this.RemoveParentListener(),this.EmitEvent(this.eventKill)},t.prototype.SetLoop=function(t){return this.loopOriginal=Math.round(t),this.loop=this.loopOriginal,this},t.prototype.IsIdle=function(){return this.state===o.State.Idle},t.prototype.IsRunning=function(){return this.state===o.State.Run},t.prototype.IsFinished=function(){return this.state===o.State.Killed||this.state===o.State.Finished},t.prototype.IsPaused=function(){return this.state===o.State.Pause},t.prototype.Complete=function(){if(this.state===o.State.Killed||this.state===o.State.Finished)return void this.Info(i.Log.Info,"Cannot complete this tween ",this.state);this.state=o.State.Finished,this.RemoveParentListener(),this.EmitEvent(this.eventComplete)},t.prototype.RemoveParentListener=function(){this.parent&&this.parent.RemoveTickListener(this.tickCb)},t.prototype.CheckPosition=function(){},t.prototype.Validate=function(){},t.prototype.LoopInit=function(){this.elapsed=0},t.prototype.SetSafe=function(t){return this.safe=t,this},t.prototype.SetLog=function(t){return this.logLevel=t,this},t.prototype.Info=function(t,e,n){t>this.logLevel||(n?console.log(e,n):console.log(e))},t.prototype.Emit=function(t,e){if(!this.safe)return t.apply(this,e);try{t.apply(this,e)}catch(t){console.warn(t)}},t.prototype.EmitEvent=function(t,e){if(t)for(var n=0;n0;){this.elapsed+=this.remainsDt;var e=Math.max(Math.min(this.elapsed/this.duration,1),0);if(this.EmitEvent(this.eventUpdate,[this.remainsDt,e]),this.elapsed=0;n--)this.eventTick[n](t);!0!==e&&this.EmitEvent(this.eventUpdate,[t,0])}var i=t;if(this.currentTween){for(var n=0;n.01)return void this.LocalTick(i,!0)}this.currentTween||this.tweens.length!==this.sequenceIndex||(this.loop--,0===this.loop?this.Complete():this.ResetAndStart(i))},e.prototype.NextTween=function(){if(this.currentTween=this.tweens[this.sequenceIndex],this.currentTween){for(var t=0;tK||(n?console.log(e,n):console.log(e))}function E(t,e){if(!Q)return t(e);try{t(e)}catch(t){console.warn(t)}}function _(t){for(var e=0;e500&&(console.warn("[Fatina] Delta between two update was too high "+Math.round(e)+"ms. , Capped to 500ms."),e=500),d(e),D=t,C=U(b)}Object.defineProperty(e,"__esModule",{value:!0});var k=n(2),L=n(3);e.Easing=L.EasingType;var P,C,R=n(7),M=n(4),x=n(5),F=n(10),A=!1,j=!0,D=0,K=k.Log.None,Q=!0,B=[],q=[];e.plugin={},e.time=0,e.Elapsed=i,e.MainTicker=o,e.AddListenerCreated=s,e.RemoveListenerCreated=r,e.Init=a,e.SetTimescale=u,e.Pause=h,e.Resume=p,e.SetLog=c,e.SetSafe=f,e.Destroy=l,e.Update=d,e.Tween=v,e.Sequence=y,e.Delay=S,e.SetTimeout=g,e.SetInterval=m,e.Ticker=w,e.LoadPlugin=I;var U,N;"undefined"!=typeof window&&(U=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,N=window.cancelAnimationFrame||window.mozCancelAnimationFrame)},function(t,e,n){"use strict";var i=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)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),s=n(8),r=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.state=o.State.Idle,e.timescale=1,e.elapsed=0,e.duration=0,e.update=0,e.eventToAdd=[],e.eventToRemove=[],e}return i(e,t),e.prototype.SetParent=function(t,e){this.tick=e,this.parent=t},e.prototype.SetTimescale=function(t){this.timescale=t},e.prototype.AddTickListener=function(t){this.eventToAdd.push(t)},e.prototype.RemoveTickListener=function(t){this.eventToRemove.push(t)},e.prototype.CheckTickListener=function(t){for(var e=!1;;){var n=this.eventToRemove.indexOf(t);if(-1===n)return e;this.eventToRemove.splice(n,1),e=!0}},e.prototype.UpdateListener=function(){if(this.eventToAdd.length>0){for(var t=0;t0){for(var t=0;t0;){this.elapsed+=this.remainsDt;var e=Math.max(Math.min(this.elapsed/this.duration,1),0),n=this.ease(e);if((this.yoyoOriginal-this.yoyo)%2==1&&(n=1-this.ease(1-e)),0!==this.steps&&(n=Math.round(n*this.steps)/this.steps),this.object)for(var i=0;i0)this.Reverse(),this.ResetAndStart(0),this.yoyo--;else{if(0===--this.loop)return void this.Complete();this.CheckPosition(),this.ResetAndStart(0)}}},e.prototype.From=function(t){return this.from=t,this},e.prototype.To=function(t,e){return this.to=t,this.duration=e,this},e.prototype.SetRelative=function(t){return this.relative=t,this},e.prototype.Modify=function(t,e){for(var n=0;n0&&this.tickCb(t)},t.prototype.SetParent=function(t){return this.RemoveParentListener(),this.parent=t,this},t.prototype.SetTimescale=function(t){return this.timescale=t,this},t.prototype.Pause=function(){if(this.state!==o.State.Run)return void this.Info(i.Log.Info,"Cannot pause this tween ",this.state);this.state=o.State.Pause,this.RemoveParentListener()},t.prototype.Resume=function(){if(this.state!==o.State.Pause)return void this.Info(i.Log.Info,"Cannot resume this tween ",this.state);this.state=o.State.Run,this.parent.AddTickListener(this.tickCb)},t.prototype.Skip=function(t){return this.state===o.State.Killed||this.state===o.State.Finished?void this.Info(i.Log.Info,"Cannot skip this tween ",this.state):(this.state===o.State.Idle&&this.EmitEvent(this.eventStart),t?void this.tickCb(this.duration-this.elapsed+this.yoyo*this.duration):(this.elapsed=this.duration,void this.Complete()))},t.prototype.Kill=function(){if(this.state===o.State.Killed)return void this.Info(i.Log.Info,"Cannot kill this tween ",this.state);this.state=o.State.Killed,this.RemoveParentListener(),this.EmitEvent(this.eventKill)},t.prototype.SetLoop=function(t){return this.loopOriginal=Math.round(t),this.loop=this.loopOriginal,this},t.prototype.IsIdle=function(){return this.state===o.State.Idle},t.prototype.IsRunning=function(){return this.state===o.State.Run},t.prototype.IsFinished=function(){return this.state===o.State.Killed||this.state===o.State.Finished},t.prototype.IsPaused=function(){return this.state===o.State.Pause},t.prototype.Complete=function(){if(this.state===o.State.Killed||this.state===o.State.Finished)return void this.Info(i.Log.Info,"Cannot complete this tween ",this.state);this.state=o.State.Finished,this.RemoveParentListener(),this.EmitEvent(this.eventComplete)},t.prototype.RemoveParentListener=function(){this.parent&&this.parent.RemoveTickListener(this.tickCb)},t.prototype.CheckPosition=function(){},t.prototype.Validate=function(){},t.prototype.LoopInit=function(){this.elapsed=0},t.prototype.SetSafe=function(t){return this.safe=t,this},t.prototype.SetLog=function(t){return this.logLevel=t,this},t.prototype.Info=function(t,e,n){t>this.logLevel||(n?console.log(e,n):console.log(e))},t.prototype.Emit=function(t,e){if(!this.safe)return t.apply(this,e);try{t.apply(this,e)}catch(t){console.warn(t)}},t.prototype.EmitEvent=function(t,e){if(t)for(var n=0;n0;){this.elapsed+=this.remainsDt;var e=Math.max(Math.min(this.elapsed/this.duration,1),0);if(this.EmitEvent(this.eventUpdate,[this.remainsDt,e]),this.elapsed=0;n--)this.eventTick[n](t);!0!==e&&this.EmitEvent(this.eventUpdate,[t,0])}var i=t;if(this.currentTween){for(var n=0;n.01)return void this.LocalTick(i,!0)}this.currentTween||this.tweens.length!==this.sequenceIndex||(this.loop--,0===this.loop?this.Complete():this.ResetAndStart(i))},e.prototype.NextTween=function(){if(this.currentTween=this.tweens[this.sequenceIndex],this.currentTween){for(var t=0;tK||(n?console.log(e,n):console.log(e))}function E(t,e){if(!Q)return t(e);try{t(e)}catch(t){console.warn(t)}}function _(t){for(var e=0;e500&&(console.warn("[Fatina] Delta between two update was too high "+Math.round(e)+"ms. , Capped to 500ms."),e=500),d(e),D=t,C=U(b)}Object.defineProperty(e,"__esModule",{value:!0});var k=n(2),L=n(3);e.Easing=L.EasingType;var P,C,R=n(7),M=n(4),x=n(5),F=n(10),A=!1,j=!0,D=0,K=k.Log.None,Q=!0,B=[],q=[];e.plugin={},e.time=0,e.Elapsed=i,e.MainTicker=o,e.AddListenerCreated=s,e.RemoveListenerCreated=r,e.Init=a,e.SetTimescale=u,e.Pause=h,e.Resume=p,e.SetLog=c,e.SetSafe=f,e.Destroy=l,e.Update=d,e.Tween=v,e.Sequence=y,e.Delay=S,e.SetTimeout=g,e.SetInterval=m,e.Ticker=w,e.LoadPlugin=I;var U,N;"undefined"!=typeof window&&(U=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,N=window.cancelAnimationFrame||window.mozCancelAnimationFrame)},function(t,e,n){"use strict";var i=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)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),s=n(8),r=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.state=o.State.Idle,e.timescale=1,e.elapsed=0,e.duration=0,e.update=0,e.eventToAdd=[],e.eventToRemove=[],e}return i(e,t),e.prototype.SetParent=function(t,e){this.tick=e,this.parent=t},e.prototype.SetTimescale=function(t){this.timescale=t},e.prototype.AddTickListener=function(t){this.eventToAdd.push(t)},e.prototype.RemoveTickListener=function(t){this.eventToRemove.push(t)},e.prototype.CheckTickListener=function(t){for(var e=!1;;){var n=this.eventToRemove.indexOf(t);if(-1===n)return e;this.eventToRemove.splice(n,1),e=!0}},e.prototype.UpdateListener=function(){if(this.eventToAdd.length>0){for(var t=0;t0){for(var t=0;t0;){this.elapsed+=this.remainsDt;var e=Math.max(Math.min(this.elapsed/this.duration,1),0),n=this.ease(e);if((this.yoyoOriginal-this.yoyo)%2==1&&(n=1-this.ease(1-e)),0!==this.steps&&(n=Math.round(n*this.steps)/this.steps),this.object)for(var i=0;i0)this.Reverse(),this.ResetAndStart(0),this.yoyo--;else{if(0===--this.loop)return void this.Complete();this.CheckPosition(),this.ResetAndStart(0)}}},e.prototype.From=function(t){return this.from=t,this},e.prototype.To=function(t,e){return this.to=t,this.duration=e,this},e.prototype.SetRelative=function(t){return this.relative=t,this},e.prototype.Modify=function(t,e){for(var n=0;n 0) {\r\n this.tickCb(dtRemains);\r\n }\r\n };\r\n BaseTween.prototype.SetParent = function (ticker) {\r\n this.RemoveParentListener();\r\n this.parent = ticker;\r\n return this;\r\n };\r\n BaseTween.prototype.SetTimescale = function (scale) {\r\n this.timescale = scale;\r\n return this;\r\n };\r\n BaseTween.prototype.Pause = function () {\r\n if (this.state !== state_1.State.Run) {\r\n this.Info(log_1.Log.Info, 'Cannot pause this tween ', this.state);\r\n return;\r\n }\r\n this.state = state_1.State.Pause;\r\n this.RemoveParentListener();\r\n };\r\n BaseTween.prototype.Resume = function () {\r\n if (this.state !== state_1.State.Pause) {\r\n this.Info(log_1.Log.Info, 'Cannot resume this tween ', this.state);\r\n return;\r\n }\r\n this.state = state_1.State.Run;\r\n this.parent.AddTickListener(this.tickCb);\r\n };\r\n BaseTween.prototype.Skip = function (finalValue) {\r\n if (this.state === state_1.State.Killed || this.state === state_1.State.Finished) {\r\n this.Info(log_1.Log.Info, 'Cannot skip this tween ', this.state);\r\n return;\r\n }\r\n if (this.state === state_1.State.Idle) {\r\n this.EmitEvent(this.eventStart);\r\n }\r\n if (finalValue) {\r\n this.tickCb(this.duration - this.elapsed + (this.yoyo * this.duration));\r\n return;\r\n }\r\n this.elapsed = this.duration;\r\n this.Complete();\r\n };\r\n BaseTween.prototype.Kill = function () {\r\n if (this.state === state_1.State.Killed) {\r\n this.Info(log_1.Log.Info, 'Cannot kill this tween ', this.state);\r\n return;\r\n }\r\n this.state = state_1.State.Killed;\r\n this.RemoveParentListener();\r\n this.EmitEvent(this.eventKill);\r\n };\r\n BaseTween.prototype.SetLoop = function (loop) {\r\n this.loopOriginal = Math.round(loop);\r\n this.loop = this.loopOriginal;\r\n return this;\r\n };\r\n BaseTween.prototype.IsIdle = function () {\r\n return this.state === state_1.State.Idle;\r\n };\r\n BaseTween.prototype.IsRunning = function () {\r\n return this.state === state_1.State.Run;\r\n };\r\n BaseTween.prototype.IsFinished = function () {\r\n return this.state === state_1.State.Killed || this.state === state_1.State.Finished;\r\n };\r\n BaseTween.prototype.IsPaused = function () {\r\n return this.state === state_1.State.Pause;\r\n };\r\n BaseTween.prototype.Complete = function () {\r\n if (this.state === state_1.State.Killed || this.state === state_1.State.Finished) {\r\n this.Info(log_1.Log.Info, 'Cannot complete this tween ', this.state);\r\n return;\r\n }\r\n this.state = state_1.State.Finished;\r\n this.RemoveParentListener();\r\n this.EmitEvent(this.eventComplete);\r\n };\r\n BaseTween.prototype.RemoveParentListener = function () {\r\n if (this.parent) {\r\n this.parent.RemoveTickListener(this.tickCb);\r\n }\r\n };\r\n BaseTween.prototype.CheckPosition = function () { };\r\n BaseTween.prototype.Validate = function () { };\r\n BaseTween.prototype.LoopInit = function () {\r\n this.elapsed = 0;\r\n };\r\n BaseTween.prototype.SetSafe = function (safe) {\r\n this.safe = safe;\r\n return this;\r\n };\r\n BaseTween.prototype.SetLog = function (level) {\r\n this.logLevel = level;\r\n return this;\r\n };\r\n BaseTween.prototype.Info = function (level, message, data) {\r\n if (level > this.logLevel) {\r\n return;\r\n }\r\n if (data) {\r\n console.log(message, data);\r\n }\r\n else {\r\n console.log(message);\r\n }\r\n };\r\n BaseTween.prototype.Emit = function (func, args) {\r\n if (!this.safe) {\r\n return func.apply(this, args);\r\n }\r\n try {\r\n func.apply(this, args);\r\n }\r\n catch (e) {\r\n console.warn(e);\r\n }\r\n };\r\n BaseTween.prototype.EmitEvent = function (listeners, args) {\r\n if (!listeners) {\r\n return;\r\n }\r\n for (var i = 0; i < listeners.length; i++) {\r\n this.Emit(listeners[i], args);\r\n }\r\n };\r\n BaseTween.prototype.OnStart = function (cb) {\r\n if (!this.eventStart) {\r\n this.eventStart = new Array(0);\r\n }\r\n this.eventStart[this.eventStart.length] = cb;\r\n this.Info(log_1.Log.Debug, 'onStart');\r\n return this;\r\n };\r\n BaseTween.prototype.OnRestart = function (cb) {\r\n if (!this.eventRestart) {\r\n this.eventRestart = new Array(0);\r\n }\r\n this.eventRestart[this.eventRestart.length] = cb;\r\n this.Info(log_1.Log.Debug, 'onRestart');\r\n return this;\r\n };\r\n BaseTween.prototype.OnUpdate = function (cb) {\r\n if (!this.eventUpdate) {\r\n this.eventUpdate = new Array(0);\r\n }\r\n this.eventUpdate[this.eventUpdate.length] = cb;\r\n return this;\r\n };\r\n BaseTween.prototype.OnKilled = function (cb) {\r\n if (!this.eventKill) {\r\n this.eventKill = new Array(0);\r\n }\r\n this.eventKill[this.eventKill.length] = cb;\r\n this.Info(log_1.Log.Debug, 'onKilled');\r\n return this;\r\n };\r\n BaseTween.prototype.OnComplete = function (cb) {\r\n if (!this.eventComplete) {\r\n this.eventComplete = new Array(0);\r\n }\r\n this.eventComplete[this.eventComplete.length] = cb;\r\n this.Info(log_1.Log.Debug, 'onComplete');\r\n return this;\r\n };\r\n return BaseTween;\r\n}());\r\nexports.BaseTween = BaseTween;\r\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Log;\r\n(function (Log) {\r\n Log[\"None\"] = \"none\";\r\n Log[\"Info\"] = \"info\";\r\n Log[\"Debug\"] = \"debug\";\r\n})(Log = exports.Log || (exports.Log = {}));\r\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EasingType;\r\n(function (EasingType) {\r\n EasingType[\"Linear\"] = \"linear\";\r\n EasingType[\"InQuad\"] = \"inQuad\";\r\n EasingType[\"OutQuad\"] = \"outQuad\";\r\n EasingType[\"InOutQuad\"] = \"inOutQuad\";\r\n EasingType[\"InCubic\"] = \"inCubic\";\r\n EasingType[\"OutCubic\"] = \"outCubic\";\r\n EasingType[\"InOutCubic\"] = \"inOutCubic\";\r\n EasingType[\"InQuart\"] = \"inQuart\";\r\n EasingType[\"OutQuart\"] = \"outQuart\";\r\n EasingType[\"InOutQuart\"] = \"inOutQuart\";\r\n EasingType[\"InSine\"] = \"inSine\";\r\n EasingType[\"OutSine\"] = \"outSine\";\r\n EasingType[\"InOutSine\"] = \"inOutSine\";\r\n EasingType[\"InCirc\"] = \"inCirc\";\r\n EasingType[\"OutCirc\"] = \"outCirc\";\r\n EasingType[\"InOutCirc\"] = \"inOutCirc\";\r\n EasingType[\"InQuint\"] = \"inQuint\";\r\n EasingType[\"OutQuint\"] = \"outQuint\";\r\n EasingType[\"InOutQuint\"] = \"inOutQuint\";\r\n EasingType[\"InExponential\"] = \"inExponential\";\r\n EasingType[\"OutExponential\"] = \"outExponential\";\r\n EasingType[\"InOutExponential\"] = \"inOutExponential\";\r\n EasingType[\"InElastic\"] = \"inElastic\";\r\n EasingType[\"OutElastic\"] = \"outElastic\";\r\n EasingType[\"InOutElastic\"] = \"inOutElastic\";\r\n EasingType[\"InBack\"] = \"inBack\";\r\n EasingType[\"OutBack\"] = \"outBack\";\r\n EasingType[\"InOutBack\"] = \"inOutBack\";\r\n EasingType[\"InBounce\"] = \"inBounce\";\r\n EasingType[\"OutBounce\"] = \"outBounce\";\r\n EasingType[\"InOutBounce\"] = \"inOutBounce\";\r\n})(EasingType = exports.EasingType || (exports.EasingType = {}));\r\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar baseTween_1 = __webpack_require__(1);\r\nvar Delay = (function (_super) {\r\n __extends(Delay, _super);\r\n function Delay(duration) {\r\n var _this = _super.call(this) || this;\r\n _this.duration = duration;\r\n _this.tickCb = _this.Tick.bind(_this);\r\n return _this;\r\n }\r\n Delay.prototype.Tick = function (dt) {\r\n this.remainsDt = dt * this.timescale;\r\n while (this.remainsDt > 0) {\r\n this.elapsed += this.remainsDt;\r\n var progress = Math.max(Math.min(this.elapsed / this.duration, 1), 0);\r\n this.EmitEvent(this.eventUpdate, [this.remainsDt, progress]);\r\n if (this.elapsed < this.duration) {\r\n return;\r\n }\r\n this.remainsDt = this.elapsed - this.duration;\r\n this.loop--;\r\n if (this.loop === 0) {\r\n this.Complete();\r\n return;\r\n }\r\n this.ResetAndStart(0);\r\n }\r\n };\r\n return Delay;\r\n}(baseTween_1.BaseTween));\r\nexports.Delay = Delay;\r\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar log_1 = __webpack_require__(2);\r\nvar state_1 = __webpack_require__(0);\r\nvar baseTween_1 = __webpack_require__(1);\r\nvar callback_1 = __webpack_require__(9);\r\nvar delay_1 = __webpack_require__(4);\r\nvar Sequence = (function (_super) {\r\n __extends(Sequence, _super);\r\n function Sequence() {\r\n var _this = _super.call(this) || this;\r\n _this.eventTick = [];\r\n _this.tweens = [];\r\n _this.sequenceIndex = 0;\r\n _this.tickCb = _this.Tick.bind(_this);\r\n return _this;\r\n }\r\n Object.defineProperty(Sequence.prototype, \"Count\", {\r\n get: function () {\r\n return this.tweens.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Sequence.prototype.LoopInit = function () {\r\n this.sequenceIndex = 0;\r\n for (var i = 0; i < this.tweens.length; i++) {\r\n var tweenArray = this.tweens[i];\r\n for (var j = 0; j < tweenArray.length; j++) {\r\n tweenArray[j].Reset();\r\n }\r\n }\r\n };\r\n Sequence.prototype.AddTickListener = function (cb) {\r\n this.eventTick.unshift(cb);\r\n };\r\n Sequence.prototype.RemoveTickListener = function (cb) {\r\n var index = this.eventTick.indexOf(cb);\r\n if (index !== -1) {\r\n this.eventTick.splice(index, 1);\r\n }\r\n };\r\n Sequence.prototype.CheckTickListener = function (cb) {\r\n return false;\r\n };\r\n Sequence.prototype.Tick = function (dt) {\r\n if (this.state === state_1.State.Finished || this.state === state_1.State.Killed) {\r\n return;\r\n }\r\n var localDt = dt * this.timescale;\r\n this.elapsed += localDt;\r\n this.LocalTick(localDt);\r\n };\r\n Sequence.prototype.LocalTick = function (dt, remains) {\r\n if (!this.currentTween) {\r\n this.NextTween();\r\n }\r\n if (this.currentTween) {\r\n for (var i = this.eventTick.length - 1; i >= 0; i--) {\r\n this.eventTick[i](dt);\r\n }\r\n if (remains !== true) {\r\n this.EmitEvent(this.eventUpdate, [dt, 0]);\r\n }\r\n }\r\n var remainsDt = dt;\r\n if (this.currentTween) {\r\n for (var i = 0; i < this.currentTween.length; i++) {\r\n if (this.currentTween[i].state !== state_1.State.Finished) {\r\n return;\r\n }\r\n }\r\n var first = this.currentTween[0];\r\n remainsDt = first.elapsed - first.duration;\r\n this.EmitEvent(this.eventStepEnd, [this.currentTween[0]]);\r\n this.Info(log_1.Log.Debug, 'OnStepEnd', this.eventStepEnd);\r\n this.currentTween = undefined;\r\n this.sequenceIndex++;\r\n if (remainsDt > 0.01) {\r\n this.LocalTick(remainsDt, true);\r\n return;\r\n }\r\n }\r\n if (!this.currentTween && this.tweens.length === this.sequenceIndex) {\r\n this.loop--;\r\n if (this.loop === 0) {\r\n this.Complete();\r\n }\r\n else {\r\n this.ResetAndStart(remainsDt);\r\n }\r\n }\r\n };\r\n Sequence.prototype.NextTween = function () {\r\n this.currentTween = this.tweens[this.sequenceIndex];\r\n if (this.currentTween) {\r\n for (var i = 0; i < this.currentTween.length; i++) {\r\n var tween = this.currentTween[i];\r\n tween.Start();\r\n }\r\n this.EmitEvent(this.eventStepStart, [this.currentTween[0]]);\r\n this.Info(log_1.Log.Debug, 'OnStepStart', this.eventStepStart);\r\n }\r\n };\r\n Sequence.prototype.Append = function (tween) {\r\n tween.SetParent(this);\r\n this.tweens[this.tweens.length] = [tween];\r\n return this;\r\n };\r\n Sequence.prototype.AppendCallback = function (cb) {\r\n var playable = new callback_1.Callback(cb);\r\n playable.SetParent(this);\r\n this.tweens[this.tweens.length] = [playable];\r\n return this;\r\n };\r\n Sequence.prototype.AppendInterval = function (duration) {\r\n var playable = new delay_1.Delay(duration);\r\n playable.SetParent(this);\r\n this.tweens[this.tweens.length] = [playable];\r\n return this;\r\n };\r\n Sequence.prototype.Prepend = function (tween) {\r\n tween.SetParent(this);\r\n this.tweens.unshift([tween]);\r\n return this;\r\n };\r\n Sequence.prototype.PrependCallback = function (cb) {\r\n var playable = new callback_1.Callback(cb);\r\n playable.SetParent(this);\r\n this.tweens.unshift([playable]);\r\n return this;\r\n };\r\n Sequence.prototype.PrependInterval = function (duration) {\r\n var playable = new delay_1.Delay(duration);\r\n playable.SetParent(this);\r\n this.tweens.unshift([playable]);\r\n return this;\r\n };\r\n Sequence.prototype.Skip = function (finalValue) {\r\n if (this.state === state_1.State.Killed || this.state === state_1.State.Finished) {\r\n this.Info(log_1.Log.Info, 'Cannot skip this tween ', this.state);\r\n return;\r\n }\r\n for (var i = 0; i < this.tweens.length; i++) {\r\n var tweenArray = this.tweens[i];\r\n for (var j = 0; j < tweenArray.length; j++) {\r\n var tween = tweenArray[j];\r\n if (tween.elapsed === 0) {\r\n this.EmitEvent(this.eventStepStart, [tween]);\r\n this.Info(log_1.Log.Debug, 'OnStepStart', this.eventStepStart);\r\n }\r\n tween.Skip(finalValue);\r\n this.EmitEvent(this.eventStepEnd, [tween]);\r\n this.Info(log_1.Log.Debug, 'OnStepEnd', this.eventStepEnd);\r\n }\r\n }\r\n _super.prototype.Skip.call(this);\r\n };\r\n Sequence.prototype.Kill = function () {\r\n if (this.state === state_1.State.Killed) {\r\n this.Info(log_1.Log.Info, 'Cannot kill this tween ', this.state);\r\n return;\r\n }\r\n for (var i = 0; i < this.tweens.length; i++) {\r\n var tweenArray = this.tweens[i];\r\n for (var j = 0; j < tweenArray.length; j++) {\r\n tweenArray[j].Kill();\r\n }\r\n }\r\n _super.prototype.Kill.call(this);\r\n };\r\n Sequence.prototype.Join = function (tween) {\r\n if (this.tweens.length === 0) {\r\n return this.Append(tween);\r\n }\r\n tween.SetParent(this);\r\n this.tweens[this.tweens.length - 1].push(tween);\r\n return this;\r\n };\r\n Sequence.prototype.OnStepStart = function (cb) {\r\n if (!this.eventStepStart) {\r\n this.eventStepStart = new Array(0);\r\n }\r\n this.eventStepStart[this.eventStepStart.length] = cb;\r\n return this;\r\n };\r\n Sequence.prototype.OnStepEnd = function (cb) {\r\n if (!this.eventStepEnd) {\r\n this.eventStepEnd = new Array(0);\r\n }\r\n this.eventStepEnd[this.eventStepEnd.length] = cb;\r\n return this;\r\n };\r\n return Sequence;\r\n}(baseTween_1.BaseTween));\r\nexports.Sequence = Sequence;\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar log_1 = __webpack_require__(2);\r\nvar easingType_1 = __webpack_require__(3);\r\nexports.Easing = easingType_1.EasingType;\r\nvar ticker_1 = __webpack_require__(7);\r\nvar delay_1 = __webpack_require__(4);\r\nvar sequence_1 = __webpack_require__(5);\r\nvar tween_1 = __webpack_require__(10);\r\nvar tickerManager;\r\nvar initialized = false;\r\nvar isFirstUpdate = true;\r\nvar lastFrame;\r\nvar lastTime = 0;\r\nvar logLevel = log_1.Log.None;\r\nvar safe = true;\r\nvar eventCreated = [];\r\nvar loadedPlugins = [];\r\nexports.plugin = {};\r\nexports.time = 0;\r\nfunction Elapsed() {\r\n return tickerManager.elapsed;\r\n}\r\nexports.Elapsed = Elapsed;\r\nfunction MainTicker() {\r\n if (!initialized) {\r\n Init();\r\n }\r\n return tickerManager;\r\n}\r\nexports.MainTicker = MainTicker;\r\nfunction AddListenerCreated(cb) {\r\n eventCreated.push(cb);\r\n}\r\nexports.AddListenerCreated = AddListenerCreated;\r\nfunction RemoveListenerCreated(cb) {\r\n var index = eventCreated.indexOf(cb);\r\n if (index !== -1) {\r\n eventCreated.splice(index, 1);\r\n }\r\n}\r\nexports.RemoveListenerCreated = RemoveListenerCreated;\r\nfunction Init(disableAutoTick) {\r\n if (initialized) {\r\n return false;\r\n }\r\n if (!tickerManager) {\r\n tickerManager = new ticker_1.Ticker();\r\n tickerManager.Start();\r\n }\r\n if (typeof (window) !== 'undefined' && !disableAutoTick) {\r\n lastFrame = requestFrame(updateLoop);\r\n }\r\n initialized = true;\r\n return true;\r\n}\r\nexports.Init = Init;\r\nfunction SetTimescale(scale) {\r\n if (!initialized) {\r\n Init();\r\n }\r\n tickerManager.SetTimescale(scale);\r\n}\r\nexports.SetTimescale = SetTimescale;\r\nfunction Pause() {\r\n if (!initialized) {\r\n Init();\r\n }\r\n tickerManager.Pause();\r\n}\r\nexports.Pause = Pause;\r\nfunction Resume() {\r\n if (!initialized) {\r\n Init();\r\n }\r\n tickerManager.Resume();\r\n}\r\nexports.Resume = Resume;\r\nfunction SetLog(level) {\r\n logLevel = level;\r\n}\r\nexports.SetLog = SetLog;\r\nfunction SetSafe(isSafe) {\r\n safe = isSafe;\r\n}\r\nexports.SetSafe = SetSafe;\r\nfunction Destroy() {\r\n if (tickerManager) {\r\n tickerManager.Kill();\r\n }\r\n if (lastFrame) {\r\n cancelFrame(lastFrame);\r\n }\r\n initialized = false;\r\n}\r\nexports.Destroy = Destroy;\r\nfunction Update(timestamp) {\r\n if (!initialized || !tickerManager) {\r\n return;\r\n }\r\n tickerManager.Tick(timestamp);\r\n exports.time += timestamp;\r\n}\r\nexports.Update = Update;\r\nfunction Tween(obj, properties) {\r\n var t = new tween_1.Tween(obj, properties);\r\n AddContext(t);\r\n Info(log_1.Log.Debug, '[Fatina.Manager] Tween Instantiated', t);\r\n return t;\r\n}\r\nexports.Tween = Tween;\r\nfunction Sequence() {\r\n var s = new sequence_1.Sequence();\r\n AddContext(s);\r\n Info(log_1.Log.Debug, '[Fatina.Manager] Sequence Instantiated', s);\r\n return s;\r\n}\r\nexports.Sequence = Sequence;\r\nfunction Delay(duration) {\r\n var d = new delay_1.Delay(duration);\r\n AddContext(d);\r\n Info(log_1.Log.Debug, '[Fatina.Manager] Sequence Instantiated', d);\r\n return d;\r\n}\r\nexports.Delay = Delay;\r\nfunction SetTimeout(fn, duration) {\r\n var timeout = new delay_1.Delay(duration).OnComplete(fn);\r\n AddContext(timeout);\r\n Info(log_1.Log.Debug, '[Fatina.Manager] SetTimeout Instantiated', timeout);\r\n return timeout.Start();\r\n}\r\nexports.SetTimeout = SetTimeout;\r\nfunction SetInterval(fn, duration) {\r\n var interval = new delay_1.Delay(duration).OnRestart(fn).SetLoop(-1);\r\n AddContext(interval);\r\n Info(log_1.Log.Debug, '[Fatina.Manager] SetInterval Instantiated', interval);\r\n return interval.Start();\r\n}\r\nexports.SetInterval = SetInterval;\r\nfunction AddContext(obj) {\r\n if (!initialized) {\r\n Init();\r\n }\r\n obj.SetParent(tickerManager);\r\n if (logLevel !== log_1.Log.None) {\r\n obj.SetLog(logLevel);\r\n }\r\n if (!safe) {\r\n obj.SetSafe(safe);\r\n }\r\n EmitCreated(obj);\r\n}\r\nfunction Ticker() {\r\n if (!initialized) {\r\n Init();\r\n }\r\n var tick = new ticker_1.Ticker();\r\n var handler = tick.Tick.bind(tick);\r\n tick.SetParent(tickerManager, handler);\r\n tickerManager.AddTickListener(handler);\r\n tick.Start();\r\n EmitCreated(tick);\r\n Info(log_1.Log.Debug, '[Fatina.Manager] Ticker Instantiated', tick);\r\n return tick;\r\n}\r\nexports.Ticker = Ticker;\r\nfunction LoadPlugin(newPlugin) {\r\n newPlugin.Init(this);\r\n loadedPlugins.push(newPlugin);\r\n Info(log_1.Log.Debug, '[Fatina.Manager] Plugin Loaded', newPlugin.name);\r\n}\r\nexports.LoadPlugin = LoadPlugin;\r\nfunction Info(level, message, data) {\r\n if (level > logLevel) {\r\n return;\r\n }\r\n if (data) {\r\n console.log(message, data);\r\n }\r\n else {\r\n console.log(message);\r\n }\r\n}\r\nfunction Emit(func, tween) {\r\n if (!safe) {\r\n return func(tween);\r\n }\r\n try {\r\n func(tween);\r\n }\r\n catch (e) {\r\n console.warn(e);\r\n }\r\n}\r\nfunction EmitCreated(tween) {\r\n for (var i = 0; i < eventCreated.length; i++) {\r\n Emit(eventCreated[i], tween);\r\n }\r\n}\r\nvar requestFrame;\r\nvar cancelFrame;\r\nif (typeof (window) !== 'undefined') {\r\n requestFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;\r\n cancelFrame = window.cancelAnimationFrame || window.mozCancelAnimationFrame;\r\n}\r\nfunction updateLoop(timestamp) {\r\n var dt = timestamp - lastTime;\r\n if (isFirstUpdate) {\r\n dt = 1;\r\n isFirstUpdate = false;\r\n }\r\n if (dt > 500) {\r\n console.warn('[Fatina] Delta between two update was too high ' + Math.round(dt) + 'ms. , Capped to 500ms.');\r\n dt = 500;\r\n }\r\n Update(dt);\r\n lastTime = timestamp;\r\n lastFrame = requestFrame(updateLoop);\r\n}\r\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar state_1 = __webpack_require__(0);\r\nvar eventList_1 = __webpack_require__(8);\r\nvar Ticker = (function (_super) {\r\n __extends(Ticker, _super);\r\n function Ticker() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.state = state_1.State.Idle;\r\n _this.timescale = 1;\r\n _this.elapsed = 0;\r\n _this.duration = 0;\r\n _this.update = 0;\r\n _this.eventToAdd = [];\r\n _this.eventToRemove = [];\r\n return _this;\r\n }\r\n Ticker.prototype.SetParent = function (parent, tick) {\r\n this.tick = tick;\r\n this.parent = parent;\r\n };\r\n Ticker.prototype.SetTimescale = function (scale) {\r\n this.timescale = scale;\r\n };\r\n Ticker.prototype.AddTickListener = function (cb) {\r\n this.eventToAdd.push(cb);\r\n };\r\n Ticker.prototype.RemoveTickListener = function (cb) {\r\n this.eventToRemove.push(cb);\r\n };\r\n Ticker.prototype.CheckTickListener = function (cb) {\r\n var found = false;\r\n while (true) {\r\n var index = this.eventToRemove.indexOf(cb);\r\n if (index === -1) {\r\n return found;\r\n }\r\n this.eventToRemove.splice(index, 1);\r\n found = true;\r\n }\r\n };\r\n Ticker.prototype.UpdateListener = function () {\r\n if (this.eventToAdd.length > 0) {\r\n for (var i = 0; i < this.eventToAdd.length; i++) {\r\n this.Add(this.eventToAdd[i]);\r\n }\r\n this.eventToAdd = [];\r\n }\r\n if (this.eventToRemove.length > 0) {\r\n for (var i = 0; i < this.eventToRemove.length; i++) {\r\n this.Remove(this.eventToRemove[i]);\r\n }\r\n this.eventToRemove = [];\r\n }\r\n };\r\n Ticker.prototype.Tick = function (dt) {\r\n if (this.state !== state_1.State.Run) {\r\n return;\r\n }\r\n this.UpdateListener();\r\n var localDt = dt * this.timescale;\r\n for (var tick = this.first; tick; tick = tick.node_next) {\r\n tick(localDt);\r\n }\r\n this.elapsed += localDt;\r\n this.update++;\r\n this.UpdateListener();\r\n };\r\n Ticker.prototype.Start = function () {\r\n if (this.state === state_1.State.Idle) {\r\n this.state = state_1.State.Run;\r\n }\r\n };\r\n Ticker.prototype.Pause = function () {\r\n if (this.state === state_1.State.Run) {\r\n this.state = state_1.State.Pause;\r\n }\r\n };\r\n Ticker.prototype.Resume = function () {\r\n if (this.state === state_1.State.Pause) {\r\n this.state = state_1.State.Run;\r\n }\r\n };\r\n Ticker.prototype.Kill = function () {\r\n if (this.state === state_1.State.Killed || this.state === state_1.State.Finished) {\r\n return;\r\n }\r\n if (this.parent && this.tick) {\r\n this.parent.RemoveTickListener(this.tick);\r\n }\r\n this.state = state_1.State.Killed;\r\n };\r\n Ticker.prototype.Skip = function () {\r\n throw new Error('The main ticker cannot be skipped');\r\n };\r\n Ticker.prototype.Reset = function () {\r\n this.state = state_1.State.Idle;\r\n };\r\n Ticker.prototype.IsIdle = function () {\r\n return this.state === state_1.State.Idle;\r\n };\r\n Ticker.prototype.IsRunning = function () {\r\n return this.state === state_1.State.Run;\r\n };\r\n Ticker.prototype.IsFinished = function () {\r\n return this.state === state_1.State.Killed || this.state === state_1.State.Finished;\r\n };\r\n Ticker.prototype.IsPaused = function () {\r\n return this.state === state_1.State.Pause;\r\n };\r\n return Ticker;\r\n}(eventList_1.EventList));\r\nexports.Ticker = Ticker;\r\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventList = (function () {\r\n function EventList() {\r\n this.length = 0;\r\n }\r\n EventList.prototype.Add = function (obj) {\r\n var newNode = this.GetNode(obj, this.last, undefined, this);\r\n if (this.first === undefined) {\r\n this.first = newNode;\r\n this.last = newNode;\r\n }\r\n else if (this.last !== undefined) {\r\n this.last.node_next = newNode;\r\n this.last = newNode;\r\n }\r\n this.length += 1;\r\n };\r\n EventList.prototype.Remove = function (obj) {\r\n var node = obj;\r\n if (node === undefined) {\r\n return;\r\n }\r\n if (node.node_list !== this) {\r\n return;\r\n }\r\n if (node.node_next === undefined) {\r\n this.last = node.node_previous;\r\n }\r\n else {\r\n node.node_next.node_previous = node.node_previous;\r\n }\r\n if (node.node_previous === undefined) {\r\n this.first = node.node_next;\r\n }\r\n else {\r\n node.node_previous.node_next = node.node_next;\r\n }\r\n node.node_valid = false;\r\n node.node_previous = undefined;\r\n node.node_next = undefined;\r\n node.node_list = undefined;\r\n this.length -= 1;\r\n };\r\n EventList.prototype.GetNode = function (obj, previous, next, list) {\r\n var node = obj;\r\n if (!node.node_valid) {\r\n node.node_valid = true;\r\n node.node_previous = previous;\r\n node.node_next = next;\r\n node.node_list = list;\r\n }\r\n return node;\r\n };\r\n return EventList;\r\n}());\r\nexports.EventList = EventList;\r\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar baseTween_1 = __webpack_require__(1);\r\nvar Callback = (function (_super) {\r\n __extends(Callback, _super);\r\n function Callback(cb) {\r\n var _this = _super.call(this) || this;\r\n _this.callback = cb;\r\n _this.tickCb = _this.Tick.bind(_this);\r\n return _this;\r\n }\r\n Callback.prototype.Tick = function (dt) {\r\n this.elapsed += dt;\r\n this.duration = 0;\r\n this.callback();\r\n this.EmitEvent(this.eventUpdate, [dt, 1]);\r\n this.Complete();\r\n };\r\n return Callback;\r\n}(baseTween_1.BaseTween));\r\nexports.Callback = Callback;\r\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar state_1 = __webpack_require__(0);\r\nvar easing_1 = __webpack_require__(11);\r\nvar easingType_1 = __webpack_require__(3);\r\nvar baseTween_1 = __webpack_require__(1);\r\nvar sequence_1 = __webpack_require__(5);\r\nvar Tween = (function (_super) {\r\n __extends(Tween, _super);\r\n function Tween(object, properties) {\r\n var _this = _super.call(this) || this;\r\n _this.steps = 0;\r\n _this.relative = false;\r\n _this.object = object;\r\n _this.properties = properties;\r\n _this.tickCb = _this.Tick.bind(_this);\r\n return _this;\r\n }\r\n Tween.prototype.Init = function (object, properties) {\r\n this.object = object;\r\n this.properties = properties;\r\n };\r\n Tween.prototype.Validate = function () {\r\n if (!this.object) {\r\n throw new Error('Cant Tween a undefined object');\r\n }\r\n for (var i = 0; i < this.properties.length; i++) {\r\n var prop = this.properties[i];\r\n if (!(prop in this.object)) {\r\n throw new Error('Cant Tween an unknown property' + prop);\r\n }\r\n }\r\n if (!this.parent) {\r\n throw new Error('Cant Start a tween without ticker');\r\n }\r\n if (!this.ease) {\r\n this.easeId = easingType_1.EasingType.Linear;\r\n this.ease = easing_1.easeNames[easingType_1.EasingType.Linear];\r\n }\r\n this.CheckPosition();\r\n };\r\n Tween.prototype.CheckPosition = function () {\r\n if (!this.currentFrom) {\r\n this.currentFrom = {};\r\n }\r\n if (!this.currentTo) {\r\n this.currentTo = {};\r\n }\r\n for (var i = 0; i < this.properties.length; i++) {\r\n var prop = this.properties[i];\r\n if (!this.from) {\r\n this.currentFrom[prop] = this.object[prop];\r\n }\r\n else {\r\n this.currentFrom[prop] = this.from[prop];\r\n this.object[prop] = this.from[prop];\r\n }\r\n if (this.relative) {\r\n this.currentTo[prop] = this.object[prop] + this.to[prop];\r\n }\r\n else {\r\n this.currentTo[prop] = this.to[prop];\r\n }\r\n }\r\n };\r\n Tween.prototype.Tick = function (dt) {\r\n if (this.state === state_1.State.Finished || this.state === state_1.State.Killed) {\r\n return;\r\n }\r\n this.remainsDt = dt * this.timescale;\r\n while (this.remainsDt > 0) {\r\n this.elapsed += this.remainsDt;\r\n var progress = Math.max(Math.min(this.elapsed / this.duration, 1), 0);\r\n var val = this.ease(progress);\r\n if ((this.yoyoOriginal - this.yoyo) % 2 === 1) {\r\n val = 1 - this.ease(1 - progress);\r\n }\r\n if (this.steps !== 0) {\r\n val = Math.round(val * this.steps) / this.steps;\r\n }\r\n if (this.object) {\r\n for (var i = 0; i < this.properties.length; i++) {\r\n var prop = this.properties[i];\r\n this.object[prop] = this.currentFrom[prop] + (this.currentTo[prop] - this.currentFrom[prop]) * val;\r\n }\r\n }\r\n this.EmitEvent(this.eventUpdate, [this.remainsDt, progress]);\r\n if (this.elapsed < this.duration) {\r\n return;\r\n }\r\n this.remainsDt = this.elapsed - this.duration;\r\n if (this.yoyo > 0) {\r\n this.Reverse();\r\n this.ResetAndStart(0);\r\n this.yoyo--;\r\n continue;\r\n }\r\n this.loop--;\r\n if (this.loop === 0) {\r\n this.Complete();\r\n return;\r\n }\r\n this.CheckPosition();\r\n this.ResetAndStart(0);\r\n }\r\n };\r\n Tween.prototype.From = function (from) {\r\n this.from = from;\r\n return this;\r\n };\r\n Tween.prototype.To = function (to, duration) {\r\n this.to = to;\r\n this.duration = duration;\r\n return this;\r\n };\r\n Tween.prototype.SetRelative = function (relative) {\r\n this.relative = relative;\r\n return this;\r\n };\r\n Tween.prototype.Modify = function (diff, updateTo) {\r\n for (var i = 0; i < this.properties.length; i++) {\r\n var prop = this.properties[i];\r\n if (!diff.hasOwnProperty(prop)) {\r\n continue;\r\n }\r\n this.object[prop] += diff[prop];\r\n if (updateTo) {\r\n this.currentTo[prop] += diff[prop];\r\n }\r\n else {\r\n this.currentFrom[prop] += diff[prop];\r\n }\r\n }\r\n };\r\n Tween.prototype.Reset = function (skipParent) {\r\n if ((this.yoyoOriginal - this.yoyo) % 2 === 1) {\r\n var previous = this.currentFrom;\r\n this.currentFrom = this.currentTo;\r\n this.currentTo = previous;\r\n previous = this.from;\r\n this.from = this.to;\r\n this.to = previous;\r\n var elapsed = (1 - (this.elapsed / this.duration)) * this.duration;\r\n this.elapsed = Math.round(elapsed * 1000) / 1000;\r\n }\r\n this.yoyo = this.yoyoOriginal;\r\n _super.prototype.Reset.call(this, skipParent);\r\n };\r\n Tween.prototype.Reverse = function () {\r\n var previous = this.currentFrom;\r\n this.currentFrom = this.currentTo;\r\n this.currentTo = previous;\r\n previous = this.from;\r\n this.from = this.to;\r\n this.to = previous;\r\n var elapsed = (1 - (this.elapsed / this.duration)) * this.duration;\r\n this.elapsed = Math.round(elapsed * 1000) / 1000;\r\n if (this.state === state_1.State.Finished) {\r\n this.Reset(true);\r\n this.Start();\r\n }\r\n };\r\n Tween.prototype.Yoyo = function (time) {\r\n this.yoyoOriginal = time;\r\n this.yoyo = time;\r\n return this;\r\n };\r\n Tween.prototype.SetSteps = function (steps) {\r\n this.steps = steps;\r\n return this;\r\n };\r\n Tween.prototype.ToSequence = function () {\r\n if (!this.parent) {\r\n throw new Error('Cant convert to a sequence, parent ticker not defined');\r\n }\r\n return new sequence_1.Sequence().SetParent(this.parent).Append(this);\r\n };\r\n Tween.prototype.Easing = function (type) {\r\n var name = type;\r\n if (name in easing_1.easeNames) {\r\n return easing_1.easeNames[name];\r\n }\r\n throw new Error('Unknown ease method ' + type);\r\n };\r\n Tween.prototype.SetEasing = function (type) {\r\n this.easeId = type;\r\n this.ease = this.Easing(type);\r\n return this;\r\n };\r\n Tween.prototype.LoopInit = function () {\r\n this.elapsed = 0;\r\n };\r\n return Tween;\r\n}(baseTween_1.BaseTween));\r\nexports.Tween = Tween;\r\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar easingType_1 = __webpack_require__(3);\r\nvar PI = Math.PI;\r\nvar PI_OVER_TWO = Math.PI / 2;\r\nvar BACK = 1.70158;\r\nvar easingByName = {};\r\neasingByName[easingType_1.EasingType.Linear] = function (t) {\r\n return t;\r\n};\r\neasingByName[easingType_1.EasingType.InQuad] = function (t) {\r\n return t * t;\r\n};\r\neasingByName[easingType_1.EasingType.OutQuad] = function (t) {\r\n return 2 * t - t * t;\r\n};\r\neasingByName[easingType_1.EasingType.InOutQuad] = function (t) {\r\n if (t < 0.5) {\r\n return 2 * t * t;\r\n }\r\n else {\r\n return 2 * (2 * t - t * t) - 1;\r\n }\r\n};\r\neasingByName[easingType_1.EasingType.InCubic] = function (t) {\r\n return t * t * t;\r\n};\r\neasingByName[easingType_1.EasingType.OutCubic] = function (t) {\r\n return 3 * t - 3 * t * t + t * t * t;\r\n};\r\neasingByName[easingType_1.EasingType.InOutCubic] = function (t) {\r\n if (t < 0.5) {\r\n return 4 * t * t * t;\r\n }\r\n else {\r\n return 4 * (3 * t - 3 * t * t + t * t * t) - 3;\r\n }\r\n};\r\neasingByName[easingType_1.EasingType.InQuart] = function (t) {\r\n return t * t * t * t;\r\n};\r\neasingByName[easingType_1.EasingType.OutQuart] = function (t) {\r\n var t2 = t * t;\r\n return 4 * t - 6 * t2 + 4 * t2 * t - t2 * t2;\r\n};\r\neasingByName[easingType_1.EasingType.InOutQuart] = function (t) {\r\n if (t < 0.5) {\r\n return 8 * t * t * t * t;\r\n }\r\n else {\r\n var t2 = t * t;\r\n return 8 * (4 * t - 6 * t2 + 4 * t2 * t - t2 * t2) - 7;\r\n }\r\n};\r\neasingByName[easingType_1.EasingType.InSine] = function (t) {\r\n if (t === 1) {\r\n return 1;\r\n }\r\n return 1 - Math.cos(PI_OVER_TWO * t);\r\n};\r\neasingByName[easingType_1.EasingType.OutSine] = function (t) {\r\n return Math.sin(PI_OVER_TWO * t);\r\n};\r\neasingByName[easingType_1.EasingType.InOutSine] = function (t) {\r\n if (t < 0.5) {\r\n return (1 - Math.cos(PI * t)) / 2;\r\n }\r\n else {\r\n return (1 + Math.sin(PI * (t - 0.5))) / 2;\r\n }\r\n};\r\neasingByName[easingType_1.EasingType.InCirc] = function (t) {\r\n return 1 - Math.sqrt(1 - Math.pow(t, 2));\r\n};\r\neasingByName[easingType_1.EasingType.OutCirc] = function (t) {\r\n return Math.sqrt(1 - Math.pow(1 - t, 2));\r\n};\r\neasingByName[easingType_1.EasingType.InOutCirc] = function (t) {\r\n if (t < 0.5) {\r\n return (1 - Math.sqrt(1 - 4 * t * t)) / 2;\r\n }\r\n else {\r\n return (1 + Math.sqrt(-3 + 8 * t - 4 * t * t)) / 2;\r\n }\r\n};\r\neasingByName[easingType_1.EasingType.InQuint] = function (t) {\r\n return t * t * t * t * t;\r\n};\r\neasingByName[easingType_1.EasingType.OutQuint] = function (t) {\r\n return --t * t * t * t * t + 1;\r\n};\r\neasingByName[easingType_1.EasingType.InOutQuint] = function (t) {\r\n t *= 2;\r\n if (t < 1) {\r\n return 0.5 * t * t * t * t * t;\r\n }\r\n return 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n};\r\neasingByName[easingType_1.EasingType.InExponential] = function (t) {\r\n if (t === 1) {\r\n return 1;\r\n }\r\n return t === 0 ? 0 : Math.pow(1024, t - 1);\r\n};\r\neasingByName[easingType_1.EasingType.OutExponential] = function (t) {\r\n return t === 1 ? 1 : 1 - Math.pow(2, -10 * t);\r\n};\r\neasingByName[easingType_1.EasingType.InOutExponential] = function (t) {\r\n if (t === 0) {\r\n return 0;\r\n }\r\n if (t === 1) {\r\n return 1;\r\n }\r\n t *= 2;\r\n if (t < 1) {\r\n return 0.5 * Math.pow(1024, t - 1);\r\n }\r\n return 0.5 * (-Math.pow(2, -10 * (t - 1)) + 2);\r\n};\r\neasingByName[easingType_1.EasingType.InElastic] = function (t) {\r\n if (t === 0) {\r\n return 0;\r\n }\r\n return -Math.pow(2, 10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI);\r\n};\r\neasingByName[easingType_1.EasingType.OutElastic] = function (t) {\r\n if (t === 1) {\r\n return 1;\r\n }\r\n return Math.pow(2, -10 * t) * Math.sin((t - 0.1) * 5 * Math.PI) + 1;\r\n};\r\neasingByName[easingType_1.EasingType.InOutElastic] = function (t) {\r\n if (t === 0) {\r\n return 0;\r\n }\r\n if (t === 1) {\r\n return 1;\r\n }\r\n t *= 2;\r\n if (t < 1) {\r\n return -0.5 * Math.pow(2, 10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI);\r\n }\r\n return 0.5 * Math.pow(2, -10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI) + 1;\r\n};\r\neasingByName[easingType_1.EasingType.InBack] = function (t) {\r\n var s = BACK;\r\n return t === 1 ? 1 : t * t * ((s + 1) * t - s);\r\n};\r\neasingByName[easingType_1.EasingType.OutBack] = function (t) {\r\n var s = BACK;\r\n return t === 0 ? 0 : --t * t * ((s + 1) * t + s) + 1;\r\n};\r\neasingByName[easingType_1.EasingType.InOutBack] = function (t) {\r\n var s = BACK * 1.525;\r\n t *= 2;\r\n if (t < 1) {\r\n return 0.5 * (t * t * ((s + 1) * t - s));\r\n }\r\n return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\r\n};\r\neasingByName[easingType_1.EasingType.OutBounce] = function (t) {\r\n if (t < (1 / 2.75)) {\r\n return 7.5625 * t * t;\r\n }\r\n else if (t < (2 / 2.75)) {\r\n return 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n }\r\n else if (t < (2.5 / 2.75)) {\r\n return 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n }\r\n else {\r\n return 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n }\r\n};\r\neasingByName[easingType_1.EasingType.InBounce] = function (t) {\r\n return 1 - easingByName[easingType_1.EasingType.OutBounce](1 - t);\r\n};\r\neasingByName[easingType_1.EasingType.InOutBounce] = function (t) {\r\n if (t < 0.5) {\r\n return easingByName[easingType_1.EasingType.InBounce](t * 2) * 0.5;\r\n }\r\n return easingByName[easingType_1.EasingType.OutBounce](t * 2 - 1) * 0.5 + 0.5;\r\n};\r\nexports.easeNames = easingByName;\r\n\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// fatina.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 6);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 9bf4abdedce92a24e68c","/**\r\n * Possible states of a Tween / Sequence\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum State {\r\n\tIdle,\r\n\tRun,\r\n\tPause,\r\n\tFinished,\r\n\tKilled\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/core/enum/state.ts","import { Log } from '../core/enum/log';\nimport { State } from '../core/enum/state';\nimport { ITicker } from '../core/interfaces/ITicker';\n\n/**\n * Shared behaviors between different types of tweens and sequence\n * Used mostly to manage:\n * - events\n * - state\n * - loop and restart\n *\n * @export\n * @abstract\n * @class BaseTween\n */\nexport abstract class BaseTween> {\n\t// events\n\tprotected eventStart: {(): void}[] | undefined;\n\tprotected eventRestart: {(): void}[] | undefined;\n\tprotected eventUpdate: {(dt: number, progress: number): void}[] | undefined;\n\tprotected eventKill: {(): void}[] | undefined;\n\tprotected eventComplete: {(): void}[] | undefined;\n\n\t// public properties\n\tpublic elapsed = 0;\n\tpublic duration = 0;\n\tpublic timescale = 1;\n\tpublic state: State = State.Idle;\n\n\t// private properties\n\tprotected loopOriginal = 1;\n\tprotected loop = 1;\n\tprotected yoyoOriginal = 0;\n\tprotected yoyo = 0;\n\tprotected parent: ITicker;\n\tprotected tickCb: (dt: number) => void;\n\tprivate firstStart = true;\n\tprivate recycled = false;\n\tprivate safe = true;\n\tprivate logLevel = Log.None;\n\n\t/**\n\t * Method used to start a tween\n\t *\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Start(): T {\n\t\tif (this.state !== State.Idle) {\n\t\t\treturn this as any;\n\t\t}\n\n\t\tif (this.firstStart) {\n\t\t\tthis.Validate();\n\t\t} else {\n\t\t\tthis.CheckPosition();\n\t\t}\n\n\t\tthis.state = State.Run;\n\t\tif (this.recycled) {\n\t\t\tif (!this.parent.CheckTickListener(this.tickCb)) {\n\t\t\t\tthis.parent.AddTickListener(this.tickCb);\n\t\t\t}\n\t\t\tthis.recycled = false;\n\t\t} else {\n\t\t\tthis.parent.AddTickListener(this.tickCb);\n\t\t}\n\n\t\tif (this.firstStart) {\n\t\t\tthis.EmitEvent(this.eventStart);\n\t\t\tthis.firstStart = false;\n\t\t}\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Reset a tween to be reusable (with start)\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Recycle() {\n\t\tthis.Reset(true);\n\t\tthis.firstStart = true;\n\t\tthis.recycled = true;\n\t}\n\n\t/**\n\t * To Reset a Tween already finished (example looping sequence)\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Reset(skipParent?: boolean): void {\n\t\tthis.state = State.Idle;\n\n\t\tif (!skipParent) {\n\t\t\tthis.RemoveParentListener();\n\t\t}\n\n\t\tthis.loop = this.loopOriginal;\n\t\tthis.LoopInit();\n\t\tthis.EmitEvent(this.eventRestart);\n\t}\n\n\t/**\n\t * To immediately Reset a tween without stopping/restarting it\n\t * This is faster than calling manually Reset() & Start() & Tick()\n\t *\n\t * @param {number} dtRemains\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic ResetAndStart(dtRemains: number) {\n\t\tthis.LoopInit();\n\t\tthis.EmitEvent(this.eventRestart);\n\n\t\tthis.state = State.Run;\n\t\tif (dtRemains > 0) {\n\t\t\tthis.tickCb(dtRemains);\n\t\t}\n\t}\n\n\t/**\n\t * Method used to define the ticker of this tween\n\t * When Fatina.Tween is used, the main ticker is automatically defined as parent\n\t *\n\t * @param {ITicker} ticker\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic SetParent(ticker: ITicker): T {\n\t\tthis.RemoveParentListener();\n\t\tthis.parent = ticker;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Method used to change the timescale of the tween\n\t *\n\t * @param {number} scale\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic SetTimescale(scale: number): T {\n\t\tthis.timescale = scale;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Method used to pause a tween or a sequence (only work if the tween runs)\n\t *\n\t * @returns {void}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Pause(): void {\n\t\tif (this.state !== State.Run) {\n\t\t\tthis.Info(Log.Info, 'Cannot pause this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = State.Pause;\n\t\tthis.RemoveParentListener();\n\t}\n\n\t/**\n\t * Method used to resume a tween or a sequence (only work if the tween is paused)\n\t *\n\t * @returns {void}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Resume(): void {\n\t\tif (this.state !== State.Pause) {\n\t\t\tthis.Info(Log.Info, 'Cannot resume this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = State.Run;\n\t\tthis.parent.AddTickListener(this.tickCb);\n\t}\n\n\t/**\n\t * Method used to Skip this tween or sequence and directly finish it\n\t *\n\t * @param {boolean} [finalValue]\n\t * @returns {void}\n\t * @memberOf BaseTween\n\t */\n\tpublic Skip(finalValue?: boolean): void {\n\t\tif (this.state === State.Killed || this.state === State.Finished) {\n\t\t\tthis.Info(Log.Info, 'Cannot skip this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.state === State.Idle) {\n\t\t\tthis.EmitEvent(this.eventStart);\n\t\t}\n\n\t\tif (finalValue) {\n\t\t\tthis.tickCb(this.duration - this.elapsed + (this.yoyo * this.duration));\n\t\t\treturn;\n\t\t}\n\n\t\tthis.elapsed = this.duration;\n\t\tthis.Complete();\n\t}\n\n\t/**\n\t * Method used to Stop/Kill a tween or a sequence\n\t *\n\t * @returns {void}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Kill(): void {\n\t\tif (this.state === State.Killed) {\n\t\t\tthis.Info(Log.Info, 'Cannot kill this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = State.Killed;\n\t\tthis.RemoveParentListener();\n\t\tthis.EmitEvent(this.eventKill);\n\t}\n\n\t/**\n\t * Method used to define how many time the tween has to loop\n\t * Extra: if -1 the tween will loop forever\n\t *\n\t * @param {number} loop\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic SetLoop(loop: number): T {\n\t\tthis.loopOriginal = Math.round(loop);\n\t\tthis.loop = this.loopOriginal;\n\t\treturn this as any;\n\t}\n\n\tpublic IsIdle(): boolean {\n\t\treturn this.state === State.Idle;\n\t}\n\n\tpublic IsRunning(): boolean {\n\t\treturn this.state === State.Run;\n\t}\n\n\tpublic IsFinished(): boolean {\n\t\treturn this.state === State.Killed || this.state === State.Finished;\n\t}\n\n\tpublic IsPaused(): boolean {\n\t\treturn this. state === State.Pause;\n\t}\n\n\tprotected Complete(): void {\n\t\tif (this.state === State.Killed || this.state === State.Finished) {\n\t\t\tthis.Info(Log.Info, 'Cannot complete this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = State.Finished;\n\t\tthis.RemoveParentListener();\n\t\tthis.EmitEvent(this.eventComplete);\n\t}\n\n\tprotected RemoveParentListener() {\n\t\tif (this.parent) {\n\t\t\tthis.parent.RemoveTickListener(this.tickCb);\n\t\t}\n\t}\n\n\tprotected CheckPosition(): void {}\n\tprotected Validate(): void {}\n\tprotected LoopInit(): void {\n\t\tthis.elapsed = 0;\n\t}\n\n\tpublic SetSafe(safe: boolean): T {\n\t\tthis.safe = safe;\n\t\treturn this as any;\n\t}\n\n\tpublic SetLog(level: Log): T {\n\t\tthis.logLevel = level;\n\t\treturn this as any;\n\t}\n\n\tprotected Info(level: Log, message: string, data?: any) {\n\t\tif (level > this.logLevel) {\n\t\t\treturn;\n\t\t}\n\t\tif (data) {\n\t\t\tconsole.log(message, data);\n\t\t} else {\n\t\t\tconsole.log(message);\n\t\t}\n\t}\n\n\tprivate Emit(func: any, args: any) {\n\t\tif (!this.safe) {\n\t\t\treturn func.apply(this, args);\n\t\t}\n\t\ttry {\n\t\t\tfunc.apply(this, args);\n\t\t} catch (e) {\n\t\t\tconsole.warn(e);\n\t\t}\n\t}\n\n\tprotected EmitEvent(listeners: any, args?: any) {\n\t\tif (!listeners) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < listeners.length; i++) {\n\t\t\tthis.Emit(listeners[i], args);\n\t\t}\n\t}\n\n\t/**\n\t * Callback called when the tween started\n\t *\n\t * @param {() => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnStart(cb: () => void): T {\n\t\tif (!this.eventStart) {\n\t\t\tthis.eventStart = new Array(0);\n\t\t}\n\t\tthis.eventStart[this.eventStart.length] = cb;\n\t\tthis.Info(Log.Debug, 'onStart');\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Callback called when the tween restart (loop)\n\t *\n\t * @param {() => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnRestart(cb: () => void): T {\n\t\tif (!this.eventRestart) {\n\t\t\tthis.eventRestart = new Array(0);\n\t\t}\n\t\tthis.eventRestart[this.eventRestart.length] = cb;\n\t\tthis.Info(Log.Debug, 'onRestart');\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Callback called when the tween is updated\n\t *\n\t * @param {(dt: number, progress: number) => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnUpdate(cb: (dt: number, progress: number) => void): T {\n\t\tif (!this.eventUpdate) {\n\t\t\tthis.eventUpdate = new Array(0);\n\t\t}\n\t\tthis.eventUpdate[this.eventUpdate.length] = cb;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Callback called when the tween is manually killed\n\t *\n\t * @param {() => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnKilled(cb: () => void): T {\n\t\tif (!this.eventKill) {\n\t\t\tthis.eventKill = new Array(0);\n\t\t}\n\t\tthis.eventKill[this.eventKill.length] = cb;\n\t\tthis.Info(Log.Debug, 'onKilled');\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Callback called when the tween is finished\n\t *\n\t * @param {() => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnComplete(cb: () => void): T {\n\t\tif (!this.eventComplete) {\n\t\t\tthis.eventComplete = new Array(0);\n\t\t}\n\t\tthis.eventComplete[this.eventComplete.length] = cb;\n\t\tthis.Info(Log.Debug, 'onComplete');\n\t\treturn this as any;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/baseTween.ts","/**\n * Enum use to set the verbosity level of fatina and tweens\n *\n * @export\n * @enum {number}\n */\nexport enum Log {\n\tNone = 'none',\n\tInfo = 'info',\n\tDebug = 'debug'\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/core/enum/log.ts","\r\n/**\r\n * List of all easing methods\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum EasingType {\r\n\tLinear = 'linear',\r\n\tInQuad = 'inQuad',\r\n\tOutQuad = 'outQuad',\r\n\tInOutQuad = 'inOutQuad',\r\n\tInCubic = 'inCubic',\r\n\tOutCubic = 'outCubic',\r\n\tInOutCubic = 'inOutCubic',\r\n\tInQuart = 'inQuart',\r\n\tOutQuart = 'outQuart',\r\n\tInOutQuart = 'inOutQuart',\r\n\tInSine = 'inSine',\r\n\tOutSine = 'outSine',\r\n\tInOutSine = 'inOutSine',\r\n\tInCirc = 'inCirc',\r\n\tOutCirc = 'outCirc',\r\n\tInOutCirc = 'inOutCirc',\r\n\tInQuint = 'inQuint',\r\n\tOutQuint = 'outQuint',\r\n\tInOutQuint = 'inOutQuint',\r\n\tInExponential = 'inExponential',\r\n\tOutExponential = 'outExponential',\r\n\tInOutExponential = 'inOutExponential',\r\n\tInElastic = 'inElastic',\r\n\tOutElastic = 'outElastic',\r\n\tInOutElastic = 'inOutElastic',\r\n\tInBack = 'inBack',\r\n\tOutBack = 'outBack',\r\n\tInOutBack = 'inOutBack',\r\n\tInBounce = 'inBounce',\r\n\tOutBounce = 'outBounce',\r\n\tInOutBounce = 'inOutBounce'\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/easing/easingType.ts","import { IPlayable } from '../core/interfaces/IPlayable';\r\nimport { BaseTween } from './baseTween';\r\n\r\n/**\r\n * Fake tween used to delay other tweens in a sequence\r\n *\r\n * @export\r\n * @class Delay\r\n * @extends {BaseTween}\r\n * @implements {IPlayable}\r\n */\r\nexport class Delay extends BaseTween implements IPlayable {\r\n\tprivate remainsDt: number;\r\n\r\n\tconstructor(duration: number) {\r\n\t\tsuper();\r\n\t\tthis.duration = duration;\r\n\t\tthis.tickCb = this.Tick.bind(this);\r\n\t}\r\n\r\n\tprivate Tick(dt: number) {\r\n\t\tthis.remainsDt = dt * this.timescale;\r\n\r\n\t\twhile (this.remainsDt > 0) {\r\n\t\t\tthis.elapsed += this.remainsDt;\r\n\t\t\tconst progress = Math.max(Math.min(this.elapsed / this.duration, 1), 0);\r\n\t\t\tthis.EmitEvent(this.eventUpdate, [this.remainsDt, progress]);\r\n\r\n\t\t\tif (this.elapsed < this.duration) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.remainsDt = this.elapsed - this.duration;\r\n\t\t\tthis.loop--;\r\n\t\t\tif (this.loop === 0) {\r\n\t\t\t\tthis.Complete();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.ResetAndStart(0);\r\n\t\t}\r\n\t}\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/delay.ts","import { Log } from '../core/enum/log';\nimport { State } from '../core/enum/state';\nimport { IPlayable } from '../core/interfaces/IPlayable';\nimport { ISequence } from '../core/interfaces/ISequence';\nimport { ITicker } from '../core/interfaces/ITicker';\nimport { ITween } from '../core/interfaces/ITween';\nimport { BaseTween } from './baseTween';\nimport { Callback } from './callback';\nimport { Delay } from './delay';\n\n/**\n * Sequence: used to animate other tweens or sequence\n * Can play them sequentially or in parallel\n *\n * @export\n * @class Sequence\n * @extends {BaseTween}\n * @implements {ISequence}\n * @implements {ITicker}\n * @implements {IPlayable}\n */\nexport class Sequence extends BaseTween implements ISequence, ITicker, IPlayable {\n\t// events\n\tprivate eventStepStart: {(tween: ITween | IPlayable): void}[] | undefined;\n\tprivate eventStepEnd: {(tween: ITween | IPlayable): void}[] | undefined;\n\n\t// public properties\n\tpublic currentTween: (ITween | IPlayable)[] | undefined;\n\n\t// private properties\n\tprivate eventTick: {(dt: number): void}[] = [];\n\tprivate tweens: ((ITween | IPlayable)[])[] = [];\n\tprivate sequenceIndex = 0;\n\n\tpublic get Count(): number {\n\t\treturn this.tweens.length;\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.tickCb = this.Tick.bind(this);\n\t}\n\n\tprotected LoopInit() {\n\t\tthis.sequenceIndex = 0;\n\t\tfor (let i = 0; i < this.tweens.length; i++) {\n\t\t\tconst tweenArray = this.tweens[i];\n\t\t\tfor (let j = 0; j < tweenArray.length; j++) {\n\t\t\t\ttweenArray[j].Reset();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic AddTickListener(cb: (dt: number) => void): void {\n\t\tthis.eventTick.unshift(cb);\n\t}\n\n\tpublic RemoveTickListener(cb: (dt: number) => void): void {\n\t\tconst index = this.eventTick.indexOf(cb);\n\t\tif (index !== -1) {\n\t\t\tthis.eventTick.splice(index, 1);\n\t\t}\n\t}\n\n\tpublic CheckTickListener(cb: (dt: number) => void): boolean {\n\t\treturn false;\n\t}\n\n\tprivate Tick(dt: number) {\n\t\tif (this.state === State.Finished || this.state === State.Killed) {\n\t\t\treturn;\n\t\t}\n\t\tconst localDt = dt * this.timescale;\n\t\tthis.elapsed += localDt;\n\t\tthis.LocalTick(localDt);\n\t}\n\n\tprivate LocalTick(dt: number, remains?: boolean) {\n\t\t// If no current tween, take the first one and start it\n\t\tif (!this.currentTween) {\n\t\t\tthis.NextTween();\n\t\t}\n\n\t\tif (this.currentTween) {\n\t\t\t// Tick every listener\n\t\t\tfor (let i = this.eventTick.length - 1; i >= 0; i--) {\n\t\t\t\tthis.eventTick[i](dt);\n\t\t\t}\n\n\t\t\t// Dont emit update event for remains dt\n\t\t\tif (remains !== true) {\n\t\t\t\tthis.EmitEvent(this.eventUpdate, [dt, 0]);\n\t\t\t}\n\t\t}\n\n\t\tlet remainsDt = dt;\n\n\t\t// Current tween over\n\t\tif (this.currentTween) {\n\t\t\tfor (let i = 0; i < this.currentTween.length; i++) {\n\t\t\t\tif (this.currentTween[i].state !== State.Finished) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst first = this.currentTween[0];\n\t\t\tremainsDt = first.elapsed - first.duration;\n\n\t\t\tthis.EmitEvent(this.eventStepEnd, [this.currentTween[0]]);\n\t\t\tthis.Info(Log.Debug, 'OnStepEnd', this.eventStepEnd);\n\t\t\tthis.currentTween = undefined;\n\t\t\tthis.sequenceIndex++;\n\n\t\t\tif (remainsDt > 0.01) {\n\t\t\t\tthis.LocalTick(remainsDt, true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Complete\n\t\tif (!this.currentTween && this.tweens.length === this.sequenceIndex) {\n\t\t\tthis.loop--;\n\t\t\tif (this.loop === 0) {\n\t\t\t\tthis.Complete();\n\t\t\t} else {\n\t\t\t\tthis.ResetAndStart(remainsDt);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate NextTween() {\n\t\tthis.currentTween = this.tweens[this.sequenceIndex];\n\t\tif (this.currentTween) {\n\t\t\tfor (let i = 0; i < this.currentTween.length; i++) {\n\t\t\t\tconst tween = this.currentTween[i];\n\t\t\t\ttween.Start();\n\t\t\t}\n\n\t\t\tthis.EmitEvent(this.eventStepStart, [this.currentTween[0]]);\n\t\t\tthis.Info(Log.Debug, 'OnStepStart', this.eventStepStart);\n\t\t}\n\t}\n\n\tpublic Append(tween: ITween | ISequence): ISequence {\n\t\ttween.SetParent(this);\n\t\tthis.tweens[this.tweens.length] = [tween];\n\t\treturn this;\n\t}\n\n\tpublic AppendCallback(cb: () => void): ISequence {\n\t\tconst playable = new Callback(cb);\n\t\tplayable.SetParent(this);\n\t\tthis.tweens[this.tweens.length] = [playable];\n\t\treturn this;\n\t}\n\n\tpublic AppendInterval(duration: number): ISequence {\n\t\tconst playable = new Delay(duration);\n\t\tplayable.SetParent(this);\n\t\tthis.tweens[this.tweens.length] = [playable];\n\t\treturn this;\n\t}\n\n\tpublic Prepend(tween: ITween | ISequence): ISequence {\n\t\ttween.SetParent(this);\n\t\tthis.tweens.unshift([tween]);\n\t\treturn this;\n\t}\n\n\tpublic PrependCallback(cb: () => void): ISequence {\n\t\tconst playable = new Callback(cb);\n\t\tplayable.SetParent(this);\n\t\tthis.tweens.unshift([playable]);\n\t\treturn this;\n\t}\n\n\tpublic PrependInterval(duration: number): ISequence {\n\t\tconst playable = new Delay(duration);\n\t\tplayable.SetParent(this);\n\t\tthis.tweens.unshift([playable]);\n\t\treturn this;\n\t}\n\n\tpublic Skip(finalValue?: boolean): void {\n\t\tif (this.state === State.Killed || this.state === State.Finished) {\n\t\t\tthis.Info(Log.Info, 'Cannot skip this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < this.tweens.length; i++) {\n\t\t\tconst tweenArray = this.tweens[i];\n\t\t\tfor (let j = 0; j < tweenArray.length; j++) {\n\t\t\t\tconst tween = tweenArray[j];\n\t\t\t\tif (tween.elapsed === 0) {\n\t\t\t\t\tthis.EmitEvent(this.eventStepStart, [tween]);\n\t\t\t\t\tthis.Info(Log.Debug, 'OnStepStart', this.eventStepStart);\n\t\t\t\t}\n\t\t\t\ttween.Skip(finalValue);\n\t\t\t\tthis.EmitEvent(this.eventStepEnd, [tween]);\n\t\t\t\tthis.Info(Log.Debug, 'OnStepEnd', this.eventStepEnd);\n\t\t\t}\n\t\t}\n\t\tsuper.Skip();\n\t}\n\n\tpublic Kill(): void {\n\t\tif (this.state === State.Killed) {\n\t\t\tthis.Info(Log.Info, 'Cannot kill this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < this.tweens.length; i++) {\n\t\t\tconst tweenArray = this.tweens[i];\n\t\t\tfor (let j = 0; j < tweenArray.length; j++) {\n\t\t\t\ttweenArray[j].Kill();\n\t\t\t}\n\t\t}\n\n\t\tsuper.Kill();\n\t}\n\n\tpublic Join(tween: ITween | ISequence): ISequence {\n\t\tif (this.tweens.length === 0) {\n\t\t\treturn this.Append(tween);\n\t\t}\n\t\ttween.SetParent(this);\n\t\tthis.tweens[this.tweens.length - 1].push(tween);\n\t\treturn this;\n\t}\n\n\tpublic OnStepStart(cb: (index: ITween | IPlayable) => void): ISequence {\n\t\tif (!this.eventStepStart) {\n\t\t\tthis.eventStepStart = new Array(0);\n\t\t}\n\t\tthis.eventStepStart[this.eventStepStart.length] = cb;\n\t\treturn this;\n\t}\n\n\tpublic OnStepEnd(cb: (index: ITween | IPlayable) => void): ISequence {\n\t\tif (!this.eventStepEnd) {\n\t\t\tthis.eventStepEnd = new Array(0);\n\t\t}\n\t\tthis.eventStepEnd[this.eventStepEnd.length] = cb;\n\t\treturn this;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/sequence.ts","import { Log } from './core/enum/log';\nimport { IControl } from './core/interfaces/IControl';\nimport { IPlayable } from './core/interfaces/IPlayable';\nimport { IPlugin } from './core/interfaces/IPlugin';\nimport { ISequence } from './core/interfaces/ISequence';\nimport { ITicker } from './core/interfaces/ITicker';\nimport { ITween } from './core/interfaces/ITween';\nimport { EasingType } from './easing/easingType';\nimport { Ticker as ticker } from './ticker';\nimport { Delay as delay } from './tweens/delay';\nimport { Sequence as sequence } from './tweens/sequence';\nimport { Tween as tween } from './tweens/tween';\n\nlet tickerManager: ticker;\nlet initialized = false;\nlet isFirstUpdate = true;\nlet lastFrame: any;\nlet lastTime = 0;\nlet logLevel = Log.None;\nlet safe = true;\nconst eventCreated: {(control: IControl): void}[] = [];\n\nconst loadedPlugins: IPlugin[] = [];\n\n// Area for plugins to add helpers / dynamic method\nexport let plugin: any = {};\n\n// Expose the easing enum\nexport { EasingType as Easing };\n\n// real time of Fatina (not affected by timescale, pause, ...)\nexport let time = 0;\n\n// time updated internally (affected by timescale, pause, ...)\nexport function Elapsed(): number {\n\treturn tickerManager.elapsed;\n}\n\nexport function MainTicker(): ITicker {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\treturn tickerManager;\n}\n\n/**\n * Add a listener method on tween/sequence creation\n *\n * @export\n * @param {(control: IControl) => void} cb\n */\nexport function AddListenerCreated(cb: (control: IControl) => void): void {\n\teventCreated.push(cb);\n}\n\n/**\n * Remove a listener method on tween/sequence creation\n *\n * @export\n * @param {(control: IControl) => void} cb\n */\nexport function RemoveListenerCreated(cb: (control: IControl) => void): void {\n\tconst index = eventCreated.indexOf(cb);\n\tif (index !== -1) {\n\t\teventCreated.splice(index, 1);\n\t}\n}\n\n/**\n * Method used when Fatina is used for the first time.\n * Can take few ms. (pool initialization & object creation)\n *\n * @export\n * @param {boolean} [disableAutoTick]\n * @returns {boolean}\n */\nexport function Init(disableAutoTick?: boolean): boolean {\n\tif (initialized) {\n\t\treturn false;\n\t}\n\n\tif (!tickerManager) {\n\t\ttickerManager = new ticker();\n\t\ttickerManager.Start();\n\t}\n\n\tif (typeof(window) !== 'undefined' && !disableAutoTick) {\n\t\tlastFrame = requestFrame(updateLoop);\n\t}\n\n\tinitialized = true;\n\treturn true;\n}\n\n/**\n * Used to change the timescale of the whole game\n *\n * @export\n * @param {number} scale\n */\nexport function SetTimescale(scale: number): void {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\ttickerManager.SetTimescale(scale);\n}\n\n/**\n * This method pause the update loop (update are not called anymore)\n *\n * @export\n */\nexport function Pause(): void {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\ttickerManager.Pause();\n}\n\n/**\n * This method resume the update loop (works only if the game was paused before)\n *\n * @export\n */\nexport function Resume(): void {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\ttickerManager.Resume();\n}\n\n/**\n * This method is used to change the log level\n *\n * @export\n * @param {Log} level\n */\nexport function SetLog(level: Log) {\n\tlogLevel = level;\n}\n\n/**\n * This method is used to enable / disable the callback try/catch\n *\n * @export\n * @param {boolean} isSafe\n */\nexport function SetSafe(isSafe: boolean) {\n\tsafe = isSafe;\n}\n\n/**\n * This method kill the main ticker, the pool of tween and stop any requestAnimationFrame\n *\n * @export\n */\nexport function Destroy() {\n\tif (tickerManager) {\n\t\ttickerManager.Kill();\n\t}\n\n\tif (lastFrame) {\n\t\tcancelFrame(lastFrame);\n\t}\n\n\tinitialized = false;\n}\n\n/**\n * Method used to tick all the child (tween or sequence)\n * This takes cares of recycling the old tween/sequence\n *\n * @export\n * @param {number} timestamp\n * @returns {*}\n */\nexport function Update(timestamp: number): any {\n\tif (!initialized || !tickerManager) {\n\t\treturn;\n\t}\n\ttickerManager.Tick(timestamp);\n\ttime += timestamp;\n}\n\n/**\n * Helper to create a tween (use the tween pool)\n *\n * @export\n * @param {*} obj\n * @param {string[]} properties\n * @returns {ITween}\n */\nexport function Tween(obj: any, properties: string[]): ITween {\n\tconst t = new tween(obj, properties);\n\tAddContext(t);\n\tInfo(Log.Debug, '[Fatina.Manager] Tween Instantiated', t);\n\treturn t;\n}\n\n/**\n * Helper to create a Sequence (use the sequence pool)\n *\n * @export\n * @returns {ISequence}\n */\nexport function Sequence(): ISequence {\n\tconst s = new sequence();\n\tAddContext(s);\n\tInfo(Log.Debug, '[Fatina.Manager] Sequence Instantiated', s);\n\treturn s;\n}\n\n/**\n * Helper to create a Delay\n *\n * @export\n * @param {number} duration\n * @returns {IPlayable}\n */\nexport function Delay(duration: number): IPlayable {\n\tconst d = new delay(duration);\n\tAddContext(d);\n\tInfo(Log.Debug, '[Fatina.Manager] Sequence Instantiated', d);\n\treturn d;\n}\n\n/**\n * Helper used to replace usage of normal js setTimeout() by a tween\n * https://www.w3schools.com/jsref/met_win_settimeout.asp\n *\n * @export\n * @param {() => void} fn\n * @param {number} duration\n * @returns {IPlayable}\n */\nexport function SetTimeout(fn: () => void, duration: number): IPlayable {\n\tconst timeout = new delay(duration).OnComplete(fn);\n\tAddContext(timeout);\n\tInfo(Log.Debug, '[Fatina.Manager] SetTimeout Instantiated', timeout);\n\treturn timeout.Start();\n}\n\n/**\n * Helper used to replace usage of normal js setInterval() by a tween\n * https://www.w3schools.com/jsref/met_win_setinterval.asp\n *\n * @export\n * @param {() => void} fn\n * @param {number} duration\n * @returns {IPlayable}\n */\nexport function SetInterval(fn: () => void, duration: number): IPlayable {\n\tconst interval = new delay(duration).OnRestart(fn).SetLoop(-1);\n\tAddContext(interval);\n\tInfo(Log.Debug, '[Fatina.Manager] SetInterval Instantiated', interval);\n\treturn interval.Start();\n}\n\n/**\n * Private method to set common data to every object (the parent ticker, safe mode, verbose mode)\n *\n * @param {(IPlayable | ITween | ISequence)} obj\n */\nfunction AddContext(obj: IPlayable | ITween | ISequence): void {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\n\tobj.SetParent(tickerManager as ITicker);\n\n\tif (logLevel !== Log.None) {\n\t\tobj.SetLog(logLevel);\n\t}\n\n\tif (!safe) {\n\t\tobj.SetSafe(safe);\n\t}\n\n\tEmitCreated(obj);\n}\n\n/**\n * Create or Get a ticker with a defined name\n * This ticker is a child of the main ticker\n *\n * @export\n * @param {string} name\n * @returns {ITicker}\n */\nexport function Ticker(): ITicker {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\n\tconst tick = new ticker();\n\tconst handler = tick.Tick.bind(tick);\n\ttick.SetParent(tickerManager, handler);\n\ttickerManager.AddTickListener(handler);\n\ttick.Start();\n\n\tEmitCreated(tick);\n\tInfo(Log.Debug, '[Fatina.Manager] Ticker Instantiated', tick);\n\treturn tick;\n}\n\n/**\n * Initialize a plugin by passing fatina object to it\n *\n * @export\n * @param {IPlugin} newPlugin\n */\nexport function LoadPlugin(newPlugin: IPlugin) {\n\tnewPlugin.Init(this);\n\tloadedPlugins.push(newPlugin);\n\tInfo(Log.Debug, '[Fatina.Manager] Plugin Loaded', newPlugin.name);\n}\n\nfunction Info(level: Log, message: string, data?: any) {\n\tif (level > logLevel) {\n\t\treturn;\n\t}\n\tif (data) {\n\t\tconsole.log(message, data);\n\t} else {\n\t\tconsole.log(message);\n\t}\n}\n\nfunction Emit(func: any, tween: IControl) {\n\tif (!safe) {\n\t\treturn func(tween);\n\t}\n\n\ttry {\n\t\tfunc(tween);\n\t} catch (e) {\n\t\tconsole.warn(e);\n\t}\n}\n\nfunction EmitCreated(tween: IControl) {\n\tfor (let i = 0; i < eventCreated.length; i++) {\n\t\tEmit(eventCreated[i], tween);\n\t}\n}\n\n/**\n * This part manage the auto-update loop if necessary (browser only)\n */\nlet requestFrame: any;\nlet cancelFrame: any;\nif (typeof(window) !== 'undefined') {\n\trequestFrame = window.requestAnimationFrame || (window as any).mozRequestAnimationFrame || window.webkitRequestAnimationFrame || (window as any).msRequestAnimationFrame;\n\tcancelFrame = window.cancelAnimationFrame || (window as any).mozCancelAnimationFrame;\n}\n\nfunction updateLoop(timestamp: number) {\n\tlet dt = timestamp - lastTime;\n\tif (isFirstUpdate) {\n\t\tdt = 1;\n\t\tisFirstUpdate = false;\n\t}\n\n\t// cap to 500 ms\n\tif (dt > 500) {\n\t\tconsole.warn('[Fatina] Delta between two update was too high ' + Math.round(dt) + 'ms. , Capped to 500ms.');\n\t\tdt = 500;\n\t}\n\n\tUpdate(dt);\n\tlastTime = timestamp;\n\tlastFrame = requestFrame(updateLoop);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/index.ts","import { State } from './core/enum/state';\r\nimport { EventList } from './core/eventList';\r\nimport { ITicker } from './core/interfaces/ITicker';\r\n\r\n/**\r\n * Main Fatina Ticker\r\n * Parent of all the normal tween and sequence\r\n *\r\n * @export\r\n * @class Ticker\r\n * @extends {EventList}\r\n * @implements {ITicker}\r\n */\r\nexport class Ticker extends EventList implements ITicker {\r\n\tpublic state = State.Idle;\r\n\tprivate timescale = 1;\r\n\tpublic elapsed = 0;\r\n\tpublic duration = 0;\r\n\tprivate update = 0;\r\n\tprivate eventToAdd: { (dt: number): void }[] = [];\r\n\tprivate eventToRemove: { (dt: number): void }[] = [];\r\n\tpublic tick: (dt: number) => void | undefined;\r\n\tprivate parent: ITicker;\r\n\r\n\tpublic SetParent(parent: ITicker, tick: (dt: number) => void) {\r\n\t\tthis.tick = tick;\r\n\t\tthis.parent = parent;\r\n\t}\r\n\r\n\t/**\r\n\t * Method used to change the timescale\r\n\t *\r\n\t * @param {number} scale\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic SetTimescale(scale: number): void {\r\n\t\tthis.timescale = scale;\r\n\t}\r\n\r\n\t/**\r\n\t * Method used by the child to be updated\r\n\t *\r\n\t * @param {(dt: number) => void} cb\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic AddTickListener(cb: (dt: number) => void): void {\r\n\t\tthis.eventToAdd.push(cb);\r\n\t}\r\n\r\n\t/**\r\n\t * Method used by the child to not receive update anymore\r\n\t *\r\n\t * @param {(dt: number) => void} cb\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic RemoveTickListener(cb: (dt: number) => void): void {\r\n\t\tthis.eventToRemove.push(cb);\r\n\t}\r\n\r\n\t/**\r\n\t * Internal method used to cancel a stop (restart in the same frame)\r\n\t *\r\n\t * @param {(dt: number) => void} cb\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic CheckTickListener(cb: (dt: number) => void): boolean {\r\n\t\tlet found = false;\r\n\t\twhile (true) {\r\n\t\t\tconst index = this.eventToRemove.indexOf(cb);\r\n\t\t\tif (index === -1) {\r\n\t\t\t\treturn found;\r\n\t\t\t}\r\n\t\t\tthis.eventToRemove.splice(index, 1);\r\n\t\t\tfound = true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Method used to update the array of listener\r\n\t * This is mostly for performance reason, being able to batch this operation in the updateLoop\r\n\t *\r\n\t * @private\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tprivate UpdateListener() {\r\n\t\tif (this.eventToAdd.length > 0) {\r\n\t\t\tfor (let i = 0; i < this.eventToAdd.length; i++) {\r\n\t\t\t\tthis.Add(this.eventToAdd[i]);\r\n\t\t\t}\r\n\t\t\tthis.eventToAdd = [];\r\n\t\t}\r\n\r\n\t\tif (this.eventToRemove.length > 0) {\r\n\t\t\tfor (let i = 0; i < this.eventToRemove.length; i++) {\r\n\t\t\t\tthis.Remove(this.eventToRemove[i]);\r\n\t\t\t}\r\n\t\t\tthis.eventToRemove = [];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Method used to tick all the child (tick listeners)\r\n\t *\r\n\t * @param {number} dt\r\n\t * @returns\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic Tick(dt: number) {\r\n\t\tif (this.state !== State.Run) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.UpdateListener();\r\n\r\n\t\tconst localDt = dt * this.timescale;\r\n\t\tfor (let tick: any = this.first; tick; tick = tick.node_next) {\r\n\t\t\ttick(localDt);\r\n\t\t}\r\n\t\tthis.elapsed += localDt;\r\n\t\tthis.update++;\r\n\r\n\t\tthis.UpdateListener();\r\n\t}\r\n\r\n\tpublic Start(): void {\r\n\t\tif (this.state === State.Idle) {\r\n\t\t\tthis.state = State.Run;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Pause(): void {\r\n\t\tif (this.state === State.Run) {\r\n\t\t\tthis.state = State.Pause;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Resume(): void {\r\n\t\tif (this.state === State.Pause) {\r\n\t\t\tthis.state = State.Run;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Kill(): void {\r\n\t\tif (this.state === State.Killed || this.state === State.Finished) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.parent && this.tick) {\r\n\t\t\tthis.parent.RemoveTickListener(this.tick);\r\n\t\t}\r\n\r\n\t\tthis.state = State.Killed;\r\n\t}\r\n\r\n\tpublic Skip(): void {\r\n\t\tthrow new Error('The main ticker cannot be skipped');\r\n\t}\r\n\r\n\tpublic Reset(): void {\r\n\t\tthis.state = State.Idle;\r\n\t}\r\n\r\n\tpublic IsIdle(): boolean {\r\n\t\treturn this.state === State.Idle;\r\n\t}\r\n\r\n\tpublic IsRunning(): boolean {\r\n\t\treturn this.state === State.Run;\r\n\t}\r\n\r\n\tpublic IsFinished(): boolean {\r\n\t\treturn this.state === State.Killed || this.state === State.Finished;\r\n\t}\r\n\r\n\tpublic IsPaused(): boolean {\r\n\t\treturn this. state === State.Pause;\r\n\t}\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/ticker.ts","/**\r\n * Simple DoublyList used for events management\r\n * Not really reusable, optimized only to append, remove and iterate\r\n *\r\n * @export\r\n * @abstract\r\n * @class EventList\r\n */\r\nexport abstract class EventList {\r\n\tpublic first: INode | undefined;\r\n\tpublic last: INode | undefined;\r\n\tpublic length = 0;\r\n\r\n\tpublic Add(obj: any): void {\r\n\t\tconst newNode = this.GetNode(obj, this.last, undefined, this);\r\n\t\tif (this.first === undefined) {\r\n\t\t\tthis.first = newNode;\r\n\t\t\tthis.last = newNode;\r\n\t\t} else if (this.last !== undefined) {\r\n\t\t\tthis.last.node_next = newNode;\r\n\t\t\tthis.last = newNode;\r\n\t\t}\r\n\t\tthis.length += 1;\r\n\t}\r\n\r\n\tpublic Remove(obj: any): void {\r\n\t\tconst node = obj as INode;\r\n\t\tif (node === undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (node.node_list !== this) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Removing any existing reference to the node\r\n\t\tif (node.node_next === undefined) {\r\n\t\t\tthis.last = node.node_previous;\r\n\t\t} else {\r\n\t\t\tnode.node_next.node_previous = node.node_previous;\r\n\t\t}\r\n\r\n\t\tif (node.node_previous === undefined) {\r\n\t\t\tthis.first = node.node_next;\r\n\t\t} else {\r\n\t\t\tnode.node_previous.node_next = node.node_next;\r\n\t\t}\r\n\r\n\t\t// Removing any existing reference from the node\r\n\t\tnode.node_valid = false;\r\n\t\tnode.node_previous = undefined;\r\n\t\tnode.node_next = undefined;\r\n\t\tnode.node_list = undefined;\r\n\r\n\t\t// One less node in the list\r\n\t\tthis.length -= 1;\r\n\t}\r\n\r\n\tprivate GetNode(obj: any, previous: INode | undefined, next: INode | undefined, list: EventList): INode {\r\n\t\tconst node = obj as INode;\r\n\t\tif (!node.node_valid) {\r\n\t\t\tnode.node_valid = true;\r\n\t\t\tnode.node_previous = previous;\r\n\t\t\tnode.node_next = next;\r\n\t\t\tnode.node_list = list;\r\n\t\t}\r\n\t\treturn node;\r\n\t}\r\n}\r\n\r\nexport interface INode {\r\n\tnode_valid: boolean;\r\n\tnode_previous: INode | undefined;\r\n\tnode_next: INode | undefined;\r\n\tnode_list: EventList | undefined;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/core/eventList.ts","import { IPlayable } from '../core/interfaces/IPlayable';\r\nimport { BaseTween } from './baseTween';\r\n\r\n/**\r\n * Fake tween used to append or join callback in a sequence\r\n *\r\n * @export\r\n * @class Callback\r\n * @extends {BaseTween}\r\n * @implements {IPlayable}\r\n */\r\nexport class Callback extends BaseTween implements IPlayable {\r\n\tprivate callback: () => void;\r\n\r\n\tconstructor(cb: () => void) {\r\n\t\tsuper();\r\n\t\tthis.callback = cb;\r\n\t\tthis.tickCb = this.Tick.bind(this);\r\n\t}\r\n\r\n\tprivate Tick(dt: number) {\r\n\t\tthis.elapsed += dt;\r\n\t\tthis.duration = 0;\r\n\t\tthis.callback();\r\n\t\tthis.EmitEvent(this.eventUpdate, [dt, 1]);\r\n\t\tthis.Complete();\r\n\t}\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/callback.ts","import { State } from '../core/enum/state';\nimport { ISequence } from '../core/interfaces/ISequence';\nimport { ITween } from '../core/interfaces/ITween';\nimport { easeNames } from '../easing/easing';\nimport { EasingType } from '../easing/easingType';\nimport { BaseTween } from './baseTween';\nimport { Sequence } from './sequence';\n\n/**\n * Tween: Used to animate values of an object\n *\n * @export\n * @class Tween\n * @extends {BaseTween}\n * @implements {ITween}\n */\nexport class Tween extends BaseTween implements ITween {\n\tprivate object: any;\n\tprivate properties: string[];\n\tprivate from: any;\n\tprivate to: any;\n\tprivate steps = 0;\n\tprivate currentFrom: any;\n\tprivate currentTo: any;\n\tprivate remainsDt: number;\n\tprivate relative = false;\n\tprivate ease: (t: number) => number;\n\tprivate easeId: EasingType | string;\n\n\tconstructor(object: any, properties: string[]) {\n\t\tsuper();\n\n\t\tthis.object = object;\n\t\tthis.properties = properties;\n\t\tthis.tickCb = this.Tick.bind(this);\n\t}\n\n\t/**\n\t * Used to define the object and the properties modified by this tween\n\t *\n\t * @param {*} object\n\t * @param {string[]} properties\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic Init(object: any, properties: string[]) {\n\t\tthis.object = object;\n\t\tthis.properties = properties;\n\t}\n\n\t/**\n\t * Method used on start to check the values of this tween\n\t *\n\t * @protected\n\t *\n\t * @memberOf Tween\n\t */\n\tprotected Validate() {\n\t\t// Check the object\n\t\tif (!this.object) {\n\t\t\tthrow new Error('Cant Tween a undefined object');\n\t\t}\n\n\t\t// Check the properties of that object\n\t\tfor (let i = 0; i < this.properties.length; i++) {\n\t\t\tconst prop = this.properties[i];\n\t\t\tif (!(prop in this.object)) {\n\t\t\t\tthrow new Error('Cant Tween an unknown property' + prop);\n\t\t\t}\n\t\t}\n\n\t\t// Check this tween will be updated\n\t\tif (!this.parent) {\n\t\t\tthrow new Error('Cant Start a tween without ticker');\n\t\t}\n\n\t\t// Easing\n\t\tif (!this.ease) {\n\t\t\tthis.easeId = EasingType.Linear;\n\t\t\tthis.ease = easeNames[EasingType.Linear];\n\t\t}\n\n\t\tthis.CheckPosition();\n\t}\n\n\t/**\n\t * Method used to calculate currentFrom/currentTo based on the config\n\t *\n\t * @protected\n\t *\n\t * @memberOf Tween\n\t */\n\tprotected CheckPosition() {\n\t\tif (!this.currentFrom) {\n\t\t\tthis.currentFrom = {};\n\t\t}\n\t\tif (!this.currentTo) {\n\t\t\tthis.currentTo = {};\n\t\t}\n\n\t\tfor (let i = 0; i < this.properties.length; i++) {\n\t\t\tconst prop = this.properties[i];\n\n\t\t\t// From\n\t\t\tif (!this.from) {\n\t\t\t\tthis.currentFrom[prop] = this.object[prop];\n\t\t\t} else {\n\t\t\t\tthis.currentFrom[prop] = this.from[prop];\n\t\t\t\tthis.object[prop] = this.from[prop];\n\t\t\t}\n\n\t\t\t// Relative\n\t\t\tif (this.relative) {\n\t\t\t\tthis.currentTo[prop] = this.object[prop] + this.to[prop];\n\t\t\t} else {\n\t\t\t\tthis.currentTo[prop] = this.to[prop];\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate Tick(dt: number) {\n\t\tif (this.state === State.Finished || this.state === State.Killed) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.remainsDt = dt * this.timescale;\n\t\twhile (this.remainsDt > 0) {\n\t\t\tthis.elapsed += this.remainsDt;\n\t\t\tconst progress = Math.max(Math.min(this.elapsed / this.duration, 1), 0);\n\t\t\tlet val = this.ease(progress);\n\n\t\t\t// Yoyo easing (need to be reversed)\n\t\t\tif ((this.yoyoOriginal - this.yoyo) % 2 === 1) {\n\t\t\t\tval = 1 - this.ease(1 - progress);\n\t\t\t}\n\n\t\t\t// Steps behaviour\n\t\t\tif (this.steps !== 0) {\n\t\t\t\tval = Math.round(val * this.steps) / this.steps;\n\t\t\t}\n\n\t\t\t// Update if the object still exist\n\t\t\tif (this.object) {\n\t\t\t\tfor (let i = 0; i < this.properties.length; i++) {\n\t\t\t\t\tconst prop = this.properties[i];\n\t\t\t\t\tthis.object[prop] = this.currentFrom[prop] + (this.currentTo[prop] - this.currentFrom[prop]) * val;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.EmitEvent(this.eventUpdate, [this.remainsDt, progress]);\n\n\t\t\tif (this.elapsed < this.duration) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.remainsDt = this.elapsed - this.duration;\n\n\t\t\t// Yoyo effect ( A -> B -> A )\n\t\t\tif (this.yoyo > 0) {\n\t\t\t\tthis.Reverse();\n\t\t\t\tthis.ResetAndStart(0);\n\t\t\t\tthis.yoyo--;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Loop management\n\t\t\tthis.loop--;\n\t\t\tif (this.loop === 0) {\n\t\t\t\tthis.Complete();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.CheckPosition();\n\t\t\tthis.ResetAndStart(0);\n\t\t}\n\t}\n\n\t/**\n\t * Method used to set the values at the beginning of the tween\n\t *\n\t * @param {*} from\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic From(from: any): ITween {\n\t\tthis.from = from;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used to set the values at the end of the tween\n\t *\n\t * @param {*} to\n\t * @param {number} duration\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic To(to: any, duration: number): ITween {\n\t\tthis.to = to;\n\t\tthis.duration = duration;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used to define if the tween as to work in relative or not\n\t *\n\t * @param {boolean} relative\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic SetRelative(relative: boolean): ITween {\n\t\tthis.relative = relative;\n\t\treturn this;\n\t}\n\n\t/**\n\t * To apply a modifier on a current tween\n\t *\n\t * @param {*} diff\n\t * @param {boolean} updateTo\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic Modify(diff: any, updateTo: boolean): void {\n\t\tfor (let i = 0; i < this.properties.length; i++) {\n\t\t\tconst prop = this.properties[i];\n\t\t\tif (!diff.hasOwnProperty(prop)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthis.object[prop] += diff[prop];\n\n\t\t\tif (updateTo) {\n\t\t\t\tthis.currentTo[prop] += diff[prop];\n\t\t\t} else {\n\t\t\t\tthis.currentFrom[prop] += diff[prop];\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Overwrite the Reset (just for yoyo)\n\t *\n\t * @param {boolean} [skipParent]\n\t * @memberOf Tween\n\t */\n\tpublic Reset(skipParent?: boolean): void {\n\t\tif ((this.yoyoOriginal - this.yoyo) % 2 === 1) {\n\t\t\tlet previous = this.currentFrom;\n\t\t\tthis.currentFrom = this.currentTo;\n\t\t\tthis.currentTo = previous;\n\n\t\t\tprevious = this.from;\n\t\t\tthis.from = this.to;\n\t\t\tthis.to = previous;\n\n\t\t\tconst elapsed = (1 - (this.elapsed / this.duration)) * this.duration;\n\t\t\tthis.elapsed = Math.round(elapsed * 1000) / 1000;\n\t\t}\n\t\tthis.yoyo = this.yoyoOriginal;\n\t\tsuper.Reset(skipParent);\n\t}\n\n\t/**\n\t * Method used to reverse the tween\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic Reverse(): void {\n\t\tlet previous = this.currentFrom;\n\t\tthis.currentFrom = this.currentTo;\n\t\tthis.currentTo = previous;\n\n\t\tprevious = this.from;\n\t\tthis.from = this.to;\n\t\tthis.to = previous;\n\n\t\tconst elapsed = (1 - (this.elapsed / this.duration)) * this.duration;\n\t\tthis.elapsed = Math.round(elapsed * 1000) / 1000;\n\n\t\tif (this.state === State.Finished) {\n\t\t\tthis.Reset(true);\n\t\t\tthis.Start();\n\t\t}\n\t}\n\n\t/**\n\t * Method used to reverse the tween N times at the end\n\t *\n\t * @param {number} time\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic Yoyo(time: number): ITween {\n\t\tthis.yoyoOriginal = time;\n\t\tthis.yoyo = time;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used to Quantify the tween value to a certain amount of steps\n\t *\n\t * @param {number} steps\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic SetSteps(steps: number): ITween {\n\t\tthis.steps = steps;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used to create a sequence with this tween as first value.\n\t * Usually used with .AppendInterval(1250) or .PrependInterval(160) to add a delay\n\t *\n\t * @returns {ISequence}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic ToSequence(): ISequence {\n\t\tif (!this.parent) {\n\t\t\tthrow new Error('Cant convert to a sequence, parent ticker not defined');\n\t\t}\n\t\treturn new Sequence().SetParent(this.parent).Append(this);\n\t}\n\n\t/**\n\t * Private easing method (resolve the right method and set it)\n\t *\n\t * @private\n\t * @param {(EasingType | string)} type\n\t * @returns {(t: number) => number}\n\t *\n\t * @memberOf Tween\n\t */\n\tprivate Easing(type: EasingType | string): (t: number) => number {\n\t\tconst name = type as string;\n\n\t\tif (name in easeNames) {\n\t\t\treturn easeNames[name];\n\t\t}\n\n\t\tthrow new Error('Unknown ease method ' + type);\n\t}\n\n\t/**\n\t * Method used to set the type of easing for this tween\n\t *\n\t * @param {(EasingType | string)} type\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic SetEasing(type: EasingType | string): ITween {\n\t\tthis.easeId = type;\n\t\tthis.ease = this.Easing(type);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used when the tween is reset (loop)\n\t *\n\t * @protected\n\t *\n\t * @memberOf Tween\n\t */\n\tprotected LoopInit() {\n\t\tthis.elapsed = 0;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/tween.ts","/**\r\n * List of easing method\r\n *\r\n * Mostly based on http://easings.net/\r\n */\r\nimport { EasingType } from './easingType';\r\n\r\nconst PI = Math.PI;\r\nconst PI_OVER_TWO = Math.PI / 2;\r\nconst BACK = 1.70158;\r\nconst easingByName: { [id: string]: (t: number) => number } = {};\r\n\r\n// Linear\r\neasingByName[EasingType.Linear] = (t: number): number => {\r\n\treturn t;\r\n};\r\n\r\n// Quad\r\neasingByName[EasingType.InQuad] = (t: number): number => {\r\n\treturn t * t;\r\n};\r\n\r\neasingByName[EasingType.OutQuad] = (t: number): number => {\r\n\treturn 2 * t - t * t;\r\n};\r\n\r\neasingByName[EasingType.InOutQuad] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn 2 * t * t;\r\n\t} else {\r\n\t\treturn 2 * (2 * t - t * t) - 1;\r\n\t}\r\n};\r\n\r\n// Cubic\r\neasingByName[EasingType.InCubic] = (t: number): number => {\r\n\treturn t * t * t;\r\n};\r\n\r\neasingByName[EasingType.OutCubic] = (t: number): number => {\r\n\treturn 3 * t - 3 * t * t + t * t * t;\r\n};\r\n\r\neasingByName[EasingType.InOutCubic] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn 4 * t * t * t;\r\n\t} else {\r\n\t\treturn 4 * (3 * t - 3 * t * t + t * t * t) - 3;\r\n\t}\r\n};\r\n\r\n// Quart\r\neasingByName[EasingType.InQuart] = (t: number): number => {\r\n\treturn t * t * t * t;\r\n};\r\n\r\neasingByName[EasingType.OutQuart] = (t: number): number => {\r\n\tconst t2 = t * t;\r\n\treturn 4 * t - 6 * t2 + 4 * t2 * t - t2 * t2;\r\n};\r\n\r\neasingByName[EasingType.InOutQuart] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn 8 * t * t * t * t;\r\n\t} else {\r\n\t\tconst t2 = t * t;\r\n\t\treturn 8 * (4 * t - 6 * t2 + 4 * t2 * t - t2 * t2) - 7;\r\n\t}\r\n};\r\n\r\n// Sine\r\neasingByName[EasingType.InSine] = (t: number): number => {\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\treturn 1 - Math.cos(PI_OVER_TWO * t);\r\n};\r\n\r\neasingByName[EasingType.OutSine] = (t: number): number => {\r\n\treturn Math.sin(PI_OVER_TWO * t);\r\n};\r\n\r\neasingByName[EasingType.InOutSine] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn (1 - Math.cos(PI * t)) / 2;\r\n\t} else {\r\n\t\treturn (1 + Math.sin(PI * (t - 0.5))) / 2;\r\n\t}\r\n};\r\n\r\n// Circular\r\neasingByName[EasingType.InCirc] = (t: number): number => {\r\n\treturn 1 - Math.sqrt(1 - Math.pow(t, 2));\r\n};\r\n\r\neasingByName[EasingType.OutCirc] = (t: number): number => {\r\n\treturn Math.sqrt(1 - Math.pow(1 - t, 2));\r\n};\r\n\r\neasingByName[EasingType.InOutCirc] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn (1 - Math.sqrt(1 - 4 * t * t)) / 2;\r\n\t} else {\r\n\t\treturn (1 + Math.sqrt(-3 + 8 * t - 4 * t * t)) / 2;\r\n\t}\r\n};\r\n\r\n// Quint\r\neasingByName[EasingType.InQuint] = (t: number): number => {\r\n\treturn t * t * t * t * t;\r\n};\r\n\r\neasingByName[EasingType.OutQuint] = (t: number): number => {\r\n\treturn --t * t * t * t * t + 1;\r\n};\r\n\r\neasingByName[EasingType.InOutQuint] = (t: number): number => {\r\n\tt *= 2;\r\n\tif (t < 1) {\r\n\t\treturn 0.5 * t * t * t * t * t;\r\n\t}\r\n\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n};\r\n\r\n// Exponential\r\neasingByName[EasingType.InExponential] = (t: number): number => {\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\treturn t === 0 ? 0 : Math.pow(1024, t - 1);\r\n};\r\n\r\neasingByName[EasingType.OutExponential] = (t: number): number => {\r\n\treturn t === 1 ? 1 : 1 - Math.pow(2, - 10 * t);\r\n};\r\n\r\neasingByName[EasingType.InOutExponential] = (t: number): number => {\r\n\tif (t === 0) {\r\n\t\treturn 0;\r\n\t}\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\tt *= 2;\r\n\tif (t < 1) {\r\n\t\treturn 0.5 * Math.pow(1024, t - 1);\r\n\t}\r\n\treturn 0.5 * (- Math.pow(2, - 10 * (t - 1)) + 2);\r\n};\r\n\r\n// Elastic\r\neasingByName[EasingType.InElastic] = (t: number): number => {\r\n\tif (t === 0) {\r\n\t\treturn 0;\r\n\t}\r\n\treturn -Math.pow(2, 10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI);\r\n};\r\n\r\neasingByName[EasingType.OutElastic] = (t: number): number => {\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\treturn Math.pow(2, -10 * t) * Math.sin((t - 0.1) * 5 * Math.PI) + 1;\r\n};\r\n\r\neasingByName[EasingType.InOutElastic] = (t: number): number => {\r\n\tif (t === 0) {\r\n\t\treturn 0;\r\n\t}\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\tt *= 2;\r\n\tif (t < 1) {\r\n\t\treturn -0.5 * Math.pow(2, 10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI);\r\n\t}\r\n\r\n\treturn 0.5 * Math.pow(2, -10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI) + 1;\r\n};\r\n\r\n// Back\r\neasingByName[EasingType.InBack] = (t: number): number => {\r\n\tconst s = BACK;\r\n\treturn t === 1 ? 1 : t * t * ((s + 1) * t - s);\r\n\r\n};\r\n\r\neasingByName[EasingType.OutBack] = (t: number): number => {\r\n\tconst s = BACK;\r\n\treturn t === 0 ? 0 : --t * t * ((s + 1) * t + s) + 1;\r\n};\r\n\r\neasingByName[EasingType.InOutBack] = (t: number): number => {\r\n\tconst s = BACK * 1.525;\r\n\tt *= 2;\r\n\tif (t < 1) {\r\n\t\treturn 0.5 * (t * t * ((s + 1) * t - s));\r\n\t}\r\n\treturn 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\r\n};\r\n\r\n// Bounce\r\neasingByName[EasingType.OutBounce] = (t: number): number => {\r\n\tif (t < (1 / 2.75)) {\r\n\t\treturn 7.5625 * t * t;\r\n\t} else if (t < (2 / 2.75)) {\r\n\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n\t} else if (t < (2.5 / 2.75)) {\r\n\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n\t} else {\r\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n\t}\r\n};\r\n\r\neasingByName[EasingType.InBounce] = (t: number): number => {\r\n\treturn 1 - easingByName[EasingType.OutBounce](1 - t);\r\n};\r\n\r\neasingByName[EasingType.InOutBounce] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn easingByName[EasingType.InBounce](t * 2) * 0.5;\r\n\t}\r\n\treturn easingByName[EasingType.OutBounce](t * 2 - 1) * 0.5 + 0.5;\r\n};\r\n\r\nexport let easeNames = easingByName;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/easing/easing.ts"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition?5ca6","webpack:///fatina.min.js","webpack:///webpack/bootstrap 982c366558f39c21212f?c4a6","webpack:///./src/fatina/core/enum/state.ts?be58","webpack:///./src/fatina/tweens/baseTween.ts?af98","webpack:///./src/fatina/core/enum/log.ts?269a","webpack:///./src/fatina/easing/easingType.ts?2639","webpack:///./src/fatina/tweens/delay.ts?46ec","webpack:///./src/fatina/tweens/sequence.ts?13df","webpack:///./src/fatina/index.ts?519f","webpack:///./src/fatina/ticker.ts?1998","webpack:///./src/fatina/core/eventList.ts?0b7c","webpack:///./src/fatina/tweens/callback.ts?1585","webpack:///./src/fatina/tweens/tween.ts?44b5","webpack:///./src/fatina/easing/easing.ts?fa18"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","value","State","log_1","state_1","BaseTween","elapsed","duration","timescale","state","Idle","loopOriginal","loop","yoyoOriginal","yoyo","firstStart","recycled","safe","logLevel","Log","None","Start","Validate","CheckPosition","Run","parent","CheckTickListener","tickCb","AddTickListener","EmitEvent","eventStart","Recycle","Reset","skipParent","RemoveParentListener","LoopInit","eventRestart","ResetAndStart","dtRemains","SetParent","ticker","SetTimescale","scale","Pause","Info","Resume","Skip","finalValue","Killed","Finished","Complete","Kill","eventKill","SetLoop","Math","round","IsIdle","IsRunning","IsFinished","IsPaused","eventComplete","RemoveTickListener","SetSafe","SetLog","level","message","data","console","log","Emit","func","args","apply","e","warn","listeners","length","OnStart","cb","Array","Debug","OnRestart","OnUpdate","eventUpdate","OnKilled","OnComplete","EasingType","__extends","extendStatics","setPrototypeOf","__proto__","b","__","constructor","create","baseTween_1","Delay","_super","_this","Tick","bind","dt","remainsDt","progress","max","min","callback_1","delay_1","Sequence","eventTick","tweens","sequenceIndex","tweenArray","j","unshift","index","indexOf","splice","localDt","LocalTick","remains","currentTween","NextTween","first","eventStepEnd","undefined","eventStepStart","Append","tween","AppendCallback","playable","Callback","AppendInterval","Prepend","PrependCallback","PrependInterval","Join","push","OnStepStart","OnStepEnd","Elapsed","tickerManager","MainTicker","initialized","Init","AddListenerCreated","eventCreated","RemoveListenerCreated","disableAutoTick","ticker_1","Ticker","lastFrame","requestFrame","updateLoop","isSafe","Destroy","cancelFrame","Update","timestamp","time","Tween","obj","properties","t","tween_1","AddContext","sequence_1","SetTimeout","fn","timeout","SetInterval","interval","EmitCreated","tick","handler","LoadPlugin","newPlugin","loadedPlugins","lastTime","isFirstUpdate","easingType_1","Easing","plugin","window","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","cancelAnimationFrame","mozCancelAnimationFrame","eventList_1","arguments","update","eventToAdd","eventToRemove","found","UpdateListener","Add","Remove","node_next","Error","EventList","newNode","GetNode","last","node","node_list","node_previous","node_valid","previous","next","list","callback","easing_1","steps","relative","prop","ease","easeId","Linear","easeNames","currentFrom","currentTo","from","to","val","Reverse","From","To","SetRelative","Modify","diff","updateTo","Yoyo","SetSteps","ToSequence","type","SetEasing","PI","PI_OVER_TWO","easingByName","InQuad","OutQuad","InOutQuad","InCubic","OutCubic","InOutCubic","InQuart","OutQuart","t2","InOutQuart","InSine","cos","OutSine","sin","InOutSine","InCirc","sqrt","pow","OutCirc","InOutCirc","InQuint","OutQuint","InOutQuint","InExponential","OutExponential","InOutExponential","InElastic","OutElastic","InOutElastic","InBack","OutBack","InOutBack","BACK","OutBounce","InBounce","InOutBounce"],"mappings":"CAAA,SAAAA,EAAAC,GACA,gBAAAC,UAAA,gBAAAC,QACAA,OAAAD,QAAAD,IACA,kBAAAG,gBAAAC,IACAD,OAAA,YAAAH,GACA,gBAAAC,SACAA,QAAA,OAAAD,IAEAD,EAAA,OAAAC,KACCK,KAAA,WACD,MCAgB,UAAUC,GCN1B,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAP,OAGA,IAAAC,GAAAO,EAAAD,IACAE,EAAAF,EACAG,GAAA,EACAV,WAUA,OANAK,GAAAE,GAAAI,KAAAV,EAAAD,QAAAC,IAAAD,QAAAM,GAGAL,EAAAS,GAAA,EAGAT,EAAAD,QAvBA,GAAAQ,KA4DA,OAhCAF,GAAAM,EAAAP,EAGAC,EAAAO,EAAAL,EAGAF,EAAAQ,EAAA,SAAAd,EAAAe,EAAAC,GACAV,EAAAW,EAAAjB,EAAAe,IACAG,OAAAC,eAAAnB,EAAAe,GACAK,cAAA,EACAC,YAAA,EACAC,IAAAN,KAMAV,EAAAiB,EAAA,SAAAtB,GACA,GAAAe,GAAAf,KAAAuB,WACA,WAA2B,MAAAvB,GAAA,SAC3B,WAAiC,MAAAA,GAEjC,OADAK,GAAAQ,EAAAE,EAAA,IAAAA,GACAA,GAIAV,EAAAW,EAAA,SAAAQ,EAAAC,GAAsD,MAAAR,QAAAS,UAAAC,eAAAjB,KAAAc,EAAAC,IAGtDpB,EAAAuB,EAAA,GAGAvB,IAAAwB,EAAA,KDgBM,SAAU7B,EAAQD,EAASM,GAEjC,YAEAY,QAAOC,eAAenB,EAAS,cAAgB+B,OAAO,KE3EtD,SAAYC,GACXA,IAAA,eACAA,IAAA,aACAA,IAAA,iBACAA,IAAA,uBACAA,IAAA,oBALWhC,EAAAgC,QAAAhC,EAAAgC,YFwFN,SAAU/B,EAAQD,EAASM,GAEjC,YAEAY,QAAOC,eAAenB,EAAS,cAAgB+B,OAAO,GGlGtD,IAAAE,GAAA3B,EAAA,GACA4B,EAAA5B,EAAA,GAcA6B,EAAA,mBAAAA,KASQ/B,KAAAgC,QAAU,EACVhC,KAAAiC,SAAW,EACXjC,KAAAkC,UAAY,EACZlC,KAAAmC,MAAeL,EAAAF,MAAMQ,KAGlBpC,KAAAqC,aAAe,EACfrC,KAAAsC,KAAO,EACPtC,KAAAuC,aAAe,EACfvC,KAAAwC,KAAO,EAGTxC,KAAAyC,YAAa,EACbzC,KAAA0C,UAAW,EACX1C,KAAA2C,MAAO,EACP3C,KAAA4C,SAAWf,EAAAgB,IAAIC,KAgXxB,MAvWQf,GAAAR,UAAAwB,MAAP,WACC,MAAI/C,MAAKmC,QAAUL,EAAAF,MAAMQ,KACjBpC,MAGJA,KAAKyC,WACRzC,KAAKgD,WAELhD,KAAKiD,gBAGNjD,KAAKmC,MAAQL,EAAAF,MAAMsB,IACflD,KAAK0C,UACH1C,KAAKmD,OAAOC,kBAAkBpD,KAAKqD,SACvCrD,KAAKmD,OAAOG,gBAAgBtD,KAAKqD,QAElCrD,KAAK0C,UAAW,GAEhB1C,KAAKmD,OAAOG,gBAAgBtD,KAAKqD,QAG9BrD,KAAKyC,aACRzC,KAAKuD,UAAUvD,KAAKwD,YACpBxD,KAAKyC,YAAa,GAEZzC,OAQD+B,EAAAR,UAAAkC,QAAP,WACCzD,KAAK0D,OAAM,GACX1D,KAAKyC,YAAa,EAClBzC,KAAK0C,UAAW,GAQVX,EAAAR,UAAAmC,MAAP,SAAaC,GACZ3D,KAAKmC,MAAQL,EAAAF,MAAMQ,KAEduB,GACJ3D,KAAK4D,uBAGN5D,KAAKsC,KAAOtC,KAAKqC,aACjBrC,KAAK6D,WACL7D,KAAKuD,UAAUvD,KAAK8D,eAWd/B,EAAAR,UAAAwC,cAAP,SAAqBC,GACpBhE,KAAK6D,WACL7D,KAAKuD,UAAUvD,KAAK8D,cAEpB9D,KAAKmC,MAAQL,EAAAF,MAAMsB,IACfc,EAAY,GACfhE,KAAKqD,OAAOW,IAaPjC,EAAAR,UAAA0C,UAAP,SAAiBC,GAGhB,MAFAlE,MAAK4D,uBACL5D,KAAKmD,OAASe,EACPlE,MAWD+B,EAAAR,UAAA4C,aAAP,SAAoBC,GAEnB,MADApE,MAAKkC,UAAYkC,EACVpE,MAUD+B,EAAAR,UAAA8C,MAAP,WACC,GAAIrE,KAAKmC,QAAUL,EAAAF,MAAMsB,IAExB,WADAlD,MAAKsE,KAAKzC,EAAAgB,IAAIyB,KAAM,2BAA4BtE,KAAKmC,MAItDnC,MAAKmC,MAAQL,EAAAF,MAAMyC,MACnBrE,KAAK4D,wBAUC7B,EAAAR,UAAAgD,OAAP,WACC,GAAIvE,KAAKmC,QAAUL,EAAAF,MAAMyC,MAExB,WADArE,MAAKsE,KAAKzC,EAAAgB,IAAIyB,KAAM,4BAA6BtE,KAAKmC,MAIvDnC,MAAKmC,MAAQL,EAAAF,MAAMsB,IACnBlD,KAAKmD,OAAOG,gBAAgBtD,KAAKqD,SAU3BtB,EAAAR,UAAAiD,KAAP,SAAYC,GACX,MAAIzE,MAAKmC,QAAUL,EAAAF,MAAM8C,QAAU1E,KAAKmC,QAAUL,EAAAF,MAAM+C,aACvD3E,MAAKsE,KAAKzC,EAAAgB,IAAIyB,KAAM,0BAA2BtE,KAAKmC,QAIjDnC,KAAKmC,QAAUL,EAAAF,MAAMQ,MACxBpC,KAAKuD,UAAUvD,KAAKwD,YAGjBiB,MACHzE,MAAKqD,OAAOrD,KAAKiC,SAAWjC,KAAKgC,QAAWhC,KAAKwC,KAAOxC,KAAKiC,WAI9DjC,KAAKgC,QAAUhC,KAAKiC,aACpBjC,MAAK4E,cAUC7C,EAAAR,UAAAsD,KAAP,WACC,GAAI7E,KAAKmC,QAAUL,EAAAF,MAAM8C,OAExB,WADA1E,MAAKsE,KAAKzC,EAAAgB,IAAIyB,KAAM,0BAA2BtE,KAAKmC,MAIrDnC,MAAKmC,MAAQL,EAAAF,MAAM8C,OACnB1E,KAAK4D,uBACL5D,KAAKuD,UAAUvD,KAAK8E,YAYd/C,EAAAR,UAAAwD,QAAP,SAAezC,GAGd,MAFAtC,MAAKqC,aAAe2C,KAAKC,MAAM3C,GAC/BtC,KAAKsC,KAAOtC,KAAKqC,aACVrC,MAGD+B,EAAAR,UAAA2D,OAAP,WACC,MAAOlF,MAAKmC,QAAUL,EAAAF,MAAMQ,MAGtBL,EAAAR,UAAA4D,UAAP,WACC,MAAOnF,MAAKmC,QAAUL,EAAAF,MAAMsB,KAGtBnB,EAAAR,UAAA6D,WAAP,WACC,MAAOpF,MAAKmC,QAAUL,EAAAF,MAAM8C,QAAU1E,KAAKmC,QAAUL,EAAAF,MAAM+C,UAGrD5C,EAAAR,UAAA8D,SAAP,WACC,MAAOrF,MAAMmC,QAAUL,EAAAF,MAAMyC,OAGpBtC,EAAAR,UAAAqD,SAAV,WACC,GAAI5E,KAAKmC,QAAUL,EAAAF,MAAM8C,QAAU1E,KAAKmC,QAAUL,EAAAF,MAAM+C,SAEvD,WADA3E,MAAKsE,KAAKzC,EAAAgB,IAAIyB,KAAM,8BAA+BtE,KAAKmC,MAIzDnC,MAAKmC,MAAQL,EAAAF,MAAM+C,SACnB3E,KAAK4D,uBACL5D,KAAKuD,UAAUvD,KAAKsF,gBAGXvD,EAAAR,UAAAqC,qBAAV,WACK5D,KAAKmD,QACRnD,KAAKmD,OAAOoC,mBAAmBvF,KAAKqD,SAI5BtB,EAAAR,UAAA0B,cAAV,aACUlB,EAAAR,UAAAyB,SAAV,aACUjB,EAAAR,UAAAsC,SAAV,WACC7D,KAAKgC,QAAU,GAGTD,EAAAR,UAAAiE,QAAP,SAAe7C,GAEd,MADA3C,MAAK2C,KAAOA,EACL3C,MAGD+B,EAAAR,UAAAkE,OAAP,SAAcC,GAEb,MADA1F,MAAK4C,SAAW8C,EACT1F,MAGE+B,EAAAR,UAAA+C,KAAV,SAAeoB,EAAYC,EAAiBC,GACvCF,EAAQ1F,KAAK4C,WAGbgD,EACHC,QAAQC,IAAIH,EAASC,GAErBC,QAAQC,IAAIH,KAIN5D,EAAAR,UAAAwE,KAAR,SAAaC,EAAWC,GACvB,IAAKjG,KAAK2C,KACT,MAAOqD,GAAKE,MAAMlG,KAAMiG,EAEzB,KACCD,EAAKE,MAAMlG,KAAMiG,GAChB,MAAOE,GACRN,QAAQO,KAAKD,KAILpE,EAAAR,UAAAgC,UAAV,SAAoB8C,EAAgBJ,GACnC,GAAKI,EAIL,IAAK,GAAIhG,GAAI,EAAGA,EAAIgG,EAAUC,OAAQjG,IACrCL,KAAK+F,KAAKM,EAAUhG,GAAI4F,IAYnBlE,EAAAR,UAAAgF,QAAP,SAAeC,GAMd,MALKxG,MAAKwD,aACTxD,KAAKwD,WAAa,GAAIiD,OAAM,IAE7BzG,KAAKwD,WAAWxD,KAAKwD,WAAW8C,QAAUE,EAC1CxG,KAAKsE,KAAKzC,EAAAgB,IAAI6D,MAAO,WACd1G,MAWD+B,EAAAR,UAAAoF,UAAP,SAAiBH,GAMhB,MALKxG,MAAK8D,eACT9D,KAAK8D,aAAe,GAAI2C,OAAM,IAE/BzG,KAAK8D,aAAa9D,KAAK8D,aAAawC,QAAUE,EAC9CxG,KAAKsE,KAAKzC,EAAAgB,IAAI6D,MAAO,aACd1G,MAWD+B,EAAAR,UAAAqF,SAAP,SAAgBJ,GAKf,MAJKxG,MAAK6G,cACT7G,KAAK6G,YAAc,GAAIJ,OAAM,IAE9BzG,KAAK6G,YAAY7G,KAAK6G,YAAYP,QAAUE,EACrCxG,MAWD+B,EAAAR,UAAAuF,SAAP,SAAgBN,GAMf,MALKxG,MAAK8E,YACT9E,KAAK8E,UAAY,GAAI2B,OAAM,IAE5BzG,KAAK8E,UAAU9E,KAAK8E,UAAUwB,QAAUE,EACxCxG,KAAKsE,KAAKzC,EAAAgB,IAAI6D,MAAO,YACd1G,MAWD+B,EAAAR,UAAAwF,WAAP,SAAkBP,GAMjB,MALKxG,MAAKsF,gBACTtF,KAAKsF,cAAgB,GAAImB,OAAM,IAEhCzG,KAAKsF,cAActF,KAAKsF,cAAcgB,QAAUE,EAChDxG,KAAKsE,KAAKzC,EAAAgB,IAAI6D,MAAO,cACd1G,MAET+B,IAxYsBnC,GAAAmC,aH8ThB,SAAUlC,EAAQD,EAASM,GAEjC,YAEAY,QAAOC,eAAenB,EAAS,cAAgB+B,OAAO,KI3UtD,SAAYkB,GACXA,IAAA,eACAA,IAAA,eACAA,IAAA,kBAHWjD,EAAAiD,MAAAjD,EAAAiD,UJsVN,SAAUhD,EAAQD,EAASM,GAEjC,YAEAY,QAAOC,eAAenB,EAAS,cAAgB+B,OAAO,KKzVtD,SAAYqF,GACXA,EAAA,gBACAA,EAAA,gBACAA,EAAA,kBACAA,EAAA,sBACAA,EAAA,kBACAA,EAAA,oBACAA,EAAA,wBACAA,EAAA,kBACAA,EAAA,oBACAA,EAAA,wBACAA,EAAA,gBACAA,EAAA,kBACAA,EAAA,sBACAA,EAAA,gBACAA,EAAA,kBACAA,EAAA,sBACAA,EAAA,kBACAA,EAAA,oBACAA,EAAA,wBACAA,EAAA,8BACAA,EAAA,gCACAA,EAAA,oCACAA,EAAA,sBACAA,EAAA,wBACAA,EAAA,4BACAA,EAAA,gBACAA,EAAA,kBACAA,EAAA,sBACAA,EAAA,oBACAA,EAAA,sBACAA,EAAA,2BA/BWpH,EAAAoH,aAAApH,EAAAoH,iBLgYN,SAAUnH,EAAQD,EAASM,GAEjC,YAEA,IAAI+G,GAAajH,MAAQA,KAAKiH,WAAc,WACxC,GAAIC,GAAgBpG,OAAOqG,iBACpBC,uBAA2BX,QAAS,SAAU/F,EAAG2G,GAAK3G,EAAE0G,UAAYC,IACvE,SAAU3G,EAAG2G,GAAK,IAAK,GAAI5F,KAAK4F,GAAOA,EAAE7F,eAAeC,KAAIf,EAAEe,GAAK4F,EAAE5F,IACzE,OAAO,UAAUf,EAAG2G,GAEhB,QAASC,KAAOtH,KAAKuH,YAAc7G,EADnCwG,EAAcxG,EAAG2G,GAEjB3G,EAAEa,UAAkB,OAAN8F,EAAavG,OAAO0G,OAAOH,IAAMC,EAAG/F,UAAY8F,EAAE9F,UAAW,GAAI+F,OAGvFxG,QAAOC,eAAenB,EAAS,cAAgB+B,OAAO,GMpZtD,IAAA8F,GAAAvH,EAAA,GAUAwH,EAAA,SAAAC,GAGC,QAAAD,GAAYzF,GAAZ,GAAA2F,GACCD,EAAApH,KAAAP,OAAOA,IN8YD,OM7YN4H,GAAK3F,SAAWA,EAChB2F,EAAKvE,OAASuE,EAAKC,KAAKC,KAAKF,GN4YhBA,EMpXf,MA9B2BX,GAAAS,EAAAC,GASlBD,EAAAnG,UAAAsG,KAAR,SAAaE,GAGZ,IAFA/H,KAAKgI,UAAYD,EAAK/H,KAAKkC,UAEpBlC,KAAKgI,UAAY,GAAG,CAC1BhI,KAAKgC,SAAWhC,KAAKgI,SACrB,IAAMC,GAAWjD,KAAKkD,IAAIlD,KAAKmD,IAAInI,KAAKgC,QAAUhC,KAAKiC,SAAU,GAAI,EAGrE,IAFAjC,KAAKuD,UAAUvD,KAAK6G,aAAc7G,KAAKgI,UAAWC,IAE9CjI,KAAKgC,QAAUhC,KAAKiC,SACvB,MAKD,IAFAjC,KAAKgI,UAAYhI,KAAKgC,QAAUhC,KAAKiC,SAEnB,MADlBjC,KAAKsC,KAGJ,WADAtC,MAAK4E,UAGN5E,MAAK+D,cAAc,KAGtB2D,GA9B2BD,EAAA1F,UAAdnC,GAAA8H,SN6aP,SAAU7H,EAAQD,EAASM,GAEjC,YAEA,IAAI+G,GAAajH,MAAQA,KAAKiH,WAAc,WACxC,GAAIC,GAAgBpG,OAAOqG,iBACpBC,uBAA2BX,QAAS,SAAU/F,EAAG2G,GAAK3G,EAAE0G,UAAYC,IACvE,SAAU3G,EAAG2G,GAAK,IAAK,GAAI5F,KAAK4F,GAAOA,EAAE7F,eAAeC,KAAIf,EAAEe,GAAK4F,EAAE5F,IACzE,OAAO,UAAUf,EAAG2G,GAEhB,QAASC,KAAOtH,KAAKuH,YAAc7G,EADnCwG,EAAcxG,EAAG2G,GAEjB3G,EAAEa,UAAkB,OAAN8F,EAAavG,OAAO0G,OAAOH,IAAMC,EAAG/F,UAAY8F,EAAE9F,UAAW,GAAI+F,OAGvFxG,QAAOC,eAAenB,EAAS,cAAgB+B,OAAO,GOtctD,IAAAE,GAAA3B,EAAA,GACA4B,EAAA5B,EAAA,GAKAuH,EAAAvH,EAAA,GACAkI,EAAAlI,EAAA,GACAmI,EAAAnI,EAAA,GAaAoI,EAAA,SAAAX,GAiBC,QAAAW,KAAA,GAAAV,GACCD,EAAApH,KAAAP,OAAOA,IP6aD,OOtbC4H,GAAAW,aACAX,EAAAY,UACAZ,EAAAa,cAAgB,EAQvBb,EAAKvE,OAASuE,EAAKC,KAAKC,KAAKF,GP4ahBA,EO/Nf,MAhO8BX,GAAAqB,EAAAX,GAa7B7G,OAAAC,eAAWuH,EAAA/G,UAAA,SPqbJL,IOrbP,WACC,MAAOlB,MAAKwI,OAAOlC,QPubbrF,YAAY,EACZD,cAAc,IOhbXsH,EAAA/G,UAAAsC,SAAV,WACC7D,KAAKyI,cAAgB,CACrB,KAAK,GAAIpI,GAAI,EAAGA,EAAIL,KAAKwI,OAAOlC,OAAQjG,IAEvC,IAAK,GADCqI,GAAa1I,KAAKwI,OAAOnI,GACtBsI,EAAI,EAAGA,EAAID,EAAWpC,OAAQqC,IACtCD,EAAWC,GAAGjF,SAKV4E,EAAA/G,UAAA+B,gBAAP,SAAuBkD,GACtBxG,KAAKuI,UAAUK,QAAQpC,IAGjB8B,EAAA/G,UAAAgE,mBAAP,SAA0BiB,GACzB,GAAMqC,GAAQ7I,KAAKuI,UAAUO,QAAQtC,IACtB,IAAXqC,GACH7I,KAAKuI,UAAUQ,OAAOF,EAAO,IAIxBP,EAAA/G,UAAA6B,kBAAP,SAAyBoD,GACxB,OAAO,GAGA8B,EAAA/G,UAAAsG,KAAR,SAAaE,GACZ,GAAI/H,KAAKmC,QAAUL,EAAAF,MAAM+C,UAAY3E,KAAKmC,QAAUL,EAAAF,MAAM8C,OAA1D,CAGA,GAAMsE,GAAUjB,EAAK/H,KAAKkC,SAC1BlC,MAAKgC,SAAWgH,EAChBhJ,KAAKiJ,UAAUD,KAGRV,EAAA/G,UAAA0H,UAAR,SAAkBlB,EAAYmB,GAM7B,GAJKlJ,KAAKmJ,cACTnJ,KAAKoJ,YAGFpJ,KAAKmJ,aAAc,CAEtB,IAAK,GAAI9I,GAAIL,KAAKuI,UAAUjC,OAAS,EAAGjG,GAAK,EAAGA,IAC/CL,KAAKuI,UAAUlI,GAAG0H,IAIH,IAAZmB,GACHlJ,KAAKuD,UAAUvD,KAAK6G,aAAckB,EAAI,IAIxC,GAAIC,GAAYD,CAGhB,IAAI/H,KAAKmJ,aAAc,CACtB,IAAK,GAAI9I,GAAI,EAAGA,EAAIL,KAAKmJ,aAAa7C,OAAQjG,IAC7C,GAAIL,KAAKmJ,aAAa9I,GAAG8B,QAAUL,EAAAF,MAAM+C,SACxC,MAIF,IAAM0E,GAAQrJ,KAAKmJ,aAAa,EAQhC,IAPAnB,EAAYqB,EAAMrH,QAAUqH,EAAMpH,SAElCjC,KAAKuD,UAAUvD,KAAKsJ,cAAetJ,KAAKmJ,aAAa,KACrDnJ,KAAKsE,KAAKzC,EAAAgB,IAAI6D,MAAO,YAAa1G,KAAKsJ,cACvCtJ,KAAKmJ,iBAAeI,GACpBvJ,KAAKyI,gBAEDT,EAAY,IAEf,WADAhI,MAAKiJ,UAAUjB,GAAW,GAMvBhI,KAAKmJ,cAAgBnJ,KAAKwI,OAAOlC,SAAWtG,KAAKyI,gBACrDzI,KAAKsC,OACa,IAAdtC,KAAKsC,KACRtC,KAAK4E,WAEL5E,KAAK+D,cAAciE,KAKdM,EAAA/G,UAAA6H,UAAR,WAEC,GADApJ,KAAKmJ,aAAenJ,KAAKwI,OAAOxI,KAAKyI,eACjCzI,KAAKmJ,aAAc,CACtB,IAAK,GAAI9I,GAAI,EAAGA,EAAIL,KAAKmJ,aAAa7C,OAAQjG,IAAK,CACpCL,KAAKmJ,aAAa9I,GAC1B0C,QAGP/C,KAAKuD,UAAUvD,KAAKwJ,gBAAiBxJ,KAAKmJ,aAAa,KACvDnJ,KAAKsE,KAAKzC,EAAAgB,IAAI6D,MAAO,cAAe1G,KAAKwJ,kBAIpClB,EAAA/G,UAAAkI,OAAP,SAAcC,GAGb,MAFAA,GAAMzF,UAAUjE,MAChBA,KAAKwI,OAAOxI,KAAKwI,OAAOlC,SAAWoD,GAC5B1J,MAGDsI,EAAA/G,UAAAoI,eAAP,SAAsBnD,GACrB,GAAMoD,GAAW,GAAIxB,GAAAyB,SAASrD,EAG9B,OAFAoD,GAAS3F,UAAUjE,MACnBA,KAAKwI,OAAOxI,KAAKwI,OAAOlC,SAAWsD,GAC5B5J,MAGDsI,EAAA/G,UAAAuI,eAAP,SAAsB7H,GACrB,GAAM2H,GAAW,GAAIvB,GAAAX,MAAMzF,EAG3B,OAFA2H,GAAS3F,UAAUjE,MACnBA,KAAKwI,OAAOxI,KAAKwI,OAAOlC,SAAWsD,GAC5B5J,MAGDsI,EAAA/G,UAAAwI,QAAP,SAAeL,GAGd,MAFAA,GAAMzF,UAAUjE,MAChBA,KAAKwI,OAAOI,SAASc,IACd1J,MAGDsI,EAAA/G,UAAAyI,gBAAP,SAAuBxD,GACtB,GAAMoD,GAAW,GAAIxB,GAAAyB,SAASrD,EAG9B,OAFAoD,GAAS3F,UAAUjE,MACnBA,KAAKwI,OAAOI,SAASgB,IACd5J,MAGDsI,EAAA/G,UAAA0I,gBAAP,SAAuBhI,GACtB,GAAM2H,GAAW,GAAIvB,GAAAX,MAAMzF,EAG3B,OAFA2H,GAAS3F,UAAUjE,MACnBA,KAAKwI,OAAOI,SAASgB,IACd5J,MAGDsI,EAAA/G,UAAAiD,KAAP,SAAYC,GACX,GAAIzE,KAAKmC,QAAUL,EAAAF,MAAM8C,QAAU1E,KAAKmC,QAAUL,EAAAF,MAAM+C,SAEvD,WADA3E,MAAKsE,KAAKzC,EAAAgB,IAAIyB,KAAM,0BAA2BtE,KAAKmC,MAIrD,KAAK,GAAI9B,GAAI,EAAGA,EAAIL,KAAKwI,OAAOlC,OAAQjG,IAEvC,IAAK,GADCqI,GAAa1I,KAAKwI,OAAOnI,GACtBsI,EAAI,EAAGA,EAAID,EAAWpC,OAAQqC,IAAK,CAC3C,GAAMe,GAAQhB,EAAWC,EACH,KAAlBe,EAAM1H,UACThC,KAAKuD,UAAUvD,KAAKwJ,gBAAiBE,IACrC1J,KAAKsE,KAAKzC,EAAAgB,IAAI6D,MAAO,cAAe1G,KAAKwJ,iBAE1CE,EAAMlF,KAAKC,GACXzE,KAAKuD,UAAUvD,KAAKsJ,cAAeI,IACnC1J,KAAKsE,KAAKzC,EAAAgB,IAAI6D,MAAO,YAAa1G,KAAKsJ,cAGzC3B,EAAApG,UAAMiD,KAAIjE,KAAAP,OAGJsI,EAAA/G,UAAAsD,KAAP,WACC,GAAI7E,KAAKmC,QAAUL,EAAAF,MAAM8C,OAExB,WADA1E,MAAKsE,KAAKzC,EAAAgB,IAAIyB,KAAM,0BAA2BtE,KAAKmC,MAIrD,KAAK,GAAI9B,GAAI,EAAGA,EAAIL,KAAKwI,OAAOlC,OAAQjG,IAEvC,IAAK,GADCqI,GAAa1I,KAAKwI,OAAOnI,GACtBsI,EAAI,EAAGA,EAAID,EAAWpC,OAAQqC,IACtCD,EAAWC,GAAG9D,MAIhB8C,GAAApG,UAAMsD,KAAItE,KAAAP,OAGJsI,EAAA/G,UAAA2I,KAAP,SAAYR,GACX,MAA2B,KAAvB1J,KAAKwI,OAAOlC,OACRtG,KAAKyJ,OAAOC,IAEpBA,EAAMzF,UAAUjE,MAChBA,KAAKwI,OAAOxI,KAAKwI,OAAOlC,OAAS,GAAG6D,KAAKT,GAClC1J,OAGDsI,EAAA/G,UAAA6I,YAAP,SAAmB5D,GAKlB,MAJKxG,MAAKwJ,iBACTxJ,KAAKwJ,eAAiB,GAAI/C,OAAM,IAEjCzG,KAAKwJ,eAAexJ,KAAKwJ,eAAelD,QAAUE,EAC3CxG,MAGDsI,EAAA/G,UAAA8I,UAAP,SAAiB7D,GAKhB,MAJKxG,MAAKsJ,eACTtJ,KAAKsJ,aAAe,GAAI7C,OAAM,IAE/BzG,KAAKsJ,aAAatJ,KAAKsJ,aAAahD,QAAUE,EACvCxG,MAETsI,GAhO8Bb,EAAA1F,UAAjBnC,GAAA0I,YPwnBP,SAAUzI,EAAQD,EAASM,GAEjC,YQ7mBA,SAAAoK,KACC,MAAOC,GAAcvI,QAGtB,QAAAwI,KAIC,MAHKC,IACJC,IAEMH,EASR,QAAAI,GAAmCnE,GAClCoE,EAAaT,KAAK3D,GASnB,QAAAqE,GAAsCrE,GACrC,GAAMqC,GAAQ+B,EAAa9B,QAAQtC,IACpB,IAAXqC,GACH+B,EAAa7B,OAAOF,EAAO,GAY7B,QAAA6B,GAAqBI,GACpB,OAAIL,IAICF,IACJA,EAAgB,GAAIQ,GAAAC,OACpBT,EAAcxH,SAGQ,mBAAb,SAA6B+H,IACtCG,EAAYC,EAAaC,IAG1BV,GAAc,GACP,GASR,QAAAtG,GAA6BC,GACvBqG,GACJC,IAEDH,EAAcpG,aAAaC,GAQ5B,QAAAC,KACMoG,GACJC,IAEDH,EAAclG,QAQf,QAAAE,KACMkG,GACJC,IAEDH,EAAchG,SASf,QAAAkB,GAAuBC,GACtB9C,EAAW8C,EASZ,QAAAF,GAAwB4F,GACvBzI,EAAOyI,EAQR,QAAAC,KACKd,GACHA,EAAc1F,OAGXoG,GACHK,EAAYL,GAGbR,GAAc,EAWf,QAAAc,GAAuBC,GACjBf,GAAgBF,IAGrBA,EAAc1C,KAAK2D,GACnB5L,EAAA6L,MAAQD,GAWT,QAAAE,GAAsBC,EAAUC,GAC/B,GAAMC,GAAI,GAAIC,GAAAJ,MAAMC,EAAKC,EAGzB,OAFAG,GAAWF,GACXvH,EAAKzC,EAAAgB,IAAI6D,MAAO,sCAAuCmF,GAChDA,EASR,QAAAvD,KACC,GAAM5G,GAAI,GAAIsK,GAAA1D,QAGd,OAFAyD,GAAWrK,GACX4C,EAAKzC,EAAAgB,IAAI6D,MAAO,yCAA0ChF,GACnDA,EAUR,QAAAgG,GAAsBzF,GACrB,GAAMvB,GAAI,GAAI2H,GAAAX,MAAMzF,EAGpB,OAFA8J,GAAWrL,GACX4D,EAAKzC,EAAAgB,IAAI6D,MAAO,yCAA0ChG,GACnDA,EAYR,QAAAuL,GAA2BC,EAAgBjK,GAC1C,GAAMkK,GAAU,GAAI9D,GAAAX,MAAMzF,GAAU8E,WAAWmF,EAG/C,OAFAH,GAAWI,GACX7H,EAAKzC,EAAAgB,IAAI6D,MAAO,2CAA4CyF,GACrDA,EAAQpJ,QAYhB,QAAAqJ,GAA4BF,EAAgBjK,GAC3C,GAAMoK,GAAW,GAAIhE,GAAAX,MAAMzF,GAAU0E,UAAUuF,GAAInH,SAAS,EAG5D,OAFAgH,GAAWM,GACX/H,EAAKzC,EAAAgB,IAAI6D,MAAO,4CAA6C2F,GACtDA,EAAStJ,QAQjB,QAAAgJ,GAAoBJ,GACdlB,GACJC,IAGDiB,EAAI1H,UAAUsG,GAEV3H,IAAaf,EAAAgB,IAAIC,MACpB6I,EAAIlG,OAAO7C,GAGPD,GACJgJ,EAAInG,QAAQ7C,GAGb2J,EAAYX,GAWb,QAAAX,KACMP,GACJC,GAGD,IAAM6B,GAAO,GAAIxB,GAAAC,OACXwB,EAAUD,EAAK1E,KAAKC,KAAKyE,EAO/B,OANAA,GAAKtI,UAAUsG,EAAeiC,GAC9BjC,EAAcjH,gBAAgBkJ,GAC9BD,EAAKxJ,QAELuJ,EAAYC,GACZjI,EAAKzC,EAAAgB,IAAI6D,MAAO,uCAAwC6F,GACjDA,EASR,QAAAE,GAA2BC,GAC1BA,EAAUhC,KAAK1K,MACf2M,EAAcxC,KAAKuC,GACnBpI,EAAKzC,EAAAgB,IAAI6D,MAAO,iCAAkCgG,EAAU/L,MAG7D,QAAA2D,GAAcoB,EAAYC,EAAiBC,GACtCF,EAAQ9C,IAGRgD,EACHC,QAAQC,IAAIH,EAASC,GAErBC,QAAQC,IAAIH,IAId,QAAAI,GAAcC,EAAW0D,GACxB,IAAK/G,EACJ,MAAOqD,GAAK0D,EAGb,KACC1D,EAAK0D,GACJ,MAAOvD,GACRN,QAAQO,KAAKD,IAIf,QAAAmG,GAAqB5C,GACpB,IAAK,GAAIrJ,GAAI,EAAGA,EAAIuK,EAAatE,OAAQjG,IACxC0F,EAAK6E,EAAavK,GAAIqJ,GAcxB,QAAAyB,GAAoBK,GACnB,GAAIzD,GAAKyD,EAAYoB,CACjBC,KACH9E,EAAK,EACL8E,GAAgB,GAIb9E,EAAK,MACRlC,QAAQO,KAAK,kDAAoDpB,KAAKC,MAAM8C,GAAM,0BAClFA,EAAK,KAGNwD,EAAOxD,GACP6E,EAAWpB,EACXP,EAAYC,EAAaC,GR8R1BrK,OAAOC,eAAenB,EAAS,cAAgB+B,OAAO,GQjpBtD,IAAAE,GAAA3B,EAAA,GAOA4M,EAAA5M,EAAA,EAqBuBN,GAAAmN,OArBdD,EAAA9F,UACT,IAKIuD,GAGAU,EARJF,EAAA7K,EAAA,GACAmI,EAAAnI,EAAA,GACA8L,EAAA9L,EAAA,GACA4L,EAAA5L,EAAA,IAGIuK,GAAc,EACdoC,GAAgB,EAEhBD,EAAW,EACXhK,EAAWf,EAAAgB,IAAIC,KACfH,GAAO,EACLiI,KAEA+B,IAGK/M,GAAAoN,UAMApN,EAAA6L,KAAO,EAGlB7L,EAAA0K,UAIA1K,EAAA4K,aAaA5K,EAAA+K,qBAUA/K,EAAAiL,wBAeAjL,EAAA8K,OAwBA9K,EAAAuE,eAYAvE,EAAAyE,QAYAzE,EAAA2E,SAaA3E,EAAA6F,SAUA7F,EAAA4F,UASA5F,EAAAyL,UAoBAzL,EAAA2L,SAgBA3L,EAAA8L,QAaA9L,EAAA0I,WAcA1I,EAAA8H,QAgBA9H,EAAAqM,aAgBArM,EAAAwM,cAsCAxM,EAAAoL,SAsBApL,EAAA6M,YAsCA,IAAIvB,GACAI,CACmB,oBAAb,UACTJ,EAAe+B,OAAOC,uBAA0BD,OAAeE,0BAA4BF,OAAOG,6BAAgCH,OAAeI,wBACjJ/B,EAAc2B,OAAOK,sBAAyBL,OAAeM,0BR8gBxD,SAAU1N,EAAQD,EAASM,GAEjC,YAEA,IAAI+G,GAAajH,MAAQA,KAAKiH,WAAc,WACxC,GAAIC,GAAgBpG,OAAOqG,iBACpBC,uBAA2BX,QAAS,SAAU/F,EAAG2G,GAAK3G,EAAE0G,UAAYC,IACvE,SAAU3G,EAAG2G,GAAK,IAAK,GAAI5F,KAAK4F,GAAOA,EAAE7F,eAAeC,KAAIf,EAAEe,GAAK4F,EAAE5F,IACzE,OAAO,UAAUf,EAAG2G,GAEhB,QAASC,KAAOtH,KAAKuH,YAAc7G,EADnCwG,EAAcxG,EAAG2G,GAEjB3G,EAAEa,UAAkB,OAAN8F,EAAavG,OAAO0G,OAAOH,IAAMC,EAAG/F,UAAY8F,EAAE9F,UAAW,GAAI+F,OAGvFxG,QAAOC,eAAenB,EAAS,cAAgB+B,OAAO,GS73BtD,IAAAG,GAAA5B,EAAA,GACAsN,EAAAtN,EAAA,GAYA8K,EAAA,SAAArD,GAAA,QAAAqD,KAAA,GAAApD,GAAA,OAAAD,KAAAzB,MAAAlG,KAAAyN,YAAAzN,IT83BQ,OS73BA4H,GAAAzF,MAAQL,EAAAF,MAAMQ,KACbwF,EAAA1F,UAAY,EACb0F,EAAA5F,QAAU,EACV4F,EAAA3F,SAAW,EACV2F,EAAA8F,OAAS,EACT9F,EAAA+F,cACA/F,EAAAgG,iBTu3BMhG,ESptBf,MA1K4BX,GAAA+D,EAAArD,GAWpBqD,EAAAzJ,UAAA0C,UAAP,SAAiBd,EAAiBoJ,GACjCvM,KAAKuM,KAAOA,EACZvM,KAAKmD,OAASA,GAUR6H,EAAAzJ,UAAA4C,aAAP,SAAoBC,GACnBpE,KAAKkC,UAAYkC,GAUX4G,EAAAzJ,UAAA+B,gBAAP,SAAuBkD,GACtBxG,KAAK2N,WAAWxD,KAAK3D,IAUfwE,EAAAzJ,UAAAgE,mBAAP,SAA0BiB,GACzBxG,KAAK4N,cAAczD,KAAK3D,IAUlBwE,EAAAzJ,UAAA6B,kBAAP,SAAyBoD,GAExB,IADA,GAAIqH,IAAQ,IACC,CACZ,GAAMhF,GAAQ7I,KAAK4N,cAAc9E,QAAQtC,EACzC,KAAe,IAAXqC,EACH,MAAOgF,EAER7N,MAAK4N,cAAc7E,OAAOF,EAAO,GACjCgF,GAAQ,IAYF7C,EAAAzJ,UAAAuM,eAAR,WACC,GAAI9N,KAAK2N,WAAWrH,OAAS,EAAG,CAC/B,IAAK,GAAIjG,GAAI,EAAGA,EAAIL,KAAK2N,WAAWrH,OAAQjG,IAC3CL,KAAK+N,IAAI/N,KAAK2N,WAAWtN,GAE1BL,MAAK2N,cAGN,GAAI3N,KAAK4N,cAActH,OAAS,EAAG,CAClC,IAAK,GAAIjG,GAAI,EAAGA,EAAIL,KAAK4N,cAActH,OAAQjG,IAC9CL,KAAKgO,OAAOhO,KAAK4N,cAAcvN,GAEhCL,MAAK4N,mBAYA5C,EAAAzJ,UAAAsG,KAAP,SAAYE,GACX,GAAI/H,KAAKmC,QAAUL,EAAAF,MAAMsB,IAAzB,CAIAlD,KAAK8N,gBAGL,KAAK,GADC9E,GAAUjB,EAAK/H,KAAKkC,UACjBqK,EAAYvM,KAAKqJ,MAAOkD,EAAMA,EAAOA,EAAK0B,UAClD1B,EAAKvD,EAENhJ,MAAKgC,SAAWgH,EAChBhJ,KAAK0N,SAEL1N,KAAK8N,mBAGC9C,EAAAzJ,UAAAwB,MAAP,WACK/C,KAAKmC,QAAUL,EAAAF,MAAMQ,OACxBpC,KAAKmC,MAAQL,EAAAF,MAAMsB,MAId8H,EAAAzJ,UAAA8C,MAAP,WACKrE,KAAKmC,QAAUL,EAAAF,MAAMsB,MACxBlD,KAAKmC,MAAQL,EAAAF,MAAMyC,QAId2G,EAAAzJ,UAAAgD,OAAP,WACKvE,KAAKmC,QAAUL,EAAAF,MAAMyC,QACxBrE,KAAKmC,MAAQL,EAAAF,MAAMsB,MAId8H,EAAAzJ,UAAAsD,KAAP,WACK7E,KAAKmC,QAAUL,EAAAF,MAAM8C,QAAU1E,KAAKmC,QAAUL,EAAAF,MAAM+C,WAIpD3E,KAAKmD,QAAUnD,KAAKuM,MACvBvM,KAAKmD,OAAOoC,mBAAmBvF,KAAKuM,MAGrCvM,KAAKmC,MAAQL,EAAAF,MAAM8C,SAGbsG,EAAAzJ,UAAAiD,KAAP,WACC,KAAM,IAAI0J,OAAM,sCAGVlD,EAAAzJ,UAAAmC,MAAP,WACC1D,KAAKmC,MAAQL,EAAAF,MAAMQ,MAGb4I,EAAAzJ,UAAA2D,OAAP,WACC,MAAOlF,MAAKmC,QAAUL,EAAAF,MAAMQ,MAGtB4I,EAAAzJ,UAAA4D,UAAP,WACC,MAAOnF,MAAKmC,QAAUL,EAAAF,MAAMsB,KAGtB8H,EAAAzJ,UAAA6D,WAAP,WACC,MAAOpF,MAAKmC,QAAUL,EAAAF,MAAM8C,QAAU1E,KAAKmC,QAAUL,EAAAF,MAAM+C,UAGrDqG,EAAAzJ,UAAA8D,SAAP,WACC,MAAOrF,MAAMmC,QAAUL,EAAAF,MAAMyC,OAE/B2G,GA1K4BwC,EAAAW,UAAfvO,GAAAoL,UTo+BP,SAAUnL,EAAQD,EAASM,GAEjC,YAEAY,QAAOC,eAAenB,EAAS,cAAgB+B,OAAO,GU7+BtD,IAAAwM,GAAA,mBAAAA,KAGQnO,KAAAsG,OAAS,EAyDjB,MAvDQ6H,GAAA5M,UAAAwM,IAAP,SAAWpC,GACV,GAAMyC,GAAUpO,KAAKqO,QAAQ1C,EAAK3L,KAAKsO,SAAM/E,GAAWvJ,UACrCuJ,KAAfvJ,KAAKqJ,OACRrJ,KAAKqJ,MAAQ+E,EACbpO,KAAKsO,KAAOF,OACY7E,KAAdvJ,KAAKsO,OACftO,KAAKsO,KAAKL,UAAYG,EACtBpO,KAAKsO,KAAOF,GAEbpO,KAAKsG,QAAU,GAGT6H,EAAA5M,UAAAyM,OAAP,SAAcrC,GACb,GAAM4C,GAAO5C,MACApC,KAATgF,GAIAA,EAAKC,YAAcxO,WAKAuJ,KAAnBgF,EAAKN,UACRjO,KAAKsO,KAAOC,EAAKE,cAEjBF,EAAKN,UAAUQ,cAAgBF,EAAKE,kBAGVlF,KAAvBgF,EAAKE,cACRzO,KAAKqJ,MAAQkF,EAAKN,UAElBM,EAAKE,cAAcR,UAAYM,EAAKN,UAIrCM,EAAKG,YAAa,EAClBH,EAAKE,kBAAgBlF,GACrBgF,EAAKN,cAAY1E,GACjBgF,EAAKC,cAAYjF,GAGjBvJ,KAAKsG,QAAU,IAGR6H,EAAA5M,UAAA8M,QAAR,SAAgB1C,EAAUgD,EAA6BC,EAAyBC,GAC/E,GAAMN,GAAO5C,CAOb,OANK4C,GAAKG,aACTH,EAAKG,YAAa,EAClBH,EAAKE,cAAgBE,EACrBJ,EAAKN,UAAYW,EACjBL,EAAKC,UAAYK,GAEXN,GAETJ,IA5DsBvO,GAAAuO,aVyiChB,SAAUtO,EAAQD,EAASM,GAEjC,YAEA,IAAI+G,GAAajH,MAAQA,KAAKiH,WAAc,WACxC,GAAIC,GAAgBpG,OAAOqG,iBACpBC,uBAA2BX,QAAS,SAAU/F,EAAG2G,GAAK3G,EAAE0G,UAAYC,IACvE,SAAU3G,EAAG2G,GAAK,IAAK,GAAI5F,KAAK4F,GAAOA,EAAE7F,eAAeC,KAAIf,EAAEe,GAAK4F,EAAE5F,IACzE,OAAO,UAAUf,EAAG2G,GAEhB,QAASC,KAAOtH,KAAKuH,YAAc7G,EADnCwG,EAAcxG,EAAG2G,GAEjB3G,EAAEa,UAAkB,OAAN8F,EAAavG,OAAO0G,OAAOH,IAAMC,EAAG/F,UAAY8F,EAAE9F,UAAW,GAAI+F,OAGvFxG,QAAOC,eAAenB,EAAS,cAAgB+B,OAAO,GW9jCtD,IAAA8F,GAAAvH,EAAA,GAUA2J,EAAA,SAAAlC,GAGC,QAAAkC,GAAYrD,GAAZ,GAAAoB,GACCD,EAAApH,KAAAP,OAAOA,IXwjCD,OWvjCN4H,GAAKkH,SAAWtI,EAChBoB,EAAKvE,OAASuE,EAAKC,KAAKC,KAAKF,GXsjChBA,EW5iCf,MAhB8BX,GAAA4C,EAAAlC,GASrBkC,EAAAtI,UAAAsG,KAAR,SAAaE,GACZ/H,KAAKgC,SAAW+F,EAChB/H,KAAKiC,SAAW,EAChBjC,KAAK8O,WACL9O,KAAKuD,UAAUvD,KAAK6G,aAAckB,EAAI,IACtC/H,KAAK4E,YAEPiF,GAhB8BpC,EAAA1F,UAAjBnC,GAAAiK,YX4kCP,SAAUhK,EAAQD,EAASM,GAEjC,YAEA,IAAI+G,GAAajH,MAAQA,KAAKiH,WAAc,WACxC,GAAIC,GAAgBpG,OAAOqG,iBACpBC,uBAA2BX,QAAS,SAAU/F,EAAG2G,GAAK3G,EAAE0G,UAAYC,IACvE,SAAU3G,EAAG2G,GAAK,IAAK,GAAI5F,KAAK4F,GAAOA,EAAE7F,eAAeC,KAAIf,EAAEe,GAAK4F,EAAE5F,IACzE,OAAO,UAAUf,EAAG2G,GAEhB,QAASC,KAAOtH,KAAKuH,YAAc7G,EADnCwG,EAAcxG,EAAG2G,GAEjB3G,EAAEa,UAAkB,OAAN8F,EAAavG,OAAO0G,OAAOH,IAAMC,EAAG/F,UAAY8F,EAAE9F,UAAW,GAAI+F,OAGvFxG,QAAOC,eAAenB,EAAS,cAAgB+B,OAAO,GYrmCtD,IAAAG,GAAA5B,EAAA,GAGA6O,EAAA7O,EAAA,IACA4M,EAAA5M,EAAA,GACAuH,EAAAvH,EAAA,GACA8L,EAAA9L,EAAA,GAUAwL,EAAA,SAAA/D,GAaC,QAAA+D,GAAYrK,EAAauK,GAAzB,GAAAhE,GACCD,EAAApH,KAAAP,OAAOA,IZslCD,OY/lCC4H,GAAAoH,MAAQ,EAIRpH,EAAAqH,UAAW,EAOlBrH,EAAKvG,OAASA,EACduG,EAAKgE,WAAaA,EAClBhE,EAAKvE,OAASuE,EAAKC,KAAKC,KAAKF,GZklChBA,EY9vBf,MAtW2BX,GAAAyE,EAAA/D,GA6BnB+D,EAAAnK,UAAAmJ,KAAP,SAAYrJ,EAAauK,GACxB5L,KAAKqB,OAASA,EACdrB,KAAK4L,WAAaA,GAUTF,EAAAnK,UAAAyB,SAAV,WAEC,IAAKhD,KAAKqB,OACT,KAAM,IAAI6M,OAAM,gCAIjB,KAAK,GAAI7N,GAAI,EAAGA,EAAIL,KAAK4L,WAAWtF,OAAQjG,IAAK,CAChD,GAAM6O,GAAOlP,KAAK4L,WAAWvL,EAC7B,MAAM6O,IAAQlP,MAAKqB,QAClB,KAAM,IAAI6M,OAAM,iCAAmCgB,GAKrD,IAAKlP,KAAKmD,OACT,KAAM,IAAI+K,OAAM,oCAIZlO,MAAKmP,OACTnP,KAAKoP,OAAStC,EAAA9F,WAAWqI,OACzBrP,KAAKmP,KAAOJ,EAAAO,UAAUxC,EAAA9F,WAAWqI,SAGlCrP,KAAKiD,iBAUIyI,EAAAnK,UAAA0B,cAAV,WACMjD,KAAKuP,cACTvP,KAAKuP,gBAEDvP,KAAKwP,YACTxP,KAAKwP,aAGN,KAAK,GAAInP,GAAI,EAAGA,EAAIL,KAAK4L,WAAWtF,OAAQjG,IAAK,CAChD,GAAM6O,GAAOlP,KAAK4L,WAAWvL,EAGxBL,MAAKyP,MAGTzP,KAAKuP,YAAYL,GAAQlP,KAAKyP,KAAKP,GACnClP,KAAKqB,OAAO6N,GAAQlP,KAAKyP,KAAKP,IAH9BlP,KAAKuP,YAAYL,GAAQlP,KAAKqB,OAAO6N,GAOlClP,KAAKiP,SACRjP,KAAKwP,UAAUN,GAAQlP,KAAKqB,OAAO6N,GAAQlP,KAAK0P,GAAGR,GAEnDlP,KAAKwP,UAAUN,GAAQlP,KAAK0P,GAAGR,KAK1BxD,EAAAnK,UAAAsG,KAAR,SAAaE,GACZ,GAAI/H,KAAKmC,QAAUL,EAAAF,MAAM+C,UAAY3E,KAAKmC,QAAUL,EAAAF,MAAM8C,OAK1D,IADA1E,KAAKgI,UAAYD,EAAK/H,KAAKkC,UACpBlC,KAAKgI,UAAY,GAAG,CAC1BhI,KAAKgC,SAAWhC,KAAKgI,SACrB,IAAMC,GAAWjD,KAAKkD,IAAIlD,KAAKmD,IAAInI,KAAKgC,QAAUhC,KAAKiC,SAAU,GAAI,GACjE0N,EAAM3P,KAAKmP,KAAKlH,EAapB,KAVKjI,KAAKuC,aAAevC,KAAKwC,MAAQ,GAAM,IAC3CmN,EAAM,EAAI3P,KAAKmP,KAAK,EAAIlH,IAIN,IAAfjI,KAAKgP,QACRW,EAAM3K,KAAKC,MAAM0K,EAAM3P,KAAKgP,OAAShP,KAAKgP,OAIvChP,KAAKqB,OACR,IAAK,GAAIhB,GAAI,EAAGA,EAAIL,KAAK4L,WAAWtF,OAAQjG,IAAK,CAChD,GAAM6O,GAAOlP,KAAK4L,WAAWvL,EAC7BL,MAAKqB,OAAO6N,GAAQlP,KAAKuP,YAAYL,IAASlP,KAAKwP,UAAUN,GAAQlP,KAAKuP,YAAYL,IAASS,EAMjG,GAFA3P,KAAKuD,UAAUvD,KAAK6G,aAAc7G,KAAKgI,UAAWC,IAE9CjI,KAAKgC,QAAUhC,KAAKiC,SACvB,MAMD,IAHAjC,KAAKgI,UAAYhI,KAAKgC,QAAUhC,KAAKiC,SAGjCjC,KAAKwC,KAAO,EACfxC,KAAK4P,UACL5P,KAAK+D,cAAc,GACnB/D,KAAKwC,WAHN,CASA,GAAkB,MADlBxC,KAAKsC,KAGJ,WADAtC,MAAK4E,UAIN5E,MAAKiD,gBACLjD,KAAK+D,cAAc,MAYd2H,EAAAnK,UAAAsO,KAAP,SAAYJ,GAEX,MADAzP,MAAKyP,KAAOA,EACLzP,MAYD0L,EAAAnK,UAAAuO,GAAP,SAAUJ,EAASzN,GAGlB,MAFAjC,MAAK0P,GAAKA,EACV1P,KAAKiC,SAAWA,EACTjC,MAWD0L,EAAAnK,UAAAwO,YAAP,SAAmBd,GAElB,MADAjP,MAAKiP,SAAWA,EACTjP,MAWD0L,EAAAnK,UAAAyO,OAAP,SAAcC,EAAWC,GACxB,IAAK,GAAI7P,GAAI,EAAGA,EAAIL,KAAK4L,WAAWtF,OAAQjG,IAAK,CAChD,GAAM6O,GAAOlP,KAAK4L,WAAWvL,EACxB4P,GAAKzO,eAAe0N,KAIzBlP,KAAKqB,OAAO6N,IAASe,EAAKf,GAEtBgB,EACHlQ,KAAKwP,UAAUN,IAASe,EAAKf,GAE7BlP,KAAKuP,YAAYL,IAASe,EAAKf,MAW3BxD,EAAAnK,UAAAmC,MAAP,SAAaC,GACZ,IAAK3D,KAAKuC,aAAevC,KAAKwC,MAAQ,GAAM,EAAG,CAC9C,GAAImM,GAAW3O,KAAKuP,WACpBvP,MAAKuP,YAAcvP,KAAKwP,UACxBxP,KAAKwP,UAAYb,EAEjBA,EAAW3O,KAAKyP,KAChBzP,KAAKyP,KAAOzP,KAAK0P,GACjB1P,KAAK0P,GAAKf,CAEV,IAAM3M,IAAW,EAAKhC,KAAKgC,QAAUhC,KAAKiC,UAAajC,KAAKiC,QAC5DjC,MAAKgC,QAAUgD,KAAKC,MAAgB,IAAVjD,GAAkB,IAE7ChC,KAAKwC,KAAOxC,KAAKuC,aACjBoF,EAAApG,UAAMmC,MAAKnD,KAAAP,KAAC2D,IAQN+H,EAAAnK,UAAAqO,QAAP,WACC,GAAIjB,GAAW3O,KAAKuP,WACpBvP,MAAKuP,YAAcvP,KAAKwP,UACxBxP,KAAKwP,UAAYb,EAEjBA,EAAW3O,KAAKyP,KAChBzP,KAAKyP,KAAOzP,KAAK0P,GACjB1P,KAAK0P,GAAKf,CAEV,IAAM3M,IAAW,EAAKhC,KAAKgC,QAAUhC,KAAKiC,UAAajC,KAAKiC,QAC5DjC,MAAKgC,QAAUgD,KAAKC,MAAgB,IAAVjD,GAAkB,IAExChC,KAAKmC,QAAUL,EAAAF,MAAM+C,WACxB3E,KAAK0D,OAAM,GACX1D,KAAK+C,UAYA2I,EAAAnK,UAAA4O,KAAP,SAAY1E,GAGX,MAFAzL,MAAKuC,aAAekJ,EACpBzL,KAAKwC,KAAOiJ,EACLzL,MAWD0L,EAAAnK,UAAA6O,SAAP,SAAgBpB,GAEf,MADAhP,MAAKgP,MAAQA,EACNhP,MAWD0L,EAAAnK,UAAA8O,WAAP,WACC,IAAKrQ,KAAKmD,OACT,KAAM,IAAI+K,OAAM,wDAEjB,QAAO,GAAIlC,GAAA1D,UAAWrE,UAAUjE,KAAKmD,QAAQsG,OAAOzJ,OAY7C0L,EAAAnK,UAAAwL,OAAR,SAAeuD,GACd,GAAM3P,GAAO2P,CAEb,IAAI3P,IAAQoO,GAAAO,UACX,MAAOP,GAAAO,UAAU3O,EAGlB,MAAM,IAAIuN,OAAM,uBAAyBoC,IAWnC5E,EAAAnK,UAAAgP,UAAP,SAAiBD,GAGhB,MAFAtQ,MAAKoP,OAASkB,EACdtQ,KAAKmP,KAAOnP,KAAK+M,OAAOuD,GACjBtQ,MAUE0L,EAAAnK,UAAAsC,SAAV,WACC7D,KAAKgC,QAAU,GAEjB0J,GAtW2BjE,EAAA1F,UAAdnC,GAAA8L,SZ2xCP,SAAU7L,EAAQD,EAASM,GAEjC,YAEAY,QAAOC,eAAenB,EAAS,cAAgB+B,OAAO,Ga1yCtD,IAAAmL,GAAA5M,EAAA,GAEMsQ,EAAKxL,KAAKwL,GACVC,EAAczL,KAAKwL,GAAK,EAExBE,IAGNA,GAAa5D,EAAA9F,WAAWqI,QAAU,SAACxD,GAClC,MAAOA,IAIR6E,EAAa5D,EAAA9F,WAAW2J,QAAU,SAAC9E,GAClC,MAAOA,GAAIA,GAGZ6E,EAAa5D,EAAA9F,WAAW4J,SAAW,SAAC/E,GACnC,MAAO,GAAIA,EAAIA,EAAIA,GAGpB6E,EAAa5D,EAAA9F,WAAW6J,WAAa,SAAChF,GACrC,MAAIA,GAAI,GACA,EAAIA,EAAIA,EAER,GAAK,EAAIA,EAAIA,EAAIA,GAAK,GAK/B6E,EAAa5D,EAAA9F,WAAW8J,SAAW,SAACjF,GACnC,MAAOA,GAAIA,EAAIA,GAGhB6E,EAAa5D,EAAA9F,WAAW+J,UAAY,SAAClF,GACpC,MAAO,GAAIA,EAAI,EAAIA,EAAIA,EAAIA,EAAIA,EAAIA,GAGpC6E,EAAa5D,EAAA9F,WAAWgK,YAAc,SAACnF,GACtC,MAAIA,GAAI,GACA,EAAIA,EAAIA,EAAIA,EAEZ,GAAK,EAAIA,EAAI,EAAIA,EAAIA,EAAIA,EAAIA,EAAIA,GAAK,GAK/C6E,EAAa5D,EAAA9F,WAAWiK,SAAW,SAACpF,GACnC,MAAOA,GAAIA,EAAIA,EAAIA,GAGpB6E,EAAa5D,EAAA9F,WAAWkK,UAAY,SAACrF,GACpC,GAAMsF,GAAKtF,EAAIA,CACf,OAAO,GAAIA,EAAI,EAAIsF,EAAK,EAAIA,EAAKtF,EAAIsF,EAAKA,GAG3CT,EAAa5D,EAAA9F,WAAWoK,YAAc,SAACvF,GACtC,GAAIA,EAAI,GACP,MAAO,GAAIA,EAAIA,EAAIA,EAAIA,CAEvB,IAAMsF,GAAKtF,EAAIA,CACf,OAAO,IAAK,EAAIA,EAAI,EAAIsF,EAAK,EAAIA,EAAKtF,EAAIsF,EAAKA,GAAM,GAKvDT,EAAa5D,EAAA9F,WAAWqK,QAAU,SAACxF,GAClC,MAAU,KAANA,EACI,EAED,EAAI7G,KAAKsM,IAAIb,EAAc5E,IAGnC6E,EAAa5D,EAAA9F,WAAWuK,SAAW,SAAC1F,GACnC,MAAO7G,MAAKwM,IAAIf,EAAc5E,IAG/B6E,EAAa5D,EAAA9F,WAAWyK,WAAa,SAAC5F,GACrC,MAAIA,GAAI,IACC,EAAI7G,KAAKsM,IAAId,EAAK3E,IAAM,GAExB,EAAI7G,KAAKwM,IAAIhB,GAAM3E,EAAI,MAAS,GAK1C6E,EAAa5D,EAAA9F,WAAW0K,QAAU,SAAC7F,GAClC,MAAO,GAAI7G,KAAK2M,KAAK,EAAI3M,KAAK4M,IAAI/F,EAAG,KAGtC6E,EAAa5D,EAAA9F,WAAW6K,SAAW,SAAChG,GACnC,MAAO7G,MAAK2M,KAAK,EAAI3M,KAAK4M,IAAI,EAAI/F,EAAG,KAGtC6E,EAAa5D,EAAA9F,WAAW8K,WAAa,SAACjG,GACrC,MAAIA,GAAI,IACC,EAAI7G,KAAK2M,KAAK,EAAI,EAAI9F,EAAIA,IAAM,GAEhC,EAAI7G,KAAK2M,KAAU,EAAI9F,EAAR,EAAY,EAAIA,EAAIA,IAAM,GAKnD6E,EAAa5D,EAAA9F,WAAW+K,SAAW,SAAClG,GACnC,MAAOA,GAAIA,EAAIA,EAAIA,EAAIA,GAGxB6E,EAAa5D,EAAA9F,WAAWgL,UAAY,SAACnG,GACpC,QAASA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,GAG9B6E,EAAa5D,EAAA9F,WAAWiL,YAAc,SAACpG,GAEtC,MADAA,IAAK,EACDA,EAAI,EACA,GAAMA,EAAIA,EAAIA,EAAIA,EAAIA,EAEvB,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,IAI1C6E,EAAa5D,EAAA9F,WAAWkL,eAAiB,SAACrG,GACzC,MAAU,KAANA,EACI,EAEK,IAANA,EAAU,EAAI7G,KAAK4M,IAAI,KAAM/F,EAAI,IAGzC6E,EAAa5D,EAAA9F,WAAWmL,gBAAkB,SAACtG,GAC1C,MAAa,KAANA,EAAU,EAAI,EAAI7G,KAAK4M,IAAI,GAAK,GAAK/F,IAG7C6E,EAAa5D,EAAA9F,WAAWoL,kBAAoB,SAACvG,GAC5C,MAAU,KAANA,EACI,EAEE,IAANA,EACI,GAERA,GAAK,EACDA,EAAI,EACA,GAAM7G,KAAK4M,IAAI,KAAM/F,EAAI,GAE1B,IAAuC,EAA9B7G,KAAK4M,IAAI,GAAK,IAAM/F,EAAI,OAIzC6E,EAAa5D,EAAA9F,WAAWqL,WAAa,SAACxG,GACrC,MAAU,KAANA,EACI,GAEA7G,KAAK4M,IAAI,EAAG,IAAM/F,EAAI,IAAM7G,KAAKwM,IAAgB,GAAX3F,EAAI,KAAW7G,KAAKwL,KAGnEE,EAAa5D,EAAA9F,WAAWsL,YAAc,SAACzG,GACtC,MAAU,KAANA,EACI,EAED7G,KAAK4M,IAAI,GAAI,GAAK/F,GAAK7G,KAAKwM,IAAgB,GAAX3F,EAAI,IAAW7G,KAAKwL,IAAM,GAGnEE,EAAa5D,EAAA9F,WAAWuL,cAAgB,SAAC1G,GACxC,MAAU,KAANA,EACI,EAEE,IAANA,EACI,GAERA,GAAK,EACDA,EAAI,GACC,GAAM7G,KAAK4M,IAAI,EAAG,IAAM/F,EAAI,IAAM7G,KAAKwM,IAAgB,GAAX3F,EAAI,KAAW7G,KAAKwL,IAGlE,GAAMxL,KAAK4M,IAAI,GAAI,IAAM/F,EAAI,IAAM7G,KAAKwM,IAAgB,GAAX3F,EAAI,KAAW7G,KAAKwL,IAAM,IAI/EE,EAAa5D,EAAA9F,WAAWwL,QAAU,SAAC3G,GAClC,GAAMnK,GA7KM,OA8KZ,OAAa,KAANmK,EAAU,EAAIA,EAAIA,IAAMnK,EAAI,GAAKmK,EAAInK,IAI7CgP,EAAa5D,EAAA9F,WAAWyL,SAAW,SAAC5G,GACnC,GAAMnK,GAnLM,OAoLZ,OAAa,KAANmK,EAAU,IAAMA,EAAIA,IAAMnK,EAAI,GAAKmK,EAAInK,GAAK,GAGpDgP,EAAa5D,EAAA9F,WAAW0L,WAAa,SAAC7G,GACrC,GAAMnK,GAAIiR,SAEV,OADA9G,IAAK,EACDA,EAAI,EACOA,EAAIA,IAAMnK,EAAI,GAAKmK,EAAInK,GAA9B,GAED,KAAQmK,GAAK,GAAKA,IAAMnK,EAAI,GAAKmK,EAAInK,GAAK,IAIlDgP,EAAa5D,EAAA9F,WAAW4L,WAAa,SAAC/G,GACrC,MAAIA,GAAK,EAAI,KACL,OAASA,EAAIA,EACVA,EAAK,EAAI,KACZ,QAAUA,GAAM,IAAM,MAASA,EAAI,IAChCA,EAAK,IAAM,KACd,QAAUA,GAAM,KAAO,MAASA,EAAI,MAEpC,QAAUA,GAAM,MAAQ,MAASA,EAAI,SAI9C6E,EAAa5D,EAAA9F,WAAW6L,UAAY,SAAChH,GACpC,MAAO,GAAI6E,EAAa5D,EAAA9F,WAAW4L,WAAW,EAAI/G,IAGnD6E,EAAa5D,EAAA9F,WAAW8L,aAAe,SAACjH,GACvC,MAAIA,GAAI,GAC2C,GAA3C6E,EAAa5D,EAAA9F,WAAW6L,UAAc,EAAJhH,GAEa,GAAhD6E,EAAa5D,EAAA9F,WAAW4L,WAAe,EAAJ/G,EAAQ,GAAW,IAGnDjM,EAAA0P,UAAYoB","file":"fatina.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Fatina\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Fatina\"] = factory();\n\telse\n\t\troot[\"Fatina\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Fatina\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Fatina\"] = factory();\n\telse\n\t\troot[\"Fatina\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 6);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar State;\r\n(function (State) {\r\n State[State[\"Idle\"] = 0] = \"Idle\";\r\n State[State[\"Run\"] = 1] = \"Run\";\r\n State[State[\"Pause\"] = 2] = \"Pause\";\r\n State[State[\"Finished\"] = 3] = \"Finished\";\r\n State[State[\"Killed\"] = 4] = \"Killed\";\r\n})(State = exports.State || (exports.State = {}));\r\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar log_1 = __webpack_require__(2);\r\nvar state_1 = __webpack_require__(0);\r\nvar BaseTween = (function () {\r\n function BaseTween() {\r\n this.elapsed = 0;\r\n this.duration = 0;\r\n this.timescale = 1;\r\n this.state = state_1.State.Idle;\r\n this.loopOriginal = 1;\r\n this.loop = 1;\r\n this.yoyoOriginal = 0;\r\n this.yoyo = 0;\r\n this.firstStart = true;\r\n this.recycled = false;\r\n this.safe = true;\r\n this.logLevel = log_1.Log.None;\r\n }\r\n BaseTween.prototype.Start = function () {\r\n if (this.state !== state_1.State.Idle) {\r\n return this;\r\n }\r\n if (this.firstStart) {\r\n this.Validate();\r\n }\r\n else {\r\n this.CheckPosition();\r\n }\r\n this.state = state_1.State.Run;\r\n if (this.recycled) {\r\n if (!this.parent.CheckTickListener(this.tickCb)) {\r\n this.parent.AddTickListener(this.tickCb);\r\n }\r\n this.recycled = false;\r\n }\r\n else {\r\n this.parent.AddTickListener(this.tickCb);\r\n }\r\n if (this.firstStart) {\r\n this.EmitEvent(this.eventStart);\r\n this.firstStart = false;\r\n }\r\n return this;\r\n };\r\n BaseTween.prototype.Recycle = function () {\r\n this.Reset(true);\r\n this.firstStart = true;\r\n this.recycled = true;\r\n };\r\n BaseTween.prototype.Reset = function (skipParent) {\r\n this.state = state_1.State.Idle;\r\n if (!skipParent) {\r\n this.RemoveParentListener();\r\n }\r\n this.loop = this.loopOriginal;\r\n this.LoopInit();\r\n this.EmitEvent(this.eventRestart);\r\n };\r\n BaseTween.prototype.ResetAndStart = function (dtRemains) {\r\n this.LoopInit();\r\n this.EmitEvent(this.eventRestart);\r\n this.state = state_1.State.Run;\r\n if (dtRemains > 0) {\r\n this.tickCb(dtRemains);\r\n }\r\n };\r\n BaseTween.prototype.SetParent = function (ticker) {\r\n this.RemoveParentListener();\r\n this.parent = ticker;\r\n return this;\r\n };\r\n BaseTween.prototype.SetTimescale = function (scale) {\r\n this.timescale = scale;\r\n return this;\r\n };\r\n BaseTween.prototype.Pause = function () {\r\n if (this.state !== state_1.State.Run) {\r\n this.Info(log_1.Log.Info, 'Cannot pause this tween ', this.state);\r\n return;\r\n }\r\n this.state = state_1.State.Pause;\r\n this.RemoveParentListener();\r\n };\r\n BaseTween.prototype.Resume = function () {\r\n if (this.state !== state_1.State.Pause) {\r\n this.Info(log_1.Log.Info, 'Cannot resume this tween ', this.state);\r\n return;\r\n }\r\n this.state = state_1.State.Run;\r\n this.parent.AddTickListener(this.tickCb);\r\n };\r\n BaseTween.prototype.Skip = function (finalValue) {\r\n if (this.state === state_1.State.Killed || this.state === state_1.State.Finished) {\r\n this.Info(log_1.Log.Info, 'Cannot skip this tween ', this.state);\r\n return;\r\n }\r\n if (this.state === state_1.State.Idle) {\r\n this.EmitEvent(this.eventStart);\r\n }\r\n if (finalValue) {\r\n this.tickCb(this.duration - this.elapsed + (this.yoyo * this.duration));\r\n return;\r\n }\r\n this.elapsed = this.duration;\r\n this.Complete();\r\n };\r\n BaseTween.prototype.Kill = function () {\r\n if (this.state === state_1.State.Killed) {\r\n this.Info(log_1.Log.Info, 'Cannot kill this tween ', this.state);\r\n return;\r\n }\r\n this.state = state_1.State.Killed;\r\n this.RemoveParentListener();\r\n this.EmitEvent(this.eventKill);\r\n };\r\n BaseTween.prototype.SetLoop = function (loop) {\r\n this.loopOriginal = Math.round(loop);\r\n this.loop = this.loopOriginal;\r\n return this;\r\n };\r\n BaseTween.prototype.IsIdle = function () {\r\n return this.state === state_1.State.Idle;\r\n };\r\n BaseTween.prototype.IsRunning = function () {\r\n return this.state === state_1.State.Run;\r\n };\r\n BaseTween.prototype.IsFinished = function () {\r\n return this.state === state_1.State.Killed || this.state === state_1.State.Finished;\r\n };\r\n BaseTween.prototype.IsPaused = function () {\r\n return this.state === state_1.State.Pause;\r\n };\r\n BaseTween.prototype.Complete = function () {\r\n if (this.state === state_1.State.Killed || this.state === state_1.State.Finished) {\r\n this.Info(log_1.Log.Info, 'Cannot complete this tween ', this.state);\r\n return;\r\n }\r\n this.state = state_1.State.Finished;\r\n this.RemoveParentListener();\r\n this.EmitEvent(this.eventComplete);\r\n };\r\n BaseTween.prototype.RemoveParentListener = function () {\r\n if (this.parent) {\r\n this.parent.RemoveTickListener(this.tickCb);\r\n }\r\n };\r\n BaseTween.prototype.CheckPosition = function () { };\r\n BaseTween.prototype.Validate = function () { };\r\n BaseTween.prototype.LoopInit = function () {\r\n this.elapsed = 0;\r\n };\r\n BaseTween.prototype.SetSafe = function (safe) {\r\n this.safe = safe;\r\n return this;\r\n };\r\n BaseTween.prototype.SetLog = function (level) {\r\n this.logLevel = level;\r\n return this;\r\n };\r\n BaseTween.prototype.Info = function (level, message, data) {\r\n if (level > this.logLevel) {\r\n return;\r\n }\r\n if (data) {\r\n console.log(message, data);\r\n }\r\n else {\r\n console.log(message);\r\n }\r\n };\r\n BaseTween.prototype.Emit = function (func, args) {\r\n if (!this.safe) {\r\n return func.apply(this, args);\r\n }\r\n try {\r\n func.apply(this, args);\r\n }\r\n catch (e) {\r\n console.warn(e);\r\n }\r\n };\r\n BaseTween.prototype.EmitEvent = function (listeners, args) {\r\n if (!listeners) {\r\n return;\r\n }\r\n for (var i = 0; i < listeners.length; i++) {\r\n this.Emit(listeners[i], args);\r\n }\r\n };\r\n BaseTween.prototype.OnStart = function (cb) {\r\n if (!this.eventStart) {\r\n this.eventStart = new Array(0);\r\n }\r\n this.eventStart[this.eventStart.length] = cb;\r\n this.Info(log_1.Log.Debug, 'onStart');\r\n return this;\r\n };\r\n BaseTween.prototype.OnRestart = function (cb) {\r\n if (!this.eventRestart) {\r\n this.eventRestart = new Array(0);\r\n }\r\n this.eventRestart[this.eventRestart.length] = cb;\r\n this.Info(log_1.Log.Debug, 'onRestart');\r\n return this;\r\n };\r\n BaseTween.prototype.OnUpdate = function (cb) {\r\n if (!this.eventUpdate) {\r\n this.eventUpdate = new Array(0);\r\n }\r\n this.eventUpdate[this.eventUpdate.length] = cb;\r\n return this;\r\n };\r\n BaseTween.prototype.OnKilled = function (cb) {\r\n if (!this.eventKill) {\r\n this.eventKill = new Array(0);\r\n }\r\n this.eventKill[this.eventKill.length] = cb;\r\n this.Info(log_1.Log.Debug, 'onKilled');\r\n return this;\r\n };\r\n BaseTween.prototype.OnComplete = function (cb) {\r\n if (!this.eventComplete) {\r\n this.eventComplete = new Array(0);\r\n }\r\n this.eventComplete[this.eventComplete.length] = cb;\r\n this.Info(log_1.Log.Debug, 'onComplete');\r\n return this;\r\n };\r\n return BaseTween;\r\n}());\r\nexports.BaseTween = BaseTween;\r\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Log;\r\n(function (Log) {\r\n Log[Log[\"None\"] = 0] = \"None\";\r\n Log[Log[\"Info\"] = 1] = \"Info\";\r\n Log[Log[\"Debug\"] = 2] = \"Debug\";\r\n})(Log = exports.Log || (exports.Log = {}));\r\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EasingType;\r\n(function (EasingType) {\r\n EasingType[\"Linear\"] = \"linear\";\r\n EasingType[\"InQuad\"] = \"inQuad\";\r\n EasingType[\"OutQuad\"] = \"outQuad\";\r\n EasingType[\"InOutQuad\"] = \"inOutQuad\";\r\n EasingType[\"InCubic\"] = \"inCubic\";\r\n EasingType[\"OutCubic\"] = \"outCubic\";\r\n EasingType[\"InOutCubic\"] = \"inOutCubic\";\r\n EasingType[\"InQuart\"] = \"inQuart\";\r\n EasingType[\"OutQuart\"] = \"outQuart\";\r\n EasingType[\"InOutQuart\"] = \"inOutQuart\";\r\n EasingType[\"InSine\"] = \"inSine\";\r\n EasingType[\"OutSine\"] = \"outSine\";\r\n EasingType[\"InOutSine\"] = \"inOutSine\";\r\n EasingType[\"InCirc\"] = \"inCirc\";\r\n EasingType[\"OutCirc\"] = \"outCirc\";\r\n EasingType[\"InOutCirc\"] = \"inOutCirc\";\r\n EasingType[\"InQuint\"] = \"inQuint\";\r\n EasingType[\"OutQuint\"] = \"outQuint\";\r\n EasingType[\"InOutQuint\"] = \"inOutQuint\";\r\n EasingType[\"InExponential\"] = \"inExponential\";\r\n EasingType[\"OutExponential\"] = \"outExponential\";\r\n EasingType[\"InOutExponential\"] = \"inOutExponential\";\r\n EasingType[\"InElastic\"] = \"inElastic\";\r\n EasingType[\"OutElastic\"] = \"outElastic\";\r\n EasingType[\"InOutElastic\"] = \"inOutElastic\";\r\n EasingType[\"InBack\"] = \"inBack\";\r\n EasingType[\"OutBack\"] = \"outBack\";\r\n EasingType[\"InOutBack\"] = \"inOutBack\";\r\n EasingType[\"InBounce\"] = \"inBounce\";\r\n EasingType[\"OutBounce\"] = \"outBounce\";\r\n EasingType[\"InOutBounce\"] = \"inOutBounce\";\r\n})(EasingType = exports.EasingType || (exports.EasingType = {}));\r\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar baseTween_1 = __webpack_require__(1);\r\nvar Delay = (function (_super) {\r\n __extends(Delay, _super);\r\n function Delay(duration) {\r\n var _this = _super.call(this) || this;\r\n _this.duration = duration;\r\n _this.tickCb = _this.Tick.bind(_this);\r\n return _this;\r\n }\r\n Delay.prototype.Tick = function (dt) {\r\n this.remainsDt = dt * this.timescale;\r\n while (this.remainsDt > 0) {\r\n this.elapsed += this.remainsDt;\r\n var progress = Math.max(Math.min(this.elapsed / this.duration, 1), 0);\r\n this.EmitEvent(this.eventUpdate, [this.remainsDt, progress]);\r\n if (this.elapsed < this.duration) {\r\n return;\r\n }\r\n this.remainsDt = this.elapsed - this.duration;\r\n this.loop--;\r\n if (this.loop === 0) {\r\n this.Complete();\r\n return;\r\n }\r\n this.ResetAndStart(0);\r\n }\r\n };\r\n return Delay;\r\n}(baseTween_1.BaseTween));\r\nexports.Delay = Delay;\r\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar log_1 = __webpack_require__(2);\r\nvar state_1 = __webpack_require__(0);\r\nvar baseTween_1 = __webpack_require__(1);\r\nvar callback_1 = __webpack_require__(9);\r\nvar delay_1 = __webpack_require__(4);\r\nvar Sequence = (function (_super) {\r\n __extends(Sequence, _super);\r\n function Sequence() {\r\n var _this = _super.call(this) || this;\r\n _this.eventTick = [];\r\n _this.tweens = [];\r\n _this.sequenceIndex = 0;\r\n _this.tickCb = _this.Tick.bind(_this);\r\n return _this;\r\n }\r\n Object.defineProperty(Sequence.prototype, \"Count\", {\r\n get: function () {\r\n return this.tweens.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Sequence.prototype.LoopInit = function () {\r\n this.sequenceIndex = 0;\r\n for (var i = 0; i < this.tweens.length; i++) {\r\n var tweenArray = this.tweens[i];\r\n for (var j = 0; j < tweenArray.length; j++) {\r\n tweenArray[j].Reset();\r\n }\r\n }\r\n };\r\n Sequence.prototype.AddTickListener = function (cb) {\r\n this.eventTick.unshift(cb);\r\n };\r\n Sequence.prototype.RemoveTickListener = function (cb) {\r\n var index = this.eventTick.indexOf(cb);\r\n if (index !== -1) {\r\n this.eventTick.splice(index, 1);\r\n }\r\n };\r\n Sequence.prototype.CheckTickListener = function (cb) {\r\n return false;\r\n };\r\n Sequence.prototype.Tick = function (dt) {\r\n if (this.state === state_1.State.Finished || this.state === state_1.State.Killed) {\r\n return;\r\n }\r\n var localDt = dt * this.timescale;\r\n this.elapsed += localDt;\r\n this.LocalTick(localDt);\r\n };\r\n Sequence.prototype.LocalTick = function (dt, remains) {\r\n if (!this.currentTween) {\r\n this.NextTween();\r\n }\r\n if (this.currentTween) {\r\n for (var i = this.eventTick.length - 1; i >= 0; i--) {\r\n this.eventTick[i](dt);\r\n }\r\n if (remains !== true) {\r\n this.EmitEvent(this.eventUpdate, [dt, 0]);\r\n }\r\n }\r\n var remainsDt = dt;\r\n if (this.currentTween) {\r\n for (var i = 0; i < this.currentTween.length; i++) {\r\n if (this.currentTween[i].state !== state_1.State.Finished) {\r\n return;\r\n }\r\n }\r\n var first = this.currentTween[0];\r\n remainsDt = first.elapsed - first.duration;\r\n this.EmitEvent(this.eventStepEnd, [this.currentTween[0]]);\r\n this.Info(log_1.Log.Debug, 'OnStepEnd', this.eventStepEnd);\r\n this.currentTween = undefined;\r\n this.sequenceIndex++;\r\n if (remainsDt > 0.01) {\r\n this.LocalTick(remainsDt, true);\r\n return;\r\n }\r\n }\r\n if (!this.currentTween && this.tweens.length === this.sequenceIndex) {\r\n this.loop--;\r\n if (this.loop === 0) {\r\n this.Complete();\r\n }\r\n else {\r\n this.ResetAndStart(remainsDt);\r\n }\r\n }\r\n };\r\n Sequence.prototype.NextTween = function () {\r\n this.currentTween = this.tweens[this.sequenceIndex];\r\n if (this.currentTween) {\r\n for (var i = 0; i < this.currentTween.length; i++) {\r\n var tween = this.currentTween[i];\r\n tween.Start();\r\n }\r\n this.EmitEvent(this.eventStepStart, [this.currentTween[0]]);\r\n this.Info(log_1.Log.Debug, 'OnStepStart', this.eventStepStart);\r\n }\r\n };\r\n Sequence.prototype.Append = function (tween) {\r\n tween.SetParent(this);\r\n this.tweens[this.tweens.length] = [tween];\r\n return this;\r\n };\r\n Sequence.prototype.AppendCallback = function (cb) {\r\n var playable = new callback_1.Callback(cb);\r\n playable.SetParent(this);\r\n this.tweens[this.tweens.length] = [playable];\r\n return this;\r\n };\r\n Sequence.prototype.AppendInterval = function (duration) {\r\n var playable = new delay_1.Delay(duration);\r\n playable.SetParent(this);\r\n this.tweens[this.tweens.length] = [playable];\r\n return this;\r\n };\r\n Sequence.prototype.Prepend = function (tween) {\r\n tween.SetParent(this);\r\n this.tweens.unshift([tween]);\r\n return this;\r\n };\r\n Sequence.prototype.PrependCallback = function (cb) {\r\n var playable = new callback_1.Callback(cb);\r\n playable.SetParent(this);\r\n this.tweens.unshift([playable]);\r\n return this;\r\n };\r\n Sequence.prototype.PrependInterval = function (duration) {\r\n var playable = new delay_1.Delay(duration);\r\n playable.SetParent(this);\r\n this.tweens.unshift([playable]);\r\n return this;\r\n };\r\n Sequence.prototype.Skip = function (finalValue) {\r\n if (this.state === state_1.State.Killed || this.state === state_1.State.Finished) {\r\n this.Info(log_1.Log.Info, 'Cannot skip this tween ', this.state);\r\n return;\r\n }\r\n for (var i = 0; i < this.tweens.length; i++) {\r\n var tweenArray = this.tweens[i];\r\n for (var j = 0; j < tweenArray.length; j++) {\r\n var tween = tweenArray[j];\r\n if (tween.elapsed === 0) {\r\n this.EmitEvent(this.eventStepStart, [tween]);\r\n this.Info(log_1.Log.Debug, 'OnStepStart', this.eventStepStart);\r\n }\r\n tween.Skip(finalValue);\r\n this.EmitEvent(this.eventStepEnd, [tween]);\r\n this.Info(log_1.Log.Debug, 'OnStepEnd', this.eventStepEnd);\r\n }\r\n }\r\n _super.prototype.Skip.call(this);\r\n };\r\n Sequence.prototype.Kill = function () {\r\n if (this.state === state_1.State.Killed) {\r\n this.Info(log_1.Log.Info, 'Cannot kill this tween ', this.state);\r\n return;\r\n }\r\n for (var i = 0; i < this.tweens.length; i++) {\r\n var tweenArray = this.tweens[i];\r\n for (var j = 0; j < tweenArray.length; j++) {\r\n tweenArray[j].Kill();\r\n }\r\n }\r\n _super.prototype.Kill.call(this);\r\n };\r\n Sequence.prototype.Join = function (tween) {\r\n if (this.tweens.length === 0) {\r\n return this.Append(tween);\r\n }\r\n tween.SetParent(this);\r\n this.tweens[this.tweens.length - 1].push(tween);\r\n return this;\r\n };\r\n Sequence.prototype.OnStepStart = function (cb) {\r\n if (!this.eventStepStart) {\r\n this.eventStepStart = new Array(0);\r\n }\r\n this.eventStepStart[this.eventStepStart.length] = cb;\r\n return this;\r\n };\r\n Sequence.prototype.OnStepEnd = function (cb) {\r\n if (!this.eventStepEnd) {\r\n this.eventStepEnd = new Array(0);\r\n }\r\n this.eventStepEnd[this.eventStepEnd.length] = cb;\r\n return this;\r\n };\r\n return Sequence;\r\n}(baseTween_1.BaseTween));\r\nexports.Sequence = Sequence;\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar log_1 = __webpack_require__(2);\r\nvar easingType_1 = __webpack_require__(3);\r\nexports.Easing = easingType_1.EasingType;\r\nvar ticker_1 = __webpack_require__(7);\r\nvar delay_1 = __webpack_require__(4);\r\nvar sequence_1 = __webpack_require__(5);\r\nvar tween_1 = __webpack_require__(10);\r\nvar tickerManager;\r\nvar initialized = false;\r\nvar isFirstUpdate = true;\r\nvar lastFrame;\r\nvar lastTime = 0;\r\nvar logLevel = log_1.Log.None;\r\nvar safe = true;\r\nvar eventCreated = [];\r\nvar loadedPlugins = [];\r\nexports.plugin = {};\r\nexports.time = 0;\r\nfunction Elapsed() {\r\n return tickerManager.elapsed;\r\n}\r\nexports.Elapsed = Elapsed;\r\nfunction MainTicker() {\r\n if (!initialized) {\r\n Init();\r\n }\r\n return tickerManager;\r\n}\r\nexports.MainTicker = MainTicker;\r\nfunction AddListenerCreated(cb) {\r\n eventCreated.push(cb);\r\n}\r\nexports.AddListenerCreated = AddListenerCreated;\r\nfunction RemoveListenerCreated(cb) {\r\n var index = eventCreated.indexOf(cb);\r\n if (index !== -1) {\r\n eventCreated.splice(index, 1);\r\n }\r\n}\r\nexports.RemoveListenerCreated = RemoveListenerCreated;\r\nfunction Init(disableAutoTick) {\r\n if (initialized) {\r\n return false;\r\n }\r\n if (!tickerManager) {\r\n tickerManager = new ticker_1.Ticker();\r\n tickerManager.Start();\r\n }\r\n if (typeof (window) !== 'undefined' && !disableAutoTick) {\r\n lastFrame = requestFrame(updateLoop);\r\n }\r\n initialized = true;\r\n return true;\r\n}\r\nexports.Init = Init;\r\nfunction SetTimescale(scale) {\r\n if (!initialized) {\r\n Init();\r\n }\r\n tickerManager.SetTimescale(scale);\r\n}\r\nexports.SetTimescale = SetTimescale;\r\nfunction Pause() {\r\n if (!initialized) {\r\n Init();\r\n }\r\n tickerManager.Pause();\r\n}\r\nexports.Pause = Pause;\r\nfunction Resume() {\r\n if (!initialized) {\r\n Init();\r\n }\r\n tickerManager.Resume();\r\n}\r\nexports.Resume = Resume;\r\nfunction SetLog(level) {\r\n logLevel = level;\r\n}\r\nexports.SetLog = SetLog;\r\nfunction SetSafe(isSafe) {\r\n safe = isSafe;\r\n}\r\nexports.SetSafe = SetSafe;\r\nfunction Destroy() {\r\n if (tickerManager) {\r\n tickerManager.Kill();\r\n }\r\n if (lastFrame) {\r\n cancelFrame(lastFrame);\r\n }\r\n initialized = false;\r\n}\r\nexports.Destroy = Destroy;\r\nfunction Update(timestamp) {\r\n if (!initialized || !tickerManager) {\r\n return;\r\n }\r\n tickerManager.Tick(timestamp);\r\n exports.time += timestamp;\r\n}\r\nexports.Update = Update;\r\nfunction Tween(obj, properties) {\r\n var t = new tween_1.Tween(obj, properties);\r\n AddContext(t);\r\n Info(log_1.Log.Debug, '[Fatina.Manager] Tween Instantiated', t);\r\n return t;\r\n}\r\nexports.Tween = Tween;\r\nfunction Sequence() {\r\n var s = new sequence_1.Sequence();\r\n AddContext(s);\r\n Info(log_1.Log.Debug, '[Fatina.Manager] Sequence Instantiated', s);\r\n return s;\r\n}\r\nexports.Sequence = Sequence;\r\nfunction Delay(duration) {\r\n var d = new delay_1.Delay(duration);\r\n AddContext(d);\r\n Info(log_1.Log.Debug, '[Fatina.Manager] Sequence Instantiated', d);\r\n return d;\r\n}\r\nexports.Delay = Delay;\r\nfunction SetTimeout(fn, duration) {\r\n var timeout = new delay_1.Delay(duration).OnComplete(fn);\r\n AddContext(timeout);\r\n Info(log_1.Log.Debug, '[Fatina.Manager] SetTimeout Instantiated', timeout);\r\n return timeout.Start();\r\n}\r\nexports.SetTimeout = SetTimeout;\r\nfunction SetInterval(fn, duration) {\r\n var interval = new delay_1.Delay(duration).OnRestart(fn).SetLoop(-1);\r\n AddContext(interval);\r\n Info(log_1.Log.Debug, '[Fatina.Manager] SetInterval Instantiated', interval);\r\n return interval.Start();\r\n}\r\nexports.SetInterval = SetInterval;\r\nfunction AddContext(obj) {\r\n if (!initialized) {\r\n Init();\r\n }\r\n obj.SetParent(tickerManager);\r\n if (logLevel !== log_1.Log.None) {\r\n obj.SetLog(logLevel);\r\n }\r\n if (!safe) {\r\n obj.SetSafe(safe);\r\n }\r\n EmitCreated(obj);\r\n}\r\nfunction Ticker() {\r\n if (!initialized) {\r\n Init();\r\n }\r\n var tick = new ticker_1.Ticker();\r\n var handler = tick.Tick.bind(tick);\r\n tick.SetParent(tickerManager, handler);\r\n tickerManager.AddTickListener(handler);\r\n tick.Start();\r\n EmitCreated(tick);\r\n Info(log_1.Log.Debug, '[Fatina.Manager] Ticker Instantiated', tick);\r\n return tick;\r\n}\r\nexports.Ticker = Ticker;\r\nfunction LoadPlugin(newPlugin) {\r\n newPlugin.Init(this);\r\n loadedPlugins.push(newPlugin);\r\n Info(log_1.Log.Debug, '[Fatina.Manager] Plugin Loaded', newPlugin.name);\r\n}\r\nexports.LoadPlugin = LoadPlugin;\r\nfunction Info(level, message, data) {\r\n if (level > logLevel) {\r\n return;\r\n }\r\n if (data) {\r\n console.log(message, data);\r\n }\r\n else {\r\n console.log(message);\r\n }\r\n}\r\nfunction Emit(func, tween) {\r\n if (!safe) {\r\n return func(tween);\r\n }\r\n try {\r\n func(tween);\r\n }\r\n catch (e) {\r\n console.warn(e);\r\n }\r\n}\r\nfunction EmitCreated(tween) {\r\n for (var i = 0; i < eventCreated.length; i++) {\r\n Emit(eventCreated[i], tween);\r\n }\r\n}\r\nvar requestFrame;\r\nvar cancelFrame;\r\nif (typeof (window) !== 'undefined') {\r\n requestFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;\r\n cancelFrame = window.cancelAnimationFrame || window.mozCancelAnimationFrame;\r\n}\r\nfunction updateLoop(timestamp) {\r\n var dt = timestamp - lastTime;\r\n if (isFirstUpdate) {\r\n dt = 1;\r\n isFirstUpdate = false;\r\n }\r\n if (dt > 500) {\r\n console.warn('[Fatina] Delta between two update was too high ' + Math.round(dt) + 'ms. , Capped to 500ms.');\r\n dt = 500;\r\n }\r\n Update(dt);\r\n lastTime = timestamp;\r\n lastFrame = requestFrame(updateLoop);\r\n}\r\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar state_1 = __webpack_require__(0);\r\nvar eventList_1 = __webpack_require__(8);\r\nvar Ticker = (function (_super) {\r\n __extends(Ticker, _super);\r\n function Ticker() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.state = state_1.State.Idle;\r\n _this.timescale = 1;\r\n _this.elapsed = 0;\r\n _this.duration = 0;\r\n _this.update = 0;\r\n _this.eventToAdd = [];\r\n _this.eventToRemove = [];\r\n return _this;\r\n }\r\n Ticker.prototype.SetParent = function (parent, tick) {\r\n this.tick = tick;\r\n this.parent = parent;\r\n };\r\n Ticker.prototype.SetTimescale = function (scale) {\r\n this.timescale = scale;\r\n };\r\n Ticker.prototype.AddTickListener = function (cb) {\r\n this.eventToAdd.push(cb);\r\n };\r\n Ticker.prototype.RemoveTickListener = function (cb) {\r\n this.eventToRemove.push(cb);\r\n };\r\n Ticker.prototype.CheckTickListener = function (cb) {\r\n var found = false;\r\n while (true) {\r\n var index = this.eventToRemove.indexOf(cb);\r\n if (index === -1) {\r\n return found;\r\n }\r\n this.eventToRemove.splice(index, 1);\r\n found = true;\r\n }\r\n };\r\n Ticker.prototype.UpdateListener = function () {\r\n if (this.eventToAdd.length > 0) {\r\n for (var i = 0; i < this.eventToAdd.length; i++) {\r\n this.Add(this.eventToAdd[i]);\r\n }\r\n this.eventToAdd = [];\r\n }\r\n if (this.eventToRemove.length > 0) {\r\n for (var i = 0; i < this.eventToRemove.length; i++) {\r\n this.Remove(this.eventToRemove[i]);\r\n }\r\n this.eventToRemove = [];\r\n }\r\n };\r\n Ticker.prototype.Tick = function (dt) {\r\n if (this.state !== state_1.State.Run) {\r\n return;\r\n }\r\n this.UpdateListener();\r\n var localDt = dt * this.timescale;\r\n for (var tick = this.first; tick; tick = tick.node_next) {\r\n tick(localDt);\r\n }\r\n this.elapsed += localDt;\r\n this.update++;\r\n this.UpdateListener();\r\n };\r\n Ticker.prototype.Start = function () {\r\n if (this.state === state_1.State.Idle) {\r\n this.state = state_1.State.Run;\r\n }\r\n };\r\n Ticker.prototype.Pause = function () {\r\n if (this.state === state_1.State.Run) {\r\n this.state = state_1.State.Pause;\r\n }\r\n };\r\n Ticker.prototype.Resume = function () {\r\n if (this.state === state_1.State.Pause) {\r\n this.state = state_1.State.Run;\r\n }\r\n };\r\n Ticker.prototype.Kill = function () {\r\n if (this.state === state_1.State.Killed || this.state === state_1.State.Finished) {\r\n return;\r\n }\r\n if (this.parent && this.tick) {\r\n this.parent.RemoveTickListener(this.tick);\r\n }\r\n this.state = state_1.State.Killed;\r\n };\r\n Ticker.prototype.Skip = function () {\r\n throw new Error('The main ticker cannot be skipped');\r\n };\r\n Ticker.prototype.Reset = function () {\r\n this.state = state_1.State.Idle;\r\n };\r\n Ticker.prototype.IsIdle = function () {\r\n return this.state === state_1.State.Idle;\r\n };\r\n Ticker.prototype.IsRunning = function () {\r\n return this.state === state_1.State.Run;\r\n };\r\n Ticker.prototype.IsFinished = function () {\r\n return this.state === state_1.State.Killed || this.state === state_1.State.Finished;\r\n };\r\n Ticker.prototype.IsPaused = function () {\r\n return this.state === state_1.State.Pause;\r\n };\r\n return Ticker;\r\n}(eventList_1.EventList));\r\nexports.Ticker = Ticker;\r\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventList = (function () {\r\n function EventList() {\r\n this.length = 0;\r\n }\r\n EventList.prototype.Add = function (obj) {\r\n var newNode = this.GetNode(obj, this.last, undefined, this);\r\n if (this.first === undefined) {\r\n this.first = newNode;\r\n this.last = newNode;\r\n }\r\n else if (this.last !== undefined) {\r\n this.last.node_next = newNode;\r\n this.last = newNode;\r\n }\r\n this.length += 1;\r\n };\r\n EventList.prototype.Remove = function (obj) {\r\n var node = obj;\r\n if (node === undefined) {\r\n return;\r\n }\r\n if (node.node_list !== this) {\r\n return;\r\n }\r\n if (node.node_next === undefined) {\r\n this.last = node.node_previous;\r\n }\r\n else {\r\n node.node_next.node_previous = node.node_previous;\r\n }\r\n if (node.node_previous === undefined) {\r\n this.first = node.node_next;\r\n }\r\n else {\r\n node.node_previous.node_next = node.node_next;\r\n }\r\n node.node_valid = false;\r\n node.node_previous = undefined;\r\n node.node_next = undefined;\r\n node.node_list = undefined;\r\n this.length -= 1;\r\n };\r\n EventList.prototype.GetNode = function (obj, previous, next, list) {\r\n var node = obj;\r\n if (!node.node_valid) {\r\n node.node_valid = true;\r\n node.node_previous = previous;\r\n node.node_next = next;\r\n node.node_list = list;\r\n }\r\n return node;\r\n };\r\n return EventList;\r\n}());\r\nexports.EventList = EventList;\r\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar baseTween_1 = __webpack_require__(1);\r\nvar Callback = (function (_super) {\r\n __extends(Callback, _super);\r\n function Callback(cb) {\r\n var _this = _super.call(this) || this;\r\n _this.callback = cb;\r\n _this.tickCb = _this.Tick.bind(_this);\r\n return _this;\r\n }\r\n Callback.prototype.Tick = function (dt) {\r\n this.elapsed += dt;\r\n this.duration = 0;\r\n this.callback();\r\n this.EmitEvent(this.eventUpdate, [dt, 1]);\r\n this.Complete();\r\n };\r\n return Callback;\r\n}(baseTween_1.BaseTween));\r\nexports.Callback = Callback;\r\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar state_1 = __webpack_require__(0);\r\nvar easing_1 = __webpack_require__(11);\r\nvar easingType_1 = __webpack_require__(3);\r\nvar baseTween_1 = __webpack_require__(1);\r\nvar sequence_1 = __webpack_require__(5);\r\nvar Tween = (function (_super) {\r\n __extends(Tween, _super);\r\n function Tween(object, properties) {\r\n var _this = _super.call(this) || this;\r\n _this.steps = 0;\r\n _this.relative = false;\r\n _this.object = object;\r\n _this.properties = properties;\r\n _this.tickCb = _this.Tick.bind(_this);\r\n return _this;\r\n }\r\n Tween.prototype.Init = function (object, properties) {\r\n this.object = object;\r\n this.properties = properties;\r\n };\r\n Tween.prototype.Validate = function () {\r\n if (!this.object) {\r\n throw new Error('Cant Tween a undefined object');\r\n }\r\n for (var i = 0; i < this.properties.length; i++) {\r\n var prop = this.properties[i];\r\n if (!(prop in this.object)) {\r\n throw new Error('Cant Tween an unknown property' + prop);\r\n }\r\n }\r\n if (!this.parent) {\r\n throw new Error('Cant Start a tween without ticker');\r\n }\r\n if (!this.ease) {\r\n this.easeId = easingType_1.EasingType.Linear;\r\n this.ease = easing_1.easeNames[easingType_1.EasingType.Linear];\r\n }\r\n this.CheckPosition();\r\n };\r\n Tween.prototype.CheckPosition = function () {\r\n if (!this.currentFrom) {\r\n this.currentFrom = {};\r\n }\r\n if (!this.currentTo) {\r\n this.currentTo = {};\r\n }\r\n for (var i = 0; i < this.properties.length; i++) {\r\n var prop = this.properties[i];\r\n if (!this.from) {\r\n this.currentFrom[prop] = this.object[prop];\r\n }\r\n else {\r\n this.currentFrom[prop] = this.from[prop];\r\n this.object[prop] = this.from[prop];\r\n }\r\n if (this.relative) {\r\n this.currentTo[prop] = this.object[prop] + this.to[prop];\r\n }\r\n else {\r\n this.currentTo[prop] = this.to[prop];\r\n }\r\n }\r\n };\r\n Tween.prototype.Tick = function (dt) {\r\n if (this.state === state_1.State.Finished || this.state === state_1.State.Killed) {\r\n return;\r\n }\r\n this.remainsDt = dt * this.timescale;\r\n while (this.remainsDt > 0) {\r\n this.elapsed += this.remainsDt;\r\n var progress = Math.max(Math.min(this.elapsed / this.duration, 1), 0);\r\n var val = this.ease(progress);\r\n if ((this.yoyoOriginal - this.yoyo) % 2 === 1) {\r\n val = 1 - this.ease(1 - progress);\r\n }\r\n if (this.steps !== 0) {\r\n val = Math.round(val * this.steps) / this.steps;\r\n }\r\n if (this.object) {\r\n for (var i = 0; i < this.properties.length; i++) {\r\n var prop = this.properties[i];\r\n this.object[prop] = this.currentFrom[prop] + (this.currentTo[prop] - this.currentFrom[prop]) * val;\r\n }\r\n }\r\n this.EmitEvent(this.eventUpdate, [this.remainsDt, progress]);\r\n if (this.elapsed < this.duration) {\r\n return;\r\n }\r\n this.remainsDt = this.elapsed - this.duration;\r\n if (this.yoyo > 0) {\r\n this.Reverse();\r\n this.ResetAndStart(0);\r\n this.yoyo--;\r\n continue;\r\n }\r\n this.loop--;\r\n if (this.loop === 0) {\r\n this.Complete();\r\n return;\r\n }\r\n this.CheckPosition();\r\n this.ResetAndStart(0);\r\n }\r\n };\r\n Tween.prototype.From = function (from) {\r\n this.from = from;\r\n return this;\r\n };\r\n Tween.prototype.To = function (to, duration) {\r\n this.to = to;\r\n this.duration = duration;\r\n return this;\r\n };\r\n Tween.prototype.SetRelative = function (relative) {\r\n this.relative = relative;\r\n return this;\r\n };\r\n Tween.prototype.Modify = function (diff, updateTo) {\r\n for (var i = 0; i < this.properties.length; i++) {\r\n var prop = this.properties[i];\r\n if (!diff.hasOwnProperty(prop)) {\r\n continue;\r\n }\r\n this.object[prop] += diff[prop];\r\n if (updateTo) {\r\n this.currentTo[prop] += diff[prop];\r\n }\r\n else {\r\n this.currentFrom[prop] += diff[prop];\r\n }\r\n }\r\n };\r\n Tween.prototype.Reset = function (skipParent) {\r\n if ((this.yoyoOriginal - this.yoyo) % 2 === 1) {\r\n var previous = this.currentFrom;\r\n this.currentFrom = this.currentTo;\r\n this.currentTo = previous;\r\n previous = this.from;\r\n this.from = this.to;\r\n this.to = previous;\r\n var elapsed = (1 - (this.elapsed / this.duration)) * this.duration;\r\n this.elapsed = Math.round(elapsed * 1000) / 1000;\r\n }\r\n this.yoyo = this.yoyoOriginal;\r\n _super.prototype.Reset.call(this, skipParent);\r\n };\r\n Tween.prototype.Reverse = function () {\r\n var previous = this.currentFrom;\r\n this.currentFrom = this.currentTo;\r\n this.currentTo = previous;\r\n previous = this.from;\r\n this.from = this.to;\r\n this.to = previous;\r\n var elapsed = (1 - (this.elapsed / this.duration)) * this.duration;\r\n this.elapsed = Math.round(elapsed * 1000) / 1000;\r\n if (this.state === state_1.State.Finished) {\r\n this.Reset(true);\r\n this.Start();\r\n }\r\n };\r\n Tween.prototype.Yoyo = function (time) {\r\n this.yoyoOriginal = time;\r\n this.yoyo = time;\r\n return this;\r\n };\r\n Tween.prototype.SetSteps = function (steps) {\r\n this.steps = steps;\r\n return this;\r\n };\r\n Tween.prototype.ToSequence = function () {\r\n if (!this.parent) {\r\n throw new Error('Cant convert to a sequence, parent ticker not defined');\r\n }\r\n return new sequence_1.Sequence().SetParent(this.parent).Append(this);\r\n };\r\n Tween.prototype.Easing = function (type) {\r\n var name = type;\r\n if (name in easing_1.easeNames) {\r\n return easing_1.easeNames[name];\r\n }\r\n throw new Error('Unknown ease method ' + type);\r\n };\r\n Tween.prototype.SetEasing = function (type) {\r\n this.easeId = type;\r\n this.ease = this.Easing(type);\r\n return this;\r\n };\r\n Tween.prototype.LoopInit = function () {\r\n this.elapsed = 0;\r\n };\r\n return Tween;\r\n}(baseTween_1.BaseTween));\r\nexports.Tween = Tween;\r\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar easingType_1 = __webpack_require__(3);\r\nvar PI = Math.PI;\r\nvar PI_OVER_TWO = Math.PI / 2;\r\nvar BACK = 1.70158;\r\nvar easingByName = {};\r\neasingByName[easingType_1.EasingType.Linear] = function (t) {\r\n return t;\r\n};\r\neasingByName[easingType_1.EasingType.InQuad] = function (t) {\r\n return t * t;\r\n};\r\neasingByName[easingType_1.EasingType.OutQuad] = function (t) {\r\n return 2 * t - t * t;\r\n};\r\neasingByName[easingType_1.EasingType.InOutQuad] = function (t) {\r\n if (t < 0.5) {\r\n return 2 * t * t;\r\n }\r\n else {\r\n return 2 * (2 * t - t * t) - 1;\r\n }\r\n};\r\neasingByName[easingType_1.EasingType.InCubic] = function (t) {\r\n return t * t * t;\r\n};\r\neasingByName[easingType_1.EasingType.OutCubic] = function (t) {\r\n return 3 * t - 3 * t * t + t * t * t;\r\n};\r\neasingByName[easingType_1.EasingType.InOutCubic] = function (t) {\r\n if (t < 0.5) {\r\n return 4 * t * t * t;\r\n }\r\n else {\r\n return 4 * (3 * t - 3 * t * t + t * t * t) - 3;\r\n }\r\n};\r\neasingByName[easingType_1.EasingType.InQuart] = function (t) {\r\n return t * t * t * t;\r\n};\r\neasingByName[easingType_1.EasingType.OutQuart] = function (t) {\r\n var t2 = t * t;\r\n return 4 * t - 6 * t2 + 4 * t2 * t - t2 * t2;\r\n};\r\neasingByName[easingType_1.EasingType.InOutQuart] = function (t) {\r\n if (t < 0.5) {\r\n return 8 * t * t * t * t;\r\n }\r\n else {\r\n var t2 = t * t;\r\n return 8 * (4 * t - 6 * t2 + 4 * t2 * t - t2 * t2) - 7;\r\n }\r\n};\r\neasingByName[easingType_1.EasingType.InSine] = function (t) {\r\n if (t === 1) {\r\n return 1;\r\n }\r\n return 1 - Math.cos(PI_OVER_TWO * t);\r\n};\r\neasingByName[easingType_1.EasingType.OutSine] = function (t) {\r\n return Math.sin(PI_OVER_TWO * t);\r\n};\r\neasingByName[easingType_1.EasingType.InOutSine] = function (t) {\r\n if (t < 0.5) {\r\n return (1 - Math.cos(PI * t)) / 2;\r\n }\r\n else {\r\n return (1 + Math.sin(PI * (t - 0.5))) / 2;\r\n }\r\n};\r\neasingByName[easingType_1.EasingType.InCirc] = function (t) {\r\n return 1 - Math.sqrt(1 - Math.pow(t, 2));\r\n};\r\neasingByName[easingType_1.EasingType.OutCirc] = function (t) {\r\n return Math.sqrt(1 - Math.pow(1 - t, 2));\r\n};\r\neasingByName[easingType_1.EasingType.InOutCirc] = function (t) {\r\n if (t < 0.5) {\r\n return (1 - Math.sqrt(1 - 4 * t * t)) / 2;\r\n }\r\n else {\r\n return (1 + Math.sqrt(-3 + 8 * t - 4 * t * t)) / 2;\r\n }\r\n};\r\neasingByName[easingType_1.EasingType.InQuint] = function (t) {\r\n return t * t * t * t * t;\r\n};\r\neasingByName[easingType_1.EasingType.OutQuint] = function (t) {\r\n return --t * t * t * t * t + 1;\r\n};\r\neasingByName[easingType_1.EasingType.InOutQuint] = function (t) {\r\n t *= 2;\r\n if (t < 1) {\r\n return 0.5 * t * t * t * t * t;\r\n }\r\n return 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n};\r\neasingByName[easingType_1.EasingType.InExponential] = function (t) {\r\n if (t === 1) {\r\n return 1;\r\n }\r\n return t === 0 ? 0 : Math.pow(1024, t - 1);\r\n};\r\neasingByName[easingType_1.EasingType.OutExponential] = function (t) {\r\n return t === 1 ? 1 : 1 - Math.pow(2, -10 * t);\r\n};\r\neasingByName[easingType_1.EasingType.InOutExponential] = function (t) {\r\n if (t === 0) {\r\n return 0;\r\n }\r\n if (t === 1) {\r\n return 1;\r\n }\r\n t *= 2;\r\n if (t < 1) {\r\n return 0.5 * Math.pow(1024, t - 1);\r\n }\r\n return 0.5 * (-Math.pow(2, -10 * (t - 1)) + 2);\r\n};\r\neasingByName[easingType_1.EasingType.InElastic] = function (t) {\r\n if (t === 0) {\r\n return 0;\r\n }\r\n return -Math.pow(2, 10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI);\r\n};\r\neasingByName[easingType_1.EasingType.OutElastic] = function (t) {\r\n if (t === 1) {\r\n return 1;\r\n }\r\n return Math.pow(2, -10 * t) * Math.sin((t - 0.1) * 5 * Math.PI) + 1;\r\n};\r\neasingByName[easingType_1.EasingType.InOutElastic] = function (t) {\r\n if (t === 0) {\r\n return 0;\r\n }\r\n if (t === 1) {\r\n return 1;\r\n }\r\n t *= 2;\r\n if (t < 1) {\r\n return -0.5 * Math.pow(2, 10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI);\r\n }\r\n return 0.5 * Math.pow(2, -10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI) + 1;\r\n};\r\neasingByName[easingType_1.EasingType.InBack] = function (t) {\r\n var s = BACK;\r\n return t === 1 ? 1 : t * t * ((s + 1) * t - s);\r\n};\r\neasingByName[easingType_1.EasingType.OutBack] = function (t) {\r\n var s = BACK;\r\n return t === 0 ? 0 : --t * t * ((s + 1) * t + s) + 1;\r\n};\r\neasingByName[easingType_1.EasingType.InOutBack] = function (t) {\r\n var s = BACK * 1.525;\r\n t *= 2;\r\n if (t < 1) {\r\n return 0.5 * (t * t * ((s + 1) * t - s));\r\n }\r\n return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\r\n};\r\neasingByName[easingType_1.EasingType.OutBounce] = function (t) {\r\n if (t < (1 / 2.75)) {\r\n return 7.5625 * t * t;\r\n }\r\n else if (t < (2 / 2.75)) {\r\n return 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n }\r\n else if (t < (2.5 / 2.75)) {\r\n return 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n }\r\n else {\r\n return 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n }\r\n};\r\neasingByName[easingType_1.EasingType.InBounce] = function (t) {\r\n return 1 - easingByName[easingType_1.EasingType.OutBounce](1 - t);\r\n};\r\neasingByName[easingType_1.EasingType.InOutBounce] = function (t) {\r\n if (t < 0.5) {\r\n return easingByName[easingType_1.EasingType.InBounce](t * 2) * 0.5;\r\n }\r\n return easingByName[easingType_1.EasingType.OutBounce](t * 2 - 1) * 0.5 + 0.5;\r\n};\r\nexports.easeNames = easingByName;\r\n\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// fatina.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 6);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 982c366558f39c21212f","/**\r\n * Possible states of a Tween / Sequence\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum State {\r\n\tIdle,\r\n\tRun,\r\n\tPause,\r\n\tFinished,\r\n\tKilled\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/core/enum/state.ts","import { Log } from '../core/enum/log';\nimport { State } from '../core/enum/state';\nimport { ITicker } from '../core/interfaces/ITicker';\n\n/**\n * Shared behaviors between different types of tweens and sequence\n * Used mostly to manage:\n * - events\n * - state\n * - loop and restart\n *\n * @export\n * @abstract\n * @class BaseTween\n */\nexport abstract class BaseTween> {\n\t// events\n\tprotected eventStart: {(): void}[] | undefined;\n\tprotected eventRestart: {(): void}[] | undefined;\n\tprotected eventUpdate: {(dt: number, progress: number): void}[] | undefined;\n\tprotected eventKill: {(): void}[] | undefined;\n\tprotected eventComplete: {(): void}[] | undefined;\n\n\t// public properties\n\tpublic elapsed = 0;\n\tpublic duration = 0;\n\tpublic timescale = 1;\n\tpublic state: State = State.Idle;\n\n\t// private properties\n\tprotected loopOriginal = 1;\n\tprotected loop = 1;\n\tprotected yoyoOriginal = 0;\n\tprotected yoyo = 0;\n\tprotected parent: ITicker;\n\tprotected tickCb: (dt: number) => void;\n\tprivate firstStart = true;\n\tprivate recycled = false;\n\tprivate safe = true;\n\tprivate logLevel = Log.None;\n\n\t/**\n\t * Method used to start a tween\n\t *\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Start(): T {\n\t\tif (this.state !== State.Idle) {\n\t\t\treturn this as any;\n\t\t}\n\n\t\tif (this.firstStart) {\n\t\t\tthis.Validate();\n\t\t} else {\n\t\t\tthis.CheckPosition();\n\t\t}\n\n\t\tthis.state = State.Run;\n\t\tif (this.recycled) {\n\t\t\tif (!this.parent.CheckTickListener(this.tickCb)) {\n\t\t\t\tthis.parent.AddTickListener(this.tickCb);\n\t\t\t}\n\t\t\tthis.recycled = false;\n\t\t} else {\n\t\t\tthis.parent.AddTickListener(this.tickCb);\n\t\t}\n\n\t\tif (this.firstStart) {\n\t\t\tthis.EmitEvent(this.eventStart);\n\t\t\tthis.firstStart = false;\n\t\t}\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Reset a tween to be reusable (with start)\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Recycle() {\n\t\tthis.Reset(true);\n\t\tthis.firstStart = true;\n\t\tthis.recycled = true;\n\t}\n\n\t/**\n\t * To Reset a Tween already finished (example looping sequence)\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Reset(skipParent?: boolean): void {\n\t\tthis.state = State.Idle;\n\n\t\tif (!skipParent) {\n\t\t\tthis.RemoveParentListener();\n\t\t}\n\n\t\tthis.loop = this.loopOriginal;\n\t\tthis.LoopInit();\n\t\tthis.EmitEvent(this.eventRestart);\n\t}\n\n\t/**\n\t * To immediately Reset a tween without stopping/restarting it\n\t * This is faster than calling manually Reset() & Start() & Tick()\n\t *\n\t * @param {number} dtRemains\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic ResetAndStart(dtRemains: number) {\n\t\tthis.LoopInit();\n\t\tthis.EmitEvent(this.eventRestart);\n\n\t\tthis.state = State.Run;\n\t\tif (dtRemains > 0) {\n\t\t\tthis.tickCb(dtRemains);\n\t\t}\n\t}\n\n\t/**\n\t * Method used to define the ticker of this tween\n\t * When Fatina.Tween is used, the main ticker is automatically defined as parent\n\t *\n\t * @param {ITicker} ticker\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic SetParent(ticker: ITicker): T {\n\t\tthis.RemoveParentListener();\n\t\tthis.parent = ticker;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Method used to change the timescale of the tween\n\t *\n\t * @param {number} scale\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic SetTimescale(scale: number): T {\n\t\tthis.timescale = scale;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Method used to pause a tween or a sequence (only work if the tween runs)\n\t *\n\t * @returns {void}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Pause(): void {\n\t\tif (this.state !== State.Run) {\n\t\t\tthis.Info(Log.Info, 'Cannot pause this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = State.Pause;\n\t\tthis.RemoveParentListener();\n\t}\n\n\t/**\n\t * Method used to resume a tween or a sequence (only work if the tween is paused)\n\t *\n\t * @returns {void}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Resume(): void {\n\t\tif (this.state !== State.Pause) {\n\t\t\tthis.Info(Log.Info, 'Cannot resume this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = State.Run;\n\t\tthis.parent.AddTickListener(this.tickCb);\n\t}\n\n\t/**\n\t * Method used to Skip this tween or sequence and directly finish it\n\t *\n\t * @param {boolean} [finalValue]\n\t * @returns {void}\n\t * @memberOf BaseTween\n\t */\n\tpublic Skip(finalValue?: boolean): void {\n\t\tif (this.state === State.Killed || this.state === State.Finished) {\n\t\t\tthis.Info(Log.Info, 'Cannot skip this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.state === State.Idle) {\n\t\t\tthis.EmitEvent(this.eventStart);\n\t\t}\n\n\t\tif (finalValue) {\n\t\t\tthis.tickCb(this.duration - this.elapsed + (this.yoyo * this.duration));\n\t\t\treturn;\n\t\t}\n\n\t\tthis.elapsed = this.duration;\n\t\tthis.Complete();\n\t}\n\n\t/**\n\t * Method used to Stop/Kill a tween or a sequence\n\t *\n\t * @returns {void}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic Kill(): void {\n\t\tif (this.state === State.Killed) {\n\t\t\tthis.Info(Log.Info, 'Cannot kill this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = State.Killed;\n\t\tthis.RemoveParentListener();\n\t\tthis.EmitEvent(this.eventKill);\n\t}\n\n\t/**\n\t * Method used to define how many time the tween has to loop\n\t * Extra: if -1 the tween will loop forever\n\t *\n\t * @param {number} loop\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic SetLoop(loop: number): T {\n\t\tthis.loopOriginal = Math.round(loop);\n\t\tthis.loop = this.loopOriginal;\n\t\treturn this as any;\n\t}\n\n\tpublic IsIdle(): boolean {\n\t\treturn this.state === State.Idle;\n\t}\n\n\tpublic IsRunning(): boolean {\n\t\treturn this.state === State.Run;\n\t}\n\n\tpublic IsFinished(): boolean {\n\t\treturn this.state === State.Killed || this.state === State.Finished;\n\t}\n\n\tpublic IsPaused(): boolean {\n\t\treturn this. state === State.Pause;\n\t}\n\n\tprotected Complete(): void {\n\t\tif (this.state === State.Killed || this.state === State.Finished) {\n\t\t\tthis.Info(Log.Info, 'Cannot complete this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = State.Finished;\n\t\tthis.RemoveParentListener();\n\t\tthis.EmitEvent(this.eventComplete);\n\t}\n\n\tprotected RemoveParentListener() {\n\t\tif (this.parent) {\n\t\t\tthis.parent.RemoveTickListener(this.tickCb);\n\t\t}\n\t}\n\n\tprotected CheckPosition(): void {}\n\tprotected Validate(): void {}\n\tprotected LoopInit(): void {\n\t\tthis.elapsed = 0;\n\t}\n\n\tpublic SetSafe(safe: boolean): T {\n\t\tthis.safe = safe;\n\t\treturn this as any;\n\t}\n\n\tpublic SetLog(level: Log): T {\n\t\tthis.logLevel = level;\n\t\treturn this as any;\n\t}\n\n\tprotected Info(level: Log, message: string, data?: any) {\n\t\tif (level > this.logLevel) {\n\t\t\treturn;\n\t\t}\n\t\tif (data) {\n\t\t\tconsole.log(message, data);\n\t\t} else {\n\t\t\tconsole.log(message);\n\t\t}\n\t}\n\n\tprivate Emit(func: any, args: any) {\n\t\tif (!this.safe) {\n\t\t\treturn func.apply(this, args);\n\t\t}\n\t\ttry {\n\t\t\tfunc.apply(this, args);\n\t\t} catch (e) {\n\t\t\tconsole.warn(e);\n\t\t}\n\t}\n\n\tprotected EmitEvent(listeners: any, args?: any) {\n\t\tif (!listeners) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < listeners.length; i++) {\n\t\t\tthis.Emit(listeners[i], args);\n\t\t}\n\t}\n\n\t/**\n\t * Callback called when the tween started\n\t *\n\t * @param {() => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnStart(cb: () => void): T {\n\t\tif (!this.eventStart) {\n\t\t\tthis.eventStart = new Array(0);\n\t\t}\n\t\tthis.eventStart[this.eventStart.length] = cb;\n\t\tthis.Info(Log.Debug, 'onStart');\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Callback called when the tween restart (loop)\n\t *\n\t * @param {() => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnRestart(cb: () => void): T {\n\t\tif (!this.eventRestart) {\n\t\t\tthis.eventRestart = new Array(0);\n\t\t}\n\t\tthis.eventRestart[this.eventRestart.length] = cb;\n\t\tthis.Info(Log.Debug, 'onRestart');\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Callback called when the tween is updated\n\t *\n\t * @param {(dt: number, progress: number) => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnUpdate(cb: (dt: number, progress: number) => void): T {\n\t\tif (!this.eventUpdate) {\n\t\t\tthis.eventUpdate = new Array(0);\n\t\t}\n\t\tthis.eventUpdate[this.eventUpdate.length] = cb;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Callback called when the tween is manually killed\n\t *\n\t * @param {() => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnKilled(cb: () => void): T {\n\t\tif (!this.eventKill) {\n\t\t\tthis.eventKill = new Array(0);\n\t\t}\n\t\tthis.eventKill[this.eventKill.length] = cb;\n\t\tthis.Info(Log.Debug, 'onKilled');\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Callback called when the tween is finished\n\t *\n\t * @param {() => void} cb\n\t * @returns {T}\n\t *\n\t * @memberOf BaseTween\n\t */\n\tpublic OnComplete(cb: () => void): T {\n\t\tif (!this.eventComplete) {\n\t\t\tthis.eventComplete = new Array(0);\n\t\t}\n\t\tthis.eventComplete[this.eventComplete.length] = cb;\n\t\tthis.Info(Log.Debug, 'onComplete');\n\t\treturn this as any;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/baseTween.ts","/**\n * Enum use to set the verbosity level of fatina and tweens\n *\n * @export\n * @enum {number}\n */\nexport enum Log {\n\tNone = 0,\n\tInfo = 1,\n\tDebug = 2\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/core/enum/log.ts","\r\n/**\r\n * List of all easing methods\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum EasingType {\r\n\tLinear = 'linear',\r\n\tInQuad = 'inQuad',\r\n\tOutQuad = 'outQuad',\r\n\tInOutQuad = 'inOutQuad',\r\n\tInCubic = 'inCubic',\r\n\tOutCubic = 'outCubic',\r\n\tInOutCubic = 'inOutCubic',\r\n\tInQuart = 'inQuart',\r\n\tOutQuart = 'outQuart',\r\n\tInOutQuart = 'inOutQuart',\r\n\tInSine = 'inSine',\r\n\tOutSine = 'outSine',\r\n\tInOutSine = 'inOutSine',\r\n\tInCirc = 'inCirc',\r\n\tOutCirc = 'outCirc',\r\n\tInOutCirc = 'inOutCirc',\r\n\tInQuint = 'inQuint',\r\n\tOutQuint = 'outQuint',\r\n\tInOutQuint = 'inOutQuint',\r\n\tInExponential = 'inExponential',\r\n\tOutExponential = 'outExponential',\r\n\tInOutExponential = 'inOutExponential',\r\n\tInElastic = 'inElastic',\r\n\tOutElastic = 'outElastic',\r\n\tInOutElastic = 'inOutElastic',\r\n\tInBack = 'inBack',\r\n\tOutBack = 'outBack',\r\n\tInOutBack = 'inOutBack',\r\n\tInBounce = 'inBounce',\r\n\tOutBounce = 'outBounce',\r\n\tInOutBounce = 'inOutBounce'\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/easing/easingType.ts","import { IPlayable } from '../core/interfaces/IPlayable';\r\nimport { BaseTween } from './baseTween';\r\n\r\n/**\r\n * Fake tween used to delay other tweens in a sequence\r\n *\r\n * @export\r\n * @class Delay\r\n * @extends {BaseTween}\r\n * @implements {IPlayable}\r\n */\r\nexport class Delay extends BaseTween implements IPlayable {\r\n\tprivate remainsDt: number;\r\n\r\n\tconstructor(duration: number) {\r\n\t\tsuper();\r\n\t\tthis.duration = duration;\r\n\t\tthis.tickCb = this.Tick.bind(this);\r\n\t}\r\n\r\n\tprivate Tick(dt: number) {\r\n\t\tthis.remainsDt = dt * this.timescale;\r\n\r\n\t\twhile (this.remainsDt > 0) {\r\n\t\t\tthis.elapsed += this.remainsDt;\r\n\t\t\tconst progress = Math.max(Math.min(this.elapsed / this.duration, 1), 0);\r\n\t\t\tthis.EmitEvent(this.eventUpdate, [this.remainsDt, progress]);\r\n\r\n\t\t\tif (this.elapsed < this.duration) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.remainsDt = this.elapsed - this.duration;\r\n\t\t\tthis.loop--;\r\n\t\t\tif (this.loop === 0) {\r\n\t\t\t\tthis.Complete();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.ResetAndStart(0);\r\n\t\t}\r\n\t}\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/delay.ts","import { Log } from '../core/enum/log';\nimport { State } from '../core/enum/state';\nimport { IPlayable } from '../core/interfaces/IPlayable';\nimport { ISequence } from '../core/interfaces/ISequence';\nimport { ITicker } from '../core/interfaces/ITicker';\nimport { ITween } from '../core/interfaces/ITween';\nimport { BaseTween } from './baseTween';\nimport { Callback } from './callback';\nimport { Delay } from './delay';\n\n/**\n * Sequence: used to animate other tweens or sequence\n * Can play them sequentially or in parallel\n *\n * @export\n * @class Sequence\n * @extends {BaseTween}\n * @implements {ISequence}\n * @implements {ITicker}\n * @implements {IPlayable}\n */\nexport class Sequence extends BaseTween implements ISequence, ITicker, IPlayable {\n\t// events\n\tprivate eventStepStart: {(tween: ITween | IPlayable): void}[] | undefined;\n\tprivate eventStepEnd: {(tween: ITween | IPlayable): void}[] | undefined;\n\n\t// public properties\n\tpublic currentTween: (ITween | IPlayable)[] | undefined;\n\n\t// private properties\n\tprivate eventTick: {(dt: number): void}[] = [];\n\tprivate tweens: ((ITween | IPlayable)[])[] = [];\n\tprivate sequenceIndex = 0;\n\n\tpublic get Count(): number {\n\t\treturn this.tweens.length;\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.tickCb = this.Tick.bind(this);\n\t}\n\n\tprotected LoopInit() {\n\t\tthis.sequenceIndex = 0;\n\t\tfor (let i = 0; i < this.tweens.length; i++) {\n\t\t\tconst tweenArray = this.tweens[i];\n\t\t\tfor (let j = 0; j < tweenArray.length; j++) {\n\t\t\t\ttweenArray[j].Reset();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic AddTickListener(cb: (dt: number) => void): void {\n\t\tthis.eventTick.unshift(cb);\n\t}\n\n\tpublic RemoveTickListener(cb: (dt: number) => void): void {\n\t\tconst index = this.eventTick.indexOf(cb);\n\t\tif (index !== -1) {\n\t\t\tthis.eventTick.splice(index, 1);\n\t\t}\n\t}\n\n\tpublic CheckTickListener(cb: (dt: number) => void): boolean {\n\t\treturn false;\n\t}\n\n\tprivate Tick(dt: number) {\n\t\tif (this.state === State.Finished || this.state === State.Killed) {\n\t\t\treturn;\n\t\t}\n\t\tconst localDt = dt * this.timescale;\n\t\tthis.elapsed += localDt;\n\t\tthis.LocalTick(localDt);\n\t}\n\n\tprivate LocalTick(dt: number, remains?: boolean) {\n\t\t// If no current tween, take the first one and start it\n\t\tif (!this.currentTween) {\n\t\t\tthis.NextTween();\n\t\t}\n\n\t\tif (this.currentTween) {\n\t\t\t// Tick every listener\n\t\t\tfor (let i = this.eventTick.length - 1; i >= 0; i--) {\n\t\t\t\tthis.eventTick[i](dt);\n\t\t\t}\n\n\t\t\t// Dont emit update event for remains dt\n\t\t\tif (remains !== true) {\n\t\t\t\tthis.EmitEvent(this.eventUpdate, [dt, 0]);\n\t\t\t}\n\t\t}\n\n\t\tlet remainsDt = dt;\n\n\t\t// Current tween over\n\t\tif (this.currentTween) {\n\t\t\tfor (let i = 0; i < this.currentTween.length; i++) {\n\t\t\t\tif (this.currentTween[i].state !== State.Finished) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst first = this.currentTween[0];\n\t\t\tremainsDt = first.elapsed - first.duration;\n\n\t\t\tthis.EmitEvent(this.eventStepEnd, [this.currentTween[0]]);\n\t\t\tthis.Info(Log.Debug, 'OnStepEnd', this.eventStepEnd);\n\t\t\tthis.currentTween = undefined;\n\t\t\tthis.sequenceIndex++;\n\n\t\t\tif (remainsDt > 0.01) {\n\t\t\t\tthis.LocalTick(remainsDt, true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Complete\n\t\tif (!this.currentTween && this.tweens.length === this.sequenceIndex) {\n\t\t\tthis.loop--;\n\t\t\tif (this.loop === 0) {\n\t\t\t\tthis.Complete();\n\t\t\t} else {\n\t\t\t\tthis.ResetAndStart(remainsDt);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate NextTween() {\n\t\tthis.currentTween = this.tweens[this.sequenceIndex];\n\t\tif (this.currentTween) {\n\t\t\tfor (let i = 0; i < this.currentTween.length; i++) {\n\t\t\t\tconst tween = this.currentTween[i];\n\t\t\t\ttween.Start();\n\t\t\t}\n\n\t\t\tthis.EmitEvent(this.eventStepStart, [this.currentTween[0]]);\n\t\t\tthis.Info(Log.Debug, 'OnStepStart', this.eventStepStart);\n\t\t}\n\t}\n\n\tpublic Append(tween: ITween | ISequence): ISequence {\n\t\ttween.SetParent(this);\n\t\tthis.tweens[this.tweens.length] = [tween];\n\t\treturn this;\n\t}\n\n\tpublic AppendCallback(cb: () => void): ISequence {\n\t\tconst playable = new Callback(cb);\n\t\tplayable.SetParent(this);\n\t\tthis.tweens[this.tweens.length] = [playable];\n\t\treturn this;\n\t}\n\n\tpublic AppendInterval(duration: number): ISequence {\n\t\tconst playable = new Delay(duration);\n\t\tplayable.SetParent(this);\n\t\tthis.tweens[this.tweens.length] = [playable];\n\t\treturn this;\n\t}\n\n\tpublic Prepend(tween: ITween | ISequence): ISequence {\n\t\ttween.SetParent(this);\n\t\tthis.tweens.unshift([tween]);\n\t\treturn this;\n\t}\n\n\tpublic PrependCallback(cb: () => void): ISequence {\n\t\tconst playable = new Callback(cb);\n\t\tplayable.SetParent(this);\n\t\tthis.tweens.unshift([playable]);\n\t\treturn this;\n\t}\n\n\tpublic PrependInterval(duration: number): ISequence {\n\t\tconst playable = new Delay(duration);\n\t\tplayable.SetParent(this);\n\t\tthis.tweens.unshift([playable]);\n\t\treturn this;\n\t}\n\n\tpublic Skip(finalValue?: boolean): void {\n\t\tif (this.state === State.Killed || this.state === State.Finished) {\n\t\t\tthis.Info(Log.Info, 'Cannot skip this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < this.tweens.length; i++) {\n\t\t\tconst tweenArray = this.tweens[i];\n\t\t\tfor (let j = 0; j < tweenArray.length; j++) {\n\t\t\t\tconst tween = tweenArray[j];\n\t\t\t\tif (tween.elapsed === 0) {\n\t\t\t\t\tthis.EmitEvent(this.eventStepStart, [tween]);\n\t\t\t\t\tthis.Info(Log.Debug, 'OnStepStart', this.eventStepStart);\n\t\t\t\t}\n\t\t\t\ttween.Skip(finalValue);\n\t\t\t\tthis.EmitEvent(this.eventStepEnd, [tween]);\n\t\t\t\tthis.Info(Log.Debug, 'OnStepEnd', this.eventStepEnd);\n\t\t\t}\n\t\t}\n\t\tsuper.Skip();\n\t}\n\n\tpublic Kill(): void {\n\t\tif (this.state === State.Killed) {\n\t\t\tthis.Info(Log.Info, 'Cannot kill this tween ', this.state);\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < this.tweens.length; i++) {\n\t\t\tconst tweenArray = this.tweens[i];\n\t\t\tfor (let j = 0; j < tweenArray.length; j++) {\n\t\t\t\ttweenArray[j].Kill();\n\t\t\t}\n\t\t}\n\n\t\tsuper.Kill();\n\t}\n\n\tpublic Join(tween: ITween | ISequence): ISequence {\n\t\tif (this.tweens.length === 0) {\n\t\t\treturn this.Append(tween);\n\t\t}\n\t\ttween.SetParent(this);\n\t\tthis.tweens[this.tweens.length - 1].push(tween);\n\t\treturn this;\n\t}\n\n\tpublic OnStepStart(cb: (index: ITween | IPlayable) => void): ISequence {\n\t\tif (!this.eventStepStart) {\n\t\t\tthis.eventStepStart = new Array(0);\n\t\t}\n\t\tthis.eventStepStart[this.eventStepStart.length] = cb;\n\t\treturn this;\n\t}\n\n\tpublic OnStepEnd(cb: (index: ITween | IPlayable) => void): ISequence {\n\t\tif (!this.eventStepEnd) {\n\t\t\tthis.eventStepEnd = new Array(0);\n\t\t}\n\t\tthis.eventStepEnd[this.eventStepEnd.length] = cb;\n\t\treturn this;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/sequence.ts","import { Log } from './core/enum/log';\nimport { IControl } from './core/interfaces/IControl';\nimport { IPlayable } from './core/interfaces/IPlayable';\nimport { IPlugin } from './core/interfaces/IPlugin';\nimport { ISequence } from './core/interfaces/ISequence';\nimport { ITicker } from './core/interfaces/ITicker';\nimport { ITween } from './core/interfaces/ITween';\nimport { EasingType } from './easing/easingType';\nimport { Ticker as ticker } from './ticker';\nimport { Delay as delay } from './tweens/delay';\nimport { Sequence as sequence } from './tweens/sequence';\nimport { Tween as tween } from './tweens/tween';\n\nlet tickerManager: ticker;\nlet initialized = false;\nlet isFirstUpdate = true;\nlet lastFrame: any;\nlet lastTime = 0;\nlet logLevel = Log.None;\nlet safe = true;\nconst eventCreated: {(control: IControl): void}[] = [];\n\nconst loadedPlugins: IPlugin[] = [];\n\n// Area for plugins to add helpers / dynamic method\nexport let plugin: any = {};\n\n// Expose the easing enum\nexport { EasingType as Easing };\n\n// real time of Fatina (not affected by timescale, pause, ...)\nexport let time = 0;\n\n// time updated internally (affected by timescale, pause, ...)\nexport function Elapsed(): number {\n\treturn tickerManager.elapsed;\n}\n\nexport function MainTicker(): ITicker {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\treturn tickerManager;\n}\n\n/**\n * Add a listener method on tween/sequence creation\n *\n * @export\n * @param {(control: IControl) => void} cb\n */\nexport function AddListenerCreated(cb: (control: IControl) => void): void {\n\teventCreated.push(cb);\n}\n\n/**\n * Remove a listener method on tween/sequence creation\n *\n * @export\n * @param {(control: IControl) => void} cb\n */\nexport function RemoveListenerCreated(cb: (control: IControl) => void): void {\n\tconst index = eventCreated.indexOf(cb);\n\tif (index !== -1) {\n\t\teventCreated.splice(index, 1);\n\t}\n}\n\n/**\n * Method used when Fatina is used for the first time.\n * Can take few ms. (pool initialization & object creation)\n *\n * @export\n * @param {boolean} [disableAutoTick]\n * @returns {boolean}\n */\nexport function Init(disableAutoTick?: boolean): boolean {\n\tif (initialized) {\n\t\treturn false;\n\t}\n\n\tif (!tickerManager) {\n\t\ttickerManager = new ticker();\n\t\ttickerManager.Start();\n\t}\n\n\tif (typeof(window) !== 'undefined' && !disableAutoTick) {\n\t\tlastFrame = requestFrame(updateLoop);\n\t}\n\n\tinitialized = true;\n\treturn true;\n}\n\n/**\n * Used to change the timescale of the whole game\n *\n * @export\n * @param {number} scale\n */\nexport function SetTimescale(scale: number): void {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\ttickerManager.SetTimescale(scale);\n}\n\n/**\n * This method pause the update loop (update are not called anymore)\n *\n * @export\n */\nexport function Pause(): void {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\ttickerManager.Pause();\n}\n\n/**\n * This method resume the update loop (works only if the game was paused before)\n *\n * @export\n */\nexport function Resume(): void {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\ttickerManager.Resume();\n}\n\n/**\n * This method is used to change the log level\n *\n * @export\n * @param {Log} level\n */\nexport function SetLog(level: Log) {\n\tlogLevel = level;\n}\n\n/**\n * This method is used to enable / disable the callback try/catch\n *\n * @export\n * @param {boolean} isSafe\n */\nexport function SetSafe(isSafe: boolean) {\n\tsafe = isSafe;\n}\n\n/**\n * This method kill the main ticker, the pool of tween and stop any requestAnimationFrame\n *\n * @export\n */\nexport function Destroy() {\n\tif (tickerManager) {\n\t\ttickerManager.Kill();\n\t}\n\n\tif (lastFrame) {\n\t\tcancelFrame(lastFrame);\n\t}\n\n\tinitialized = false;\n}\n\n/**\n * Method used to tick all the child (tween or sequence)\n * This takes cares of recycling the old tween/sequence\n *\n * @export\n * @param {number} timestamp\n * @returns {*}\n */\nexport function Update(timestamp: number): any {\n\tif (!initialized || !tickerManager) {\n\t\treturn;\n\t}\n\ttickerManager.Tick(timestamp);\n\ttime += timestamp;\n}\n\n/**\n * Helper to create a tween (use the tween pool)\n *\n * @export\n * @param {*} obj\n * @param {string[]} properties\n * @returns {ITween}\n */\nexport function Tween(obj: any, properties: string[]): ITween {\n\tconst t = new tween(obj, properties);\n\tAddContext(t);\n\tInfo(Log.Debug, '[Fatina.Manager] Tween Instantiated', t);\n\treturn t;\n}\n\n/**\n * Helper to create a Sequence (use the sequence pool)\n *\n * @export\n * @returns {ISequence}\n */\nexport function Sequence(): ISequence {\n\tconst s = new sequence();\n\tAddContext(s);\n\tInfo(Log.Debug, '[Fatina.Manager] Sequence Instantiated', s);\n\treturn s;\n}\n\n/**\n * Helper to create a Delay\n *\n * @export\n * @param {number} duration\n * @returns {IPlayable}\n */\nexport function Delay(duration: number): IPlayable {\n\tconst d = new delay(duration);\n\tAddContext(d);\n\tInfo(Log.Debug, '[Fatina.Manager] Sequence Instantiated', d);\n\treturn d;\n}\n\n/**\n * Helper used to replace usage of normal js setTimeout() by a tween\n * https://www.w3schools.com/jsref/met_win_settimeout.asp\n *\n * @export\n * @param {() => void} fn\n * @param {number} duration\n * @returns {IPlayable}\n */\nexport function SetTimeout(fn: () => void, duration: number): IPlayable {\n\tconst timeout = new delay(duration).OnComplete(fn);\n\tAddContext(timeout);\n\tInfo(Log.Debug, '[Fatina.Manager] SetTimeout Instantiated', timeout);\n\treturn timeout.Start();\n}\n\n/**\n * Helper used to replace usage of normal js setInterval() by a tween\n * https://www.w3schools.com/jsref/met_win_setinterval.asp\n *\n * @export\n * @param {() => void} fn\n * @param {number} duration\n * @returns {IPlayable}\n */\nexport function SetInterval(fn: () => void, duration: number): IPlayable {\n\tconst interval = new delay(duration).OnRestart(fn).SetLoop(-1);\n\tAddContext(interval);\n\tInfo(Log.Debug, '[Fatina.Manager] SetInterval Instantiated', interval);\n\treturn interval.Start();\n}\n\n/**\n * Private method to set common data to every object (the parent ticker, safe mode, verbose mode)\n *\n * @param {(IPlayable | ITween | ISequence)} obj\n */\nfunction AddContext(obj: IPlayable | ITween | ISequence): void {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\n\tobj.SetParent(tickerManager as ITicker);\n\n\tif (logLevel !== Log.None) {\n\t\tobj.SetLog(logLevel);\n\t}\n\n\tif (!safe) {\n\t\tobj.SetSafe(safe);\n\t}\n\n\tEmitCreated(obj);\n}\n\n/**\n * Create or Get a ticker with a defined name\n * This ticker is a child of the main ticker\n *\n * @export\n * @param {string} name\n * @returns {ITicker}\n */\nexport function Ticker(): ITicker {\n\tif (!initialized) {\n\t\tInit();\n\t}\n\n\tconst tick = new ticker();\n\tconst handler = tick.Tick.bind(tick);\n\ttick.SetParent(tickerManager, handler);\n\ttickerManager.AddTickListener(handler);\n\ttick.Start();\n\n\tEmitCreated(tick);\n\tInfo(Log.Debug, '[Fatina.Manager] Ticker Instantiated', tick);\n\treturn tick;\n}\n\n/**\n * Initialize a plugin by passing fatina object to it\n *\n * @export\n * @param {IPlugin} newPlugin\n */\nexport function LoadPlugin(newPlugin: IPlugin) {\n\tnewPlugin.Init(this);\n\tloadedPlugins.push(newPlugin);\n\tInfo(Log.Debug, '[Fatina.Manager] Plugin Loaded', newPlugin.name);\n}\n\nfunction Info(level: Log, message: string, data?: any) {\n\tif (level > logLevel) {\n\t\treturn;\n\t}\n\tif (data) {\n\t\tconsole.log(message, data);\n\t} else {\n\t\tconsole.log(message);\n\t}\n}\n\nfunction Emit(func: any, tween: IControl) {\n\tif (!safe) {\n\t\treturn func(tween);\n\t}\n\n\ttry {\n\t\tfunc(tween);\n\t} catch (e) {\n\t\tconsole.warn(e);\n\t}\n}\n\nfunction EmitCreated(tween: IControl) {\n\tfor (let i = 0; i < eventCreated.length; i++) {\n\t\tEmit(eventCreated[i], tween);\n\t}\n}\n\n/**\n * This part manage the auto-update loop if necessary (browser only)\n */\nlet requestFrame: any;\nlet cancelFrame: any;\nif (typeof(window) !== 'undefined') {\n\trequestFrame = window.requestAnimationFrame || (window as any).mozRequestAnimationFrame || window.webkitRequestAnimationFrame || (window as any).msRequestAnimationFrame;\n\tcancelFrame = window.cancelAnimationFrame || (window as any).mozCancelAnimationFrame;\n}\n\nfunction updateLoop(timestamp: number) {\n\tlet dt = timestamp - lastTime;\n\tif (isFirstUpdate) {\n\t\tdt = 1;\n\t\tisFirstUpdate = false;\n\t}\n\n\t// cap to 500 ms\n\tif (dt > 500) {\n\t\tconsole.warn('[Fatina] Delta between two update was too high ' + Math.round(dt) + 'ms. , Capped to 500ms.');\n\t\tdt = 500;\n\t}\n\n\tUpdate(dt);\n\tlastTime = timestamp;\n\tlastFrame = requestFrame(updateLoop);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/index.ts","import { State } from './core/enum/state';\r\nimport { EventList } from './core/eventList';\r\nimport { ITicker } from './core/interfaces/ITicker';\r\n\r\n/**\r\n * Main Fatina Ticker\r\n * Parent of all the normal tween and sequence\r\n *\r\n * @export\r\n * @class Ticker\r\n * @extends {EventList}\r\n * @implements {ITicker}\r\n */\r\nexport class Ticker extends EventList implements ITicker {\r\n\tpublic state = State.Idle;\r\n\tprivate timescale = 1;\r\n\tpublic elapsed = 0;\r\n\tpublic duration = 0;\r\n\tprivate update = 0;\r\n\tprivate eventToAdd: { (dt: number): void }[] = [];\r\n\tprivate eventToRemove: { (dt: number): void }[] = [];\r\n\tpublic tick: (dt: number) => void | undefined;\r\n\tprivate parent: ITicker;\r\n\r\n\tpublic SetParent(parent: ITicker, tick: (dt: number) => void) {\r\n\t\tthis.tick = tick;\r\n\t\tthis.parent = parent;\r\n\t}\r\n\r\n\t/**\r\n\t * Method used to change the timescale\r\n\t *\r\n\t * @param {number} scale\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic SetTimescale(scale: number): void {\r\n\t\tthis.timescale = scale;\r\n\t}\r\n\r\n\t/**\r\n\t * Method used by the child to be updated\r\n\t *\r\n\t * @param {(dt: number) => void} cb\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic AddTickListener(cb: (dt: number) => void): void {\r\n\t\tthis.eventToAdd.push(cb);\r\n\t}\r\n\r\n\t/**\r\n\t * Method used by the child to not receive update anymore\r\n\t *\r\n\t * @param {(dt: number) => void} cb\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic RemoveTickListener(cb: (dt: number) => void): void {\r\n\t\tthis.eventToRemove.push(cb);\r\n\t}\r\n\r\n\t/**\r\n\t * Internal method used to cancel a stop (restart in the same frame)\r\n\t *\r\n\t * @param {(dt: number) => void} cb\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic CheckTickListener(cb: (dt: number) => void): boolean {\r\n\t\tlet found = false;\r\n\t\twhile (true) {\r\n\t\t\tconst index = this.eventToRemove.indexOf(cb);\r\n\t\t\tif (index === -1) {\r\n\t\t\t\treturn found;\r\n\t\t\t}\r\n\t\t\tthis.eventToRemove.splice(index, 1);\r\n\t\t\tfound = true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Method used to update the array of listener\r\n\t * This is mostly for performance reason, being able to batch this operation in the updateLoop\r\n\t *\r\n\t * @private\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tprivate UpdateListener() {\r\n\t\tif (this.eventToAdd.length > 0) {\r\n\t\t\tfor (let i = 0; i < this.eventToAdd.length; i++) {\r\n\t\t\t\tthis.Add(this.eventToAdd[i]);\r\n\t\t\t}\r\n\t\t\tthis.eventToAdd = [];\r\n\t\t}\r\n\r\n\t\tif (this.eventToRemove.length > 0) {\r\n\t\t\tfor (let i = 0; i < this.eventToRemove.length; i++) {\r\n\t\t\t\tthis.Remove(this.eventToRemove[i]);\r\n\t\t\t}\r\n\t\t\tthis.eventToRemove = [];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Method used to tick all the child (tick listeners)\r\n\t *\r\n\t * @param {number} dt\r\n\t * @returns\r\n\t *\r\n\t * @memberOf Ticker\r\n\t */\r\n\tpublic Tick(dt: number) {\r\n\t\tif (this.state !== State.Run) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.UpdateListener();\r\n\r\n\t\tconst localDt = dt * this.timescale;\r\n\t\tfor (let tick: any = this.first; tick; tick = tick.node_next) {\r\n\t\t\ttick(localDt);\r\n\t\t}\r\n\t\tthis.elapsed += localDt;\r\n\t\tthis.update++;\r\n\r\n\t\tthis.UpdateListener();\r\n\t}\r\n\r\n\tpublic Start(): void {\r\n\t\tif (this.state === State.Idle) {\r\n\t\t\tthis.state = State.Run;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Pause(): void {\r\n\t\tif (this.state === State.Run) {\r\n\t\t\tthis.state = State.Pause;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Resume(): void {\r\n\t\tif (this.state === State.Pause) {\r\n\t\t\tthis.state = State.Run;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Kill(): void {\r\n\t\tif (this.state === State.Killed || this.state === State.Finished) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.parent && this.tick) {\r\n\t\t\tthis.parent.RemoveTickListener(this.tick);\r\n\t\t}\r\n\r\n\t\tthis.state = State.Killed;\r\n\t}\r\n\r\n\tpublic Skip(): void {\r\n\t\tthrow new Error('The main ticker cannot be skipped');\r\n\t}\r\n\r\n\tpublic Reset(): void {\r\n\t\tthis.state = State.Idle;\r\n\t}\r\n\r\n\tpublic IsIdle(): boolean {\r\n\t\treturn this.state === State.Idle;\r\n\t}\r\n\r\n\tpublic IsRunning(): boolean {\r\n\t\treturn this.state === State.Run;\r\n\t}\r\n\r\n\tpublic IsFinished(): boolean {\r\n\t\treturn this.state === State.Killed || this.state === State.Finished;\r\n\t}\r\n\r\n\tpublic IsPaused(): boolean {\r\n\t\treturn this. state === State.Pause;\r\n\t}\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/ticker.ts","/**\r\n * Simple DoublyList used for events management\r\n * Not really reusable, optimized only to append, remove and iterate\r\n *\r\n * @export\r\n * @abstract\r\n * @class EventList\r\n */\r\nexport abstract class EventList {\r\n\tpublic first: INode | undefined;\r\n\tpublic last: INode | undefined;\r\n\tpublic length = 0;\r\n\r\n\tpublic Add(obj: any): void {\r\n\t\tconst newNode = this.GetNode(obj, this.last, undefined, this);\r\n\t\tif (this.first === undefined) {\r\n\t\t\tthis.first = newNode;\r\n\t\t\tthis.last = newNode;\r\n\t\t} else if (this.last !== undefined) {\r\n\t\t\tthis.last.node_next = newNode;\r\n\t\t\tthis.last = newNode;\r\n\t\t}\r\n\t\tthis.length += 1;\r\n\t}\r\n\r\n\tpublic Remove(obj: any): void {\r\n\t\tconst node = obj as INode;\r\n\t\tif (node === undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (node.node_list !== this) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Removing any existing reference to the node\r\n\t\tif (node.node_next === undefined) {\r\n\t\t\tthis.last = node.node_previous;\r\n\t\t} else {\r\n\t\t\tnode.node_next.node_previous = node.node_previous;\r\n\t\t}\r\n\r\n\t\tif (node.node_previous === undefined) {\r\n\t\t\tthis.first = node.node_next;\r\n\t\t} else {\r\n\t\t\tnode.node_previous.node_next = node.node_next;\r\n\t\t}\r\n\r\n\t\t// Removing any existing reference from the node\r\n\t\tnode.node_valid = false;\r\n\t\tnode.node_previous = undefined;\r\n\t\tnode.node_next = undefined;\r\n\t\tnode.node_list = undefined;\r\n\r\n\t\t// One less node in the list\r\n\t\tthis.length -= 1;\r\n\t}\r\n\r\n\tprivate GetNode(obj: any, previous: INode | undefined, next: INode | undefined, list: EventList): INode {\r\n\t\tconst node = obj as INode;\r\n\t\tif (!node.node_valid) {\r\n\t\t\tnode.node_valid = true;\r\n\t\t\tnode.node_previous = previous;\r\n\t\t\tnode.node_next = next;\r\n\t\t\tnode.node_list = list;\r\n\t\t}\r\n\t\treturn node;\r\n\t}\r\n}\r\n\r\nexport interface INode {\r\n\tnode_valid: boolean;\r\n\tnode_previous: INode | undefined;\r\n\tnode_next: INode | undefined;\r\n\tnode_list: EventList | undefined;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/core/eventList.ts","import { IPlayable } from '../core/interfaces/IPlayable';\r\nimport { BaseTween } from './baseTween';\r\n\r\n/**\r\n * Fake tween used to append or join callback in a sequence\r\n *\r\n * @export\r\n * @class Callback\r\n * @extends {BaseTween}\r\n * @implements {IPlayable}\r\n */\r\nexport class Callback extends BaseTween implements IPlayable {\r\n\tprivate callback: () => void;\r\n\r\n\tconstructor(cb: () => void) {\r\n\t\tsuper();\r\n\t\tthis.callback = cb;\r\n\t\tthis.tickCb = this.Tick.bind(this);\r\n\t}\r\n\r\n\tprivate Tick(dt: number) {\r\n\t\tthis.elapsed += dt;\r\n\t\tthis.duration = 0;\r\n\t\tthis.callback();\r\n\t\tthis.EmitEvent(this.eventUpdate, [dt, 1]);\r\n\t\tthis.Complete();\r\n\t}\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/callback.ts","import { State } from '../core/enum/state';\nimport { ISequence } from '../core/interfaces/ISequence';\nimport { ITween } from '../core/interfaces/ITween';\nimport { easeNames } from '../easing/easing';\nimport { EasingType } from '../easing/easingType';\nimport { BaseTween } from './baseTween';\nimport { Sequence } from './sequence';\n\n/**\n * Tween: Used to animate values of an object\n *\n * @export\n * @class Tween\n * @extends {BaseTween}\n * @implements {ITween}\n */\nexport class Tween extends BaseTween implements ITween {\n\tprivate object: any;\n\tprivate properties: string[];\n\tprivate from: any;\n\tprivate to: any;\n\tprivate steps = 0;\n\tprivate currentFrom: any;\n\tprivate currentTo: any;\n\tprivate remainsDt: number;\n\tprivate relative = false;\n\tprivate ease: (t: number) => number;\n\tprivate easeId: EasingType | string;\n\n\tconstructor(object: any, properties: string[]) {\n\t\tsuper();\n\n\t\tthis.object = object;\n\t\tthis.properties = properties;\n\t\tthis.tickCb = this.Tick.bind(this);\n\t}\n\n\t/**\n\t * Used to define the object and the properties modified by this tween\n\t *\n\t * @param {*} object\n\t * @param {string[]} properties\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic Init(object: any, properties: string[]) {\n\t\tthis.object = object;\n\t\tthis.properties = properties;\n\t}\n\n\t/**\n\t * Method used on start to check the values of this tween\n\t *\n\t * @protected\n\t *\n\t * @memberOf Tween\n\t */\n\tprotected Validate() {\n\t\t// Check the object\n\t\tif (!this.object) {\n\t\t\tthrow new Error('Cant Tween a undefined object');\n\t\t}\n\n\t\t// Check the properties of that object\n\t\tfor (let i = 0; i < this.properties.length; i++) {\n\t\t\tconst prop = this.properties[i];\n\t\t\tif (!(prop in this.object)) {\n\t\t\t\tthrow new Error('Cant Tween an unknown property' + prop);\n\t\t\t}\n\t\t}\n\n\t\t// Check this tween will be updated\n\t\tif (!this.parent) {\n\t\t\tthrow new Error('Cant Start a tween without ticker');\n\t\t}\n\n\t\t// Easing\n\t\tif (!this.ease) {\n\t\t\tthis.easeId = EasingType.Linear;\n\t\t\tthis.ease = easeNames[EasingType.Linear];\n\t\t}\n\n\t\tthis.CheckPosition();\n\t}\n\n\t/**\n\t * Method used to calculate currentFrom/currentTo based on the config\n\t *\n\t * @protected\n\t *\n\t * @memberOf Tween\n\t */\n\tprotected CheckPosition() {\n\t\tif (!this.currentFrom) {\n\t\t\tthis.currentFrom = {};\n\t\t}\n\t\tif (!this.currentTo) {\n\t\t\tthis.currentTo = {};\n\t\t}\n\n\t\tfor (let i = 0; i < this.properties.length; i++) {\n\t\t\tconst prop = this.properties[i];\n\n\t\t\t// From\n\t\t\tif (!this.from) {\n\t\t\t\tthis.currentFrom[prop] = this.object[prop];\n\t\t\t} else {\n\t\t\t\tthis.currentFrom[prop] = this.from[prop];\n\t\t\t\tthis.object[prop] = this.from[prop];\n\t\t\t}\n\n\t\t\t// Relative\n\t\t\tif (this.relative) {\n\t\t\t\tthis.currentTo[prop] = this.object[prop] + this.to[prop];\n\t\t\t} else {\n\t\t\t\tthis.currentTo[prop] = this.to[prop];\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate Tick(dt: number) {\n\t\tif (this.state === State.Finished || this.state === State.Killed) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.remainsDt = dt * this.timescale;\n\t\twhile (this.remainsDt > 0) {\n\t\t\tthis.elapsed += this.remainsDt;\n\t\t\tconst progress = Math.max(Math.min(this.elapsed / this.duration, 1), 0);\n\t\t\tlet val = this.ease(progress);\n\n\t\t\t// Yoyo easing (need to be reversed)\n\t\t\tif ((this.yoyoOriginal - this.yoyo) % 2 === 1) {\n\t\t\t\tval = 1 - this.ease(1 - progress);\n\t\t\t}\n\n\t\t\t// Steps behaviour\n\t\t\tif (this.steps !== 0) {\n\t\t\t\tval = Math.round(val * this.steps) / this.steps;\n\t\t\t}\n\n\t\t\t// Update if the object still exist\n\t\t\tif (this.object) {\n\t\t\t\tfor (let i = 0; i < this.properties.length; i++) {\n\t\t\t\t\tconst prop = this.properties[i];\n\t\t\t\t\tthis.object[prop] = this.currentFrom[prop] + (this.currentTo[prop] - this.currentFrom[prop]) * val;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.EmitEvent(this.eventUpdate, [this.remainsDt, progress]);\n\n\t\t\tif (this.elapsed < this.duration) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.remainsDt = this.elapsed - this.duration;\n\n\t\t\t// Yoyo effect ( A -> B -> A )\n\t\t\tif (this.yoyo > 0) {\n\t\t\t\tthis.Reverse();\n\t\t\t\tthis.ResetAndStart(0);\n\t\t\t\tthis.yoyo--;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Loop management\n\t\t\tthis.loop--;\n\t\t\tif (this.loop === 0) {\n\t\t\t\tthis.Complete();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.CheckPosition();\n\t\t\tthis.ResetAndStart(0);\n\t\t}\n\t}\n\n\t/**\n\t * Method used to set the values at the beginning of the tween\n\t *\n\t * @param {*} from\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic From(from: any): ITween {\n\t\tthis.from = from;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used to set the values at the end of the tween\n\t *\n\t * @param {*} to\n\t * @param {number} duration\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic To(to: any, duration: number): ITween {\n\t\tthis.to = to;\n\t\tthis.duration = duration;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used to define if the tween as to work in relative or not\n\t *\n\t * @param {boolean} relative\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic SetRelative(relative: boolean): ITween {\n\t\tthis.relative = relative;\n\t\treturn this;\n\t}\n\n\t/**\n\t * To apply a modifier on a current tween\n\t *\n\t * @param {*} diff\n\t * @param {boolean} updateTo\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic Modify(diff: any, updateTo: boolean): void {\n\t\tfor (let i = 0; i < this.properties.length; i++) {\n\t\t\tconst prop = this.properties[i];\n\t\t\tif (!diff.hasOwnProperty(prop)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthis.object[prop] += diff[prop];\n\n\t\t\tif (updateTo) {\n\t\t\t\tthis.currentTo[prop] += diff[prop];\n\t\t\t} else {\n\t\t\t\tthis.currentFrom[prop] += diff[prop];\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Overwrite the Reset (just for yoyo)\n\t *\n\t * @param {boolean} [skipParent]\n\t * @memberOf Tween\n\t */\n\tpublic Reset(skipParent?: boolean): void {\n\t\tif ((this.yoyoOriginal - this.yoyo) % 2 === 1) {\n\t\t\tlet previous = this.currentFrom;\n\t\t\tthis.currentFrom = this.currentTo;\n\t\t\tthis.currentTo = previous;\n\n\t\t\tprevious = this.from;\n\t\t\tthis.from = this.to;\n\t\t\tthis.to = previous;\n\n\t\t\tconst elapsed = (1 - (this.elapsed / this.duration)) * this.duration;\n\t\t\tthis.elapsed = Math.round(elapsed * 1000) / 1000;\n\t\t}\n\t\tthis.yoyo = this.yoyoOriginal;\n\t\tsuper.Reset(skipParent);\n\t}\n\n\t/**\n\t * Method used to reverse the tween\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic Reverse(): void {\n\t\tlet previous = this.currentFrom;\n\t\tthis.currentFrom = this.currentTo;\n\t\tthis.currentTo = previous;\n\n\t\tprevious = this.from;\n\t\tthis.from = this.to;\n\t\tthis.to = previous;\n\n\t\tconst elapsed = (1 - (this.elapsed / this.duration)) * this.duration;\n\t\tthis.elapsed = Math.round(elapsed * 1000) / 1000;\n\n\t\tif (this.state === State.Finished) {\n\t\t\tthis.Reset(true);\n\t\t\tthis.Start();\n\t\t}\n\t}\n\n\t/**\n\t * Method used to reverse the tween N times at the end\n\t *\n\t * @param {number} time\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic Yoyo(time: number): ITween {\n\t\tthis.yoyoOriginal = time;\n\t\tthis.yoyo = time;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used to Quantify the tween value to a certain amount of steps\n\t *\n\t * @param {number} steps\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic SetSteps(steps: number): ITween {\n\t\tthis.steps = steps;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used to create a sequence with this tween as first value.\n\t * Usually used with .AppendInterval(1250) or .PrependInterval(160) to add a delay\n\t *\n\t * @returns {ISequence}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic ToSequence(): ISequence {\n\t\tif (!this.parent) {\n\t\t\tthrow new Error('Cant convert to a sequence, parent ticker not defined');\n\t\t}\n\t\treturn new Sequence().SetParent(this.parent).Append(this);\n\t}\n\n\t/**\n\t * Private easing method (resolve the right method and set it)\n\t *\n\t * @private\n\t * @param {(EasingType | string)} type\n\t * @returns {(t: number) => number}\n\t *\n\t * @memberOf Tween\n\t */\n\tprivate Easing(type: EasingType | string): (t: number) => number {\n\t\tconst name = type as string;\n\n\t\tif (name in easeNames) {\n\t\t\treturn easeNames[name];\n\t\t}\n\n\t\tthrow new Error('Unknown ease method ' + type);\n\t}\n\n\t/**\n\t * Method used to set the type of easing for this tween\n\t *\n\t * @param {(EasingType | string)} type\n\t * @returns {ITween}\n\t *\n\t * @memberOf Tween\n\t */\n\tpublic SetEasing(type: EasingType | string): ITween {\n\t\tthis.easeId = type;\n\t\tthis.ease = this.Easing(type);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Method used when the tween is reset (loop)\n\t *\n\t * @protected\n\t *\n\t * @memberOf Tween\n\t */\n\tprotected LoopInit() {\n\t\tthis.elapsed = 0;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/tweens/tween.ts","/**\r\n * List of easing method\r\n *\r\n * Mostly based on http://easings.net/\r\n */\r\nimport { EasingType } from './easingType';\r\n\r\nconst PI = Math.PI;\r\nconst PI_OVER_TWO = Math.PI / 2;\r\nconst BACK = 1.70158;\r\nconst easingByName: { [id: string]: (t: number) => number } = {};\r\n\r\n// Linear\r\neasingByName[EasingType.Linear] = (t: number): number => {\r\n\treturn t;\r\n};\r\n\r\n// Quad\r\neasingByName[EasingType.InQuad] = (t: number): number => {\r\n\treturn t * t;\r\n};\r\n\r\neasingByName[EasingType.OutQuad] = (t: number): number => {\r\n\treturn 2 * t - t * t;\r\n};\r\n\r\neasingByName[EasingType.InOutQuad] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn 2 * t * t;\r\n\t} else {\r\n\t\treturn 2 * (2 * t - t * t) - 1;\r\n\t}\r\n};\r\n\r\n// Cubic\r\neasingByName[EasingType.InCubic] = (t: number): number => {\r\n\treturn t * t * t;\r\n};\r\n\r\neasingByName[EasingType.OutCubic] = (t: number): number => {\r\n\treturn 3 * t - 3 * t * t + t * t * t;\r\n};\r\n\r\neasingByName[EasingType.InOutCubic] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn 4 * t * t * t;\r\n\t} else {\r\n\t\treturn 4 * (3 * t - 3 * t * t + t * t * t) - 3;\r\n\t}\r\n};\r\n\r\n// Quart\r\neasingByName[EasingType.InQuart] = (t: number): number => {\r\n\treturn t * t * t * t;\r\n};\r\n\r\neasingByName[EasingType.OutQuart] = (t: number): number => {\r\n\tconst t2 = t * t;\r\n\treturn 4 * t - 6 * t2 + 4 * t2 * t - t2 * t2;\r\n};\r\n\r\neasingByName[EasingType.InOutQuart] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn 8 * t * t * t * t;\r\n\t} else {\r\n\t\tconst t2 = t * t;\r\n\t\treturn 8 * (4 * t - 6 * t2 + 4 * t2 * t - t2 * t2) - 7;\r\n\t}\r\n};\r\n\r\n// Sine\r\neasingByName[EasingType.InSine] = (t: number): number => {\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\treturn 1 - Math.cos(PI_OVER_TWO * t);\r\n};\r\n\r\neasingByName[EasingType.OutSine] = (t: number): number => {\r\n\treturn Math.sin(PI_OVER_TWO * t);\r\n};\r\n\r\neasingByName[EasingType.InOutSine] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn (1 - Math.cos(PI * t)) / 2;\r\n\t} else {\r\n\t\treturn (1 + Math.sin(PI * (t - 0.5))) / 2;\r\n\t}\r\n};\r\n\r\n// Circular\r\neasingByName[EasingType.InCirc] = (t: number): number => {\r\n\treturn 1 - Math.sqrt(1 - Math.pow(t, 2));\r\n};\r\n\r\neasingByName[EasingType.OutCirc] = (t: number): number => {\r\n\treturn Math.sqrt(1 - Math.pow(1 - t, 2));\r\n};\r\n\r\neasingByName[EasingType.InOutCirc] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn (1 - Math.sqrt(1 - 4 * t * t)) / 2;\r\n\t} else {\r\n\t\treturn (1 + Math.sqrt(-3 + 8 * t - 4 * t * t)) / 2;\r\n\t}\r\n};\r\n\r\n// Quint\r\neasingByName[EasingType.InQuint] = (t: number): number => {\r\n\treturn t * t * t * t * t;\r\n};\r\n\r\neasingByName[EasingType.OutQuint] = (t: number): number => {\r\n\treturn --t * t * t * t * t + 1;\r\n};\r\n\r\neasingByName[EasingType.InOutQuint] = (t: number): number => {\r\n\tt *= 2;\r\n\tif (t < 1) {\r\n\t\treturn 0.5 * t * t * t * t * t;\r\n\t}\r\n\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n};\r\n\r\n// Exponential\r\neasingByName[EasingType.InExponential] = (t: number): number => {\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\treturn t === 0 ? 0 : Math.pow(1024, t - 1);\r\n};\r\n\r\neasingByName[EasingType.OutExponential] = (t: number): number => {\r\n\treturn t === 1 ? 1 : 1 - Math.pow(2, - 10 * t);\r\n};\r\n\r\neasingByName[EasingType.InOutExponential] = (t: number): number => {\r\n\tif (t === 0) {\r\n\t\treturn 0;\r\n\t}\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\tt *= 2;\r\n\tif (t < 1) {\r\n\t\treturn 0.5 * Math.pow(1024, t - 1);\r\n\t}\r\n\treturn 0.5 * (- Math.pow(2, - 10 * (t - 1)) + 2);\r\n};\r\n\r\n// Elastic\r\neasingByName[EasingType.InElastic] = (t: number): number => {\r\n\tif (t === 0) {\r\n\t\treturn 0;\r\n\t}\r\n\treturn -Math.pow(2, 10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI);\r\n};\r\n\r\neasingByName[EasingType.OutElastic] = (t: number): number => {\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\treturn Math.pow(2, -10 * t) * Math.sin((t - 0.1) * 5 * Math.PI) + 1;\r\n};\r\n\r\neasingByName[EasingType.InOutElastic] = (t: number): number => {\r\n\tif (t === 0) {\r\n\t\treturn 0;\r\n\t}\r\n\tif (t === 1) {\r\n\t\treturn 1;\r\n\t}\r\n\tt *= 2;\r\n\tif (t < 1) {\r\n\t\treturn -0.5 * Math.pow(2, 10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI);\r\n\t}\r\n\r\n\treturn 0.5 * Math.pow(2, -10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI) + 1;\r\n};\r\n\r\n// Back\r\neasingByName[EasingType.InBack] = (t: number): number => {\r\n\tconst s = BACK;\r\n\treturn t === 1 ? 1 : t * t * ((s + 1) * t - s);\r\n\r\n};\r\n\r\neasingByName[EasingType.OutBack] = (t: number): number => {\r\n\tconst s = BACK;\r\n\treturn t === 0 ? 0 : --t * t * ((s + 1) * t + s) + 1;\r\n};\r\n\r\neasingByName[EasingType.InOutBack] = (t: number): number => {\r\n\tconst s = BACK * 1.525;\r\n\tt *= 2;\r\n\tif (t < 1) {\r\n\t\treturn 0.5 * (t * t * ((s + 1) * t - s));\r\n\t}\r\n\treturn 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\r\n};\r\n\r\n// Bounce\r\neasingByName[EasingType.OutBounce] = (t: number): number => {\r\n\tif (t < (1 / 2.75)) {\r\n\t\treturn 7.5625 * t * t;\r\n\t} else if (t < (2 / 2.75)) {\r\n\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n\t} else if (t < (2.5 / 2.75)) {\r\n\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n\t} else {\r\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n\t}\r\n};\r\n\r\neasingByName[EasingType.InBounce] = (t: number): number => {\r\n\treturn 1 - easingByName[EasingType.OutBounce](1 - t);\r\n};\r\n\r\neasingByName[EasingType.InOutBounce] = (t: number): number => {\r\n\tif (t < 0.5) {\r\n\t\treturn easingByName[EasingType.InBounce](t * 2) * 0.5;\r\n\t}\r\n\treturn easingByName[EasingType.OutBounce](t * 2 - 1) * 0.5 + 0.5;\r\n};\r\n\r\nexport let easeNames = easingByName;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/fatina/easing/easing.ts"],"sourceRoot":""} \ No newline at end of file diff --git a/src/fatina/core/enum/log.ts b/src/fatina/core/enum/log.ts index 037132f..629baab 100644 --- a/src/fatina/core/enum/log.ts +++ b/src/fatina/core/enum/log.ts @@ -5,7 +5,7 @@ * @enum {number} */ export enum Log { - None = 'none', - Info = 'info', - Debug = 'debug' + None = 0, + Info = 1, + Debug = 2 }